EntityCollection <(Of <(TEntity >)>) ..::.Clear 方法

.NET Framework 类库
EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Clear 方法
EntityCollection

从集合中移除所有实体。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Sub Clear
public void Clear()
public:
virtual void Clear() sealed
abstract Clear : unit -> unit
override Clear : unit -> unit

实现

Clear 执行以下操作：

  • 将 IsLoaded 标志设置为 false。

  • 从集合中移除所有实体。

  • 从 ObjectStateManager 分离移除的实体和 EntityCollection<(Of <(TEntity>)>) 的所有者之间的关系。

  • 从相关实体中移除 EntityCollection<(Of <(TEntity>)>) 的所有者。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.Contains 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Contains 方法
EntityCollection

确定特定对象是否存在于集合中。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function Contains ( _
    entity As TEntity _
) As Boolean
public bool Contains(
    TEntity entity
)
public:
virtual bool Contains(
    TEntity entity
) sealed
abstract Contains :
        entity:'TEntity -> bool
override Contains :
        entity:'TEntity -> bool

参数

entity
类型： TEntity
要在 EntityCollection<(Of <(TEntity>)>) 中查找的对象。

返回值

类型： System Boolean
如果在 EntityCollection<(Of <(TEntity>)>) 中找到该对象，则为 true；否则为 false。

实现

使用 Equals 方法来比较指定对象和集合中已经存在的对象。

此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。 此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。 此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。

此示例将执行下列操作：

  1. 创建两个新的 SalesOrderHeader 实体并添加到 Contact 实体。

  2. 从与 Contact 实体关联的 RelationshipManager 中获取所有相关端。

  3. 循环访问 IRelatedEnd 集合。

  4. 获取每个相关端的 EntityCollection<(Of <(TEntity>)>)。

  5. 使用 Remove 方法从集合中移除其中一个实体。

  6. 调用 Contains 方法确定该对象是否已从集合中移除。

  7. 使用 Add 方法添加回实体。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        ' Get Entity Collection from related end
        Dim entityCollection As EntityCollection(Of SalesOrderHeader) = DirectCast(relEnd, EntityCollection(Of SalesOrderHeader))

        Console.WriteLine("EntityCollection count: {0}", entityCollection.Count)
        ' Remove the first entity object.
        entityCollection.Remove(newSalesOrder1)

        Dim contains As Boolean = entityCollection.Contains(newSalesOrder1)

        ' Write the number of items after one entity has been removed
        Console.WriteLine("EntityCollection count after one entity has been removed: {0}", entityCollection.Count)

        If contains = False Then
            Console.WriteLine("The removed entity is not in in the collection any more.")
        End If

        'Use IRelatedEnd to add the entity back.
        relEnd.Add(newSalesOrder1)
        Console.WriteLine("EntityCollection count after an entity has been added again: {0}", entityCollection.Count)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact)
        .RelationshipManager.GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        // Get Entity Collection from related end
        EntityCollection<SalesOrderHeader> entityCollection =
            (EntityCollection<SalesOrderHeader>)relEnd;

        Console.WriteLine("EntityCollection count: {0}",
            entityCollection.Count);
        // Remove the first entity object.
        entityCollection.Remove(newSalesOrder1);

        bool contains = entityCollection.Contains(newSalesOrder1);

        // Write the number of items after one entity has been removed
        Console.WriteLine("EntityCollection count after one entity has been removed: {0}",
            entityCollection.Count);

        if (contains == false)
            Console.WriteLine("The removed entity is not in in the collection any more.");

        //Use IRelatedEnd to add the entity back.
        relEnd.Add(newSalesOrder1);
        Console.WriteLine("EntityCollection count after an entity has been added again: {0}",
            entityCollection.Count);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.CopyTo 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
CopyTo 方法
EntityCollection

从目标数组的指定索引处开始，将集合中的所有内容复制到该数组中。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Sub CopyTo ( _
    array As TEntity(), _
    arrayIndex As Integer _
)
public void CopyTo(
    TEntity[] array,
    int arrayIndex
)
public:
virtual void CopyTo(
    array<TEntity>^ array,
    int arrayIndex
) sealed
abstract CopyTo :
        array:'TEntity[] *
        arrayIndex:int -> unit
override CopyTo :
        array:'TEntity[] *
        arrayIndex:int -> unit

参数

array
类型：
array<
TEntity
>
[]
()
[]

要复制到的数组。
arrayIndex
类型： System Int32
数组中复制开始处的零始索引。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.CreateSourceQuery 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
CreateSourceQuery 方法
EntityCollection

返回一个对象查询，该查询在执行时，返回的一组对象与当前集合中存在的对象相同。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function CreateSourceQuery As ObjectQuery(Of TEntity)
public ObjectQuery<TEntity> CreateSourceQuery()
public:
ObjectQuery<TEntity>^ CreateSourceQuery()
member CreateSourceQuery : unit -> ObjectQuery<'TEntity>

返回值

类型： System.Data.Objects ObjectQuery
<
(Of
<
(
TEntity
>
)
>
)

表示实体集合的 ObjectQuery<(Of <(T>)>)。
异常 | 条件
InvalidOperationException | 当对象处于 Added 状态时。 - 或 - 当对象处于 Detached 状态并且 MergeOption 不为 NoTracking 时。

此属性用于获得 ObjectQuery<(Of <(T>)>) 的新实例，该实例返回同一对象集。对于更复杂的联接、联合或筛选查询，或者使用 NoTracking 选项返回处于已分离状态的相同对象，这可以作为起点。 此属性用于获得 ObjectQuery<(Of <(T>)>) 的新实例，该实例返回同一对象集。对于更复杂的联接、联合或筛选查询，或者使用 NoTracking 选项返回处于已分离状态的相同对象，这可以作为起点。

CreateSourceQuery 用于筛选 EntityCollection<(Of <(TEntity>)>) 中的对象，使您能够只绑定特定类型的对象。有关更多信息，请参见Binding Objects to Controls (Entity Framework)。 CreateSourceQuery 用于筛选 EntityCollection<(Of <(TEntity>)>) 中的对象，使您能够只绑定特定类型的对象。有关更多信息，请参见Binding Objects to Controls (Entity Framework)。

本示例基于 School 模型的修改版本。此版本支持“每个类型一个表”继承，使用 Course 作为抽象类型。完成映射继承 - 每个类型一个表演练，以修改 School 模型来支持此主题中使用的每个类型一个表继承示例。 本示例基于 School 模型的修改版本。此版本支持“每个类型一个表”继承，使用 Course 作为抽象类型。完成映射继承 - 每个类型一个表演练，以修改 School 模型来支持此主题中使用的每个类型一个表继承示例。 本示例基于 School 模型的修改版本。此版本支持“每个类型一个表”继承，使用 Course 作为抽象类型。完成映射继承 - 每个类型一个表演练，以修改 School 模型来支持此主题中使用的每个类型一个表继承示例。

此示例演示如何使用 CreateSourceQuery 筛选 EntityCollection<(Of <(TEntity>)>) 中的对象，然后只绑定到特定类型的对象。有关此示例的完整版本，请参见 How to: Bind Controls to Derived Types (Entity Framework)。 此示例演示如何使用 CreateSourceQuery 筛选 EntityCollection<(Of <(TEntity>)>) 中的对象，然后只绑定到特定类型的对象。有关此示例的完整版本，请参见 How to: Bind Controls to Derived Types (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.GetEnumerator 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
GetEnumerator 方法
EntityCollection

返回一个枚举器，用于循环访问集合中的对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function GetEnumerator As IEnumerator(Of TEntity)
public IEnumerator<TEntity> GetEnumerator()
public:
virtual IEnumerator<TEntity>^ GetEnumerator() sealed
abstract GetEnumerator : unit -> IEnumerator<'TEntity>
override GetEnumerator : unit -> IEnumerator<'TEntity>

返回值

类型： System.Collections.Generic IEnumerator
<
(Of
<
(
TEntity
>
)
>
)

一个 IEnumerator，它对由 EntityCollection<(Of <(TEntity>)>) 缓存的值集进行循环访问。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.IEnumerable ..::.GetEnumerator 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
IEnumerable
.
.
::
.
GetEnumerator 方法
EntityCollection

返回一个枚举器，用于循环访问 EntityCollection<(Of <(TEntity>)>) 缓存的值集。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Function GetEnumerator As IEnumerator
    Implements IEnumerable.GetEnumerator
IEnumerator IEnumerable.GetEnumerator()
private:
virtual IEnumerator^ GetEnumerator() sealed = IEnumerable::GetEnumerator
private abstract GetEnumerator : unit -> IEnumerator
private override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个 IEnumerator，它对由 EntityCollection<(Of <(TEntity>)>) 缓存的值集进行循环访问。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.IListSource ..::.GetList 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
IListSource
.
.
::
.
GetList 方法
EntityCollection

以 IList 形式返回一个集合，用于数据绑定。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Function GetList As IList
    Implements IListSource.GetList
IList IListSource.GetList()
private:
virtual IList^ GetList() sealed = IListSource::GetList
private abstract GetList : unit -> IList
private override GetList : unit -> IList

返回值

类型： System.Collections IList
实体对象的 IList。

实现

此成员是显式的接口成员实现。它只能在 EntityCollection<(Of <(TEntity>)>) 实例被强制转换为 IListSource 接口时使用。 此成员是显式的接口成员实现。它只能在 EntityCollection<(Of <(TEntity>)>) 实例被强制转换为 IListSource 接口时使用。

此方法实现与 EntityCollection<(Of <(TEntity>)>) 的数据绑定。它由绑定到集合的控件进行调用。有关更多信息，请参见Binding Objects to Controls (Entity Framework)。 此方法实现与 EntityCollection<(Of <(TEntity>)>) 的数据绑定。它由绑定到集合的控件进行调用。有关更多信息，请参见Binding Objects to Controls (Entity Framework)。 此方法实现与 EntityCollection<(Of <(TEntity>)>) 的数据绑定。它由绑定到集合的控件进行调用。有关更多信息，请参见Binding Objects to Controls (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.Load 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Load 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityCollection

将相关对象加载到 EntityCollection<(Of <(TEntity>)>) 中。

名称 说明
页首

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.Load 方法 (MergeOption)

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Load 方法 (MergeOption)
EntityCollection

使用指定的合并选项将相关对象加载到集合中。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Overrides Sub Load ( _
    mergeOption As MergeOption _
)
public override void Load(
    MergeOption mergeOption
)
public:
virtual void Load(
    MergeOption mergeOption
) override
abstract Load :
        mergeOption:MergeOption -> unit
override Load :
        mergeOption:MergeOption -> unit

参数

mergeOption
类型： System.Data.Objects MergeOption
指定应如何合并此集合中的对象和针对同一 ObjectContext 的早期查询中可能已返回的对象。

实现

此方法在加载集合前调用 ValidateLoad``1(MergeOption, String) 方法。有关可能异常的列表，请参见此方法。 此方法在加载集合前调用 ValidateLoad``1(MergeOption, String) 方法。有关可能异常的列表，请参见此方法。

当集合中的对象已经加载到 ObjectContext 中时，Load 方法强制执行 mergeOption 参数指定的 MergeOption。有关更多信息，请参见Managing the Object Context (Entity Framework)。 当集合中的对象已经加载到 ObjectContext 中时，Load 方法强制执行 mergeOption 参数指定的 MergeOption。有关更多信息，请参见Managing the Object Context (Entity Framework)。

若要显式加载相关对象，必须在导航属性所返回的相关端上调用 Load 方法。对于一对多关系，调用 EntityCollection<(Of <(TEntity>)>) 上的 Load 方法。对于一对一关系，调用 EntityReference<(Of <(TEntity>)>) 上的 Load。这会将相关对象数据加载到对象上下文中。可使用 foreach 循环（Visual Basic 中的 For Each...Next）对返回结果的集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须在导航属性所返回的相关端上调用 Load 方法。对于一对多关系，调用 EntityCollection<(Of <(TEntity>)>) 上的 Load 方法。对于一对一关系，调用 EntityReference<(Of <(TEntity>)>) 上的 Load。这会将相关对象数据加载到对象上下文中。可使用 foreach 循环（Visual Basic 中的 For Each...Next）对返回结果的集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须在导航属性所返回的相关端上调用 Load 方法。对于一对多关系，调用 EntityCollection<(Of <(TEntity>)>) 上的 Load 方法。对于一对一关系，调用 EntityReference<(Of <(TEntity>)>) 上的 Load。这会将相关对象数据加载到对象上下文中。可使用 foreach 循环（Visual Basic 中的 For Each...Next）对返回结果的集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须在导航属性所返回的相关端上调用 Load 方法。对于一对多关系，调用 EntityCollection<(Of <(TEntity>)>) 上的 Load 方法。对于一对一关系，调用 EntityReference<(Of <(TEntity>)>) 上的 Load。这会将相关对象数据加载到对象上下文中。可使用 foreach 循环（Visual Basic 中的 For Each...Next）对返回结果的集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须在导航属性所返回的相关端上调用 Load 方法。对于一对多关系，调用 EntityCollection<(Of <(TEntity>)>) 上的 Load 方法。对于一对一关系，调用 EntityReference<(Of <(TEntity>)>) 上的 Load。这会将相关对象数据加载到对象上下文中。可使用 foreach 循环（Visual Basic 中的 For Each...Next）对返回结果的集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。

无论 IsLoaded 是否为 true，Load 方法都从数据源加载相关对象。

说明 说明

当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。 当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。 当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。 当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。

EntityCollection<(Of <(TEntity>)>)..::.Load 方法与 EntityReference<(Of <(TEntity>)>)..::.Load 方法保持同步。

此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。 此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。 此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。

本示例为 Contact 实体加载相关 SalesOrderHeader 对象。

' Specify the customer ID.
Dim contactID As Integer = 4332

Using context As New AdventureWorksEntities()
    Try
        context.ContextOptions.LazyLoadingEnabled = False

        ' Get a specified customer by contact ID.
        Dim contact = (From c In context.Contacts
            Where c.ContactID = contactID
            Select c).First()

        ' Load the orders for the customer explicitly.
        If Not contact.SalesOrderHeaders.IsLoaded Then
            contact.SalesOrderHeaders.Load()
        End If

        For Each order As SalesOrderHeader In contact.SalesOrderHeaders
            ' Load the items for the order if not already loaded.
            If Not order.SalesOrderDetails.IsLoaded Then
                order.SalesOrderDetails.Load()
            End If

            Console.WriteLine(String.Format("PO Number: {0}", order.PurchaseOrderNumber))
            Console.WriteLine(String.Format("Order Date: {0}", order.OrderDate.ToString()))
            Console.WriteLine("Order items:")
            For Each item As SalesOrderDetail In order.SalesOrderDetails
                Console.WriteLine(String.Format("Product: {0} Quantity: {1}", _
                                                  item.ProductID.ToString(), item.OrderQty.ToString()))
            Next
        Next
    Catch ex As EntitySqlException
        Console.WriteLine(ex.ToString())
    Catch ex As EntityCommandExecutionException
        Console.WriteLine(ex.ToString())
    End Try
End Using

// Specify the customer ID.
int contactID = 4332;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        context.ContextOptions.LazyLoadingEnabled = false;

        // Get a specified customer by contact ID.
        var contact =
            (from c in context.Contacts
             where c.ContactID == contactID
             select c).First();

        // Load the orders for the customer explicitly.
        if (!contact.SalesOrderHeaders.IsLoaded)
        {
            contact.SalesOrderHeaders.Load();
        }

        foreach (SalesOrderHeader order in contact.SalesOrderHeaders)
        {
            // Load the items for the order if not already loaded.
            if (!order.SalesOrderDetails.IsLoaded)
            {
                order.SalesOrderDetails.Load();
            }

            Console.WriteLine(String.Format("PO Number: {0}",
                order.PurchaseOrderNumber));
            Console.WriteLine(String.Format("Order Date: {0}",
                order.OrderDate.ToString()));
            Console.WriteLine("Order items:");
            foreach (SalesOrderDetail item in order.SalesOrderDetails)
            {
                Console.WriteLine(String.Format("Product: {0} "
                    + "Quantity: {1}", item.ProductID.ToString(),
                    item.OrderQty.ToString()));
            }
        }
    }
    catch (EntitySqlException ex)
    {
        Console.WriteLine(ex.ToString());
    }
    catch (EntityCommandExecutionException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
Load 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Shaping Query Results (Entity Framework)
How to: Explicitly Load Related Objects (Entity Framework)


EntityCollection <(Of <(TEntity >)>) ..::.OnCollectionDeserialized 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
OnCollectionDeserialized 方法
EntityCollection

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在内部使用，用于反序列化实体对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<BrowsableAttribute(False)> _
<OnDeserializedAttribute> _
Public Sub OnCollectionDeserialized ( _
    context As StreamingContext _
)
[BrowsableAttribute(false)]
[OnDeserializedAttribute]
public void OnCollectionDeserialized(
    StreamingContext context
)
[BrowsableAttribute(false)]
[OnDeserializedAttribute]
public:
void OnCollectionDeserialized(
    StreamingContext context
)
[<BrowsableAttribute(false)>]
[<OnDeserializedAttribute>]
member OnCollectionDeserialized :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
流上下文。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.OnSerializing 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
OnSerializing 方法
EntityCollection

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在内部使用，用于序列化实体对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<OnSerializingAttribute> _
<BrowsableAttribute(False)> _
Public Sub OnSerializing ( _
    context As StreamingContext _
)
[OnSerializingAttribute]
[BrowsableAttribute(false)]
public void OnSerializing(
    StreamingContext context
)
[OnSerializingAttribute]
[BrowsableAttribute(false)]
public:
void OnSerializing(
    StreamingContext context
)
[<OnSerializingAttribute>]
[<BrowsableAttribute(false)>]
member OnSerializing :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
流上下文。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.Remove 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Remove 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityCollection

从相关端移除对象。

名称 说明
页首

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.Remove 方法

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Remove 方法
EntityCollection

从集合中移除对象，将关系标记为待删除。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function Remove ( _
    entity As TEntity _
) As Boolean
public bool Remove(
    TEntity entity
)
public:
virtual bool Remove(
    TEntity entity
) sealed
abstract Remove :
        entity:'TEntity -> bool
override Remove :
        entity:'TEntity -> bool

参数

entity
类型： TEntity
要从集合中移除的对象。

返回值

类型： System Boolean
如果成功移除了该项，则为 true；否则为 false。

实现

异常 | 条件
ArgumentNullException | entity 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | entity 对象没有附加到同一对象上下文。 - 或 - entity 对象没有有效的关系管理器。

Remove 方法也删除源对象和要从集合中移除的对象之间的关系。如果关系具有引用完整性约束，在依赖对象上调用 Remove 方法将标记关系和依赖对象进行删除。发生此现象的原因是约束指示依赖对象在与父对象没有关系的情况下无法存在。有关更多信息，请参见Referential Constraints (Entity Framework)。 Remove 方法也删除源对象和要从集合中移除的对象之间的关系。如果关系具有引用完整性约束，在依赖对象上调用 Remove 方法将标记关系和依赖对象进行删除。发生此现象的原因是约束指示依赖对象在与父对象没有关系的情况下无法存在。有关更多信息，请参见Referential Constraints (Entity Framework)。 Remove 方法也删除源对象和要从集合中移除的对象之间的关系。如果关系具有引用完整性约束，在依赖对象上调用 Remove 方法将标记关系和依赖对象进行删除。发生此现象的原因是约束指示依赖对象在与父对象没有关系的情况下无法存在。有关更多信息，请参见Referential Constraints (Entity Framework)。 Remove 方法也删除源对象和要从集合中移除的对象之间的关系。如果关系具有引用完整性约束，在依赖对象上调用 Remove 方法将标记关系和依赖对象进行删除。发生此现象的原因是约束指示依赖对象在与父对象没有关系的情况下无法存在。有关更多信息，请参见Referential Constraints (Entity Framework)。

当指定对象不在集合中时，Remove 返回 false。

此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。 此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。 此示例基于 Adventure Works 销售模型。若要运行此示例中的代码，必须已将 AdventureWorks 销售模型添加到您的项目中，并将项目配置为使用 Entity Framework。为此，请完成How to: Manually Configure an Entity Framework Project和How to: Manually Define an E*ntity Data Model (Entity Framework) 中的过程。

本示例使用 Remove 方法从集合中移除一个实体，然后调用 Contains 方法确定该对象是否从集合中移除。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        ' Get Entity Collection from related end
        Dim entityCollection As EntityCollection(Of SalesOrderHeader) = DirectCast(relEnd, EntityCollection(Of SalesOrderHeader))

        Console.WriteLine("EntityCollection count: {0}", entityCollection.Count)
        ' Remove the first entity object.
        entityCollection.Remove(newSalesOrder1)

        Dim contains As Boolean = entityCollection.Contains(newSalesOrder1)

        ' Write the number of items after one entity has been removed
        Console.WriteLine("EntityCollection count after one entity has been removed: {0}", entityCollection.Count)

        If contains = False Then
            Console.WriteLine("The removed entity is not in in the collection any more.")
        End If

        'Use IRelatedEnd to add the entity back.
        relEnd.Add(newSalesOrder1)
        Console.WriteLine("EntityCollection count after an entity has been added again: {0}", entityCollection.Count)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact)
        .RelationshipManager.GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        // Get Entity Collection from related end
        EntityCollection<SalesOrderHeader> entityCollection =
            (EntityCollection<SalesOrderHeader>)relEnd;

        Console.WriteLine("EntityCollection count: {0}",
            entityCollection.Count);
        // Remove the first entity object.
        entityCollection.Remove(newSalesOrder1);

        bool contains = entityCollection.Contains(newSalesOrder1);

        // Write the number of items after one entity has been removed
        Console.WriteLine("EntityCollection count after one entity has been removed: {0}",
            entityCollection.Count);

        if (contains == false)
            Console.WriteLine("The removed entity is not in in the collection any more.");

        //Use IRelatedEnd to add the entity back.
        relEnd.Add(newSalesOrder1);
        Console.WriteLine("EntityCollection count after an entity has been added again: {0}",
            entityCollection.Count);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) 属性

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityCollection

EntityCollection TEntity 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EntityCollection TEntity 类
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.Count 属性

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Count 属性
EntityCollection

获取集合中包含的对象数。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property Count As Integer
    Get
public int Count { get; }
public:
virtual property int Count {
    int get () sealed;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
EntityCollection<(Of <(TEntity>)>) 中包含的元素数。

实现

Count 属性获取当前本地集合中的实体数量，而不反映数据源中的集合大小。零计数不一定表示相关集合为空。要确定数据源中的集合大小，请调用 Load()()() 方法或在查询路径中包含相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 Count 属性获取当前本地集合中的实体数量，而不反映数据源中的集合大小。零计数不一定表示相关集合为空。要确定数据源中的集合大小，请调用 Load()()() 方法或在查询路径中包含相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 Count 属性获取当前本地集合中的实体数量，而不反映数据源中的集合大小。零计数不一定表示相关集合为空。要确定数据源中的集合大小，请调用 Load()()() 方法或在查询路径中包含相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 Count 属性获取当前本地集合中的实体数量，而不反映数据源中的集合大小。零计数不一定表示相关集合为空。要确定数据源中的集合大小，请调用 Load()()() 方法或在查询路径中包含相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.IListSource ..::.ContainsListCollection 属性

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
IListSource
.
.
::
.
ContainsListCollection 属性
EntityCollection

获取一个值，该值指示相关实体集合是否包含集合对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private ReadOnly Property ContainsListCollection As Boolean
    Implements IListSource.ContainsListCollection
    Get
bool IListSource.ContainsListCollection { get; }
private:
virtual property bool ContainsListCollection {
    bool get () sealed = IListSource::ContainsListCollection::get;
}
private abstract ContainsListCollection : bool
private override ContainsListCollection : bool

属性值

类型： System Boolean
此属性始终返回 false，因为 EntityCollection<(Of <(TEntity>)>) 包含对象，但不包含集合。

实现

此成员是显式的接口成员实现。它只能在 EntityCollection<(Of <(TEntity>)>) 实例被强制转换为 IListSource 接口时使用。 此成员是显式的接口成员实现。它只能在 EntityCollection<(Of <(TEntity>)>) 实例被强制转换为 IListSource 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) ..::.IsReadOnly 属性

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
IsReadOnly 属性
EntityCollection

获取一个值，该值指示 EntityCollection<(Of <(TEntity>)>) 是否为只读。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property IsReadOnly As Boolean
    Get
public bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get () sealed;
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
始终返回 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityCollection TEntity 类
EntityCollection TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityCollection <(Of <(TEntity >)>) 事件

EntityCollection
<
(Of
<
(
TEntity
>
)
>
)
事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityCollection

EntityCollection TEntity 类型公开以下成员。

名称 说明
页首

参考

EntityCollection TEntity 类
System.Data.Objects.DataClasses 命名空间


EntityObject 类

EntityObject 类
成员

实体数据模型工具生成的实体类型的基类。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<SerializableAttribute> _
<DataContractAttribute(IsReference := True)> _
Public MustInherit Class EntityObject _
    Inherits StructuralObject _
    Implements IEntityWithKey, IEntityWithChangeTracker, IEntityWithRelationships
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public abstract class EntityObject : StructuralObject,
    IEntityWithKey, IEntityWithChangeTracker, IEntityWithRelationships
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public ref class EntityObject abstract : public StructuralObject,
    IEntityWithKey, IEntityWithChangeTracker, IEntityWithRelationships
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<DataContractAttribute(IsReference = true)>]
type EntityObject =
    class
        inherit StructuralObject
        interface IEntityWithKey
        interface IEntityWithChangeTracker
        interface IEntityWithRelationships
    end

EntityObject 实现了对象服务所需要的实体类型的基本功能。有关更多信息，请参见Object Services Overview (Entity Framework)。 EntityObject 实现了对象服务所需要的实体类型的基本功能。有关更多信息，请参见Object Services Overview (Entity Framework)。

System.Data.Objects.DataClasses System.Data.Objects.DataClasses..::.EntityObjectEntityObject
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working with Objects


EntityObject 成员

EntityObject 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityObject 类

实体数据模型工具生成的实体类型的基类。

EntityObject 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

EntityObject 类
System.Data.Objects.DataClasses 命名空间


EntityObject 构造函数

EntityObject 构造函数
EntityObject 类

初始化 EntityObject 类的新实例。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Sub New
protected EntityObject()
protected:
EntityObject()
new : unit -> EntityObject

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间


EntityObject 方法

EntityObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityObject 类

EntityObject 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EntityObject 类
System.Data.Objects.DataClasses 命名空间


EntityObject ..::.IEntityWithChangeTracker ..::.SetChangeTracker 方法

EntityObject
.
.
::
.
IEntityWithChangeTracker
.
.
::
.
SetChangeTracker 方法
EntityObject 类

指定用于报告属性更改的 IEntityChangeTracker 的实例。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Sub SetChangeTracker ( _
    changeTracker As IEntityChangeTracker _
) Implements IEntityWithChangeTracker.SetChangeTracker
void IEntityWithChangeTracker.SetChangeTracker(
    IEntityChangeTracker changeTracker
)
private:
virtual void SetChangeTracker(
    IEntityChangeTracker^ changeTracker
) sealed = IEntityWithChangeTracker::SetChangeTracker
private abstract SetChangeTracker :
        changeTracker:IEntityChangeTracker -> unit
private override SetChangeTracker :
        changeTracker:IEntityChangeTracker -> unit

参数

changeTracker
类型： System.Data.Objects.DataClasses IEntityChangeTracker
对用于报告属性更改的更改跟踪器的引用。

实现

对象服务使用此方法为对象指定用于跟踪更改的 IEntityChangeTracker 的实例。此方法通常在实体添加到或从 ObjectContext 删除时调用。 对象服务使用此方法为对象指定用于跟踪更改的 IEntityChangeTracker 的实例。此方法通常在实体添加到或从 ObjectContext 删除时调用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working with Objects
Implementing Custom Data Class Interfaces (Entity Framework)


EntityObject ..::.ReportPropertyChanged 方法

EntityObject
.
.
::
.
ReportPropertyChanged 方法
EntityObject 类

通知更改跟踪器，属性已更改。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Overrides NotOverridable Sub ReportPropertyChanged ( _
    property As String _
)
protected override sealed void ReportPropertyChanged(
    string property
)
protected:
virtual void ReportPropertyChanged(
    String^ property
) override sealed
abstract ReportPropertyChanged :
        property:string -> unit
override ReportPropertyChanged :
        property:string -> unit

参数

property
类型： System String
已更改属性的名称。
异常 | 条件
ArgumentNullException | property 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当实体类型由实体数据模型工具生成时，在属性更改后将调用 ReportPropertyChanged 方法，以将 IEntityChangeTracker 中缓存的值作为属性的原始值提交。

此方法调用更改跟踪器中的 EntityMemberChanged 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working with Objects
Customizing Objects (Entity Framework)


EntityObject ..::.ReportPropertyChanging 方法

EntityObject
.
.
::
.
ReportPropertyChanging 方法
EntityObject 类

通知更改跟踪器，有属性更改挂起。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Overrides NotOverridable Sub ReportPropertyChanging ( _
    property As String _
)
protected override sealed void ReportPropertyChanging(
    string property
)
protected:
virtual void ReportPropertyChanging(
    String^ property
) override sealed
abstract ReportPropertyChanging :
        property:string -> unit
override ReportPropertyChanging :
        property:string -> unit

参数

property
类型： System String
将要更改的属性的名称。
异常 | 条件
ArgumentNullException | property 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当实体类型由实体数据模型工具生成时，在属性更改前将调用 ReportPropertyChanging 方法将属性的当前值缓存在 IEntityChangeTracker 中，以便能够将此值用作该属性的原始值。

此方法调用更改跟踪器中的 EntityMemberChanging 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working with Objects
Customizing Objects (Entity Framework)


EntityObject 属性

EntityObject 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityObject 类

EntityObject 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EntityObject 类
System.Data.Objects.DataClasses 命名空间


EntityObject ..::.EntityKey 属性

EntityObject
.
.
::
.
EntityKey 属性
EntityObject 类

获取或设置此对象的键。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<DataMemberAttribute> _
<BrowsableAttribute(False)> _
Public Property EntityKey As EntityKey
    Get
    Set
[DataMemberAttribute]
[BrowsableAttribute(false)]
public EntityKey EntityKey { get; set; }
[DataMemberAttribute]
[BrowsableAttribute(false)]
public:
virtual property EntityKey^ EntityKey {
    EntityKey^ get () sealed;
    void set (EntityKey^ value) sealed;
}
[<DataMemberAttribute>]
[<BrowsableAttribute(false)>]
abstract EntityKey : EntityKey with get, set
[<DataMemberAttribute>]
[<BrowsableAttribute(false)>]
override EntityKey : EntityKey with get, set

属性值

类型： System.Data EntityKey
此对象的 EntityKey。

实现

对象服务使用 EntityKey 属性来管理对象上下文中的对象。

不可在对象已附加到 ObjectContext 之后再设置 EntityKey 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Customizing Objects (Entity Framework)
Working with Objects


EntityObject ..::.EntityState 属性

EntityObject
.
.
::
.
EntityState 属性
EntityObject 类

获取对象的实体状态。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property EntityState As EntityState
    Get
[BrowsableAttribute(false)]
public EntityState EntityState { get; }
[BrowsableAttribute(false)]
public:
property EntityState EntityState {
    EntityState get ();
}
[<BrowsableAttribute(false)>]
member EntityState : EntityState

属性值

类型： System.Data EntityState
此对象的 EntityState。

当对象作为查询的结果或通过调用 Attach 附加到对象上下文时，EntityState 将变为 Unchanged。

当对象从对象上下文分离时，它返回到 Detached 状态。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working with Objects


EntityObject ..::.IEntityWithRelationships ..::.RelationshipManager 属性

EntityObject
.
.
::
.
IEntityWithRelationships
.
.
::
.
RelationshipManager 属性
EntityObject 类

获取此对象使用的关系管理器。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private ReadOnly Property RelationshipManager As RelationshipManager
    Implements IEntityWithRelationships.RelationshipManager
    Get
RelationshipManager IEntityWithRelationships.RelationshipManager { get; }
private:
virtual property RelationshipManager^ RelationshipManager {
    RelationshipManager^ get () sealed = IEntityWithRelationships::RelationshipManager::get;
}
private abstract RelationshipManager : RelationshipManager
private override RelationshipManager : RelationshipManager

属性值

类型： System.Data.Objects.DataClasses RelationshipManager
此对象使用的 RelationshipManager。

实现

IEntityWithRelationships..::.RelationshipManager 返回一个由此对象使用的 RelationshipManager。对象服务使用关系管理器提供对相关对象的访问。 IEntityWithRelationships..::.RelationshipManager 返回一个由此对象使用的 RelationshipManager。对象服务使用关系管理器提供对相关对象的访问。

公开关系的类必须通过在其构造函数中构造和设置 RelationshipManager 来实现此属性。如果需要，此属性的实现应使用静态方法 Create 创建新的 RelationshipManager。创建后，此对象应存储在实体上，并将通过此属性提供。 公开关系的类必须通过在其构造函数中构造和设置 RelationshipManager 来实现此属性。如果需要，此属性的实现应使用静态方法 Create 创建新的 RelationshipManager。创建后，此对象应存储在实体上，并将通过此属性提供。 公开关系的类必须通过在其构造函数中构造和设置 RelationshipManager 来实现此属性。如果需要，此属性的实现应使用静态方法 Create 创建新的 RelationshipManager。创建后，此对象应存储在实体上，并将通过此属性提供。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityObject 类
EntityObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working with Objects


EntityObject 事件

EntityObject 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityObject 类

EntityObject 类型公开以下成员。

名称 说明
页首

参考

EntityObject 类
System.Data.Objects.DataClasses 命名空间


EntityReference 类

EntityReference 类
成员

为 EntityReference<(Of <(TEntity>)>) 实现非通用功能的基类。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<SerializableAttribute> _
<DataContractAttribute> _
Public MustInherit Class EntityReference _
    Inherits RelatedEnd
[SerializableAttribute]
[DataContractAttribute]
public abstract class EntityReference : RelatedEnd
[SerializableAttribute]
[DataContractAttribute]
public ref class EntityReference abstract : public RelatedEnd
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<DataContractAttribute>]
type EntityReference =
    class
        inherit RelatedEnd
    end

EntityReference 类公开相关对象的 EntityKey，并且是 EntityReference<(Of <(TEntity>)>) 类的基类。当相关端的重数为零或一时，导航属性返回一个 EntityReference<(Of <(TEntity>)>) 对象。有关更多信息，请参见Navigation Properties (EDM)。 EntityReference 类公开相关对象的 EntityKey，并且是 EntityReference<(Of <(TEntity>)>) 类的基类。当相关端的重数为零或一时，导航属性返回一个 EntityReference<(Of <(TEntity>)>) 对象。有关更多信息，请参见Navigation Properties (EDM)。 EntityReference 类公开相关对象的 EntityKey，并且是 EntityReference<(Of <(TEntity>)>) 类的基类。当相关端的重数为零或一时，导航属性返回一个 EntityReference<(Of <(TEntity>)>) 对象。有关更多信息，请参见Navigation Properties (EDM)。

System.Data.Objects.DataClasses System.Data.Objects.DataClasses..::.EntityReferenceEntityReference

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference 成员
System.Data.Objects.DataClasses 命名空间


EntityReference 成员

EntityReference 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

为 EntityReference<(Of <(TEntity>)>) 实现非通用功能的基类。

EntityReference 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

EntityReference 类
System.Data.Objects.DataClasses 命名空间


EntityReference 方法

EntityReference 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

EntityReference 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EntityReference 类
System.Data.Objects.DataClasses 命名空间


EntityReference ..::.Add 方法

EntityReference
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

将对象添加到相关端。

名称 说明
页首

参考

EntityReference 类
EntityReference 成员
System.Data.Objects.DataClasses 命名空间


EntityReference ..::.Attach 方法

EntityReference
.
.
::
.
Attach 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

在相关端处附加对象。

名称 说明
页首

参考

EntityReference 类
EntityReference 成员
System.Data.Objects.DataClasses 命名空间


EntityReference ..::.Load 方法

EntityReference
.
.
::
.
Load 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

在派生类中重写时，将一个或多个相关对象加载到本地集合或引用中。

名称 说明
页首

参考

EntityReference 类
EntityReference 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


EntityReference ..::.Remove 方法

EntityReference
.
.
::
.
Remove 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

从相关端移除对象。

名称 说明
页首

参考

EntityReference 类
EntityReference 成员
System.Data.Objects.DataClasses 命名空间


EntityReference 属性

EntityReference 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

EntityReference 类型公开以下成员。

名称 说明
页首

参考

EntityReference 类
System.Data.Objects.DataClasses 命名空间


EntityReference ..::.EntityKey 属性

EntityReference
.
.
::
.
EntityKey 属性
EntityReference 类

返回相关对象的键。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<DataMemberAttribute> _
Public Property EntityKey As EntityKey
    Get
    Set
[DataMemberAttribute]
public EntityKey EntityKey { get; set; }
[DataMemberAttribute]
public:
property EntityKey^ EntityKey {
    EntityKey^ get ();
    void set (EntityKey^ value);
}
[<DataMemberAttribute>]
member EntityKey : EntityKey with get, set

属性值

类型： System.Data EntityKey
一个 EntityKey，表示相关对象的键。

使相关对象的实体键在 EntityReference 对象上可用将更容易返回相关对象的信息，而无需从数据源加载相关对象。

在 EntityReference 对象上公开相关对象的 EntityKey 还允许对象服务动态创建两个附加对象之间的关联，并删除一个对象，无需加载相关端。有关更多信息，请参见Adding, Modifying, and Deleting Objects (Entity Framework)。 在 EntityReference 对象上公开相关对象的 EntityKey 还允许对象服务动态创建两个附加对象之间的关联，并删除一个对象，无需加载相关端。有关更多信息，请参见Adding, Modifying, and Deleting Objects (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference 类
EntityReference 成员
System.Data.Objects.DataClasses 命名空间


EntityReference 事件

EntityReference 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference 类

EntityReference 类型公开以下成员。

名称 说明
页首

参考

EntityReference 类
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) 类

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
类
成员

表示关联中重数为零或一的相关端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<SerializableAttribute> _
<DataContractAttribute> _
Public NotInheritable Class EntityReference(Of TEntity As Class) _
    Inherits EntityReference
[SerializableAttribute]
[DataContractAttribute]
public sealed class EntityReference<TEntity> : EntityReference
where TEntity : class

[SerializableAttribute]
[DataContractAttribute]
generic<typename TEntity>
where TEntity : ref class
public ref class EntityReference sealed : public EntityReference
[<SealedAttribute>]
[<SerializableAttribute>]
[<DataContractAttribute>]
type EntityReference<'TEntity when 'TEntity : not struct> =
    class
        inherit EntityReference
    end

类型参数

TEntity

引用的实体类型。

当相关端的重数为零或一时，导航属性返回一个 EntityReference<(Of <(TEntity>)>) 对象。有关更多信息，请参见Navigation Properties (EDM)。 当相关端的重数为零或一时，导航属性返回一个 EntityReference<(Of <(TEntity>)>) 对象。有关更多信息，请参见Navigation Properties (EDM)。

EntityReference<(Of <(TEntity>)>) 对象可能在关系的另一端具有相应的 EntityCollection<(Of <(TEntity>)>)（一对多关系）或 EntityReference<(Of <(TEntity>)>)（一对一关系）。当 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 模型位于同一关系的相反端时，该关系的完整性维持在对象级别。 EntityReference<(Of <(TEntity>)>) 对象可能在关系的另一端具有相应的 EntityCollection<(Of <(TEntity>)>)（一对多关系）或 EntityReference<(Of <(TEntity>)>)（一对一关系）。当 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 模型位于同一关系的相反端时，该关系的完整性维持在对象级别。

此类不能继承。

此示例演示如何使用 EntityReference<(Of <(TEntity>)>) 对象更改 SalesOrderHeader 对象和表示订单发货地址的相关 Address 对象之间的关系。

' Define the order and new address IDs.
Dim orderId As Integer = 43669
Dim addressId As Integer = 26

Using context As New AdventureWorksEntities()
    Try
        ' Get the billing address to change to.
        Dim address As Address = context.Addresses.Single(Function(c) c.AddressID = addressId)

        ' Get the order being changed.
        Dim order As SalesOrderHeader = context.SalesOrderHeaders.Single(Function(o) o.SalesOrderID = orderId)

        ' You do not have to call the Load method to load the addresses for the order,
        ' because lazy loading is set to true
        ' by the constructor of the AdventureWorksEntities object.
        ' With lazy loading set to true the related objects are loaded when
        ' you access the navigation property. In this case Address.

        ' Write the current billing street address.
        Console.WriteLine("Current street: " & order.Address.AddressLine1)

        ' Change the billing address.
        If Not order.Address.Equals(address) Then
            ' Use Address navigation property to change the association.
            order.Address = address

            ' Write the changed billing street address.
            Console.WriteLine("Changed street: " & order.Address.AddressLine1)
        End If

        ' If the address change succeeds, save the changes.
        context.SaveChanges()

        ' Write the current billing street address.
        Console.WriteLine("Current street: " & order.Address.AddressLine1)
    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Using

// Define the order and new address IDs.
int orderId = 43669;
int addressId = 26;

using (AdventureWorksEntities context
    = new AdventureWorksEntities())
{
    try
    {
        // Get the billing address to change to.
        Address address =
            context.Addresses.Single(c => c.AddressID == addressId);

        // Get the order being changed.
        SalesOrderHeader order =
            context.SalesOrderHeaders.Single(o => o.SalesOrderID == orderId);

        // You do not have to call the Load method to load the addresses for the order,
        // because  lazy loading is set to true
        // by the constructor of the AdventureWorksEntities object.
        // With  lazy loading set to true the related objects are loaded when
        // you access the navigation property. In this case Address.

        // Write the current billing street address.
        Console.WriteLine("Current street: "
            + order.Address.AddressLine1);

        // Change the billing address.
        if (!order.Address.Equals(address))
        {
            // Use Address navigation property to change the association.
            order.Address = address;

            // Write the changed billing street address.
            Console.WriteLine("Changed street: "
                + order.Address.AddressLine1);
        }

        // If the address change succeeds, save the changes.
        context.SaveChanges();

        // Write the current billing street address.
        Console.WriteLine("Current street: "
            + order.Address.AddressLine1);
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

System.Data.Objects.DataClasses
System.Data.Objects.DataClasses..::.EntityReference<(Of <(TEntity>)>)EntityReference
System.Data.Objects.DataClasses..::.EntityReference<(Of <(TEntity>)>)TEntity
System.Data.Objects.DataClasses..::.EntityReference<(Of <(TEntity>)>)
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间

其他资源

How to: Change Relationships Between Objects (Entity Framework)
Shaping Query Results (Entity Framework)


EntityReference <(Of <(TEntity >)>) 成员

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

表示关联中重数为零或一的相关端。

EntityReference TEntity 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

EntityReference TEntity 类
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) 构造函数

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
构造函数
EntityReference

创建 EntityReference<(Of <(TEntity>)>) 的新实例。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Sub New
public EntityReference()
public:
EntityReference()
new : unit -> EntityReference

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

EntityReference TEntity 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EntityReference TEntity 类
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Add 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

将对象添加到相关端。

名称 说明
页首

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Attach 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Attach 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

在相关端处附加对象。

名称 说明
页首

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Attach 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Attach 方法
EntityReference

创建两个对象在对象上下文中的多对一或一对一关系。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Sub Attach ( _
    entity As TEntity _
)
public void Attach(
    TEntity entity
)
public:
void Attach(
    TEntity entity
)
member Attach :
        entity:'TEntity -> unit

参数

entity
类型： TEntity
要附加的对象。
异常 | 条件
ArgumentNullException | 在 entity 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时。
InvalidOperationException | 当 entity 无法与当前相关端关联时。这会在概念性架构中的关联不支持两种类型间的关系时发生。 当 entity 无法与当前相关端关联时。这会在概念性架构中的关联不支持两种类型间的关系时发生。

Attach 方法用于定义当对象和相关对象已经附加到一个对象上下文时，这两个对象之间的关系。如果相关对象尚未附加到对象上下文，将相关对象设置为 Value 属性。两个对象都分离时，还可以通过将相关对象设置为 Value 属性，然后附加对象图中的根对象来定义关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 Attach 方法用于定义当对象和相关对象已经附加到一个对象上下文时，这两个对象之间的关系。如果相关对象尚未附加到对象上下文，将相关对象设置为 Value 属性。两个对象都分离时，还可以通过将相关对象设置为 Value 属性，然后附加对象图中的根对象来定义关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 Attach 方法用于定义当对象和相关对象已经附加到一个对象上下文时，这两个对象之间的关系。如果相关对象尚未附加到对象上下文，将相关对象设置为 Value 属性。两个对象都分离时，还可以通过将相关对象设置为 Value 属性，然后附加对象图中的根对象来定义关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 Attach 方法用于定义当对象和相关对象已经附加到一个对象上下文时，这两个对象之间的关系。如果相关对象尚未附加到对象上下文，将相关对象设置为 Value 属性。两个对象都分离时，还可以通过将相关对象设置为 Value 属性，然后附加对象图中的根对象来定义关系。有关更多信息，请参见Attaching Objects (Entity Framework)。

与此 EntityReference<(Of <(TEntity>)>) 关联的对象以及附加到它的所有对象必须处于 Unchanged 或 Modified 状态。

处于 Deleted 状态的对象只能在 ObjectStateManager 已经跟踪关系实例时附加。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间

其他资源

How to: Attach Related Objects (Entity Framework)


EntityReference <(Of <(TEntity >)>) ..::.CreateSourceQuery 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
CreateSourceQuery 方法
EntityReference

创建一个返回相关对象的等效对象查询。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function CreateSourceQuery As ObjectQuery(Of TEntity)
public ObjectQuery<TEntity> CreateSourceQuery()
public:
ObjectQuery<TEntity>^ CreateSourceQuery()
member CreateSourceQuery : unit -> ObjectQuery<'TEntity>

返回值

类型： System.Data.Objects ObjectQuery
<
(Of
<
(
TEntity
>
)
>
)

一个 ObjectQuery<(Of <(T>)>)，它返回相关对象。
异常 | 条件
InvalidOperationException | 当对象处于 Added 状态时。 - 或 - 当对象处于 Detached 状态并且 MergeOption 不为 NoTracking 时。

此方法用于获得一个在执行时返回相关对象的新 ObjectQuery<(Of <(T>)>) 实例。对于更复杂的联接、联合或筛选查询，或者使用 NoTracking 选项返回处于已分离状态的引用对象，这可以作为起点。 此方法用于获得一个在执行时返回相关对象的新 ObjectQuery<(Of <(T>)>) 实例。对于更复杂的联接、联合或筛选查询，或者使用 NoTracking 选项返回处于已分离状态的引用对象，这可以作为起点。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Load 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Load 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

名称 说明
页首

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Load 方法 (MergeOption)

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Load 方法 (MergeOption)
EntityReference

使用指定的合并选项为此 EntityReference<(Of <(TEntity>)>) 加载相关对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Overrides Sub Load ( _
    mergeOption As MergeOption _
)
public override void Load(
    MergeOption mergeOption
)
public:
virtual void Load(
    MergeOption mergeOption
) override
abstract Load :
        mergeOption:MergeOption -> unit
override Load :
        mergeOption:MergeOption -> unit

参数

mergeOption
类型： System.Data.Objects MergeOption
指定当 ObjectContext 中已存在该对象时，应如何返回它。

实现

异常 | 条件
InvalidOperationException | EntityReference<(Of <(TEntity>)>) 的源为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 查询返回了多个相关端。 - 或 - 查询返回零个相关端，而预期应该有一个相关端。

此方法用于加载相关对象。

加载后，从 Value 属性访问相关对象。

若要显式加载相关对象，必须调用导航属性所返回的相关端的 Load 方法。对于一对多关系，请调用 EntityCollection<(Of <(TEntity>)>) 的 Load 方法，而对于一对一关系，请调用 EntityReference<(Of <(TEntity>)>) 的 Load。这会将相关对象数据加载到对象上下文中。当查询返回结果时，可使用 foreach 循环（Visual Basic 中的 For Each...Next）对对象集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须调用导航属性所返回的相关端的 Load 方法。对于一对多关系，请调用 EntityCollection<(Of <(TEntity>)>) 的 Load 方法，而对于一对一关系，请调用 EntityReference<(Of <(TEntity>)>) 的 Load。这会将相关对象数据加载到对象上下文中。当查询返回结果时，可使用 foreach 循环（Visual Basic 中的 For Each...Next）对对象集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须调用导航属性所返回的相关端的 Load 方法。对于一对多关系，请调用 EntityCollection<(Of <(TEntity>)>) 的 Load 方法，而对于一对一关系，请调用 EntityReference<(Of <(TEntity>)>) 的 Load。这会将相关对象数据加载到对象上下文中。当查询返回结果时，可使用 foreach 循环（Visual Basic 中的 For Each...Next）对对象集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。 若要显式加载相关对象，必须调用导航属性所返回的相关端的 Load 方法。对于一对多关系，请调用 EntityCollection<(Of <(TEntity>)>) 的 Load 方法，而对于一对一关系，请调用 EntityReference<(Of <(TEntity>)>) 的 Load。这会将相关对象数据加载到对象上下文中。当查询返回结果时，可使用 foreach 循环（Visual Basic 中的 For Each...Next）对对象集合进行枚举，并且按条件为结果中的每个实体的 EntityReference<(Of <(TEntity>)>) 和 EntityCollection<(Of <(TEntity>)>) 属性调用 Load 方法。

无论 IsLoaded 是否为 true，Load 方法都从数据源加载相关对象。

说明 说明

当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。 当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。 当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。 当您在 foreach (C#) 或 For Each (Visual Basic) 枚举过程中调用 Load 方法时，对象服务会尝试打开一个新的数据读取器。除非已通过在连接字符串中指定 multipleactiveresultsets=true 启用了多活动结果集，否则此操作将失败。还可以将查询的结果加载到一个 List<(Of <(T>)>) 集合中。这样将关闭数据读取器，并允许您对集合进行枚举来加载引用的对象。

此方法在加载相关对象之前调用 ValidateLoad``1(MergeOption, String) 方法。有关其他异常的列表，请参见此方法。 此方法在加载相关对象之前调用 ValidateLoad``1(MergeOption, String) 方法。有关其他异常的列表，请参见此方法。

当相关对象已经在 ObjectContext 中加载时，Load 方法强制执行 mergeOption 参数指定的 MergeOption。有关更多信息，请参见Managing the Object Context (Entity Framework)。 当相关对象已经在 ObjectContext 中加载时，Load 方法强制执行 mergeOption 参数指定的 MergeOption。有关更多信息，请参见Managing the Object Context (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
Load 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Querying Data as Objects (Entity Framework)
Shaping Query Results (Entity Framework)
How to: Change Relationships Between Objects (Entity Framework)


EntityReference <(Of <(TEntity >)>) ..::.OnRefDeserialized 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
OnRefDeserialized 方法
EntityReference

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

此方法在内部使用，用于序列化相关实体对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<OnDeserializedAttribute> _
<BrowsableAttribute(False)> _
Public Sub OnRefDeserialized ( _
    context As StreamingContext _
)
[OnDeserializedAttribute]
[BrowsableAttribute(false)]
public void OnRefDeserialized(
    StreamingContext context
)
[OnDeserializedAttribute]
[BrowsableAttribute(false)]
public:
void OnRefDeserialized(
    StreamingContext context
)
[<OnDeserializedAttribute>]
[<BrowsableAttribute(false)>]
member OnRefDeserialized :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
序列化的流。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.OnSerializing 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
OnSerializing 方法
EntityReference

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

此方法在内部使用，用于序列化相关实体对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<OnSerializingAttribute> _
<BrowsableAttribute(False)> _
Public Sub OnSerializing ( _
    context As StreamingContext _
)
[OnSerializingAttribute]
[BrowsableAttribute(false)]
public void OnSerializing(
    StreamingContext context
)
[OnSerializingAttribute]
[BrowsableAttribute(false)]
public:
void OnSerializing(
    StreamingContext context
)
[<OnSerializingAttribute>]
[<BrowsableAttribute(false)>]
member OnSerializing :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
序列化的流。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Remove 方法

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Remove 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

从相关端移除对象。

名称 说明
页首

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) 属性

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

EntityReference TEntity 类型公开以下成员。

名称 说明
页首

参考

EntityReference TEntity 类
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) ..::.Value 属性

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
.
.
::
.
Value 属性
EntityReference

获取或设置此 EntityReference<(Of <(TEntity>)>) 返回的相关对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Property Value As TEntity
    Get
    Set
public TEntity Value { get; set; }
public:
property TEntity Value {
    TEntity get ();
    void set (TEntity value);
}
member Value : 'TEntity with get, set

属性值

类型： TEntity
此 EntityReference<(Of <(TEntity>)>) 返回的对象。

如果设置的值和当前值相同，则不赋值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

EntityReference TEntity 类
EntityReference TEntity 成员
System.Data.Objects.DataClasses 命名空间


EntityReference <(Of <(TEntity >)>) 事件

EntityReference
<
(Of
<
(
TEntity
>
)
>
)
事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EntityReference

EntityReference TEntity 类型公开以下成员。

名称 说明
页首

参考

EntityReference TEntity 类
System.Data.Objects.DataClasses 命名空间


IEntityChangeTracker 接口

IEntityChangeTracker 接口
成员

定义对象服务用于跟踪对象属性更改的功能。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Interface IEntityChangeTracker
public interface IEntityChangeTracker
public interface class IEntityChangeTracker
type IEntityChangeTracker =  interface end

EntityObject 和 ComplexObject 是实体数据模型工具所生成实体类型和复杂类型的基类。两个基类都使用 IEntityChangeTracker 报告属性更改。 EntityObject 和 ComplexObject 是实体数据模型工具所生成实体类型和复杂类型的基类。两个基类都使用 IEntityChangeTracker 报告属性更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityChangeTracker 成员

IEntityChangeTracker 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityChangeTracker 接口

定义对象服务用于跟踪对象属性更改的功能。

IEntityChangeTracker 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IEntityChangeTracker 接口
System.Data.Objects.DataClasses 命名空间


IEntityChangeTracker 方法

IEntityChangeTracker 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityChangeTracker 接口

IEntityChangeTracker 类型公开以下成员。

名称 说明
页首

参考

IEntityChangeTracker 接口
System.Data.Objects.DataClasses 命名空间


IEntityChangeTracker ..::.EntityComplexMemberChanged 方法

IEntityChangeTracker
.
.
::
.
EntityComplexMemberChanged 方法
IEntityChangeTracker 接口

通知更改跟踪器，某个复杂类型的属性已更改。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub EntityComplexMemberChanged ( _
    entityMemberName As String, _
    complexObject As Object, _
    complexObjectMemberName As String _
)
void EntityComplexMemberChanged(
    string entityMemberName,
    Object complexObject,
    string complexObjectMemberName
)
void EntityComplexMemberChanged(
    String^ entityMemberName,
    Object^ complexObject,
    String^ complexObjectMemberName
)
abstract EntityComplexMemberChanged :
        entityMemberName:string *
        complexObject:Object *
        complexObjectMemberName:string -> unit

参数

entityMemberName
类型： System String
实体类型已更改的复杂属性的名称。
complexObject
类型： System Object
包含已更改属性的复杂类型。
complexObjectMemberName
类型： System String
复杂类型上已更改属性的名称。

EntityComplexMemberChanged 由 ComplexObject 用来报告属性已更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityChangeTracker 接口
IEntityChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityChangeTracker ..::.EntityComplexMemberChanging 方法

IEntityChangeTracker
.
.
::
.
EntityComplexMemberChanging 方法
IEntityChangeTracker 接口

通知更改跟踪器，复杂属性有挂起的更改。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub EntityComplexMemberChanging ( _
    entityMemberName As String, _
    complexObject As Object, _
    complexObjectMemberName As String _
)
void EntityComplexMemberChanging(
    string entityMemberName,
    Object complexObject,
    string complexObjectMemberName
)
void EntityComplexMemberChanging(
    String^ entityMemberName,
    Object^ complexObject,
    String^ complexObjectMemberName
)
abstract EntityComplexMemberChanging :
        entityMemberName:string *
        complexObject:Object *
        complexObjectMemberName:string -> unit

参数

entityMemberName
类型： System String
要更改的顶级实体属性的名称。
complexObject
类型： System Object
包含要更改的属性的复杂类型。
complexObjectMemberName
类型： System String
复杂类型上要更改的属性的名称。

EntityObject 和 ComplexObject 使用 EntityComplexMemberChanging 报告复杂属性正在更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityChangeTracker 接口
IEntityChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityChangeTracker ..::.EntityMemberChanged 方法

IEntityChangeTracker
.
.
::
.
EntityMemberChanged 方法
IEntityChangeTracker 接口

通知更改跟踪器，某个实体类型的属性已更改。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub EntityMemberChanged ( _
    entityMemberName As String _
)
void EntityMemberChanged(
    string entityMemberName
)
void EntityMemberChanged(
    String^ entityMemberName
)
abstract EntityMemberChanged :
        entityMemberName:string -> unit

参数

entityMemberName
类型： System String
已更改的属性的名称。

EntityMemberChanged 由 EntityObject 用来报告属性已更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityChangeTracker 接口
IEntityChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityChangeTracker ..::.EntityMemberChanging 方法

IEntityChangeTracker
.
.
::
.
EntityMemberChanging 方法
IEntityChangeTracker 接口

通知更改跟踪器，某个实体类型的属性有挂起的更改。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub EntityMemberChanging ( _
    entityMemberName As String _
)
void EntityMemberChanging(
    string entityMemberName
)
void EntityMemberChanging(
    String^ entityMemberName
)
abstract EntityMemberChanging :
        entityMemberName:string -> unit

参数

entityMemberName
类型： System String
要更改的属性的名称。

EntityMemberChanging 由 EntityObject 用来报告属性正在更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityChangeTracker 接口
IEntityChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityChangeTracker 属性

IEntityChangeTracker 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityChangeTracker 接口

IEntityChangeTracker 类型公开以下成员。

名称 说明
页首

参考

IEntityChangeTracker 接口
System.Data.Objects.DataClasses 命名空间


IEntityChangeTracker ..::.EntityState 属性

IEntityChangeTracker
.
.
::
.
EntityState 属性
IEntityChangeTracker 接口

获取所跟踪对象的当前状态。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property EntityState As EntityState
    Get
EntityState EntityState { get; }
property EntityState EntityState {
    EntityState get ();
}
abstract EntityState : EntityState

属性值

类型： System.Data EntityState
一个 EntityState，表示所跟踪对象的状态。
有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityChangeTracker 接口
IEntityChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityWithChangeTracker 接口

IEntityWithChangeTracker 接口
成员

定义实现更改跟踪的实体类型。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Interface IEntityWithChangeTracker
public interface IEntityWithChangeTracker
public interface class IEntityWithChangeTracker
type IEntityWithChangeTracker =  interface end

实体类型必须实现 IEntityWithChangeTracker 来跟踪更改。EntityObject 是实体数据模型工具生成的所有实体类型的基类。EntityObject 实现 IEntityWithChangeTracker。 实体类型必须实现 IEntityWithChangeTracker 来跟踪更改。EntityObject 是实体数据模型工具生成的所有实体类型的基类。EntityObject 实现 IEntityWithChangeTracker。 实体类型必须实现 IEntityWithChangeTracker 来跟踪更改。EntityObject 是实体数据模型工具生成的所有实体类型的基类。EntityObject 实现 IEntityWithChangeTracker。

对象服务为对象提供对 IEntityChangeTracker 接口的实例的引用，以使对象能够报告更改。IEntityChangeTracker 上的方法用于报告更改。 对象服务为对象提供对 IEntityChangeTracker 接口的实例的引用，以使对象能够报告更改。IEntityChangeTracker 上的方法用于报告更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityWithChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityWithChangeTracker 成员

IEntityWithChangeTracker 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityWithChangeTracker 接口

定义实现更改跟踪的实体类型。

IEntityWithChangeTracker 类型公开以下成员。

名称 说明
页首

参考

IEntityWithChangeTracker 接口
System.Data.Objects.DataClasses 命名空间


IEntityWithChangeTracker 方法

IEntityWithChangeTracker 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityWithChangeTracker 接口

IEntityWithChangeTracker 类型公开以下成员。

名称 说明
页首

参考

IEntityWithChangeTracker 接口
System.Data.Objects.DataClasses 命名空间


IEntityWithChangeTracker ..::.SetChangeTracker 方法

IEntityWithChangeTracker
.
.
::
.
SetChangeTracker 方法
IEntityWithChangeTracker 接口

获取或设置用于报告更改的 IEntityChangeTracker。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub SetChangeTracker ( _
    changeTracker As IEntityChangeTracker _
)
void SetChangeTracker(
    IEntityChangeTracker changeTracker
)
void SetChangeTracker(
    IEntityChangeTracker^ changeTracker
)
abstract SetChangeTracker :
        changeTracker:IEntityChangeTracker -> unit

参数

changeTracker
类型： System.Data.Objects.DataClasses IEntityChangeTracker
用于报告更改的 IEntityChangeTracker。

EntityObject 使用 IEntityChangeTracker 上的方法来报告更改。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityWithChangeTracker 接口
IEntityWithChangeTracker 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Working With POCO (Entity Framework)


IEntityWithKey 接口

IEntityWithKey 接口
成员

定义公开实体键的实体类型。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Interface IEntityWithKey
public interface IEntityWithKey
public interface class IEntityWithKey
type IEntityWithKey =  interface end

此接口用于向对象服务公开实体键。

对象服务使用 EntityKey 属性来管理对象上下文中的对象。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityWithKey 成员
System.Data.Objects.DataClasses 命名空间


IEntityWithKey 成员

IEntityWithKey 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityWithKey 接口

定义公开实体键的实体类型。

IEntityWithKey 类型公开以下成员。

名称 说明
页首

参考

IEntityWithKey 接口
System.Data.Objects.DataClasses 命名空间


IEntityWithKey 属性

IEntityWithKey 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityWithKey 接口

IEntityWithKey 类型公开以下成员。

名称 说明
页首

参考

IEntityWithKey 接口
System.Data.Objects.DataClasses 命名空间


IEntityWithKey ..::.EntityKey 属性

IEntityWithKey
.
.
::
.
EntityKey 属性
IEntityWithKey 接口

为实现此接口的实体类型的实例获取或设置 EntityKey。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Property EntityKey As EntityKey
    Get
    Set
EntityKey EntityKey { get; set; }
property EntityKey^ EntityKey {
    EntityKey^ get ();
    void set (EntityKey^ value);
}
abstract EntityKey : EntityKey with get, set

属性值

类型： System.Data EntityKey
EntityKey。

对象服务使用 EntityKey 属性来管理对象上下文中的对象。

有关更多信息，请参见Identity Resolution, State Managment, and Change Tracking和 Tracking Changes in POCO Entities。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityWithKey 接口
IEntityWithKey 成员
System.Data.Objects.DataClasses 命名空间


IEntityWithRelationships 接口

IEntityWithRelationships 接口
成员

定义与一个或多个其他实体类型具有关系的实体类型。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Interface IEntityWithRelationships
public interface IEntityWithRelationships
public interface class IEntityWithRelationships
type IEntityWithRelationships =  interface end

IEntityWithRelationships 定义与其他类型有关系的实体类型必须实现的功能。关系在 Entity Data Model 中定义为关联。 IEntityWithRelationships 定义与其他类型有关系的实体类型必须实现的功能。关系在 Entity Data Model 中定义为关联。

EntityObject 是实体数据模型工具生成的所有实体类型的基类。EntityObject 类实现 IEntityWithRelationships。 EntityObject 是实体数据模型工具生成的所有实体类型的基类。EntityObject 类实现 IEntityWithRelationships。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityWithRelationships 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Working With POCO (Entity Framework)


IEntityWithRelationships 成员

IEntityWithRelationships 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityWithRelationships 接口

定义与一个或多个其他实体类型具有关系的实体类型。

IEntityWithRelationships 类型公开以下成员。

名称 说明
页首

参考

IEntityWithRelationships 接口
System.Data.Objects.DataClasses 命名空间


IEntityWithRelationships 属性

IEntityWithRelationships 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IEntityWithRelationships 接口

IEntityWithRelationships 类型公开以下成员。

名称 说明
页首

参考

IEntityWithRelationships 接口
System.Data.Objects.DataClasses 命名空间


IEntityWithRelationships ..::.RelationshipManager 属性

IEntityWithRelationships
.
.
::
.
RelationshipManager 属性
IEntityWithRelationships 接口

返回关系管理器，该管理器管理实体类型实例的关系。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property RelationshipManager As RelationshipManager
    Get
RelationshipManager RelationshipManager { get; }
property RelationshipManager^ RelationshipManager {
    RelationshipManager^ get ();
}
abstract RelationshipManager : RelationshipManager

属性值

类型： System.Data.Objects.DataClasses RelationshipManager
此实体的 RelationshipManager。

获取实体类型实例的 RelationshipManager。对象服务使用此属性提供对相关对象的访问。 获取实体类型实例的 RelationshipManager。对象服务使用此属性提供对相关对象的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IEntityWithRelationships 接口
IEntityWithRelationships 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Working With POCO (Entity Framework)


IRelatedEnd 接口

IRelatedEnd 接口
成员

定义关系的端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Interface IRelatedEnd
public interface IRelatedEnd
public interface class IRelatedEnd
type IRelatedEnd =  interface end

IRelatedEnd 定义表示关联中一端的对象的要求。该接口由 RelatedEnd 类实现。RelatedEnd 是 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类的基类。 IRelatedEnd 定义表示关联中一端的对象的要求。该接口由 RelatedEnd 类实现。RelatedEnd 是 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类的基类。 IRelatedEnd 定义表示关联中一端的对象的要求。该接口由 RelatedEnd 类实现。RelatedEnd 是 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类的基类。

本主题中的示例基于由Entity Data Model Wizard生成的 Adventure Works Sales Model。

下面的示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 下面的示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName)
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName)
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact).RelationshipManager
        .GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName);
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName);
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects
Configuring the Entity Framework (Entity Framework Tasks)


IRelatedEnd 成员

IRelatedEnd 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

定义关系的端。

IRelatedEnd 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IRelatedEnd 接口
System.Data.Objects.DataClasses 命名空间


IRelatedEnd 方法

IRelatedEnd 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

IRelatedEnd 类型公开以下成员。

名称 说明
页首

参考

IRelatedEnd 接口
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.Add 方法

IRelatedEnd
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

将对象添加到相关端。

名称 说明
页首

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.Add 方法 (IEntityWithRelationships)

IRelatedEnd
.
.
::
.
Add 方法 (IEntityWithRelationships)
IRelatedEnd 接口

将对象添加到相关端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub Add ( _
    entity As IEntityWithRelationships _
)
void Add(
    IEntityWithRelationships entity
)
void Add(
    IEntityWithRelationships^ entity
)
abstract Add :
        entity:IEntityWithRelationships -> unit

参数

entity
类型： System.Data.Objects.DataClasses IEntityWithRelationships
要添加到集合中的对象。entity 必须实现 IEntityWithRelationships。 要添加到集合中的对象。entity 必须实现 IEntityWithRelationships。

Add 方法将对象添加到相关端。相关端必须为 EntityCollection<(Of <(TEntity>)>)。 Add 方法将对象添加到相关端。相关端必须为 EntityCollection<(Of <(TEntity>)>)。

当源对象实现 IEntityWithRelationships 并在 ObjectStateManager 中跟踪源对象时，也跟踪添加的对象。

RelatedEnd 类显式实现 Add 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Add。 RelatedEnd 类显式实现 Add 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Add。 RelatedEnd 类显式实现 Add 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Add。

如果相关端是一个 EntityReference<(Of <(TEntity>)>)，并且该引用的 Value 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则此方法将引发异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Add 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Adding, Modifying, and Deleting Objects (Entity Framework)
Relationships


IRelatedEnd ..::.Add 方法 (Object)

IRelatedEnd
.
.
::
.
Add 方法 (Object)
IRelatedEnd 接口

将对象添加到相关端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub Add ( _
    entity As Object _
)
void Add(
    Object entity
)
void Add(
    Object^ entity
)
abstract Add :
        entity:Object -> unit

参数

entity
类型： System Object
要添加到集合中的对象。

对未实现 IEntityWithRelationships 的实体类使用此方法重载。对实现了 IEntityWithRelationships 的实体类使用 Add 方法。 对未实现 IEntityWithRelationships 的实体类使用此方法重载。对实现了 IEntityWithRelationships 的实体类使用 Add 方法。

Add 方法将对象添加到相关端。相关端必须为 EntityCollection<(Of <(TEntity>)>)。 Add 方法将对象添加到相关端。相关端必须为 EntityCollection<(Of <(TEntity>)>)。

RelatedEnd 类显式实现 Add 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Add。 RelatedEnd 类显式实现 Add 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Add。 RelatedEnd 类显式实现 Add 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Add。

如果相关端是一个 EntityReference<(Of <(TEntity>)>)，并且该引用的 Value 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则此方法将引发异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Add 重载
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.Attach 方法

IRelatedEnd
.
.
::
.
Attach 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

定义两个附加对象之间的关系。

名称 说明
页首

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.Attach 方法 (IEntityWithRelationships)

IRelatedEnd
.
.
::
.
Attach 方法 (IEntityWithRelationships)
IRelatedEnd 接口

定义两个附加对象之间的关系。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub Attach ( _
    entity As IEntityWithRelationships _
)
void Attach(
    IEntityWithRelationships entity
)
void Attach(
    IEntityWithRelationships^ entity
)
abstract Attach :
        entity:IEntityWithRelationships -> unit

参数

entity
类型： System.Data.Objects.DataClasses IEntityWithRelationships
要附加的对象。entity 必须实现 IEntityWithRelationships。 要附加的对象。entity 必须实现 IEntityWithRelationships。

Attach 方法用于定义附加到同一 ObjectContext 实例的两个对象之间的关系。

RelatedEnd 类显式实现 Attach 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现定义附加的源对象和附加到集合的对象之间的关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 RelatedEnd 类显式实现 Attach 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现定义附加的源对象和附加到集合的对象之间的关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 RelatedEnd 类显式实现 Attach 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现定义附加的源对象和附加到集合的对象之间的关系。有关更多信息，请参见Attaching Objects (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Attach 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Attaching Objects
Relationships


IRelatedEnd ..::.Attach 方法 (Object)

IRelatedEnd
.
.
::
.
Attach 方法 (Object)
IRelatedEnd 接口

定义两个附加对象之间的关系。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub Attach ( _
    entity As Object _
)
void Attach(
    Object entity
)
void Attach(
    Object^ entity
)
abstract Attach :
        entity:Object -> unit

参数

entity
类型： System Object
要附加的对象。

对未实现 IEntityWithRelationships 的实体类使用此方法重载。对实现了 IEntityWithRelationships 的实体类使用 Attach 方法。 对未实现 IEntityWithRelationships 的实体类使用此方法重载。对实现了 IEntityWithRelationships 的实体类使用 Attach 方法。

Attach 方法用于定义附加到同一 ObjectContext 实例的两个对象之间的关系。

RelatedEnd 类显式实现 Attach 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现定义附加的源对象和附加到集合的对象之间的关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 RelatedEnd 类显式实现 Attach 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现定义附加的源对象和附加到集合的对象之间的关系。有关更多信息，请参见Attaching Objects (Entity Framework)。 RelatedEnd 类显式实现 Attach 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现定义附加的源对象和附加到集合的对象之间的关系。有关更多信息，请参见Attaching Objects (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Attach 重载
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.CreateSourceQuery 方法

IRelatedEnd
.
.
::
.
CreateSourceQuery 方法
IRelatedEnd 接口

返回一个 IEnumerable，它表示属于相关端的对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Function CreateSourceQuery As IEnumerable
IEnumerable CreateSourceQuery()
IEnumerable^ CreateSourceQuery()
abstract CreateSourceQuery : unit -> IEnumerable

返回值

类型： System.Collections IEnumerable
一个 IEnumerable，它表示属于相关端的对象。

CreateSourceQuery 方法由 RelatedEnd 类显式实现。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类都重写 IRelatedEnd..::.CreateSourceQuery 方法以返回一个 ObjectQuery<(Of <(T>)>)，该查询在执行时返回属于相关端的相同对象集。 CreateSourceQuery 方法由 RelatedEnd 类显式实现。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类都重写 IRelatedEnd..::.CreateSourceQuery 方法以返回一个 ObjectQuery<(Of <(T>)>)，该查询在执行时返回属于相关端的相同对象集。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

How to: Query Related Objects in an EntityCollection (Entity Framework)
Relationships


IRelatedEnd ..::.GetEnumerator 方法

IRelatedEnd
.
.
::
.
GetEnumerator 方法
IRelatedEnd 接口

返回一个 IEnumerator，它循环访问相关对象的集合。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Function GetEnumerator As IEnumerator
IEnumerator GetEnumerator()
IEnumerator^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个 IEnumerator。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.Load 方法

IRelatedEnd
.
.
::
.
Load 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

将一个或多个相关对象加载到此相关端中。

名称 说明
页首

调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Loading Related Objects


IRelatedEnd ..::.Load 方法

IRelatedEnd
.
.
::
.
Load 方法
IRelatedEnd 接口

使用默认合并选项将一个或多个相关对象加载到此相关端中。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub Load
void Load()
void Load()
abstract Load : unit -> unit

RelatedEnd 类实现 IRelatedEnd 的 Load 方法。有关更多信息，请参见Load。 RelatedEnd 类实现 IRelatedEnd 的 Load 方法。有关更多信息，请参见Load。

调用[Load]从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 调用[Load]从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。

无论 IsLoaded 是否为 true，Load 方法都从数据源加载相关对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Load 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships


IRelatedEnd ..::.Load 方法 (MergeOption)

IRelatedEnd
.
.
::
.
Load 方法 (MergeOption)
IRelatedEnd 接口

使用指定合并选项将一个或多个相关对象加载到相关端中。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Sub Load ( _
    mergeOption As MergeOption _
)
void Load(
    MergeOption mergeOption
)
void Load(
    MergeOption mergeOption
)
abstract Load :
        mergeOption:MergeOption -> unit

参数

mergeOption
类型： System.Data.Objects MergeOption
将对象合并到现有 EntityCollection<(Of <(TEntity>)>) 中时，要使用的 MergeOption。

RelatedEnd 类实现 Load 方法。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类都重写此实现。 RelatedEnd 类实现 Load 方法。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类都重写此实现。

调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。

无论 IsLoaded 是否为 true，Load 方法都从数据源加载相关对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Load 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Loading Related Objects


IRelatedEnd ..::.Remove 方法

IRelatedEnd
.
.
::
.
Remove 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

从相关端处的对象集合中移除一个对象。

名称 说明
页首

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.Remove 方法 (IEntityWithRelationships)

IRelatedEnd
.
.
::
.
Remove 方法 (IEntityWithRelationships)
IRelatedEnd 接口

从相关端处的对象集合中移除一个对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Function Remove ( _
    entity As IEntityWithRelationships _
) As Boolean
bool Remove(
    IEntityWithRelationships entity
)
bool Remove(
    IEntityWithRelationships^ entity
)
abstract Remove :
        entity:IEntityWithRelationships -> bool

参数

entity
类型： System.Data.Objects.DataClasses IEntityWithRelationships
要从集合中移除的对象。entity 必须实现 IEntityWithRelationships。 要从集合中移除的对象。entity 必须实现 IEntityWithRelationships。

返回值

类型： System Boolean
如果成功移除 entity，则为 true；如果 entity 不是 IRelatedEnd 的一部分，则为 false。

Remove 方法从相关端移除一个对象。相关端必须为 EntityCollection<(Of <(TEntity>)>)。 Remove 方法从相关端移除一个对象。相关端必须为 EntityCollection<(Of <(TEntity>)>)。

RelatedEnd 类显式实现 Remove 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Remove。 RelatedEnd 类显式实现 Remove 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Remove。 RelatedEnd 类显式实现 Remove 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Remove。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Remove 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Adding, Modifying, and Deleting Objects (Entity Framework)
Relationships


IRelatedEnd ..::.Remove 方法 (Object)

IRelatedEnd
.
.
::
.
Remove 方法 (Object)
IRelatedEnd 接口

从相关端处的对象集合中移除一个对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Function Remove ( _
    entity As Object _
) As Boolean
bool Remove(
    Object entity
)
bool Remove(
    Object^ entity
)
abstract Remove :
        entity:Object -> bool

参数

entity
类型： System Object
要从集合中移除的对象。

返回值

类型： System Boolean
如果成功移除 entity，则为 true；如果 entity 不是 IRelatedEnd 的一部分，则为 false。

对未实现 IEntityWithRelationships 的实体类使用此方法重载。对实现了 IEntityWithRelationships 的实体类使用 Remove 方法。 对未实现 IEntityWithRelationships 的实体类使用此方法重载。对实现了 IEntityWithRelationships 的实体类使用 Remove 方法。

Remove 方法从相关端移除一个对象。相关端必须为 EntityCollection<(Of <(TEntity>)>)。 Remove 方法从相关端移除一个对象。相关端必须为 EntityCollection<(Of <(TEntity>)>)。

RelatedEnd 类显式实现 Remove 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Remove。 RelatedEnd 类显式实现 Remove 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Remove。 RelatedEnd 类显式实现 Remove 方法。EntityCollection<(Of <(TEntity>)>) 类使用此实现。有关更多信息，请参见Remove。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
Remove 重载
System.Data.Objects.DataClasses 命名空间


IRelatedEnd 属性

IRelatedEnd 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IRelatedEnd 接口

IRelatedEnd 类型公开以下成员。

名称 说明
页首

参考

IRelatedEnd 接口
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.IsLoaded 属性

IRelatedEnd
.
.
::
.
IsLoaded 属性
IRelatedEnd 接口

获取一个值，该值指示是否已加载所有相关对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property IsLoaded As Boolean
    Get
bool IsLoaded { get; }
property bool IsLoaded {
    bool get ();
}
abstract IsLoaded : bool

属性值

类型： System Boolean
如果相关端包含数据库中的所有相关实体，则为 true；否则为 false。

RelatedEnd 类实现 IRelatedEnd 的 IsLoaded 方法。有关更多信息，请参见IsLoaded。 RelatedEnd 类实现 IRelatedEnd 的 IsLoaded 方法。有关更多信息，请参见IsLoaded。

EntityCollection<(Of <(TEntity>)>) 类和 EntityReference<(Of <(TEntity>)>) 类继承自 RelatedEnd。

Relationships

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.RelationshipName 属性

IRelatedEnd
.
.
::
.
RelationshipName 属性
IRelatedEnd 接口

获取此相关端所参与的关系的名称。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property RelationshipName As String
    Get
string RelationshipName { get; }
property String^ RelationshipName {
    String^ get ();
}
abstract RelationshipName : string

属性值

类型： System String
此 IRelatedEnd 参与的关系的名称。此关系名称不由命名空间进行限定。 此 IRelatedEnd 参与的关系的名称。此关系名称不由命名空间进行限定。

本主题中的示例基于由Entity Data Model Wizard生成的 Adventure Works Sales Model。

下面的示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 下面的示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName)
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName)
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact).RelationshipManager
        .GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName);
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName);
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Association (EDM)


IRelatedEnd ..::.RelationshipSet 属性

IRelatedEnd
.
.
::
.
RelationshipSet 属性
IRelatedEnd 接口

返回对相关端元数据的引用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property RelationshipSet As RelationshipSet
    Get
RelationshipSet RelationshipSet { get; }
property RelationshipSet^ RelationshipSet {
    RelationshipSet^ get ();
}
abstract RelationshipSet : RelationshipSet

属性值

类型： System.Data.Metadata.Edm RelationshipSet
包含关系一端的元数据的 RelationshipSet 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


IRelatedEnd ..::.SourceRoleName 属性

IRelatedEnd
.
.
::
.
SourceRoleName 属性
IRelatedEnd 接口

获取关系源端处的角色名称。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property SourceRoleName As String
    Get
string SourceRoleName { get; }
property String^ SourceRoleName {
    String^ get ();
}
abstract SourceRoleName : string

属性值

类型： System String
表示角色名称的 String。

RelatedEnd 类实现 SourceRoleName 属性。有关更多信息，请参见SourceRoleName。 RelatedEnd 类实现 SourceRoleName 属性。有关更多信息，请参见SourceRoleName。

角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。 角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Association (EDM)


IRelatedEnd ..::.TargetRoleName 属性

IRelatedEnd
.
.
::
.
TargetRoleName 属性
IRelatedEnd 接口

获取关系目标端处的角色名称。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
ReadOnly Property TargetRoleName As String
    Get
string TargetRoleName { get; }
property String^ TargetRoleName {
    String^ get ();
}
abstract TargetRoleName : string

属性值

类型： System String
表示角色名称的 String。

RelatedEnd 类实现 TargetRoleName 属性。有关更多信息，请参见TargetRoleName。 RelatedEnd 类实现 TargetRoleName 属性。有关更多信息，请参见TargetRoleName。

角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。 角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

IRelatedEnd 接口
IRelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Association (EDM)


RelatedEnd 类

RelatedEnd 类
成员

为相关端实现常用功能的基类。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<SerializableAttribute> _
<DataContractAttribute> _
Public MustInherit Class RelatedEnd _
    Implements IRelatedEnd
[SerializableAttribute]
[DataContractAttribute]
public abstract class RelatedEnd : IRelatedEnd
[SerializableAttribute]
[DataContractAttribute]
public ref class RelatedEnd abstract : IRelatedEnd
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<DataContractAttribute>]
type RelatedEnd =
    class
        interface IRelatedEnd
    end

RelatedEnd 是 EntityCollection<(Of <(TEntity>)>) 类和 EntityReference<(Of <(TEntity>)>) 类的基类。

RelatedEnd 类实现 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 类之间共享的功能。

不应直接从代码中使用此类。

System.Data.Objects.DataClasses System.Data.Objects.DataClasses..::.RelatedEndRelatedEnd

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd 成员

RelatedEnd 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

为相关端实现常用功能的基类。

RelatedEnd 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

RelatedEnd 类
System.Data.Objects.DataClasses 命名空间


RelatedEnd 方法

RelatedEnd 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

RelatedEnd 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

RelatedEnd 类
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.Add 方法

RelatedEnd
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

将对象添加到相关端。

名称 说明
页首

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.IRelatedEnd ..::.Add 方法 (IEntityWithRelationships)

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
Add 方法 (IEntityWithRelationships)
RelatedEnd 类

将对象添加到相关端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Sub Add ( _
    entity As IEntityWithRelationships _
) Implements IRelatedEnd.Add
void IRelatedEnd.Add(
    IEntityWithRelationships entity
)
private:
virtual void Add(
    IEntityWithRelationships^ entity
) sealed = IRelatedEnd::Add
private abstract Add :
        entity:IEntityWithRelationships -> unit
private override Add :
        entity:IEntityWithRelationships -> unit

参数

entity
类型： System.Data.Objects.DataClasses IEntityWithRelationships
要添加到集合中的对象。此对象必须实现 IEntityWithRelationships 接口。 要添加到集合中的对象。此对象必须实现 IEntityWithRelationships 接口。

实现

此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。 此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。

Add 方法仅用于与 .NET Framework 早期版本的兼容性。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Add 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.IRelatedEnd ..::.Add 方法 (Object)

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
Add 方法 (Object)
RelatedEnd 类

将对象添加到相关端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Sub Add ( _
    entity As Object _
) Implements IRelatedEnd.Add
void IRelatedEnd.Add(
    Object entity
)
private:
virtual void Add(
    Object^ entity
) sealed = IRelatedEnd::Add
private abstract Add :
        entity:Object -> unit
private override Add :
        entity:Object -> unit

参数

entity
类型： System Object
要添加到相关端的实体实例。

实现

如果源实体对象附加到缓存，则所有连接端都添加到对象缓存，其对应关系也添加到 ObjectStateManager。关系的 RelatedEnd 也是固定的。 如果源实体对象附加到缓存，则所有连接端都添加到对象缓存，其对应关系也添加到 ObjectStateManager。关系的 RelatedEnd 也是固定的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Add 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects
Attaching Objects


RelatedEnd ..::.Attach 方法

RelatedEnd
.
.
::
.
Attach 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

在相关端处附加对象。

名称 说明
页首

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.IRelatedEnd ..::.Attach 方法 (IEntityWithRelationships)

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
Attach 方法 (IEntityWithRelationships)
RelatedEnd 类

在相关端处附加对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Sub Attach ( _
    entity As IEntityWithRelationships _
) Implements IRelatedEnd.Attach
void IRelatedEnd.Attach(
    IEntityWithRelationships entity
)
private:
virtual void Attach(
    IEntityWithRelationships^ entity
) sealed = IRelatedEnd::Attach
private abstract Attach :
        entity:IEntityWithRelationships -> unit
private override Attach :
        entity:IEntityWithRelationships -> unit

参数

entity
类型： System.Data.Objects.DataClasses IEntityWithRelationships
要附加的对象。

实现

此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。 此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。

Attach 方法仅用于与 .NET Framework 早期版本的兼容性。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Attach 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.IRelatedEnd ..::.Attach 方法 (Object)

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
Attach 方法 (Object)
RelatedEnd 类

将对象附加到相关端。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Sub Attach ( _
    entity As Object _
) Implements IRelatedEnd.Attach
void IRelatedEnd.Attach(
    Object entity
)
private:
virtual void Attach(
    Object^ entity
) sealed = IRelatedEnd::Attach
private abstract Attach :
        entity:Object -> unit
private override Attach :
        entity:Object -> unit

参数

entity
类型： System Object

实现

如果相关端上附加了某些实体，则现有实体将与新实体合并。不假定新的对象为相关实体对象的完整集。 如果相关端上附加了某些实体，则现有实体将与新实体合并。不假定新的对象为相关实体对象的完整集。

源实体对象和所有传递的实体对象的状态都必须为 Unchanged 或 Modified。仅当状态管理器正在跟踪关系实例时，才允许已删除的元素。 源实体对象和所有传递的实体对象的状态都必须为 Unchanged 或 Modified。仅当状态管理器正在跟踪关系实例时，才允许已删除的元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Attach 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects
Attaching Objects


RelatedEnd ..::.GetEnumerator 方法

RelatedEnd
.
.
::
.
GetEnumerator 方法
RelatedEnd 类

返回一个 IEnumerator，它循环访问相关对象的集合。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function GetEnumerator As IEnumerator
public IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() sealed
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个 IEnumerator。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.IRelatedEnd ..::.CreateSourceQuery 方法

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
CreateSourceQuery 方法
RelatedEnd 类

返回一个 IEnumerable，它表示属于相关端的对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Function CreateSourceQuery As IEnumerable
    Implements IRelatedEnd.CreateSourceQuery
IEnumerable IRelatedEnd.CreateSourceQuery()
private:
virtual IEnumerable^ CreateSourceQuery() sealed = IRelatedEnd::CreateSourceQuery
private abstract CreateSourceQuery : unit -> IEnumerable
private override CreateSourceQuery : unit -> IEnumerable

返回值

类型： System.Collections IEnumerable
一个 IEnumerable，它表示属于相关端的对象。

实现

此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。 此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。

EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 都重写 IRelatedEnd..::.CreateSourceQuery 以返回 ObjectQuery<(Of <(T>)>)。此查询执行时将返回属于相关端的同一对象集。 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 都重写 IRelatedEnd..::.CreateSourceQuery 以返回 ObjectQuery<(Of <(T>)>)。此查询执行时将返回属于相关端的同一对象集。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects
How to: Query Related Objects in an EntityCollection (Entity Framework)


RelatedEnd ..::.Load 方法

RelatedEnd
.
.
::
.
Load 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

在派生类中重写时，将一个或多个相关对象加载到本地集合或引用中。

名称 说明
页首

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.Load 方法

RelatedEnd
.
.
::
.
Load 方法
RelatedEnd 类

在派生类中重写时，使用默认合并选项将一个或多个相关对象加载到相关端中。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Sub Load
public void Load()
public:
virtual void Load() sealed
abstract Load : unit -> unit
override Load : unit -> unit

实现

异常 | 条件
InvalidOperationException | 使用 NoTracking 查询来检索源对象并且 MergeOption 不是 NoTracking 或相关对象已经加载时。 - 或 - 源对象未附加到 ObjectContext 时。 - 或 - 正在跟踪源对象但其处于 Added 或 Deleted 状态，或者用于 Load 的 MergeOption 为 NoTracking 时。

对于被跟踪的对象，默认合并选项为 AppendOnly。或者，当对象没有在 ObjectStateManager 中跟踪时，默认选项为 NoTracking。若要指定 AppendOnly 以外的合并选项，请对使用特定 MergeOption 参数的 EntityCollection<(Of <(TEntity>)>) 或 EntityReference<(Of <(TEntity>)>) 调用 Load 方法。 对于被跟踪的对象，默认合并选项为 AppendOnly。或者，当对象没有在 ObjectStateManager 中跟踪时，默认选项为 NoTracking。若要指定 AppendOnly 以外的合并选项，请对使用特定 MergeOption 参数的 EntityCollection<(Of <(TEntity>)>) 或 EntityReference<(Of <(TEntity>)>) 调用 Load 方法。

调用 Load 方法会将 IsLoaded 标志设置为 true。

无论 IsLoaded 是否为 true，Load 方法都从数据源加载相关对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Load 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.Load 方法 (MergeOption)

RelatedEnd
.
.
::
.
Load 方法 (MergeOption)
RelatedEnd 类

在派生类中重写时，使用指定合并选项从相关端加载一个或多个对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public MustOverride Sub Load ( _
    mergeOption As MergeOption _
)
public abstract void Load(
    MergeOption mergeOption
)
public:
virtual void Load(
    MergeOption mergeOption
) abstract
abstract Load :
        mergeOption:MergeOption -> unit

参数

mergeOption
类型： System.Data.Objects MergeOption
将对象合并到现有 EntityCollection<(Of <(TEntity>)>) 中时，要使用的 MergeOption。

实现

异常 | 条件
InvalidOperationException | 使用 NoTracking 查询来检索源对象并且 MergeOption 不是 NoTracking 或相关对象已经加载时。 - 或 - 源对象未附加到 ObjectContext 时。 - 或 - 正在跟踪源对象但其处于 Added 或 Deleted 状态，或者用于 Load 的 MergeOption 为 NoTracking 时。

EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 都重写此方法以加载相关对象。调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 都重写此方法以加载相关对象。调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 都重写此方法以加载相关对象。调用Load从导航属性公开的相关端中显式加载相关对象。有关更多信息，请参见Shaping Query Results (Entity Framework)。

调用 Load 方法会将 IsLoaded 标志设置为 true。

无论 IsLoaded 是否为 true，Load 方法都从数据源加载相关对象。

对于被跟踪的对象，默认合并选项为 AppendOnly。或者，当对象没有在 ObjectStateManager 中跟踪时，默认选项为 NoTracking。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Load 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.OnDeserialized 方法

RelatedEnd
.
.
::
.
OnDeserialized 方法
RelatedEnd 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在内部使用，用于反序列化实体对象与 RelationshipManager 实例。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<OnDeserializedAttribute> _
<BrowsableAttribute(False)> _
Public Sub OnDeserialized ( _
    context As StreamingContext _
)
[OnDeserializedAttribute]
[BrowsableAttribute(false)]
public void OnDeserialized(
    StreamingContext context
)
[OnDeserializedAttribute]
[BrowsableAttribute(false)]
public:
void OnDeserialized(
    StreamingContext context
)
[<OnDeserializedAttribute>]
[<BrowsableAttribute(false)>]
member OnDeserialized :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
序列化的流。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.Remove 方法

RelatedEnd
.
.
::
.
Remove 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

从相关端移除对象。

名称 说明
页首

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.IRelatedEnd ..::.Remove 方法 (IEntityWithRelationships)

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
Remove 方法 (IEntityWithRelationships)
RelatedEnd 类

从相关端处的集合中移除一个对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Function Remove ( _
    entity As IEntityWithRelationships _
) As Boolean Implements IRelatedEnd.Remove
bool IRelatedEnd.Remove(
    IEntityWithRelationships entity
)
private:
virtual bool Remove(
    IEntityWithRelationships^ entity
) sealed = IRelatedEnd::Remove
private abstract Remove :
        entity:IEntityWithRelationships -> bool
private override Remove :
        entity:IEntityWithRelationships -> bool

参数

entity
类型： System.Data.Objects.DataClasses IEntityWithRelationships
要从集合中移除的实体实例。

返回值

类型： System Boolean
指示对象是否已移除的值。

实现

此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。 此成员是显式的接口成员实现。只能在 RelatedEnd 实例强制转换为 IRelatedEnd 接口时使用它。

Remove 方法仅用于与 .NET Framework 早期版本的兼容性。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Remove 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects
Adding, Modifiying, and Deleting Objects


RelatedEnd ..::.IRelatedEnd ..::.Remove 方法 (Object)

RelatedEnd
.
.
::
.
IRelatedEnd
.
.
::
.
Remove 方法 (Object)
RelatedEnd 类

如果某个对象是相关端的一部分，则从该相关端中移除该对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Private Function Remove ( _
    entity As Object _
) As Boolean Implements IRelatedEnd.Remove
bool IRelatedEnd.Remove(
    Object entity
)
private:
virtual bool Remove(
    Object^ entity
) sealed = IRelatedEnd::Remove
private abstract Remove :
        entity:Object -> bool
private override Remove :
        entity:Object -> bool

参数

entity
类型： System Object

返回值

类型： System Boolean
如果已成功移除实体，则为 true；否则为 false。

实现

如果源实体对象附加到缓存，则关系标记为删除。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
Remove 重载
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects
Adding, Modifiying, and Deleting Objects


RelatedEnd 属性

RelatedEnd 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

RelatedEnd 类型公开以下成员。

名称 说明
页首

参考

RelatedEnd 类
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.IsLoaded 属性

RelatedEnd
.
.
::
.
IsLoaded 属性
RelatedEnd 类

获取一个值，该值指示是否已加载所有相关对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property IsLoaded As Boolean
    Get
public bool IsLoaded { get; }
public:
virtual property bool IsLoaded {
    bool get () sealed;
}
abstract IsLoaded : bool
override IsLoaded : bool

属性值

类型： System Boolean
如果相关端包含数据库中的所有相关对象，则为 true；否则为 false。

实现

调用 Load 方法会将 IsLoaded 标志设置为 true。

对 EntityCollection<(Of <(TEntity>)>) 调用 Clear 方法会将 IsLoaded 设置为 false。

如果相关端包含在查询路径中，也可能加载 EntityCollection<(Of <(TEntity>)>) 或 EntityReference<(Of <(TEntity>)>)。有关 span 的更多信息，请参见Shaping Query Results (Entity Framework)。 如果相关端包含在查询路径中，也可能加载 EntityCollection<(Of <(TEntity>)>) 或 EntityReference<(Of <(TEntity>)>)。有关 span 的更多信息，请参见Shaping Query Results (Entity Framework)。

无论 IsLoaded 是否为 true，EntityCollection<(Of <(TEntity>)>) 和EntityReference<(Of <(TEntity>)>) 上的 Load 方法都从数据源加载相关对象。

分离对象时，IsLoaded 标志从 false 更改为 true。有关 detach 的更多信息，请参见Managing the Object Context (Entity Framework)。 分离对象时，IsLoaded 标志从 false 更改为 true。有关 detach 的更多信息，请参见Managing the Object Context (Entity Framework)。

为保证进行处理前完全加载相关端，应检查 IsLoaded 是否为 false。如果 IsLoaded 为 false，应调用 Load 方法。 为保证进行处理前完全加载相关端，应检查 IsLoaded 是否为 false。如果 IsLoaded 为 false，应调用 Load 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.RelationshipName 属性

RelatedEnd
.
.
::
.
RelationshipName 属性
RelatedEnd 类

获取此相关端所参与的关系的名称。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property RelationshipName As String
    Get
public string RelationshipName { get; }
public:
virtual property String^ RelationshipName {
    String^ get () sealed;
}
abstract RelationshipName : string
override RelationshipName : string

属性值

类型： System String
此 RelatedEnd 所参与的关系的名称。此关系名称不由命名空间进行限定。 此 RelatedEnd 所参与的关系的名称。此关系名称不由命名空间进行限定。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.RelationshipSet 属性

RelatedEnd
.
.
::
.
RelationshipSet 属性
RelatedEnd 类

返回对相关端元数据的引用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property RelationshipSet As RelationshipSet
    Get
public RelationshipSet RelationshipSet { get; }
public:
virtual property RelationshipSet^ RelationshipSet {
    RelationshipSet^ get () sealed;
}
abstract RelationshipSet : RelationshipSet
override RelationshipSet : RelationshipSet

属性值

类型： System.Data.Metadata.Edm RelationshipSet
包含关系一端的元数据的 RelationshipSet 对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships
Loading Related Objects


RelatedEnd ..::.SourceRoleName 属性

RelatedEnd
.
.
::
.
SourceRoleName 属性
RelatedEnd 类

获取关系源端处的角色名称。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property SourceRoleName As String
    Get
public string SourceRoleName { get; }
public:
virtual property String^ SourceRoleName {
    String^ get () sealed;
}
abstract SourceRoleName : string
override SourceRoleName : string

属性值

类型： System String
表示角色名称的 String。

实现

角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。 角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。

本主题中的示例基于由Entity Data Model Wizard生成的 Adventure Works Sales Model。

下面的示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 下面的示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName)
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName)
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact).RelationshipManager
        .GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName);
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName);
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间
SourceRoleName

其他资源

Association (EDM)
Relationships
Loading Related Objects


RelatedEnd ..::.TargetRoleName 属性

RelatedEnd
.
.
::
.
TargetRoleName 属性
RelatedEnd 类

获取关系目标端处的角色名称。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public ReadOnly Property TargetRoleName As String
    Get
public string TargetRoleName { get; }
public:
virtual property String^ TargetRoleName {
    String^ get () sealed;
}
abstract TargetRoleName : string
override TargetRoleName : string

属性值

类型： System String
表示角色名称的 String。

实现

角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。 角色名称由在概念模型中定义此关系的关联中的 End 元素的 Role 特性指定。有关更多信息，请参见Association (EDM)。

本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName)
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName)
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact).RelationshipManager
        .GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName);
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName);
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间
SourceRoleName

其他资源

Association (EDM)
Relationships
Loading Related Objects


RelatedEnd 事件

RelatedEnd 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelatedEnd 类

RelatedEnd 类型公开以下成员。

名称 说明
页首

参考

RelatedEnd 类
System.Data.Objects.DataClasses 命名空间


RelatedEnd ..::.AssociationChanged 事件

RelatedEnd
.
.
::
.
AssociationChanged 事件
RelatedEnd 类

对相关端进行更改时发生。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Event AssociationChanged As CollectionChangeEventHandler
public event CollectionChangeEventHandler AssociationChanged
public:
 event CollectionChangeEventHandler^ AssociationChanged {
    void add (CollectionChangeEventHandler^ value);
    void remove (CollectionChangeEventHandler^ value);
}
member AssociationChanged : IEvent<CollectionChangeEventHandler,
    CollectionChangeEventArgs>

AssociationChanged 事件由以下方法引发：

  • EntityCollection TEntity Add

  • EntityCollection TEntity Remove

  • EntityCollection TEntity Load

  • EntityReference TEntity Load

  • EntityCollection TEntity Attach

  • EntityCollection TEntity Clear

事件可能在大容量操作中禁止，例如 Load、Attach 和 Clear。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelatedEnd 类
RelatedEnd 成员
System.Data.Objects.DataClasses 命名空间

其他资源

How to: Change Relationships Between Objects (Entity Framework)
Relationships
Loading Related Objects


RelationshipKind 枚举

RelationshipKind 枚举

枚举两个或两个以上实体之间的关系的类型。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Enumeration RelationshipKind
public enum RelationshipKind
public enum class RelationshipKind
type RelationshipKind
成员名称 | 说明
Association | 关系由概念模型中的关联定义。有关更多信息，请参见Association (EDM)。 关系由概念模型中的关联定义。有关更多信息，请参见Association (EDM)。

在本版本中，此枚举只有一个成员。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.Objects.DataClasses 命名空间


RelationshipManager 类

RelationshipManager 类
成员

用于跟踪对象在对象上下文中的关系。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<SerializableAttribute> _
Public Class RelationshipManager
[SerializableAttribute]
public class RelationshipManager
[SerializableAttribute]
public ref class RelationshipManager
[<SerializableAttribute>]
type RelationshipManager =  class end

RelationshipManager 用于跟踪对象上下文中对象之间的关系。对于对象上下文中跟踪的每个关系，都有一个 RelationshipManager 类的实例。关系由概念模型中的关联定义。有关更多信息，请参见Association (EDM)。 RelationshipManager 用于跟踪对象上下文中对象之间的关系。对于对象上下文中跟踪的每个关系，都有一个 RelationshipManager 类的实例。关系由概念模型中的关联定义。有关更多信息，请参见Association (EDM)。 RelationshipManager 用于跟踪对象上下文中对象之间的关系。对于对象上下文中跟踪的每个关系，都有一个 RelationshipManager 类的实例。关系由概念模型中的关联定义。有关更多信息，请参见Association (EDM)。 RelationshipManager 用于跟踪对象上下文中对象之间的关系。对于对象上下文中跟踪的每个关系，都有一个 RelationshipManager 类的实例。关系由概念模型中的关联定义。有关更多信息，请参见Association (EDM)。

本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName)
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName)
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact).RelationshipManager
        .GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName);
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName);
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName);
    }
}

System.Data.Objects.DataClasses System.Data.Objects.DataClasses..::.RelationshipManagerRelationshipManager
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Shaping Query Results (Entity Framework)
Relationships


RelationshipManager 成员

RelationshipManager 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelationshipManager 类

用于跟踪对象在对象上下文中的关系。

RelationshipManager 类型公开以下成员。

名称 说明
页首

参考

RelationshipManager 类
System.Data.Objects.DataClasses 命名空间


RelationshipManager 方法

RelationshipManager 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RelationshipManager 类

RelationshipManager 类型公开以下成员。

名称 说明
页首

参考

RelationshipManager 类
System.Data.Objects.DataClasses 命名空间


RelationshipManager ..::.Create 方法

RelationshipManager
.
.
::
.
Create 方法
RelationshipManager 类

创建一个新的 RelationshipManager 对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Shared Function Create ( _
    owner As IEntityWithRelationships _
) As RelationshipManager
public static RelationshipManager Create(
    IEntityWithRelationships owner
)
public:
static RelationshipManager^ Create(
    IEntityWithRelationships^ owner
)
static member Create :
        owner:IEntityWithRelationships -> RelationshipManager

参数

owner
类型： System.Data.Objects.DataClasses IEntityWithRelationships
对调用此方法的实体的引用。

返回值

类型： System.Data.Objects.DataClasses RelationshipManager
所请求的 RelationshipManager。

Create 方法由实现 IEntityWithRelationships 的对象使用。当对象服务请求实现了 IEntityWithRelationships 的对象的 RelationshipManager 属性时，如果对象的关系管理器不存在，将调用 Create 方法。 Create 方法由实现 IEntityWithRelationships 的对象使用。当对象服务请求实现了 IEntityWithRelationships 的对象的 RelationshipManager 属性时，如果对象的关系管理器不存在，将调用 Create 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships


RelationshipManager ..::.GetAllRelatedEnds 方法

RelationshipManager
.
.
::
.
GetAllRelatedEnds 方法
RelationshipManager 类

返回关系管理器管理的所有相关端的枚举。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function GetAllRelatedEnds As IEnumerable(Of IRelatedEnd)
public IEnumerable<IRelatedEnd> GetAllRelatedEnds()
public:
IEnumerable<IRelatedEnd^>^ GetAllRelatedEnds()
member GetAllRelatedEnds : unit -> IEnumerable<IRelatedEnd>

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
IRelatedEnd
>
)
>
)

实现 IRelatedEnd 的对象的 IEnumerable<(Of <(T>)>)。如果尚未填充关系，则返回空枚举。 实现 IRelatedEnd 的对象的 IEnumerable<(Of <(T>)>)。如果尚未填充关系，则返回空枚举。

GetAllRelatedEnds 方法返回 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 对象的枚举。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 是从 RelatedEnd 派生的具体类型。RelatedEnd 抽象类实现 IRelatedEnd 接口。 GetAllRelatedEnds 方法返回 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 对象的枚举。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 是从 RelatedEnd 派生的具体类型。RelatedEnd 抽象类实现 IRelatedEnd 接口。 GetAllRelatedEnds 方法返回 EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 对象的枚举。EntityCollection<(Of <(TEntity>)>) 和 EntityReference<(Of <(TEntity>)>) 是从 RelatedEnd 派生的具体类型。RelatedEnd 抽象类实现 IRelatedEnd 接口。

本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。 本主题中的示例基于 Adventure Works Sales Model。该示例在 Contact 实体中添加新的 SalesOrderHeader 实体。然后从 Contact 实体获取所有相关端，并显示每个相关端的关系名称、源角色名称和目标角色名称。

Using context As New AdventureWorksEntities()
    Dim contact As New Contact()

    ' Create a new SalesOrderHeader.
    Dim newSalesOrder1 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1)

    ' Create another SalesOrderHeader.
    Dim newSalesOrder2 As New SalesOrderHeader()
    ' Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2)

    ' Get all related ends
    Dim relEnds As IEnumerable(Of IRelatedEnd) = DirectCast(contact, IEntityWithRelationships).RelationshipManager.GetAllRelatedEnds()

    For Each relEnd As IRelatedEnd In relEnds
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName)
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName)
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName)
    Next
End Using

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact).RelationshipManager
        .GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        Console.WriteLine("Relationship Name: {0}", relEnd.RelationshipName);
        Console.WriteLine("Source Role Name: {0}", relEnd.SourceRoleName);
        Console.WriteLine("Target Role Name: {0}", relEnd.TargetRoleName);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Shaping Query Results (Entity Framework)
Relationships


RelationshipManager ..::.GetRelatedCollection <(Of <(TTargetEntity >)>) 方法

RelationshipManager
.
.
::
.
GetRelatedCollection
<
(Of
<
(
TTargetEntity
>
)
>
)
方法
RelationshipManager 类

获取具有指定关系名称和目标角色名称的相关对象的 EntityCollection<(Of <(TEntity>)>)。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function GetRelatedCollection(Of TTargetEntity As Class) ( _
    relationshipName As String, _
    targetRoleName As String _
) As EntityCollection(Of TTargetEntity)
public EntityCollection<TTargetEntity> GetRelatedCollection<TTargetEntity>(
    string relationshipName,
    string targetRoleName
)
where TTargetEntity : class

public:
generic<typename TTargetEntity>
where TTargetEntity : ref class
EntityCollection<TTargetEntity>^ GetRelatedCollection(
    String^ relationshipName,
    String^ targetRoleName
)
member GetRelatedCollection :
        relationshipName:string *
        targetRoleName:string -> EntityCollection<'TTargetEntity>  when 'TTargetEntity : not struct

类型参数

TTargetEntity

返回的 EntityCollection<(Of <(TEntity>)>) 的类型。

参数

relationshipName
类型： System String
要导航的关系的名称。此关系名称不由命名空间进行限定。 要导航的关系的名称。此关系名称不由命名空间进行限定。
targetRoleName
类型： System String
要导航的目标角色的名称。指示在关系中导航的方向。 要导航的目标角色的名称。指示在关系中导航的方向。

返回值

类型： System.Data.Objects.DataClasses EntityCollection
<
(Of
<
(
TTargetEntity
>
)
>
)

相关对象的 EntityCollection<(Of <(TEntity>)>)。
异常 | 条件
InvalidOperationException | 指定角色返回 EntityReference<(Of <(TEntity>)>) 而不是 EntityCollection<(Of <(TEntity>)>)。

获取具有指定关系名称和目标角色名称的相关对象的 EntityCollection<(Of <(TEntity>)>)。

关系名称不应由命名空间限定。如果将命名空间置于关系名称之前，将发生错误。 关系名称不应由命名空间限定。如果将命名空间置于关系名称之前，将发生错误。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships


RelationshipManager ..::.GetRelatedEnd 方法

RelationshipManager
.
.
::
.
GetRelatedEnd 方法
RelationshipManager 类

为关系中的指定目标角色返回正确类型的 EntityCollection<(Of <(TEntity>)>) 或 EntityReference<(Of <(TEntity>)>)。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function GetRelatedEnd ( _
    relationshipName As String, _
    targetRoleName As String _
) As IRelatedEnd
public IRelatedEnd GetRelatedEnd(
    string relationshipName,
    string targetRoleName
)
public:
IRelatedEnd^ GetRelatedEnd(
    String^ relationshipName,
    String^ targetRoleName
)
member GetRelatedEnd :
        relationshipName:string *
        targetRoleName:string -> IRelatedEnd

参数

relationshipName
类型： System String
在其中定义 targetRoleName 的关系的名称。此关系名称不由命名空间进行限定。 在其中定义 targetRoleName 的关系的名称。此关系名称不由命名空间进行限定。
targetRoleName
类型： System String
用于检索 relationshipName 的另一端的目标角色。

返回值

类型： System.Data.Objects.DataClasses IRelatedEnd
表示已检索的 EntityCollection<(Of <(TEntity>)>) 或 EntityReference<(Of <(TEntity>)>) 的 IRelatedEnd。
异常 | 条件
ArgumentNullException | relationshipName 或 targetRoleName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 源类型不匹配所有者类型。
ArgumentException | targetRoleName 无效。 - 或 - 无法在元数据中找到关系类型。

此方法旨在用于用户没有全部元数据的情况，包括关系两端的静态类型信息。这些元数据在关系中的每个实体类型上的 EdmRelationshipAttribute 对象中指定，这样元数据系统可以根据提供的关系名称和目标角色名称进行检索。 此方法旨在用于用户没有全部元数据的情况，包括关系两端的静态类型信息。这些元数据在关系中的每个实体类型上的 EdmRelationshipAttribute 对象中指定，这样元数据系统可以根据提供的关系名称和目标角色名称进行检索。

关系名称不应由命名空间限定。如果将命名空间置于关系名称之前，将发生错误。 关系名称不应由命名空间限定。如果将命名空间置于关系名称之前，将发生错误。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships


RelationshipManager ..::.GetRelatedReference <(Of <(TTargetEntity >)>) 方法

RelationshipManager
.
.
::
.
GetRelatedReference
<
(Of
<
(
TTargetEntity
>
)
>
)
方法
RelationshipManager 类

使用关系名称和目标角色名称的指定组合，获取相关对象的 EntityReference<(Of <(TEntity>)>)。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Function GetRelatedReference(Of TTargetEntity As Class) ( _
    relationshipName As String, _
    targetRoleName As String _
) As EntityReference(Of TTargetEntity)
public EntityReference<TTargetEntity> GetRelatedReference<TTargetEntity>(
    string relationshipName,
    string targetRoleName
)
where TTargetEntity : class

public:
generic<typename TTargetEntity>
where TTargetEntity : ref class
EntityReference<TTargetEntity>^ GetRelatedReference(
    String^ relationshipName,
    String^ targetRoleName
)
member GetRelatedReference :
        relationshipName:string *
        targetRoleName:string -> EntityReference<'TTargetEntity>  when 'TTargetEntity : not struct

类型参数

TTargetEntity

返回的 EntityReference<(Of <(TEntity>)>) 的类型。

参数

relationshipName
类型： System String
要导航的关系的名称。此关系名称不由命名空间进行限定。 要导航的关系的名称。此关系名称不由命名空间进行限定。
targetRoleName
类型： System String
要导航的目标角色的名称。指示在关系中导航的方向。 要导航的目标角色的名称。指示在关系中导航的方向。

返回值

类型： System.Data.Objects.DataClasses EntityReference
<
(Of
<
(
TTargetEntity
>
)
>
)

相关对象的 EntityReference<(Of <(TEntity>)>)。
异常 | 条件
InvalidOperationException | 指定角色返回 EntityCollection<(Of <(TEntity>)>) 而不是 EntityReference<(Of <(TEntity>)>)。

关系名称不应由命名空间限定。如果将命名空间置于关系名称之前，将发生错误。 关系名称不应由命名空间限定。如果将命名空间置于关系名称之前，将发生错误。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Relationships


RelationshipManager ..::.InitializeRelatedCollection <(Of <(TTargetEntity >)>) 方法

RelationshipManager
.
.
::
.
InitializeRelatedCollection
<
(Of
<
(
TTargetEntity
>
)
>
)
方法
RelationshipManager 类

初始化使用默认构造函数创建的现有 EntityCollection<(Of <(TEntity>)>)。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<BrowsableAttribute(False)> _
Public Sub InitializeRelatedCollection(Of TTargetEntity As Class) ( _
    relationshipName As String, _
    targetRoleName As String, _
    entityCollection As EntityCollection(Of TTargetEntity) _
)
[BrowsableAttribute(false)]
public void InitializeRelatedCollection<TTargetEntity>(
    string relationshipName,
    string targetRoleName,
    EntityCollection<TTargetEntity> entityCollection
)
where TTargetEntity : class

[BrowsableAttribute(false)]
public:
generic<typename TTargetEntity>
where TTargetEntity : ref class
void InitializeRelatedCollection(
    String^ relationshipName,
    String^ targetRoleName,
    EntityCollection<TTargetEntity>^ entityCollection
)
[<BrowsableAttribute(false)>]
member InitializeRelatedCollection :
        relationshipName:string *
        targetRoleName:string *
        entityCollection:EntityCollection<'TTargetEntity> -> unit  when 'TTargetEntity : not struct

类型参数

TTargetEntity

要初始化的 EntityCollection<(Of <(TEntity>)>) 的类型。

参数

relationshipName
类型： System String
关系名。
targetRoleName
类型： System String
相关端的角色名称。
entityCollection
类型： System.Data.Objects.DataClasses EntityCollection
<
(Of
<
(
TTargetEntity
>
)
>
)

要初始化的 EntityCollection<(Of <(TEntity>)>)。
异常 | 条件
InvalidOperationException | 提供的 EntityCollection<(Of <(TEntity>)>) 已经初始化时。 - 或 - 关系管理器已经附加到 ObjectContext 时。 - 或 - 关系管理器已经包含具有此名称和目标角色的关系时。

InitializeRelatedCollection<(Of <(TTargetEntity>)>) 方法初始化使用默认构造函数创建的现有 EntityCollection<(Of <(TEntity>)>)。通过使用提供的关系和目标角色名称，初始化 EntityCollection<(Of <(TEntity>)>)。 InitializeRelatedCollection<(Of <(TTargetEntity>)>) 方法初始化使用默认构造函数创建的现有 EntityCollection<(Of <(TEntity>)>)。通过使用提供的关系和目标角色名称，初始化 EntityCollection<(Of <(TEntity>)>)。

InitializeRelatedCollection<(Of <(TTargetEntity>)>) 方法仅在反序列化时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间


RelationshipManager ..::.InitializeRelatedReference <(Of <(TTargetEntity >)>) 方法

RelationshipManager
.
.
::
.
InitializeRelatedReference
<
(Of
<
(
TTargetEntity
>
)
>
)
方法
RelationshipManager 类

初始化使用默认构造函数创建的现有 EntityReference<(Of <(TEntity>)>)。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<BrowsableAttribute(False)> _
Public Sub InitializeRelatedReference(Of TTargetEntity As Class) ( _
    relationshipName As String, _
    targetRoleName As String, _
    entityReference As EntityReference(Of TTargetEntity) _
)
[BrowsableAttribute(false)]
public void InitializeRelatedReference<TTargetEntity>(
    string relationshipName,
    string targetRoleName,
    EntityReference<TTargetEntity> entityReference
)
where TTargetEntity : class

[BrowsableAttribute(false)]
public:
generic<typename TTargetEntity>
where TTargetEntity : ref class
void InitializeRelatedReference(
    String^ relationshipName,
    String^ targetRoleName,
    EntityReference<TTargetEntity>^ entityReference
)
[<BrowsableAttribute(false)>]
member InitializeRelatedReference :
        relationshipName:string *
        targetRoleName:string *
        entityReference:EntityReference<'TTargetEntity> -> unit  when 'TTargetEntity : not struct

类型参数

TTargetEntity

要初始化的 EntityReference<(Of <(TEntity>)>) 的类型。

参数

relationshipName
类型： System String
关系名。
targetRoleName
类型： System String
相关端的角色名称。
entityReference
类型： System.Data.Objects.DataClasses EntityReference
<
(Of
<
(
TTargetEntity
>
)
>
)

要初始化的 EntityReference<(Of <(TEntity>)>)。
异常 | 条件
InvalidOperationException | 提供的 EntityReference<(Of <(TEntity>)>) 已经初始化时。 - 或 - 关系管理器已经附加到 ObjectContext 时。 - 或 - 关系管理器已经包含具有此名称和目标角色的关系时。

InitializeRelatedReference<(Of <(TTargetEntity>)>) 方法初始化使用默认构造函数创建的现有 EntityReference<(Of <(TEntity>)>)。通过使用提供的关系和目标角色名称，初始化 EntityReference<(Of <(TEntity>)>)。 InitializeRelatedReference<(Of <(TTargetEntity>)>) 方法初始化使用默认构造函数创建的现有 EntityReference<(Of <(TEntity>)>)。通过使用提供的关系和目标角色名称，初始化 EntityReference<(Of <(TEntity>)>)。

InitializeRelatedReference<(Of <(TTargetEntity>)>) 方法仅在反序列化时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间


RelationshipManager ..::.OnDeserialized 方法

RelationshipManager
.
.
::
.
OnDeserialized 方法
RelationshipManager 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在内部使用，用于反序列化实体对象与 RelationshipManager 实例。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<BrowsableAttribute(False)> _
<OnDeserializedAttribute> _
Public Sub OnDeserialized ( _
    context As StreamingContext _
)
[BrowsableAttribute(false)]
[OnDeserializedAttribute]
public void OnDeserialized(
    StreamingContext context
)
[BrowsableAttribute(false)]
[OnDeserializedAttribute]
public:
void OnDeserialized(
    StreamingContext context
)
[<BrowsableAttribute(false)>]
[<OnDeserializedAttribute>]
member OnDeserialized :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
序列化的流。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间


RelationshipManager ..::.OnSerializing 方法

RelationshipManager
.
.
::
.
OnSerializing 方法
RelationshipManager 类

由对象服务调用，用来准备 EntityKey，以便以序列化的关系进行二进制序列化。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<BrowsableAttribute(False)> _
<OnSerializingAttribute> _
Public Sub OnSerializing ( _
    context As StreamingContext _
)
[BrowsableAttribute(false)]
[OnSerializingAttribute]
public void OnSerializing(
    StreamingContext context
)
[BrowsableAttribute(false)]
[OnSerializingAttribute]
public:
void OnSerializing(
    StreamingContext context
)
[<BrowsableAttribute(false)>]
[<OnSerializingAttribute>]
member OnSerializing :
        context:StreamingContext -> unit

参数

context
类型： System.Runtime.Serialization StreamingContext
描述给定的序列化流的源和目标，并提供一个由调用方定义的附加上下文。

关系的序列化仅支持用于二进制序列化。完整的对象图（包括关系）不支持用于 Windows Communication Foundation 和 XML 序列化。有关更多信息，请参见Serializing Objects (Entity Framework)。 关系的序列化仅支持用于二进制序列化。完整的对象图（包括关系）不支持用于 Windows Communication Foundation 和 XML 序列化。有关更多信息，请参见Serializing Objects (Entity Framework)。 关系的序列化仅支持用于二进制序列化。完整的对象图（包括关系）不支持用于 Windows Communication Foundation 和 XML 序列化。有关更多信息，请参见Serializing Objects (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

RelationshipManager 类
RelationshipManager 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject 类

StructuralObject 类
成员

以用于设置属性字段值的帮助器方法的形式为代码生成提供支持。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<SerializableAttribute> _
<DataContractAttribute(IsReference := True)> _
Public MustInherit Class StructuralObject _
    Implements INotifyPropertyChanging, INotifyPropertyChanged
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public abstract class StructuralObject : INotifyPropertyChanging,
    INotifyPropertyChanged
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public ref class StructuralObject abstract : INotifyPropertyChanging,
    INotifyPropertyChanged
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<DataContractAttribute(IsReference = true)>]
type StructuralObject =
    class
        interface INotifyPropertyChanging
        interface INotifyPropertyChanged
    end

StructuralObject 是 EntityObject 类型和 ComplexObject 类型的基类。

不应直接从代码中使用此类。

System.Data.Objects.DataClasses System.Data.Objects.DataClasses..::.StructuralObjectStructuralObject

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject 成员

StructuralObject 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StructuralObject 类

以用于设置属性字段值的帮助器方法的形式为代码生成提供支持。

StructuralObject 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

StructuralObject 类
System.Data.Objects.DataClasses 命名空间


StructuralObject 构造函数

StructuralObject 构造函数
StructuralObject 类

初始化 StructuralObject 类的新实例。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Sub New
protected StructuralObject()
protected:
StructuralObject()
new : unit -> StructuralObject

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject 字段

StructuralObject 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StructuralObject 类

StructuralObject 类型公开以下成员。

名称 说明
页首

参考

StructuralObject 类
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.EntityKeyPropertyName 字段

StructuralObject
.
.
::
.
EntityKeyPropertyName 字段
StructuralObject 类

此常量名称用于更改跟踪。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Shared ReadOnly EntityKeyPropertyName As String
public static readonly string EntityKeyPropertyName
public:
static initonly String^ EntityKeyPropertyName
static val EntityKeyPropertyName: string

字段值

类型： System String
返回一个 String，表示作为键的属性的名称。

EntityKeyPropertyName 的值始终为“-EntityKey-”。默认值两边使用短划线以确保其不与现有属性名冲突。短划线在属性名中无效。 EntityKeyPropertyName 的值始终为“-EntityKey-”。默认值两边使用短划线以确保其不与现有属性名冲突。短划线在属性名中无效。 EntityKeyPropertyName 的值始终为“-EntityKey-”。默认值两边使用短划线以确保其不与现有属性名冲突。短划线在属性名中无效。

如果实现 IEntityWithKey 来对概念模型使用自定义数据类，则报告对实体键属性的更改时应使用 EntityKeyPropertyName。也可以使用 -EntityKey-，但使用硬编码的区分大小写的字符串会降低效率。有关更多信息，请参见How to: Implement Custom Data Class Interfaces (Entity Framework)。 如果实现 IEntityWithKey 来对概念模型使用自定义数据类，则报告对实体键属性的更改时应使用 EntityKeyPropertyName。也可以使用 -EntityKey-，但使用硬编码的区分大小写的字符串会降低效率。有关更多信息，请参见How to: Implement Custom Data Class Interfaces (Entity Framework)。 如果实现 IEntityWithKey 来对概念模型使用自定义数据类，则报告对实体键属性的更改时应使用 EntityKeyPropertyName。也可以使用 -EntityKey-，但使用硬编码的区分大小写的字符串会降低效率。有关更多信息，请参见How to: Implement Custom Data Class Interfaces (Entity Framework)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间

其他资源

Managing the Object Context (Entity Framework)


StructuralObject 方法

StructuralObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StructuralObject 类

StructuralObject 类型公开以下成员。

名称 说明
页首

参考

StructuralObject 类
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.BinaryEquals 方法

StructuralObject
.
.
::
.
BinaryEquals 方法
StructuralObject 类

确定指定的字节数组是否包含相等的值。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function BinaryEquals ( _
    first As Byte(), _
    second As Byte() _
) As Boolean
protected internal static bool BinaryEquals(
    byte[] first,
    byte[] second
)
protected public:
static bool BinaryEquals(
    array<unsigned char>^ first,
    array<unsigned char>^ second
)
static member BinaryEquals :
        first:byte[] *
        second:byte[] -> bool

参数

first
类型：
array<
System Byte
>
[]
()
[]

要比较的第一个字节数组值。
second
类型：
array<
System Byte
>
[]
()
[]

要比较的第二个字节数组值。

返回值

类型： System Boolean
如果两个数组具有相同长度且包含相同字节值，或如果两个数组都为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则为 True；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.DefaultDateTimeValue 方法

StructuralObject
.
.
::
.
DefaultDateTimeValue 方法
StructuralObject 类

返回数据源支持的最小日期时间值。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Shared Function DefaultDateTimeValue As DateTime
protected static DateTime DefaultDateTimeValue()
protected:
static DateTime DefaultDateTimeValue()
static member DefaultDateTimeValue : unit -> DateTime

返回值

类型： System DateTime
一个 DateTime 值，表示数据源支持的最小日期时间值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.GetValidValue 方法

StructuralObject
.
.
::
.
GetValidValue 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StructuralObject 类

获取一个属性值。

名称 说明
页首

GetValidValue 方法在实体数据模型工具生成的属性获取器方法中调用。当必须在返回的属性上执行其他操作时，使用这些方法。 GetValidValue 方法在实体数据模型工具生成的属性获取器方法中调用。当必须在返回的属性上执行其他操作时，使用这些方法。

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.GetValidValue 方法 ( array<Byte >[]()[])

StructuralObject
.
.
::
.
GetValidValue 方法 (
array<
Byte
>
[]
()
[]
)
StructuralObject 类

返回当前字节值的副本。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function GetValidValue ( _
    currentValue As Byte() _
) As Byte()
protected internal static byte[] GetValidValue(
    byte[] currentValue
)
protected public:
static array<unsigned char>^ GetValidValue(
    array<unsigned char>^ currentValue
)
static member GetValidValue :
        currentValue:byte[] -> byte[]

参数

currentValue
类型：
array<
System Byte
>
[]
()
[]

当前的字节数组值。

返回值

类型：
array<
System Byte
>
[]
()
[]

当前字节值的副本。

此方法必须返回值的副本，因为在不提供可靠的跟踪更改的机制情况下字节数组可变。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
GetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.GetValidValue <(Of <(T >)>) 方法 (T, String, Boolean, Boolean)

StructuralObject
.
.
::
.
GetValidValue
<
(Of
<
(
T
>
)
>
)
方法 (T, String, Boolean, Boolean)
StructuralObject 类

返回指定属性的复杂类型。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Function GetValidValue(Of T As {New, ComplexObject}) ( _
    currentValue As T, _
    property As String, _
    isNullable As Boolean, _
    isInitialized As Boolean _
) As T
protected internal T GetValidValue<T>(
    T currentValue,
    string property,
    bool isNullable,
    bool isInitialized
)
where T : new(), ComplexObject

protected public:
generic<typename T>
where T : gcnew(), ComplexObject
T GetValidValue(
    T currentValue,
    String^ property,
    bool isNullable,
    bool isInitialized
)
member GetValidValue :
        currentValue:'T *
        property:string *
        isNullable:bool *
        isInitialized:bool -> 'T  when 'T : new() and ComplexObject

类型参数

T

要请求的复杂对象的类型。此类型必须从 ComplexObject 继承。 要请求的复杂对象的类型。此类型必须从 ComplexObject 继承。

参数

currentValue
类型：T
从 ComplexObject 继承的复杂对象。
property
类型： System String
复杂属性的名称，该复杂属性为复杂对象。
isNullable
类型： System Boolean
指示该类型是否支持 null 值。
isInitialized
类型： System Boolean
指示是否初始化该类型。

返回值

类型：T
属性的复杂类型对象。

此方法用于当属性的复杂类型为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时返回一个新的复杂类型。

如果类型未初始化并且不支持 null 值，则此方法调用 SetValidValue 方法将复杂类型赋予属性。如果值已经初始化，则返回现有值。 如果类型未初始化并且不支持 null 值，则此方法调用 SetValidValue 方法将复杂类型赋予属性。如果值已经初始化，则返回现有值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
GetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.OnPropertyChanged 方法

StructuralObject
.
.
::
.
OnPropertyChanged 方法
StructuralObject 类

引发 PropertyChanged 事件。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Overridable Sub OnPropertyChanged ( _
    property As String _
)
protected virtual void OnPropertyChanged(
    string property
)
protected:
virtual void OnPropertyChanged(
    String^ property
)
abstract OnPropertyChanged :
        property:string -> unit
override OnPropertyChanged :
        property:string -> unit

参数

property
类型： System String
已更改属性的名称。

OnPropertyChanged 由 ReportPropertyChanged 方法调用。

OnPropertyChanged 引发 PropertyChanged 事件。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.OnPropertyChanging 方法

StructuralObject
.
.
::
.
OnPropertyChanging 方法
StructuralObject 类

引发 PropertyChanging 事件。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Overridable Sub OnPropertyChanging ( _
    property As String _
)
protected virtual void OnPropertyChanging(
    string property
)
protected:
virtual void OnPropertyChanging(
    String^ property
)
abstract OnPropertyChanging :
        property:string -> unit
override OnPropertyChanging :
        property:string -> unit

参数

property
类型： System String
要更改的属性的名称。

OnPropertyChanging 方法由 ReportPropertyChanging 方法调用。

OnPropertyChanging 方法引发 PropertyChanging 事件。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.ReportPropertyChanged 方法

StructuralObject
.
.
::
.
ReportPropertyChanged 方法
StructuralObject 类

在派生类中重写时，引发一个事件，用于报告属性更改已发生。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Overridable Sub ReportPropertyChanged ( _
    property As String _
)
protected virtual void ReportPropertyChanged(
    string property
)
protected:
virtual void ReportPropertyChanged(
    String^ property
)
abstract ReportPropertyChanged :
        property:string -> unit
override ReportPropertyChanged :
        property:string -> unit

参数

property
类型： System String
已更改属性的名称。
异常 | 条件
ArgumentNullException | property 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | property 为空。

ReportPropertyChanged 方法引发 PropertyChanged 事件。

只要对象的属性值更改，就将调用 ReportPropertyChanged 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.ReportPropertyChanging 方法

StructuralObject
.
.
::
.
ReportPropertyChanging 方法
StructuralObject 类

在派生类中重写时，引发一个事件，用于报告属性更改处于挂起状态。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Overridable Sub ReportPropertyChanging ( _
    property As String _
)
protected virtual void ReportPropertyChanging(
    string property
)
protected:
virtual void ReportPropertyChanging(
    String^ property
)
abstract ReportPropertyChanging :
        property:string -> unit
override ReportPropertyChanging :
        property:string -> unit

参数

property
类型： System String
将要更改的属性的名称。
异常 | 条件
ArgumentNullException | property 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ReportPropertyChanging 方法引发 PropertyChanging 事件。

只要对象的属性值更改挂起，就将调用 ReportPropertyChanging 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法

StructuralObject
.
.
::
.
SetValidValue 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StructuralObject 类

设置一个属性值。

名称 说明
页首

SetValidValue 方法在实体数据模型工具生成的属性设置程序方法中调用。这些方法保留供将来使用。 SetValidValue 方法在实体数据模型工具生成的属性设置程序方法中调用。这些方法保留供将来使用。

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Boolean)

StructuralObject
.
.
::
.
SetValidValue 方法 (Boolean)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Boolean _
) As Boolean
protected internal static bool SetValidValue(
    bool value
)
protected public:
static bool SetValidValue(
    bool value
)
static member SetValidValue :
        value:bool -> bool

参数

value
类型： System Boolean
一个 Boolean 值。

返回值

类型： System Boolean
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Boolean >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Boolean
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Boolean) _
) As Nullable(Of Boolean)
protected internal static Nullable<bool> SetValidValue(
    Nullable<bool> value
)
protected public:
static Nullable<bool> SetValidValue(
    Nullable<bool> value
)
static member SetValidValue :
        value:Nullable<bool> -> Nullable<bool>

参数

value
类型： System Nullable
<
(Of
<
(
Boolean
>
)
>
)

一个可以为 null 的 Boolean 值。

返回值

类型： System Nullable
<
(Of
<
(
Boolean
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Byte)

StructuralObject
.
.
::
.
SetValidValue 方法 (Byte)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Byte _
) As Byte
protected internal static byte SetValidValue(
    byte value
)
protected public:
static unsigned char SetValidValue(
    unsigned char value
)
static member SetValidValue :
        value:byte -> byte

参数

value
类型： System Byte
一个 Byte 值。

返回值

类型： System Byte
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Byte >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Byte
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Byte) _
) As Nullable(Of Byte)
protected internal static Nullable<byte> SetValidValue(
    Nullable<byte> value
)
protected public:
static Nullable<unsigned char> SetValidValue(
    Nullable<unsigned char> value
)
static member SetValidValue :
        value:Nullable<byte> -> Nullable<byte>

参数

value
类型： System Nullable
<
(Of
<
(
Byte
>
)
>
)

一个可以为 null 的 Byte 值。

返回值

类型： System Nullable
<
(Of
<
(
Byte
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (DateTime)

StructuralObject
.
.
::
.
SetValidValue 方法 (DateTime)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As DateTime _
) As DateTime
protected internal static DateTime SetValidValue(
    DateTime value
)
protected public:
static DateTime SetValidValue(
    DateTime value
)
static member SetValidValue :
        value:DateTime -> DateTime

参数

value
类型： System DateTime
一个 DateTime 值。

返回值

类型： System DateTime
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(DateTime >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
DateTime
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of DateTime) _
) As Nullable(Of DateTime)
protected internal static Nullable<DateTime> SetValidValue(
    Nullable<DateTime> value
)
protected public:
static Nullable<DateTime> SetValidValue(
    Nullable<DateTime> value
)
static member SetValidValue :
        value:Nullable<DateTime> -> Nullable<DateTime>

参数

value
类型： System Nullable
<
(Of
<
(
DateTime
>
)
>
)

一个可以为 null 的 DateTime 值。

返回值

类型： System Nullable
<
(Of
<
(
DateTime
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (DateTimeOffset)

StructuralObject
.
.
::
.
SetValidValue 方法 (DateTimeOffset)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As DateTimeOffset _
) As DateTimeOffset
protected internal static DateTimeOffset SetValidValue(
    DateTimeOffset value
)
protected public:
static DateTimeOffset SetValidValue(
    DateTimeOffset value
)
static member SetValidValue :
        value:DateTimeOffset -> DateTimeOffset

参数

value
类型： System DateTimeOffset
一个 DateTimeOffset 值。

返回值

类型： System DateTimeOffset
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(DateTimeOffset >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
DateTimeOffset
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of DateTimeOffset) _
) As Nullable(Of DateTimeOffset)
protected internal static Nullable<DateTimeOffset> SetValidValue(
    Nullable<DateTimeOffset> value
)
protected public:
static Nullable<DateTimeOffset> SetValidValue(
    Nullable<DateTimeOffset> value
)
static member SetValidValue :
        value:Nullable<DateTimeOffset> -> Nullable<DateTimeOffset>

参数

value
类型： System Nullable
<
(Of
<
(
DateTimeOffset
>
)
>
)

一个可以为 null 的 DateTimeOffset 值。

返回值

类型： System Nullable
<
(Of
<
(
DateTimeOffset
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Decimal)

StructuralObject
.
.
::
.
SetValidValue 方法 (Decimal)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Decimal _
) As Decimal
protected internal static decimal SetValidValue(
    decimal value
)
protected public:
static Decimal SetValidValue(
    Decimal value
)
static member SetValidValue :
        value:decimal -> decimal

参数

value
类型： System Decimal
一个 Decimal 值。

返回值

类型： System Decimal
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Decimal >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Decimal
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Decimal) _
) As Nullable(Of Decimal)
protected internal static Nullable<decimal> SetValidValue(
    Nullable<decimal> value
)
protected public:
static Nullable<Decimal> SetValidValue(
    Nullable<Decimal> value
)
static member SetValidValue :
        value:Nullable<decimal> -> Nullable<decimal>

参数

value
类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

一个可以为 null 的 Decimal 值。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Double)

StructuralObject
.
.
::
.
SetValidValue 方法 (Double)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Double _
) As Double
protected internal static double SetValidValue(
    double value
)
protected public:
static double SetValidValue(
    double value
)
static member SetValidValue :
        value:float -> float

参数

value
类型： System Double
一个 Double 值。

返回值

类型： System Double
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Double >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Double
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Double) _
) As Nullable(Of Double)
protected internal static Nullable<double> SetValidValue(
    Nullable<double> value
)
protected public:
static Nullable<double> SetValidValue(
    Nullable<double> value
)
static member SetValidValue :
        value:Nullable<float> -> Nullable<float>

参数

value
类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

一个 Double 值。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Guid)

StructuralObject
.
.
::
.
SetValidValue 方法 (Guid)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Guid _
) As Guid
protected internal static Guid SetValidValue(
    Guid value
)
protected public:
static Guid SetValidValue(
    Guid value
)
static member SetValidValue :
        value:Guid -> Guid

参数

value
类型： System Guid
一个 Guid 值。

返回值

类型： System Guid
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Guid >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Guid
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Guid) _
) As Nullable(Of Guid)
protected internal static Nullable<Guid> SetValidValue(
    Nullable<Guid> value
)
protected public:
static Nullable<Guid> SetValidValue(
    Nullable<Guid> value
)
static member SetValidValue :
        value:Nullable<Guid> -> Nullable<Guid>

参数

value
类型： System Nullable
<
(Of
<
(
Guid
>
)
>
)

一个可以为 null 的 Guid 值。

返回值

类型： System Nullable
<
(Of
<
(
Guid
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Int16)

StructuralObject
.
.
::
.
SetValidValue 方法 (Int16)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Short _
) As Short
protected internal static short SetValidValue(
    short value
)
protected public:
static short SetValidValue(
    short value
)
static member SetValidValue :
        value:int16 -> int16

参数

value
类型： System Int16
一个 Int16 值。

返回值

类型： System Int16
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Int16 >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Int16
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Short) _
) As Nullable(Of Short)
protected internal static Nullable<short> SetValidValue(
    Nullable<short> value
)
protected public:
static Nullable<short> SetValidValue(
    Nullable<short> value
)
static member SetValidValue :
        value:Nullable<int16> -> Nullable<int16>

参数

value
类型： System Nullable
<
(Of
<
(
Int16
>
)
>
)

一个可以为 null 的 Int16 值。

返回值

类型： System Nullable
<
(Of
<
(
Int16
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Int32)

StructuralObject
.
.
::
.
SetValidValue 方法 (Int32)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Integer _
) As Integer
protected internal static int SetValidValue(
    int value
)
protected public:
static int SetValidValue(
    int value
)
static member SetValidValue :
        value:int -> int

参数

value
类型： System Int32
一个 Int32 值。

返回值

类型： System Int32
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Int32 >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Int32
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Integer) _
) As Nullable(Of Integer)
protected internal static Nullable<int> SetValidValue(
    Nullable<int> value
)
protected public:
static Nullable<int> SetValidValue(
    Nullable<int> value
)
static member SetValidValue :
        value:Nullable<int> -> Nullable<int>

参数

value
类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

一个可以为 null 的 Int32 值。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Int64)

StructuralObject
.
.
::
.
SetValidValue 方法 (Int64)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Long _
) As Long
protected internal static long SetValidValue(
    long value
)
protected public:
static long long SetValidValue(
    long long value
)
static member SetValidValue :
        value:int64 -> int64

参数

value
类型： System Int64
一个 Int64 值。

返回值

类型： System Int64
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Int64 >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Int64
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Long) _
) As Nullable(Of Long)
protected internal static Nullable<long> SetValidValue(
    Nullable<long> value
)
protected public:
static Nullable<long long> SetValidValue(
    Nullable<long long> value
)
static member SetValidValue :
        value:Nullable<int64> -> Nullable<int64>

参数

value
类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

一个可以为 null 的 Int64 值。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(SByte >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
SByte
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of SByte) _
) As Nullable(Of SByte)
[CLSCompliantAttribute(false)]
protected internal static Nullable<sbyte> SetValidValue(
    Nullable<sbyte> value
)
[CLSCompliantAttribute(false)]
protected public:
static Nullable<signed char> SetValidValue(
    Nullable<signed char> value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:Nullable<sbyte> -> Nullable<sbyte>

参数

value
类型： System Nullable
<
(Of
<
(
SByte
>
)
>
)

一个可以为 null 的 SBtye 值。

返回值

类型： System Nullable
<
(Of
<
(
SByte
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(Single >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
Single
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of Single) _
) As Nullable(Of Single)
protected internal static Nullable<float> SetValidValue(
    Nullable<float> value
)
protected public:
static Nullable<float> SetValidValue(
    Nullable<float> value
)
static member SetValidValue :
        value:Nullable<float32> -> Nullable<float32>

参数

value
类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

一个可以为 null 的 Single 值。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(TimeSpan >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
TimeSpan
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of TimeSpan) _
) As Nullable(Of TimeSpan)
protected internal static Nullable<TimeSpan> SetValidValue(
    Nullable<TimeSpan> value
)
protected public:
static Nullable<TimeSpan> SetValidValue(
    Nullable<TimeSpan> value
)
static member SetValidValue :
        value:Nullable<TimeSpan> -> Nullable<TimeSpan>

参数

value
类型： System Nullable
<
(Of
<
(
TimeSpan
>
)
>
)

一个可以为 null 的 TimeSpan 值。

返回值

类型： System Nullable
<
(Of
<
(
TimeSpan
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(UInt16 >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
UInt16
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of UShort) _
) As Nullable(Of UShort)
[CLSCompliantAttribute(false)]
protected internal static Nullable<ushort> SetValidValue(
    Nullable<ushort> value
)
[CLSCompliantAttribute(false)]
protected public:
static Nullable<unsigned short> SetValidValue(
    Nullable<unsigned short> value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:Nullable<uint16> -> Nullable<uint16>

参数

value
类型： System Nullable
<
(Of
<
(
UInt16
>
)
>
)

一个可以为 null 的 UInt16 值。

返回值

类型： System Nullable
<
(Of
<
(
UInt16
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(UInt32 >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
UInt32
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of UInteger) _
) As Nullable(Of UInteger)
[CLSCompliantAttribute(false)]
protected internal static Nullable<uint> SetValidValue(
    Nullable<uint> value
)
[CLSCompliantAttribute(false)]
protected public:
static Nullable<unsigned int> SetValidValue(
    Nullable<unsigned int> value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:Nullable<uint32> -> Nullable<uint32>

参数

value
类型： System Nullable
<
(Of
<
(
UInt32
>
)
>
)

一个可以为 null 的无符号整数值。

返回值

类型： System Nullable
<
(Of
<
(
UInt32
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Nullable <(Of <(UInt64 >)>))

StructuralObject
.
.
::
.
SetValidValue 方法 (Nullable
<
(Of
<
(
UInt64
>
)
>
)
)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As Nullable(Of ULong) _
) As Nullable(Of ULong)
[CLSCompliantAttribute(false)]
protected internal static Nullable<ulong> SetValidValue(
    Nullable<ulong> value
)
[CLSCompliantAttribute(false)]
protected public:
static Nullable<unsigned long long> SetValidValue(
    Nullable<unsigned long long> value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:Nullable<uint64> -> Nullable<uint64>

参数

value
类型： System Nullable
<
(Of
<
(
UInt64
>
)
>
)

一个可以为 null 的 UInt64 值。

返回值

类型： System Nullable
<
(Of
<
(
UInt64
>
)
>
)

提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (SByte)

StructuralObject
.
.
::
.
SetValidValue 方法 (SByte)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As SByte _
) As SByte
[CLSCompliantAttribute(false)]
protected internal static sbyte SetValidValue(
    sbyte value
)
[CLSCompliantAttribute(false)]
protected public:
static signed char SetValidValue(
    signed char value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:sbyte -> sbyte

参数

value
类型： System SByte
一个 SByte 值。

返回值

类型： System SByte
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (Single)

StructuralObject
.
.
::
.
SetValidValue 方法 (Single)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Single _
) As Single
protected internal static float SetValidValue(
    float value
)
protected public:
static float SetValidValue(
    float value
)
static member SetValidValue :
        value:float32 -> float32

参数

value
类型： System Single
一个 Single 值。

返回值

类型： System Single
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (TimeSpan)

StructuralObject
.
.
::
.
SetValidValue 方法 (TimeSpan)
StructuralObject 类

保留此方法供将来使用。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As TimeSpan _
) As TimeSpan
protected internal static TimeSpan SetValidValue(
    TimeSpan value
)
protected public:
static TimeSpan SetValidValue(
    TimeSpan value
)
static member SetValidValue :
        value:TimeSpan -> TimeSpan

参数

value
类型： System TimeSpan
一个 TimeSpan 值。

返回值

类型： System TimeSpan
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (UInt16)

StructuralObject
.
.
::
.
SetValidValue 方法 (UInt16)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As UShort _
) As UShort
[CLSCompliantAttribute(false)]
protected internal static ushort SetValidValue(
    ushort value
)
[CLSCompliantAttribute(false)]
protected public:
static unsigned short SetValidValue(
    unsigned short value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:uint16 -> uint16

参数

value
类型： System UInt16
一个 UInt16 值。

返回值

类型： System UInt16
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (UInt32)

StructuralObject
.
.
::
.
SetValidValue 方法 (UInt32)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As UInteger _
) As UInteger
[CLSCompliantAttribute(false)]
protected internal static uint SetValidValue(
    uint value
)
[CLSCompliantAttribute(false)]
protected public:
static unsigned int SetValidValue(
    unsigned int value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:uint32 -> uint32

参数

value
类型： System UInt32
一个 UInt32 值。

返回值

类型： System UInt32
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (UInt64)

StructuralObject
.
.
::
.
SetValidValue 方法 (UInt64)
StructuralObject 类

保留此方法供将来使用。

此 API 不兼容 CLS。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
<CLSCompliantAttribute(False)> _
Protected Friend Shared Function SetValidValue ( _
    value As ULong _
) As ULong
[CLSCompliantAttribute(false)]
protected internal static ulong SetValidValue(
    ulong value
)
[CLSCompliantAttribute(false)]
protected public:
static unsigned long long SetValidValue(
    unsigned long long value
)
[<CLSCompliantAttribute(false)>]
static member SetValidValue :
        value:uint64 -> uint64

参数

value
类型： System UInt64
一个 UInt64 值。

返回值

类型： System UInt64
提供的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 ( array<Byte >[]()[], Boolean)

StructuralObject
.
.
::
.
SetValidValue 方法 (
array<
Byte
>
[]
()
[]
, Boolean)
StructuralObject 类

返回提供的字节数组的副本，或者返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（如果支持）。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As Byte(), _
    isNullable As Boolean _
) As Byte()
protected internal static byte[] SetValidValue(
    byte[] value,
    bool isNullable
)
protected public:
static array<unsigned char>^ SetValidValue(
    array<unsigned char>^ value,
    bool isNullable
)
static member SetValidValue :
        value:byte[] *
        isNullable:bool -> byte[]

参数

value
类型：
array<
System Byte
>
[]
()
[]

要验证的 Byte 数组。
isNullable
类型： System Boolean
指示是否支持 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值的布尔值。

返回值

类型：
array<
System Byte
>
[]
()
[]

返回 Byte 数组的副本，或者返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ConstraintException | 一个不可为 null 的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时则引发。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue 方法 (String, Boolean)

StructuralObject
.
.
::
.
SetValidValue 方法 (String, Boolean)
StructuralObject 类

返回提供的字符串的副本，或者返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（如果支持）。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function SetValidValue ( _
    value As String, _
    isNullable As Boolean _
) As String
protected internal static string SetValidValue(
    string value,
    bool isNullable
)
protected public:
static String^ SetValidValue(
    String^ value,
    bool isNullable
)
static member SetValidValue :
        value:string *
        isNullable:bool -> string

参数

value
类型： System String
一个 String 值。
isNullable
类型： System Boolean
指示是否支持 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值的 Boolean。

返回值

类型： System String
提供的 String 值，或者是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ConstraintException | 一个不可为 null 的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时则引发。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.SetValidValue <(Of <(T >)>) 方法 (T, T, String)

StructuralObject
.
.
::
.
SetValidValue
<
(Of
<
(
T
>
)
>
)
方法 (T, T, String)
StructuralObject 类

设置指定属性的复杂对象。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Function SetValidValue(Of T As ComplexObject) ( _
    oldValue As T, _
    newValue As T, _
    property As String _
) As T
protected internal T SetValidValue<T>(
    T oldValue,
    T newValue,
    string property
)
where T : ComplexObject

protected public:
generic<typename T>
where T : ComplexObject
T SetValidValue(
    T oldValue,
    T newValue,
    String^ property
)
member SetValidValue :
        oldValue:'T *
        newValue:'T *
        property:string -> 'T  when 'T : ComplexObject

类型参数

T

要替换的复杂对象的类型。此类型必须从 ComplexObject 继承。 要替换的复杂对象的类型。此类型必须从 ComplexObject 继承。

参数

oldValue
类型：T
属性的原始复杂对象（如果有的话）。
newValue
类型：T
要设置的复杂对象。
property
类型： System String
要设置为复杂对象的复杂属性。

返回值

类型：T
派生自 ComplexObject 的复杂类型。

不支持具有 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值的复杂对象。

此方法用新的复杂对象更换指定属性的现有复杂对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
SetValidValue 重载
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.VerifyComplexObjectIsNotNull <(Of <(TComplex >)>) 方法

StructuralObject
.
.
::
.
VerifyComplexObjectIsNotNull
<
(Of
<
(
TComplex
>
)
>
)
方法
StructuralObject 类

验证复杂对象不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Protected Friend Shared Function VerifyComplexObjectIsNotNull(Of TComplex As ComplexObject) ( _
    complexObject As TComplex, _
    propertyName As String _
) As TComplex
protected internal static TComplex VerifyComplexObjectIsNotNull<TComplex>(
    TComplex complexObject,
    string propertyName
)
where TComplex : ComplexObject

protected public:
generic<typename TComplex>
where TComplex : ComplexObject
static TComplex VerifyComplexObjectIsNotNull(
    TComplex complexObject,
    String^ propertyName
)
static member VerifyComplexObjectIsNotNull :
        complexObject:'TComplex *
        propertyName:string -> 'TComplex  when 'TComplex : ComplexObject

类型参数

TComplex

要验证的复杂对象的类型。此类型必须从 ComplexObject 继承。 要验证的复杂对象的类型。此类型必须从 ComplexObject 继承。

参数

complexObject
类型：TComplex
要验证的复杂对象。
propertyName
类型： System String
父对象上与 complexObject 关联的复杂属性。

返回值

类型：TComplex
要验证的复杂对象。
异常 | 条件
ConstraintException | 当复杂类型为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时。

复杂类型属性不能为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。当调用 SaveChanges 方法并且遇到 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 复杂对象时，发生 InvalidOperationException。与实体的标量属性一样，复杂对象的标量属性可以为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 复杂类型属性不能为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。当调用 SaveChanges 方法并且遇到 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 复杂对象时，发生 InvalidOperationException。与实体的标量属性一样，复杂对象的标量属性可以为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 复杂类型属性不能为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。当调用 SaveChanges 方法并且遇到 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 复杂对象时，发生 InvalidOperationException。与实体的标量属性一样，复杂对象的标量属性可以为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

对象服务调用 VerifyComplexObjectIsNotNull<(Of <(TComplex>)>) 方法检验复杂对象是否不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject 事件

StructuralObject 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StructuralObject 类

StructuralObject 类型公开以下成员。

名称 说明
页首

参考

StructuralObject 类
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.PropertyChanged 事件

StructuralObject
.
.
::
.
PropertyChanged 事件
StructuralObject 类

在更改属性值时发生。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Event PropertyChanged As PropertyChangedEventHandler
public event PropertyChangedEventHandler PropertyChanged
public:
virtual  event PropertyChangedEventHandler^ PropertyChanged {
    void add (PropertyChangedEventHandler^ value);
    void remove (PropertyChangedEventHandler^ value);
}
abstract PropertyChanged : IEvent<PropertyChangedEventHandler,
    PropertyChangedEventArgs>
override PropertyChanged : IEvent<PropertyChangedEventHandler,
    PropertyChangedEventArgs>

实现

处理此事件可以在属性更改时执行业务逻辑，例如写入到日志。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


StructuralObject ..::.PropertyChanging 事件

StructuralObject
.
.
::
.
PropertyChanging 事件
StructuralObject 类

在属性值更改挂起时发生。

命名空间： System.Data.Objects.DataClasses
程序集： System.Data.Entity（在 System.Data.Entity.dll 中）
Public Event PropertyChanging As PropertyChangingEventHandler
public event PropertyChangingEventHandler PropertyChanging
public:
virtual  event PropertyChangingEventHandler^ PropertyChanging {
    void add (PropertyChangingEventHandler^ value);
    void remove (PropertyChangingEventHandler^ value);
}
abstract PropertyChanging : IEvent<PropertyChangingEventHandler,
    PropertyChangingEventArgs>
override PropertyChanging : IEvent<PropertyChangingEventHandler,
    PropertyChangingEventArgs>

实现

处理此事件可以在属性值更改前执行业务逻辑，例如写入到日志。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

StructuralObject 类
StructuralObject 成员
System.Data.Objects.DataClasses 命名空间


System.Data.Sql 命名空间

System.Data.Sql 命名空间

System.Data.Sql 命名空间包含支持 SQL Server 特定的功能的类。

有关此命名空间中的类支持的功能的信息，请参见 枚举 SQL Server 的实例 (ADO.NET) 和 SQL Server 中的查询通知 (ADO.NET)。

说明 说明

在 ADO.NET 2.0 beta 版中，System.Data.Sql 命名空间还包含用于 SQL Server 公共语言运行时 (CLR) 集成的类。但这些类已移到其自己的命名空间 Microsoft.SqlServer.Server 中。有关使用 SQL Server CLR 集成的更多信息，请参见 SQL Server 公共语言运行库集成 (ADO.NET)。 在 ADO.NET 2.0 beta 版中，System.Data.Sql 命名空间还包含用于 SQL Server 公共语言运行时 (CLR) 集成的类。但这些类已移到其自己的命名空间 Microsoft.SqlServer.Server 中。有关使用 SQL Server CLR 集成的更多信息，请参见 SQL Server 公共语言运行库集成 (ADO.NET)。 在 ADO.NET 2.0 beta 版中，System.Data.Sql 命名空间还包含用于 SQL Server 公共语言运行时 (CLR) 集成的类。但这些类已移到其自己的命名空间 Microsoft.SqlServer.Server 中。有关使用 SQL Server CLR 集成的更多信息，请参见 SQL Server 公共语言运行库集成 (ADO.NET)。

 | 类 | 说明
公共类 | SqlDataSourceEnumerator | 提供了一种枚举本地网络内的所有可用 SQL Server 实例的机制。
公共类 | SqlNotificationRequest | 表示对给定命令的通知的请求。

参考

Microsoft.SqlServer.Server
System.Data.SqlClient


SqlDataSourceEnumerator 类

SqlDataSourceEnumerator 类
成员

提供了一种枚举本地网络内的所有可用 SQL Server 实例的机制。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlDataSourceEnumerator _
    Inherits DbDataSourceEnumerator
public sealed class SqlDataSourceEnumerator : DbDataSourceEnumerator
public ref class SqlDataSourceEnumerator sealed : public DbDataSourceEnumerator
[<SealedAttribute>]
type SqlDataSourceEnumerator =
    class
        inherit DbDataSourceEnumerator
    end

SQL Server 2000 和 SQL Server 2005 都允许应用程序确定当前网络内是否存在 SQL Server 实例。SqlDataSourceEnumerator 类将这些信息向应用程序开发人员公开，提供一个包含有关所有可用服务器的信息的 DataTable。此返回表包含一个服务器实例列表，该列表与用户尝试创建新连接时提供的列表匹配，并在“连接属性”对话框上扩展包含所有可用服务器的下拉列表。 SQL Server 2000 和 SQL Server 2005 都允许应用程序确定当前网络内是否存在 SQL Server 实例。SqlDataSourceEnumerator 类将这些信息向应用程序开发人员公开，提供一个包含有关所有可用服务器的信息的 DataTable。此返回表包含一个服务器实例列表，该列表与用户尝试创建新连接时提供的列表匹配，并在“连接属性”对话框上扩展包含所有可用服务器的下拉列表。 SQL Server 2000 和 SQL Server 2005 都允许应用程序确定当前网络内是否存在 SQL Server 实例。SqlDataSourceEnumerator 类将这些信息向应用程序开发人员公开，提供一个包含有关所有可用服务器的信息的 DataTable。此返回表包含一个服务器实例列表，该列表与用户尝试创建新连接时提供的列表匹配，并在“连接属性”对话框上扩展包含所有可用服务器的下拉列表。

System.Data.Sql System.Data.Sql..::.SqlDataSourceEnumeratorSqlDataSourceEnumerator
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataSourceEnumerator 成员
System.Data.Sql 命名空间

其他资源

枚举 SQL Server 的实例 (ADO.NET)


SqlDataSourceEnumerator 成员

SqlDataSourceEnumerator 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataSourceEnumerator 类

提供了一种枚举本地网络内的所有可用 SQL Server 实例的机制。

SqlDataSourceEnumerator 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlDataSourceEnumerator 类
System.Data.Sql 命名空间


SqlDataSourceEnumerator 方法

SqlDataSourceEnumerator 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataSourceEnumerator 类

SqlDataSourceEnumerator 类型公开以下成员。

名称 说明
页首

参考

SqlDataSourceEnumerator 类
System.Data.Sql 命名空间


SqlDataSourceEnumerator ..::.GetDataSources 方法

SqlDataSourceEnumerator
.
.
::
.
GetDataSources 方法
SqlDataSourceEnumerator 类

检索包含有关所有可见 SQL Server 2000 或 SQL Server 2005 实例的信息的 DataTable。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetDataSources As DataTable
public override DataTable GetDataSources()
public:
virtual DataTable^ GetDataSources() override
abstract GetDataSources : unit -> DataTable
override GetDataSources : unit -> DataTable

返回值

类型： System.Data DataTable
返回一个包含有关可见 SQL Server 实例的信息的 DataTable。

此方法返回的表包含以下列，所有这些列都包含字符串：

列 | 说明
ServerName | 服务器名。
InstanceName | 服务器实例的名称。如果服务器作为默认实例运行，则为空。 服务器实例的名称。如果服务器作为默认实例运行，则为空。
IsClustered | 指示服务器是否是群集的一部分。
版本 | 服务器版本（对于 SQL Server 2000，为 8.00.x；对于 SQL Server 2005，为 9.00.x）。
说明 说明

由 SqlDataSourceEnumerator 定位网络上的数据源所使用的机制的性质决定，该方法并不总是能返回可用服务器的完整列表，该列表可能在每次调用时都不同。如果您打算使用此函数来让用户从列表中选择服务器，请确保您始终同时提供键入列表中所没有的名称的选项，以防服务器枚举未能返回所有的可用服务器。此外，此方法的执行时间可能相当长，因此如果性能要求很高，在调用此方法时应谨慎从事。 由 SqlDataSourceEnumerator 定位网络上的数据源所使用的机制的性质决定，该方法并不总是能返回可用服务器的完整列表，该列表可能在每次调用时都不同。如果您打算使用此函数来让用户从列表中选择服务器，请确保您始终同时提供键入列表中所没有的名称的选项，以防服务器枚举未能返回所有的可用服务器。此外，此方法的执行时间可能相当长，因此如果性能要求很高，在调用此方法时应谨慎从事。 由 SqlDataSourceEnumerator 定位网络上的数据源所使用的机制的性质决定，该方法并不总是能返回可用服务器的完整列表，该列表可能在每次调用时都不同。如果您打算使用此函数来让用户从列表中选择服务器，请确保您始终同时提供键入列表中所没有的名称的选项，以防服务器枚举未能返回所有的可用服务器。此外，此方法的执行时间可能相当长，因此如果性能要求很高，在调用此方法时应谨慎从事。

下面的控制台应用程序检索有关所有可见 SQL Server 实例的信息，并在控制台窗口中显示这些信息。

Imports System.Data.Sql

Module Module1
  Sub Main()
    ' Retrieve the enumerator instance and then the data.Dim instance As SqlDataSourceEnumerator = _
     SqlDataSourceEnumerator.Instance
    Dim table As System.Data.DataTable = instance.GetDataSources()

    ' Display the contents of the table.DisplayData(table)

    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
  End Sub

  Private Sub DisplayData(ByVal table As DataTable)
    For Each row As DataRow In table.Rows
      For Each col As DataColumn In table.Columns
        Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
      Next
      Console.WriteLine("============================")
    Next
  End Sub
End Module
using System.Data.Sql;

class Program
{
  static void Main()
  {
    // Retrieve the enumerator instance and then the data.SqlDataSourceEnumerator instance =
      SqlDataSourceEnumerator.Instance;
    System.Data.DataTable table = instance.GetDataSources();

    // Display the contents of the table.DisplayData(table);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
  }

  private static void DisplayData(System.Data.DataTable table)
  {
    foreach (System.Data.DataRow row in table.Rows)
    {
      foreach (System.Data.DataColumn col in table.Columns)
      {
        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
      }
      Console.WriteLine("============================");
    }
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataSourceEnumerator 类
SqlDataSourceEnumerator 成员
System.Data.Sql 命名空间

其他资源

枚举 SQL Server 的实例 (ADO.NET)


SqlDataSourceEnumerator 属性

SqlDataSourceEnumerator 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataSourceEnumerator 类

SqlDataSourceEnumerator 类型公开以下成员。

名称 说明
页首

参考

SqlDataSourceEnumerator 类
System.Data.Sql 命名空间


SqlDataSourceEnumerator ..::.Instance 属性

SqlDataSourceEnumerator
.
.
::
.
Instance 属性
SqlDataSourceEnumerator 类

获取 SqlDataSourceEnumerator 的实例，该实例可用于检索有关可用 SQL Server 实例的信息。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Property Instance As SqlDataSourceEnumerator
    Get
public static SqlDataSourceEnumerator Instance { get; }
public:
static property SqlDataSourceEnumerator^ Instance {
    SqlDataSourceEnumerator^ get ();
}
static member Instance : SqlDataSourceEnumerator

属性值

类型： System.Data.Sql SqlDataSourceEnumerator
SqlDataSourceEnumerator。

SqlDataSourceEnumerator 类不提供构造函数。请改为使用 Instance 属性检索该类的实例。 SqlDataSourceEnumerator 类不提供构造函数。请改为使用 Instance 属性检索该类的实例。

下面的控制台应用程序显示本地网络内的所有可用 SQL Server 2005 实例的列表。该代码使用 Select 方法筛选 GetDataSources 方法返回的表中的行。 下面的控制台应用程序显示本地网络内的所有可用 SQL Server 2005 实例的列表。该代码使用 Select 方法筛选 GetDataSources 方法返回的表中的行。

Imports System.Data.Sql

Module Module1
  Sub Main()
    ' Retrieve the enumerator instance, and
    ' then retrieve the data sources.Dim instance As SqlDataSourceEnumerator = _
     SqlDataSourceEnumerator.Instance
    Dim table As System.Data.DataTable = instance.GetDataSources()

    ' Filter the sources to just show SQL Server 2005 instances.Dim rows() As DataRow = table.Select("Version LIKE '9%'")
    For Each row As DataRow In rows
      Console.WriteLine(row("ServerName"))
    Next
    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
  End Sub
End Module
using System.Data.Sql;

class Program
{
  static void Main()
  {
    // Retrieve the enumerator instance, and
    // then retrieve the data sources.SqlDataSourceEnumerator instance =
      SqlDataSourceEnumerator.Instance;
    System.Data.DataTable table = instance.GetDataSources();

    // Filter the sources to just show SQL Server 2005 instances.System.Data.DataRow[] rows = table.Select("Version LIKE '9%'");
    foreach (System.Data.DataRow row in rows)
    {
      Console.WriteLine(row["ServerName"]);
    }
    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataSourceEnumerator 类
SqlDataSourceEnumerator 成员
System.Data.Sql 命名空间

其他资源

枚举 SQL Server 的实例 (ADO.NET)


SqlNotificationRequest 类

SqlNotificationRequest 类
成员

表示对给定命令的通知的请求。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlNotificationRequest
public sealed class SqlNotificationRequest
public ref class SqlNotificationRequest sealed
[<SealedAttribute>]
type SqlNotificationRequest =  class end

此类提供对 SQL Server 2005 公开的查询通知服务的低级别访问。对于大多数应用程序，SqlDependency 类提供使用查询通知的更简单方法。但是，如果您需要精确地控制何时发生通知，或者需要自定义作为通知的一部分返回的消息数据，此时应使用 SqlNotificationRequest 类。 此类提供对 SQL Server 2005 公开的查询通知服务的低级别访问。对于大多数应用程序，SqlDependency 类提供使用查询通知的更简单方法。但是，如果您需要精确地控制何时发生通知，或者需要自定义作为通知的一部分返回的消息数据，此时应使用 SqlNotificationRequest 类。 此类提供对 SQL Server 2005 公开的查询通知服务的低级别访问。对于大多数应用程序，SqlDependency 类提供使用查询通知的更简单方法。但是，如果您需要精确地控制何时发生通知，或者需要自定义作为通知的一部分返回的消息数据，此时应使用 SqlNotificationRequest 类。

System.Data.Sql System.Data.Sql..::.SqlNotificationRequestSqlNotificationRequest
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationRequest 成员
System.Data.Sql 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlNotificationRequest 成员

SqlNotificationRequest 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationRequest 类

表示对给定命令的通知的请求。

SqlNotificationRequest 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlNotificationRequest 类
System.Data.Sql 命名空间


SqlNotificationRequest 构造函数

SqlNotificationRequest 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationRequest 类

创建 SqlNotificationRequest 类的新实例。

名称 说明
页首

参考

SqlNotificationRequest 类
SqlNotificationRequest 成员
System.Data.Sql 命名空间


SqlNotificationRequest 构造函数

SqlNotificationRequest 构造函数
SqlNotificationRequest 类

使用默认值创建 SqlNotificationRequest 类的新实例。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlNotificationRequest()
public:
SqlNotificationRequest()
new : unit -> SqlNotificationRequest

如果使用默认构造函数创建 SqlNotificationRequest 对象，该实例必须先初始化自己的 UserData 和 Options 属性，然后才可以将对象分配到 SqlCommand 对象的 Notification 属性。对于 UserData，构造函数使用的默认值为 NULL（Visual Basic 中为 Nothing）；对于 Options，为空字符串；对于 Timeout，为零。 如果使用默认构造函数创建 SqlNotificationRequest 对象，该实例必须先初始化自己的 UserData 和 Options 属性，然后才可以将对象分配到 SqlCommand 对象的 Notification 属性。对于 UserData，构造函数使用的默认值为 NULL（Visual Basic 中为 Nothing）；对于 Options，为空字符串；对于 Timeout，为零。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationRequest 类
SqlNotificationRequest 成员
SqlNotificationRequest 重载
System.Data.Sql 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlNotificationRequest 构造函数 (String, String, Int32)

SqlNotificationRequest 构造函数 (String, String, Int32)
SqlNotificationRequest 类

使用用户定义的字符串创建 SqlNotificationRequest 类的新实例，该字符串标识特定的通知请求、预定义的 SQL Server 2005 Service Broker 服务名以及（以秒来计算）超时时间。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    userData As String, _
    options As String, _
    timeout As Integer _
)
public SqlNotificationRequest(
    string userData,
    string options,
    int timeout
)
public:
SqlNotificationRequest(
    String^ userData,
    String^ options,
    int timeout
)
new :
        userData:string *
        options:string *
        timeout:int -> SqlNotificationRequest

参数

userData
类型： System String
一个字符串，它包含此通知的应用程序特定的标识符。通知基础结构并不使用它，但是可以使用它将通知与应用程序状态相关联。此参数中指示的值包含在 Service Broker 队列消息中。 一个字符串，它包含此通知的应用程序特定的标识符。通知基础结构并不使用它，但是可以使用它将通知与应用程序状态相关联。此参数中指示的值包含在 Service Broker 队列消息中。 一个字符串，它包含此通知的应用程序特定的标识符。通知基础结构并不使用它，但是可以使用它将通知与应用程序状态相关联。此参数中指示的值包含在 Service Broker 队列消息中。
options
类型： System String
一个字符串，它包含发送通知消息的 Service Broker 服务名，并且必须包括一个数据库名称或 Service Broker 实例 GUID（用来将服务名查找的范围限制为一个特定的数据库）。
有关 options 参数的格式的更多信息，请参阅 Options。
timeout
类型： System Int32
等待通知消息的时间（以秒为单位）。
异常 | 条件
ArgumentNullException | options 参数的值为 NULL。
ArgumentOutOfRangeException | options 或 userData 参数大于 uint16.MaxValue，或者 timeout 参数中的值小于零。

此构造函数可用于初始化新 SqlNotificationRequest 实例，前提是提供自己的标识符、SQL Server 2005 Service Broker 服务名和超时值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationRequest 类
SqlNotificationRequest 成员
SqlNotificationRequest 重载
System.Data.Sql 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlNotificationRequest 方法

SqlNotificationRequest 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationRequest 类

SqlNotificationRequest 类型公开以下成员。

名称 说明
页首

参考

SqlNotificationRequest 类
System.Data.Sql 命名空间


SqlNotificationRequest 属性

SqlNotificationRequest 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationRequest 类

SqlNotificationRequest 类型公开以下成员。

名称 说明
页首

参考

SqlNotificationRequest 类
System.Data.Sql 命名空间


SqlNotificationRequest ..::.Options 属性

SqlNotificationRequest
.
.
::
.
Options 属性
SqlNotificationRequest 类

获取或设置发送通知消息的 SQL Server Service Broker 服务名。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Property Options As String
    Get
    Set
public string Options { get; set; }
public:
property String^ Options {
    String^ get ();
    void set (String^ value);
}
member Options : string with get, set

属性值

类型： System String
string，包含发送通知消息的 SQL Server 2005 Service Broker 服务名，以及用于限制服务器名查找范围的数据库或服务中间装置实例 GUID。
异常 | 条件
ArgumentNullException | 该值为 NULL。
ArgumentException | 该值比 uint16.MaxValue 长。

Options 属性的值的格式如下：

service=<service-name>{;(local database=<database>|broker instance=<broker instance>)}

例如，如果在数据库“AdventureWorks”中使用服务“myservice”，则格式为：

service=myservice;local database=AdventureWorks

服务器上此前必须配置了 SQL Server Service Broker 服务。此外，必须定义了 Service Broker 服务和队列，并授予了所需的安全访问权限。有关更多信息，请参阅 SQL Server 2005 文档。 服务器上此前必须配置了 SQL Server Service Broker 服务。此外，必须定义了 Service Broker 服务和队列，并授予了所需的安全访问权限。有关更多信息，请参阅 SQL Server 2005 文档。 服务器上此前必须配置了 SQL Server Service Broker 服务。此外，必须定义了 Service Broker 服务和队列，并授予了所需的安全访问权限。有关更多信息，请参阅 SQL Server 2005 文档。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationRequest 类
SqlNotificationRequest 成员
System.Data.Sql 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlNotificationRequest ..::.Timeout 属性

SqlNotificationRequest
.
.
::
.
Timeout 属性
SqlNotificationRequest 类

获取或设置一个值，该值指定在操作超时之前，SQL Server 等待发生更改的时间。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Property Timeout As Integer
    Get
    Set
public int Timeout { get; set; }
public:
property int Timeout {
    int get ();
    void set (int value);
}
member Timeout : int with get, set

属性值

类型： System Int32
带符号的整数值，指定在操作超时之前，SQL Server 等待发生更改的时间（以秒为单位）。
异常 | 条件
ArgumentOutOfRangeException | 值小于零。

超时时间到期后，将发送通知，即使没有发生更改。Timeout 属性默认为服务器上设置的值。 超时时间到期后，将发送通知，即使没有发生更改。Timeout 属性默认为服务器上设置的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationRequest 类
SqlNotificationRequest 成员
System.Data.Sql 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlNotificationRequest ..::.UserData 属性

SqlNotificationRequest
.
.
::
.
UserData 属性
SqlNotificationRequest 类

获取或设置此通知的应用程序特定的标识符。

命名空间： System.Data.Sql
程序集： System.Data（在 System.Data.dll 中）
Public Property UserData As String
    Get
    Set
public string UserData { get; set; }
public:
property String^ UserData {
    String^ get ();
    void set (String^ value);
}
member UserData : string with get, set

属性值

类型： System String
此通知的应用程序特定的标识符的 string 值。
异常 | 条件
ArgumentException | 该值比 uint16.MaxValue 长。

通知基础结构不使用该值。实际上，它是一种应用程序用来将通知与应用程序状态相关联的机制。UserData 属性中指定的值包括在 SQL Server 2005 队列消息中。 通知基础结构不使用该值。实际上，它是一种应用程序用来将通知与应用程序状态相关联的机制。UserData 属性中指定的值包括在 SQL Server 2005 队列消息中。 通知基础结构不使用该值。实际上，它是一种应用程序用来将通知与应用程序状态相关联的机制。UserData 属性中指定的值包括在 SQL Server 2005 队列消息中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationRequest 类
SqlNotificationRequest 成员
System.Data.Sql 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


System.Data.SqlClient 命名空间

System.Data.SqlClient 命名空间

The System.Data.SqlClient namespace is the.NET Framework Data Provider for SQL Server.

The.NET Framework Data Provider for SQL Server describes a collection of classes used to access a SQL Server database in the managed space.Using the SqlDataAdapter, you can fill a memory-resident DataSet that you can use to query and update the database. The.NET Framework Data Provider for SQL Server describes a collection of classes used to access a SQL Server database in the managed space.Using the SqlDataAdapter, you can fill a memory-resident DataSet that you can use to query and update the database.

说明 说明

For conceptual information about using this namespace when programming with the .NET Framework, see SQL Server 和 ADO.NET.

Caution ADO.NET 2.0 does not support Asynchronous commands over shared memory for SQL Server 2000 or lower.However, you can force TCP instead of shared memory.You can do that by prefixing tcp: to the server name in the connection string or you can use localhost. Caution ADO.NET 2.0 does not support Asynchronous commands over shared memory for SQL Server 2000 or lower.However, you can force TCP instead of shared memory.You can do that by prefixing tcp: to the server name in the connection string or you can use localhost. Caution ADO.NET 2.0 does not support Asynchronous commands over shared memory for SQL Server 2000 or lower.However, you can force TCP instead of shared memory.You can do that by prefixing tcp: to the server name in the connection string or you can use localhost.

 | 类 | 说明
公共类 | SqlBulkCopy | 使您可以用其他源的数据有效批量加载 SQL Server 表。
公共类 | SqlBulkCopyColumnMapping | 定义 SqlBulkCopy 实例的数据源中的列与该实例的目标表中的列之间的映射。
公共类 | SqlBulkCopyColumnMappingCollection | 继承自 CollectionBase 的 SqlBulkCopyColumnMapping 对象的集合。
公共类 | SqlClientFactory | 表示一组方法，这些方法用于创建 System.Data.SqlClient 提供程序对数据源类的实现的实例。
公共类 | SqlClientMetaDataCollectionNames | 提供一个常数列表，该列表与 GetSchema 方法一起使用以检索元数据集合。
公共类 | SqlClientPermission | 启用用于 SQL Server 的 .NET Framework 数据提供程序，帮助确保用户具有足够的安全级别来访问数据源。
公共类 | SqlClientPermissionAttribute | 将某安全操作与自定义安全特性相关联。
公共类 | SqlCommand | 表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。 表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。
公共类 | SqlCommandBuilder | 自动生成单表命令，用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。 自动生成单表命令，用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。
公共类 | SqlConnection | 表示 SQL Server 数据库的一个打开的连接。此类不能被继承。 表示 SQL Server 数据库的一个打开的连接。此类不能被继承。
公共类 | SqlConnectionStringBuilder | 为创建和管理由 SqlConnection 类使用的连接字符串的内容提供了一种简单方法。
公共类 | SqlDataAdapter | 表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。无法继承此类。 表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。无法继承此类。
公共类 | SqlDataReader | 提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。 提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。
公共类 | SQLDebugging | 基础结构。 包括此对象是为了支持应用程序调试。不应直接使用。 包括此对象是为了支持应用程序调试。不应直接使用。
公共类 | SqlDependency | SqlDependency 对象表示应用程序和 SQL Server 2005 实例间的查询通知依赖关系。应用程序可以创建一个 SqlDependency 对象并进行注册以通过 OnChangeEventHandler 事件处理程序接收通知。 SqlDependency 对象表示应用程序和 SQL Server 2005 实例间的查询通知依赖关系。应用程序可以创建一个 SqlDependency 对象并进行注册以通过 OnChangeEventHandler 事件处理程序接收通知。
公共类 | SqlError | 收集与 SQL Server 返回的警告或错误有关的信息。
公共类 | SqlErrorCollection | 收集 SQL Server .NET Framework 数据提供程序生成的所有错误。无法继承此类。 收集 SQL Server .NET Framework 数据提供程序生成的所有错误。无法继承此类。
公共类 | SqlException | 当 SQL Server 返回警告或错误时引发的异常。无法继承此类。 当 SQL Server 返回警告或错误时引发的异常。无法继承此类。
公共类 | SqlInfoMessageEventArgs | 为 InfoMessage 事件提供数据。
公共类 | SqlNotificationEventArgs | 表示传递给通知事件处理程序的参数集。
公共类 | SqlParameter | 表示 SqlCommand 的参数，也可以是它到 DataSet 列的映射。此类不能被继承。 表示 SqlCommand 的参数，也可以是它到 DataSet 列的映射。此类不能被继承。
公共类 | SqlParameterCollection | 表示与 SqlCommand 相关联的参数的集合以及各个参数到 DataSet 中列的映射。无法继承此类。 表示与 SqlCommand 相关联的参数的集合以及各个参数到 DataSet 中列的映射。无法继承此类。
公共类 | SqlRowsCopiedEventArgs | 表示传递给 SqlRowsCopiedEventHandler 的参数集。
公共类 | SqlRowUpdatedEventArgs | 为 RowUpdated 事件提供数据。
公共类 | SqlRowUpdatingEventArgs | 为 RowUpdating 事件提供数据。
公共类 | SqlTransaction | 表示要在 SQL Server 数据库中处理的 Transact-SQL 事务。无法继承此类。 表示要在 SQL Server 数据库中处理的 Transact-SQL 事务。无法继承此类。
 | 委托 | 说明
公共委托 | OnChangeEventHandler | 处理当收到与 SqlDependency 对象相关联的任何命令的通知时激发的 OnChange 事件。
公共委托 | SqlInfoMessageEventHandler | 表示将要处理 SqlConnection 的 InfoMessage 事件的方法。
公共委托 | SqlRowsCopiedEventHandler | 表示处理 SqlBulkCopy 的 SqlRowsCopied 事件的方法。
公共委托 | SqlRowUpdatedEventHandler | 表示将要处理 SqlDataAdapter 的 RowUpdated 事件的方法。
公共委托 | SqlRowUpdatingEventHandler | 表示将要处理 SqlDataAdapter 的 RowUpdating 事件的方法。
 | 枚举 | 说明
公共枚举 | SortOrder | 指定数据行排序方式。
公共枚举 | SqlBulkCopyOptions | 按位标志，指定一个或多个与 SqlBulkCopy 的实例一起使用的选项。
公共枚举 | SqlNotificationInfo | 此枚举提供有关不同通知的其他信息，这些信息可由依赖项事件处理程序接收。
公共枚举 | SqlNotificationSource | 指示依赖项事件处理程序所接收的通知的源。
公共枚举 | SqlNotificationType | 描述 OnChangeEventHandler 事件处理程序可通过 SqlNotificationEventArgs 参数接收的不同通知类型。


OnChangeEventHandler 委托

OnChangeEventHandler 委托

处理当收到与 SqlDependency 对象相关联的任何命令的通知时激发的 OnChange 事件。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Delegate Sub OnChangeEventHandler ( _
    sender As Object, _
    e As SqlNotificationEventArgs _
)
public delegate void OnChangeEventHandler(
    Object sender,
    SqlNotificationEventArgs e
)
public delegate void OnChangeEventHandler(
    Object^ sender,
    SqlNotificationEventArgs^ e
)
type OnChangeEventHandler =
    delegate of
        sender:Object *
        e:SqlNotificationEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.Data.SqlClient SqlNotificationEventArgs
包含事件数据的 SqlNotificationEventArgs 对象。

OnChange 事件不一定意味着数据发生了更改。在其他情况下，如超时时间已过和设置通知请求失败，也会生成 OnChange。 OnChange 事件不一定意味着数据发生了更改。在其他情况下，如超时时间已过和设置通知请求失败，也会生成 OnChange。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SortOrder 枚举

SortOrder 枚举

指定数据行排序方式。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Enumeration SortOrder
public enum SortOrder
public enum class SortOrder
type SortOrder
成员名称 | 说明
Unspecified | 默认值。不指定排序顺序。 默认值。不指定排序顺序。
Ascending | 按升序排序各行。
Descending | 按降序排序各行。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlBulkCopy 类

SqlBulkCopy 类
成员

使您可以用其他源的数据有效批量加载 SQL Server 表。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlBulkCopy _
    Implements IDisposable
public sealed class SqlBulkCopy : IDisposable
public ref class SqlBulkCopy sealed : IDisposable
[<SealedAttribute>]
type SqlBulkCopy =
    class
        interface IDisposable
    end

Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具，用于将数据从一个表移动到另一个表（表既可以在同一个服务器上，也可以在不同服务器上）。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法（例如 INSERT 语句），但相比之下 SqlBulkCopy 提供明显的性能优势。 Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具，用于将数据从一个表移动到另一个表（表既可以在同一个服务器上，也可以在不同服务器上）。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法（例如 INSERT 语句），但相比之下 SqlBulkCopy 提供明显的性能优势。 Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具，用于将数据从一个表移动到另一个表（表既可以在同一个服务器上，也可以在不同服务器上）。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法（例如 INSERT 语句），但相比之下 SqlBulkCopy 提供明显的性能优势。

使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是，数据源不限于 SQL Server；可以使用任何数据源，只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。 使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是，数据源不限于 SQL Server；可以使用任何数据源，只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。

下面的控制台应用程序演示如何使用 SqlBulkCopy 类加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。 下面的控制台应用程序演示如何使用 SqlBulkCopy 类加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Open the destination connection. In the real world you would
            ' not use SqlBulkCopy to move data from one table to the other
            ' in the same database. This is for demonstration purposes only.
            Using destinationConnection As SqlConnection = _
                New SqlConnection(connectionString)
                destinationConnection.Open()

                ' Set up the bulk copy object.
                ' The column positions in the source data reader
                ' match the column positions in the destination table,
                ' so there is no need to map columns.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(destinationConnection)
                    bulkCopy.DestinationTableName = _
                    "dbo.BulkCopyDemoMatchingColumns"

                    Try
                        ' Write from the source to the destination.
                        bulkCopy.WriteToServer(reader)

                    Catch ex As Exception
                        Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                    End Try
                End Using

                ' Perform a final count on the destination table
                ' to see how many rows were added.
                Dim countEnd As Long = _
                    System.Convert.ToInt32(commandRowCount.ExecuteScalar())
                Console.WriteLine("Ending row count = {0}", countEnd)
                Console.WriteLine("{0} rows were added.", countEnd - countStart)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Open the destination connection. In the real world you would
            // not use SqlBulkCopy to move data from one table to the other
            // in the same database. This is for demonstration purposes only.
            using (SqlConnection destinationConnection =
                       new SqlConnection(connectionString))
            {
                destinationConnection.Open();

                // Set up the bulk copy object.
                // Note that the column positions in the source
                // data reader match the column positions in
                // the destination table so there is no need to
                // map columns.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(destinationConnection))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoMatchingColumns";

                    try
                    {
                        // Write from the source to the destination.
                        bulkCopy.WriteToServer(reader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        // Close the SqlDataReader. The SqlBulkCopy
                        // object is automatically closed at the end
                        // of the using block.
                        reader.Close();
                    }
                }

                // Perform a final count on the destination
                // table to see how many rows were added.
                long countEnd = System.Convert.ToInt32(
                    commandRowCount.ExecuteScalar());
                Console.WriteLine("Ending row count = {0}", countEnd);
                Console.WriteLine("{0} rows were added.", countEnd - countStart);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlBulkCopySqlBulkCopy
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 成员

SqlBulkCopy 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopy 类

使您可以用其他源的数据有效批量加载 SQL Server 表。

SqlBulkCopy 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlBulkCopy 类
System.Data.SqlClient 命名空间


SqlBulkCopy 构造函数

SqlBulkCopy 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopy 类

初始化 SqlBulkCopy 类的新实例。

名称 说明
页首

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间


SqlBulkCopy 构造函数 (SqlConnection)

SqlBulkCopy 构造函数 (SqlConnection)
SqlBulkCopy 类

使用 SqlConnection 的指定打开实例初始化 SqlBulkCopy 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    connection As SqlConnection _
)
public SqlBulkCopy(
    SqlConnection connection
)
public:
SqlBulkCopy(
    SqlConnection^ connection
)
new :
        connection:SqlConnection -> SqlBulkCopy

参数

connection
类型： System.Data.SqlClient SqlConnection
将用于执行批量复制操作的已经打开的 SqlConnection 实例。

由于连接在初始化 SqlBulkCopy 实例时已经打开，因此在 SqlBulkCopy 实例关闭后，连接仍保持打开状态。

如果 connection 参数为 null，则引发 ArgumentNullException。

下面的控制台应用程序演示如何使用已打开的连接批量加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。此示例仅供演示使用。在成品应用程序中，不要使用 SqlBulkCopy 来将数据从同一个数据库中的一个表移动到另一个表。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。此示例仅供演示使用。在成品应用程序中，不要使用 SqlBulkCopy 来将数据从同一个数据库中的一个表移动到另一个表。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。此示例仅供演示使用。在成品应用程序中，不要使用 SqlBulkCopy 来将数据从同一个数据库中的一个表移动到另一个表。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。此示例仅供演示使用。在成品应用程序中，不要使用 SqlBulkCopy 来将数据从同一个数据库中的一个表移动到另一个表。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。在此示例中，使用 SqlDataReader 将数据从 SQL Server 2005 AdventureWorks 数据库中的 Production.Product 表复制到同一数据库中的相似表。此示例仅供演示使用。在成品应用程序中，不要使用 SqlBulkCopy 来将数据从同一个数据库中的一个表移动到另一个表。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Open the destination connection. In the real world you would
            ' not use SqlBulkCopy to move data from one table to the other
            ' in the same database. This is for demonstration purposes only.
            Using destinationConnection As SqlConnection = _
                New SqlConnection(connectionString)
                destinationConnection.Open()

                ' Set up the bulk copy object.
                ' The column positions in the source data reader
                ' match the column positions in the destination table,
                ' so there is no need to map columns.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(destinationConnection)
                    bulkCopy.DestinationTableName = _
                    "dbo.BulkCopyDemoMatchingColumns"

                    Try
                        ' Write from the source to the destination.
                        bulkCopy.WriteToServer(reader)

                    Catch ex As Exception
                        Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                    End Try
                End Using

                ' Perform a final count on the destination table
                ' to see how many rows were added.
                Dim countEnd As Long = _
                    System.Convert.ToInt32(commandRowCount.ExecuteScalar())
                Console.WriteLine("Ending row count = {0}", countEnd)
                Console.WriteLine("{0} rows were added.", countEnd - countStart)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Open the destination connection. In the real world you would
            // not use SqlBulkCopy to move data from one table to the other
            // in the same database. This is for demonstration purposes only.
            using (SqlConnection destinationConnection =
                       new SqlConnection(connectionString))
            {
                destinationConnection.Open();

                // Set up the bulk copy object.
                // Note that the column positions in the source
                // data reader match the column positions in
                // the destination table so there is no need to
                // map columns.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(destinationConnection))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoMatchingColumns";

                    try
                    {
                        // Write from the source to the destination.
                        bulkCopy.WriteToServer(reader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        // Close the SqlDataReader. The SqlBulkCopy
                        // object is automatically closed at the end
                        // of the using block.
                        reader.Close();
                    }
                }

                // Perform a final count on the destination
                // table to see how many rows were added.
                long countEnd = System.Convert.ToInt32(
                    commandRowCount.ExecuteScalar());
                Console.WriteLine("Ending row count = {0}", countEnd);
                Console.WriteLine("{0} rows were added.", countEnd - countStart);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
SqlBulkCopy 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 构造函数 (String)

SqlBulkCopy 构造函数 (String)
SqlBulkCopy 类

基于提供的 connectionString 初始化和打开 SqlConnection 的新实例。此构造函数使用 SqlConnection 来初始化 SqlBulkCopy 类的新实例。 基于提供的 connectionString 初始化和打开 SqlConnection 的新实例。此构造函数使用 SqlConnection 来初始化 SqlBulkCopy 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    connectionString As String _
)
public SqlBulkCopy(
    string connectionString
)
public:
SqlBulkCopy(
    String^ connectionString
)
new :
        connectionString:string -> SqlBulkCopy

参数

connectionString
类型： System String
定义将打开的且由 SqlBulkCopy 实例使用的连接的字符串。

连接会在批量复制操作结束时自动关闭。

如果 connectionString 为 null，则会引发 ArgumentNullException。如果 connectionString 是空字符串，则会引发 ArgumentException。 如果 connectionString 为 null，则会引发 ArgumentNullException。如果 connectionString 是空字符串，则会引发 ArgumentException。

下面的控制台应用程序演示如何使用指定为字符串的连接批量加载数据。在 SqlBulkCopy 实例关闭时，连接也会自动关闭。 下面的控制台应用程序演示如何使用指定为字符串的连接批量加载数据。在 SqlBulkCopy 实例关闭时，连接也会自动关闭。

在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object using a connection string.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object using a connection string.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
SqlBulkCopy 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 构造函数 (String, SqlBulkCopyOptions)

SqlBulkCopy 构造函数 (String, SqlBulkCopyOptions)
SqlBulkCopy 类

基于提供的 connectionString 初始化和打开 SqlConnection 的新实例。此构造函数使用此 SqlConnection 来初始化 SqlBulkCopy 类的新实例。SqlConnection 实例的行为取决于 copyOptions 参数中提供的选项。 基于提供的 connectionString 初始化和打开 SqlConnection 的新实例。此构造函数使用此 SqlConnection 来初始化 SqlBulkCopy 类的新实例。SqlConnection 实例的行为取决于 copyOptions 参数中提供的选项。 基于提供的 connectionString 初始化和打开 SqlConnection 的新实例。此构造函数使用此 SqlConnection 来初始化 SqlBulkCopy 类的新实例。SqlConnection 实例的行为取决于 copyOptions 参数中提供的选项。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    connectionString As String, _
    copyOptions As SqlBulkCopyOptions _
)
public SqlBulkCopy(
    string connectionString,
    SqlBulkCopyOptions copyOptions
)
public:
SqlBulkCopy(
    String^ connectionString,
    SqlBulkCopyOptions copyOptions
)
new :
        connectionString:string *
        copyOptions:SqlBulkCopyOptions -> SqlBulkCopy

参数

connectionString
类型： System String
定义将打开的且由 SqlBulkCopy 实例使用的连接的字符串。
copyOptions
类型： System.Data.SqlClient SqlBulkCopyOptions
SqlBulkCopyOptions 枚举中的值的组合，该枚举确定将哪些数据源行复制到目标表中。

SqlBulkCopyOptions 主题中提供了有关所有批量复制选项的详细信息。

下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。 下面的控制台应用程序演示如何使用一个指定为字符串的连接执行批量加载。其中设置了一个选项以在加载目标表时使用源表的标识列中的值。在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源表和目标表中各包括一个“标识”列。默认情况下，在目标表中会为每个添加的行生成一个新的“标识”列值。此示例设置一个选项以在打开强制执行批量加载进程的连接时使用源表的“标识”值。若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。然后再次运行示例而不清空表。这将引发异常，并且代码会在控制台中写入一条消息，通知您由于主键违反约束尚未添加行。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Create the SqlBulkCopy object using a connection string
            ' and the KeepIdentity option.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Create the SqlBulkCopy object using a connection string
            // and the KeepIdentity option.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy =
                new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
SqlBulkCopy 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 构造函数 (SqlConnection, SqlBulkCopyOptions, SqlTransaction)

SqlBulkCopy 构造函数 (SqlConnection, SqlBulkCopyOptions, SqlTransaction)
SqlBulkCopy 类

使用提供的 SqlConnection 的现有打开实例初始化 SqlBulkCopy 类的新实例。SqlBulkCopy 实例的行为取决于 copyOptions 参数中提供的选项。如果提供非空 SqlTransaction，则复制操作将在该事务中执行。 使用提供的 SqlConnection 的现有打开实例初始化 SqlBulkCopy 类的新实例。SqlBulkCopy 实例的行为取决于 copyOptions 参数中提供的选项。如果提供非空 SqlTransaction，则复制操作将在该事务中执行。 使用提供的 SqlConnection 的现有打开实例初始化 SqlBulkCopy 类的新实例。SqlBulkCopy 实例的行为取决于 copyOptions 参数中提供的选项。如果提供非空 SqlTransaction，则复制操作将在该事务中执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    connection As SqlConnection, _
    copyOptions As SqlBulkCopyOptions, _
    externalTransaction As SqlTransaction _
)
public SqlBulkCopy(
    SqlConnection connection,
    SqlBulkCopyOptions copyOptions,
    SqlTransaction externalTransaction
)
public:
SqlBulkCopy(
    SqlConnection^ connection,
    SqlBulkCopyOptions copyOptions,
    SqlTransaction^ externalTransaction
)
new :
        connection:SqlConnection *
        copyOptions:SqlBulkCopyOptions *
        externalTransaction:SqlTransaction -> SqlBulkCopy

参数

connection
类型： System.Data.SqlClient SqlConnection
将用于执行批量复制操作的已经打开的 SqlConnection 实例。
copyOptions
类型： System.Data.SqlClient SqlBulkCopyOptions
SqlBulkCopyOptions 枚举中的值的组合，该枚举确定将哪些数据源行复制到目标表中。
externalTransaction
类型： System.Data.SqlClient SqlTransaction
现有的 SqlTransaction 实例，批量复制操作将在该实例下进行。

如果选项包括 UseInternalTransaction 并且 externalTransaction 参数不为 null，便会引发 InvalidArgumentException。

有关演示如何在事务中使用 SqlBulkCopy 的示例，请参见事务和批量复制操作 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
SqlBulkCopy 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 方法

SqlBulkCopy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopy 类

SqlBulkCopy 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlBulkCopy 类
System.Data.SqlClient 命名空间


SqlBulkCopy ..::.Close 方法

SqlBulkCopy
.
.
::
.
Close 方法
SqlBulkCopy 类

关闭 SqlBulkCopy 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Close
public void Close()
public:
void Close()
member Close : unit -> unit

对 SqlBulkCopy 对象调用 Close 后，将不能再执行任何其他操作。调用 WriteToServer 方法将引发 InvalidOperationException。 对 SqlBulkCopy 对象调用 Close 后，将不能再执行任何其他操作。调用 WriteToServer 方法将引发 InvalidOperationException。

通过 SqlRowsCopied 事件调用 Close 方法将导致引发 InvalidOperationException。

注意，打开的 SqlBulkCopy 实例在 using 块末尾隐式关闭。

下面的示例使用同一个 SqlBulkCopy 实例将销售订单及其相关的详细信息添加到两个目标表中。因为 AdventureWorks 销售订单表很大，所以该示例只读取特定帐号下的订单，并将这些订单和详细信息批量复制到目标表。只有在两个批量复制操作全部完成后才能使用 Close 方法。 下面的示例使用同一个 SqlBulkCopy 实例将销售订单及其相关的详细信息添加到两个目标表中。因为 AdventureWorks 销售订单表很大，所以该示例只读取特定帐号下的订单，并将这些订单和详细信息批量复制到目标表。只有在两个批量复制操作全部完成后才能使用 Close 方法。 下面的示例使用同一个 SqlBulkCopy 实例将销售订单及其相关的详细信息添加到两个目标表中。因为 AdventureWorks 销售订单表很大，所以该示例只读取特定帐号下的订单，并将这些订单和详细信息批量复制到目标表。只有在两个批量复制操作全部完成后才能使用 Close 方法。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = New SqlConnection(connectionString)
            connection.Open()

            ' Empty the destination tables.
            Dim deleteHeader As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderHeader;", connection)
            deleteHeader.ExecuteNonQuery()
            deleteHeader.Dispose()
            Dim deleteDetail As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderDetail;", connection)
            deleteDetail.ExecuteNonQuery()

            ' Perform an initial count on the destination table
            ' with matching columns.
            Dim countRowHeader As New SqlCommand( _
               "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;", _
                connection)
            Dim countStartHeader As Long = System.Convert.ToInt32( _
             countRowHeader.ExecuteScalar())
            Console.WriteLine("Starting row count for Header table = {0}", _
             countStartHeader)

            ' Perform an initial count on the destination table
            ' with different column positions.
            Dim countRowDetail As New SqlCommand( _
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;", _
                connection)
            Dim countStartDetail As Long = System.Convert.ToInt32( _
                countRowDetail.ExecuteScalar())
            Console.WriteLine("Starting row count for Detail table = " & _
               countStartDetail)

            ' Get data from the source table as a SqlDataReader.
            ' The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            ' tables are quite large and could easily cause a timeout
            ' if all data from the tables is added to the destination.
            ' To keep the example simple and quick, a parameter is
            ' used to select only orders for a particular account as
            ' the source for the bulk insert.
            Dim headerData As SqlCommand = New SqlCommand( _
             "SELECT [SalesOrderID], [OrderDate], " & _
             "[AccountNumber] FROM [Sales].[SalesOrderHeader] " & _
             "WHERE [AccountNumber] = @accountNumber;", _
             connection)

            Dim parameterAccount As SqlParameter = New SqlParameter()
            parameterAccount.ParameterName = "@accountNumber"
            parameterAccount.SqlDbType = SqlDbType.NVarChar
            parameterAccount.Direction = ParameterDirection.Input
            parameterAccount.Value = "10-4020-000034"
            headerData.Parameters.Add(parameterAccount)

            Dim readerHeader As SqlDataReader = _
             headerData.ExecuteReader()

            ' Get the Detail data in a separate connection.
            Using connection2 As SqlConnection = New SqlConnection(connectionString)
                connection2.Open()

                Dim sourceDetailData As SqlCommand = New SqlCommand( _
                 "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], " & _
                 "[SalesOrderDetailID], [OrderQty], [ProductID], [UnitPrice] " & _
                 "FROM [Sales].[SalesOrderDetail] INNER JOIN " & _
                 "[Sales].[SalesOrderHeader] " & _
                 "ON [Sales].[SalesOrderDetail].[SalesOrderID] = " & _
                 "[Sales].[SalesOrderHeader].[SalesOrderID] " & _
                 "WHERE [AccountNumber] = @accountNumber;", connection2)

                Dim accountDetail As SqlParameter = New SqlParameter()
                accountDetail.ParameterName = "@accountNumber"
                accountDetail.SqlDbType = SqlDbType.NVarChar
                accountDetail.Direction = ParameterDirection.Input
                accountDetail.Value = "10-4020-000034"
                sourceDetailData.Parameters.Add( _
                 accountDetail)

                Dim readerDetail As SqlDataReader = _
                 sourceDetailData.ExecuteReader()

                ' Create the SqlBulkCopy object.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(connectionString)
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderHeader"

                    ' Write readerHeader to the destination.
                    Try
                        bulkCopy.WriteToServer(readerHeader)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerHeader.Close()
                    End Try

                    ' Set up a different destination and map columns.
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderDetail"

                    ' Write readerDetail to the destination.
                    Try
                        bulkCopy.WriteToServer(readerDetail)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerDetail.Close()
                    End Try
                End Using

                ' Perform a final count on the destination tables
                ' to see how many rows were added.
                Dim countEndHeader As Long = System.Convert.ToInt32( _
                  countRowHeader.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Header table.", _
                  countEndHeader - countStartHeader)
                Dim countEndDetail As Long = System.Convert.ToInt32( _
                   countRowDetail.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Detail table.", _
                    countEndDetail - countStartDetail)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Empty the destination tables.
            SqlCommand deleteHeader = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            deleteHeader.ExecuteNonQuery();
            SqlCommand deleteDetail = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            deleteDetail.ExecuteNonQuery();

            // Perform an initial count on the destination
            //  table with matching columns.
            SqlCommand countRowHeader = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            long countStartHeader = System.Convert.ToInt32(
                countRowHeader.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Header table = {0}",
                countStartHeader);

            // Perform an initial count on the destination
            // table with different column positions.
            SqlCommand countRowDetail = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            long countStartDetail = System.Convert.ToInt32(
                countRowDetail.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Detail table = {0}",
                countStartDetail);

            // Get data from the source table as a SqlDataReader.
            // The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            // tables are quite large and could easily cause a timeout
            // if all data from the tables is added to the destination.
            // To keep the example simple and quick, a parameter is
            // used to select only orders for a particular account
            // as the source for the bulk insert.
            SqlCommand headerData = new SqlCommand(
                "SELECT [SalesOrderID], [OrderDate], " +
                "[AccountNumber] FROM [Sales].[SalesOrderHeader] " +
                "WHERE [AccountNumber] = @accountNumber;",
                connection);
            SqlParameter parameterAccount = new SqlParameter();
            parameterAccount.ParameterName = "@accountNumber";
            parameterAccount.SqlDbType = SqlDbType.NVarChar;
            parameterAccount.Direction = ParameterDirection.Input;
            parameterAccount.Value = "10-4020-000034";
            headerData.Parameters.Add(parameterAccount);
            SqlDataReader readerHeader = headerData.ExecuteReader();

            // Get the Detail data in a separate connection.
            using (SqlConnection connection2 = new SqlConnection(connectionString))
            {
                connection2.Open();
                SqlCommand sourceDetailData = new SqlCommand(
                    "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], [SalesOrderDetailID], " +
                    "[OrderQty], [ProductID], [UnitPrice] FROM [Sales].[SalesOrderDetail] " +
                    "INNER JOIN [Sales].[SalesOrderHeader] ON [Sales].[SalesOrderDetail]." +
                    "[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID] " +
                    "WHERE [AccountNumber] = @accountNumber;", connection2);

                SqlParameter accountDetail = new SqlParameter();
                accountDetail.ParameterName = "@accountNumber";
                accountDetail.SqlDbType = SqlDbType.NVarChar;
                accountDetail.Direction = ParameterDirection.Input;
                accountDetail.Value = "10-4020-000034";
                sourceDetailData.Parameters.Add(accountDetail);
                SqlDataReader readerDetail = sourceDetailData.ExecuteReader();

                // Create the SqlBulkCopy object.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(connectionString))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoOrderHeader";

                    // Write readerHeader to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerHeader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerHeader.Close();
                    }

                    // Set up a different destination and
                    // map columns.
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoOrderDetail";

                    // Write readerDetail to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerDetail);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerDetail.Close();
                    }
                }

                // Perform a final count on the destination
                // tables to see how many rows were added.
                long countEndHeader = System.Convert.ToInt32(
                    countRowHeader.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Header table.",
                    countEndHeader - countStartHeader);
                long countEndDetail = System.Convert.ToInt32(
                    countRowDetail.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Detail table.",
                    countEndDetail - countStartDetail);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.IDisposable ..::.Dispose 方法

SqlBulkCopy
.
.
::
.
IDisposable
.
.
::
.
Dispose 方法
SqlBulkCopy 类

释放 SqlBulkCopy 类的当前实例所使用的所有资源。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Sub Dispose Implements IDisposable.Dispose
void IDisposable.Dispose()
private:
virtual void Dispose() sealed = IDisposable::Dispose
private abstract Dispose : unit -> unit
private override Dispose : unit -> unit

实现

使用完 SqlBulkCopy 后调用 Dispose。Dispose 方法使 SqlBulkCopy 处于不可用状态。调用 Dispose 后，必须释放对 SqlBulkCopy 的所有引用，这样垃圾回收器才能回收 SqlBulkCopy 占用的内存。 使用完 SqlBulkCopy 后调用 Dispose。Dispose 方法使 SqlBulkCopy 处于不可用状态。调用 Dispose 后，必须释放对 SqlBulkCopy 的所有引用，这样垃圾回收器才能回收 SqlBulkCopy 占用的内存。 使用完 SqlBulkCopy 后调用 Dispose。Dispose 方法使 SqlBulkCopy 处于不可用状态。调用 Dispose 后，必须释放对 SqlBulkCopy 的所有引用，这样垃圾回收器才能回收 SqlBulkCopy 占用的内存。

有关更多信息，请参见清理非托管资源和 实现 Dispose 方法。

说明 说明

释放对 SqlBulkCopy 的最后一个引用之前，始终应先调用 Dispose。否则，在垃圾回收器调用 SqlBulkCopy 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。 释放对 SqlBulkCopy 的最后一个引用之前，始终应先调用 Dispose。否则，在垃圾回收器调用 SqlBulkCopy 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间


SqlBulkCopy ..::.WriteToServer 方法

SqlBulkCopy
.
.
::
.
WriteToServer 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopy 类

将所有行从数据源复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。

名称 说明
页首

如果禁用多活动结果集 (MARS)，则 WriteToServer 将使连接繁忙。如果启用 MARS，则可以将对 WriteToServer 的调用与同一连接中的其他命令交错使用。 如果禁用多活动结果集 (MARS)，则 WriteToServer 将使连接繁忙。如果启用 MARS，则可以将对 WriteToServer 的调用与同一连接中的其他命令交错使用。

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.WriteToServer 方法 ( array<DataRow >[]()[])

SqlBulkCopy
.
.
::
.
WriteToServer 方法 (
array<
DataRow
>
[]
()
[]
)
SqlBulkCopy 类

将所提供的 DataRow 数组中的所有行复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub WriteToServer ( _
    rows As DataRow() _
)
public void WriteToServer(
    DataRow[] rows
)
public:
void WriteToServer(
    array<DataRow^>^ rows
)
member WriteToServer :
        rows:DataRow[] -> unit

参数

rows
类型：
array<
System.Data DataRow
>
[]
()
[]

将复制到目标表的 DataRow 对象的数组。

在执行批量复制操作的过程中，关联的目标 SqlConnection 正忙于为批量复制服务，因此不能在此连接上执行其他操作。

ColumnMappings 集合从 DataRow 列映射到目标数据库表。

下面的控制台应用程序演示如何从 DataRow 数组批量加载数据。目标表是 AdventureWorks 数据库中的表。 下面的控制台应用程序演示如何从 DataRow 数组批量加载数据。目标表是 AdventureWorks 数据库中的表。

在本示例中，DataTable 在运行时创建。从 DataTable 中选择要复制到目标表的一个行。 在本示例中，DataTable 在运行时创建。从 DataTable 中选择要复制到目标表的一个行。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = _
           New SqlConnection(connectionString)
            connection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                connection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Create a table with some rows.
            Dim newProducts As DataTable = MakeTable()

            ' Get a reference to a single row in the table.
            Dim rowArray() As DataRow = newProducts.Select( _
             "Name='CC-101-BK'")

            ' Note that the column positions in the source DataTable
            ' match the column positions in the destination table,
            ' so there is no need to map columns.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connection)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write the array of rows to the destination.
                    bulkCopy.WriteToServer(rowArray)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function MakeTable() As DataTable
        ' Create a new DataTable named NewProducts.
        Dim newProducts As DataTable = _
         New DataTable("NewProducts")

        ' Add three column objects to the table.
        Dim productID As DataColumn = New DataColumn()
        productID.DataType = System.Type.GetType("System.Int32")
        productID.ColumnName = "ProductID"
        productID.AutoIncrement = True
        newProducts.Columns.Add(productID)

        Dim productName As DataColumn = New DataColumn()
        productName.DataType = System.Type.GetType("System.String")
        productName.ColumnName = "Name"
        newProducts.Columns.Add(productName)

        Dim productNumber As DataColumn = New DataColumn()
        productNumber.DataType = System.Type.GetType("System.String")
        productNumber.ColumnName = "ProductNumber"
        newProducts.Columns.Add(productNumber)

        ' Create an array for DataColumn objects.
        Dim keys(0) As DataColumn
        keys(0) = productID
        newProducts.PrimaryKey = keys

        ' Add some new rows to the collection.
        Dim row As DataRow
        row = newProducts.NewRow()
        row("Name") = "CC-101-WH"
        row("ProductNumber") = "Cyclocomputer - White"
        newProducts.Rows.Add(row)

        row = newProducts.NewRow()
        row("Name") = "CC-101-BK"
        row("ProductNumber") = "Cyclocomputer - Black"
        newProducts.Rows.Add(row)

        row = newProducts.NewRow()
        row("Name") = "CC-101-ST"
        row("ProductNumber") = "Cyclocomputer - Stainless"
        newProducts.Rows.Add(row)
        newProducts.AcceptChanges()

        ' Return the new DataTable.
        Return newProducts
    End Function

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                connection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Create a table with some rows.
            DataTable newProducts = MakeTable();

            // Get a reference to a single row in the table.
            DataRow[] rowArray = newProducts.Select(
                "Name='CC-101-BK'");

            // Create the SqlBulkCopy object.
            // Note that the column positions in the source DataTable
            // match the column positions in the destination table so
            // there is no need to map columns.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write the array of rows to the destination.
                    bulkCopy.WriteToServer(rowArray);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static DataTable MakeTable()
        // Create a new DataTable named NewProducts.
    {
        DataTable newProducts = new DataTable("NewProducts");

        // Add three column objects to the table.
        DataColumn productID = new DataColumn();
        productID.DataType = System.Type.GetType("System.Int32");
        productID.ColumnName = "ProductID";
        productID.AutoIncrement = true;
        newProducts.Columns.Add(productID);

        DataColumn productName = new DataColumn();
        productName.DataType = System.Type.GetType("System.String");
        productName.ColumnName = "Name";
        newProducts.Columns.Add(productName);

        DataColumn productNumber = new DataColumn();
        productNumber.DataType = System.Type.GetType("System.String");
        productNumber.ColumnName = "ProductNumber";
        newProducts.Columns.Add(productNumber);

        // Create an array for DataColumn objects.
        DataColumn[] keys = new DataColumn[1];
        keys[0] = productID;
        newProducts.PrimaryKey = keys;

        // Add some new rows to the collection.
        DataRow row = newProducts.NewRow();
        row["Name"] = "CC-101-WH";
        row["ProductNumber"] = "Cyclocomputer - White";

        newProducts.Rows.Add(row);
        row = newProducts.NewRow();
        row["Name"] = "CC-101-BK";
        row["ProductNumber"] = "Cyclocomputer - Black";

        newProducts.Rows.Add(row);
        row = newProducts.NewRow();
        row["Name"] = "CC-101-ST";
        row["ProductNumber"] = "Cyclocomputer - Stainless";
        newProducts.Rows.Add(row);
        newProducts.AcceptChanges();

        // Return the new DataTable.
        return newProducts;
    }
    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
WriteToServer 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.WriteToServer 方法 (DataTable)

SqlBulkCopy
.
.
::
.
WriteToServer 方法 (DataTable)
SqlBulkCopy 类

将所提供的 DataTable 中的所有行复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub WriteToServer ( _
    table As DataTable _
)
public void WriteToServer(
    DataTable table
)
public:
void WriteToServer(
    DataTable^ table
)
member WriteToServer :
        table:DataTable -> unit

参数

table
类型： System.Data DataTable
一个 DataTable，它的行将被复制到目标表中。

DataTable 中的所有行（已删除的行除外）都将被复制到目标表中。

在执行批量复制操作的过程中，关联的目标 SqlConnection 正忙于为批量复制服务，因此不能在此连接上执行其他操作。

ColumnMappings 集合从 DataTable 列映射到目标数据库表。

下面的控制台应用程序演示如何从 DataTable 批量加载数据。目标表是 AdventureWorks 数据库中的表。 下面的控制台应用程序演示如何从 DataTable 批量加载数据。目标表是 AdventureWorks 数据库中的表。

此示例中，DataTable 在运行时创建并成为 SqlBulkCopy 操作的源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = _
           New SqlConnection(connectionString)
            connection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                connection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Create a table with some rows.
            Dim newProducts As DataTable = MakeTable()

            ' Note that the column positions in the source DataTable
            ' match the column positions in the destination table,
            ' so there is no need to map columns.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connection)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(newProducts)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function MakeTable() As DataTable
        ' Create a new DataTable named NewProducts.
        Dim newProducts As DataTable = _
         New DataTable("NewProducts")

        ' Add three column objects to the table.
        Dim productID As DataColumn = New DataColumn()
        productID.DataType = System.Type.GetType("System.Int32")
        productID.ColumnName = "ProductID"
        productID.AutoIncrement = True
        newProducts.Columns.Add(productID)

        Dim productName As DataColumn = New DataColumn()
        productName.DataType = System.Type.GetType("System.String")
        productName.ColumnName = "Name"
        newProducts.Columns.Add(productName)

        Dim productNumber As DataColumn = New DataColumn()
        productNumber.DataType = System.Type.GetType("System.String")
        productNumber.ColumnName = "ProductNumber"
        newProducts.Columns.Add(productNumber)

        ' Create an array for DataColumn objects.
        Dim keys(0) As DataColumn
        keys(0) = productID
        newProducts.PrimaryKey = keys

        ' Add some new rows to the collection.
        Dim row As DataRow
        row = newProducts.NewRow()
        row("Name") = "CC-101-WH"
        row("ProductNumber") = "Cyclocomputer - White"
        newProducts.Rows.Add(row)

        row = newProducts.NewRow()
        row("Name") = "CC-101-BK"
        row("ProductNumber") = "Cyclocomputer - Black"
        newProducts.Rows.Add(row)

        row = newProducts.NewRow()
        row("Name") = "CC-101-ST"
        row("ProductNumber") = "Cyclocomputer - Stainless"
        newProducts.Rows.Add(row)
        newProducts.AcceptChanges()

        ' Return the new DataTable.
        Return newProducts
    End Function

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                connection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Create a table with some rows.
            DataTable newProducts = MakeTable();

            // Create the SqlBulkCopy object.
            // Note that the column positions in the source DataTable
            // match the column positions in the destination table so
            // there is no need to map columns.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(newProducts);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static DataTable MakeTable()
        // Create a new DataTable named NewProducts.
    {
        DataTable newProducts = new DataTable("NewProducts");

        // Add three column objects to the table.
        DataColumn productID = new DataColumn();
        productID.DataType = System.Type.GetType("System.Int32");
        productID.ColumnName = "ProductID";
        productID.AutoIncrement = true;
        newProducts.Columns.Add(productID);

        DataColumn productName = new DataColumn();
        productName.DataType = System.Type.GetType("System.String");
        productName.ColumnName = "Name";
        newProducts.Columns.Add(productName);

        DataColumn productNumber = new DataColumn();
        productNumber.DataType = System.Type.GetType("System.String");
        productNumber.ColumnName = "ProductNumber";
        newProducts.Columns.Add(productNumber);

        // Create an array for DataColumn objects.
        DataColumn[] keys = new DataColumn[1];
        keys[0] = productID;
        newProducts.PrimaryKey = keys;

        // Add some new rows to the collection.
        DataRow row = newProducts.NewRow();
        row["Name"] = "CC-101-WH";
        row["ProductNumber"] = "Cyclocomputer - White";

        newProducts.Rows.Add(row);
        row = newProducts.NewRow();
        row["Name"] = "CC-101-BK";
        row["ProductNumber"] = "Cyclocomputer - Black";

        newProducts.Rows.Add(row);
        row = newProducts.NewRow();
        row["Name"] = "CC-101-ST";
        row["ProductNumber"] = "Cyclocomputer - Stainless";
        newProducts.Rows.Add(row);
        newProducts.AcceptChanges();

        // Return the new DataTable.
        return newProducts;
    }
    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
WriteToServer 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.WriteToServer 方法 (IDataReader)

SqlBulkCopy
.
.
::
.
WriteToServer 方法 (IDataReader)
SqlBulkCopy 类

将所提供的 IDataReader 中的所有行复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub WriteToServer ( _
    reader As IDataReader _
)
public void WriteToServer(
    IDataReader reader
)
public:
void WriteToServer(
    IDataReader^ reader
)
member WriteToServer :
        reader:IDataReader -> unit

参数

reader
类型： System.Data IDataReader
一个 IDataReader，它的行将被复制到目标表中。

复制操作从读取器中的下一个可用行开始执行。大多数情况下，读取器仅由 ExecuteReader 或类似的调用返回，因此下一可用行即为第一行。若要处理多个结果，请对数据读取器调用 NextResult，并再次调用 WriteToServer。 复制操作从读取器中的下一个可用行开始执行。大多数情况下，读取器仅由 ExecuteReader 或类似的调用返回，因此下一可用行即为第一行。若要处理多个结果，请对数据读取器调用 NextResult，并再次调用 WriteToServer。 复制操作从读取器中的下一个可用行开始执行。大多数情况下，读取器仅由 ExecuteReader 或类似的调用返回，因此下一可用行即为第一行。若要处理多个结果，请对数据读取器调用 NextResult，并再次调用 WriteToServer。

请注意，使用 WriteToServer 会修改读取器的状态。该方法将调用 Read，直至返回 false、操作被中止或出现错误为止。这意味着数据读取器将处于不同的状态，很可能在结果集的末尾，当 WriteToServer 操作完成时。 请注意，使用 WriteToServer 会修改读取器的状态。该方法将调用 Read，直至返回 false、操作被中止或出现错误为止。这意味着数据读取器将处于不同的状态，很可能在结果集的末尾，当 WriteToServer 操作完成时。 请注意，使用 WriteToServer 会修改读取器的状态。该方法将调用 Read，直至返回 false、操作被中止或出现错误为止。这意味着数据读取器将处于不同的状态，很可能在结果集的末尾，当 WriteToServer 操作完成时。

在执行批量复制操作的过程中，关联的目标 SqlConnection 正忙于为批量复制服务，因此不能在此连接上执行其他操作。

ColumnMappings 集合从数据读取器列映射到目标数据库表。

下面的控制台应用程序演示如何从 SqlDataReader 批量加载数据。目标表是 AdventureWorks 数据库中的表。 下面的控制台应用程序演示如何从 SqlDataReader 批量加载数据。目标表是 AdventureWorks 数据库中的表。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object using a connection string.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object using a connection string.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
WriteToServer 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.WriteToServer 方法 (DataTable, DataRowState)

SqlBulkCopy
.
.
::
.
WriteToServer 方法 (DataTable, DataRowState)
SqlBulkCopy 类

只将与所提供 DataTable 中所提供行状态匹配的行复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub WriteToServer ( _
    table As DataTable, _
    rowState As DataRowState _
)
public void WriteToServer(
    DataTable table,
    DataRowState rowState
)
public:
void WriteToServer(
    DataTable^ table,
    DataRowState rowState
)
member WriteToServer :
        table:DataTable *
        rowState:DataRowState -> unit

参数

table
类型： System.Data DataTable
一个 DataTable，它的行将被复制到目标表中。
rowState
类型： System.Data DataRowState
DataRowState 枚举中的一个值。只有与行状态匹配的行才会被复制到目标表中。 DataRowState 枚举中的一个值。只有与行状态匹配的行才会被复制到目标表中。

只有 DataTable 中尚未被删除，且其状态与 rowState 参数中所指示的状态匹配的行才会被复制到目标表中。

说明 说明

如果指定了 Deleted，则还会将任何 Unchanged、Added 和 Modified 行复制到服务器。不会引发任何异常。 如果指定了 Deleted，则还会将任何 Unchanged、Added 和 Modified 行复制到服务器。不会引发任何异常。

在执行批量复制操作的过程中，关联的目标 SqlConnection 正忙于为批量复制服务，因此不能在此连接上执行其他操作。

ColumnMappings 集合从 DataTable 列映射到目标数据库表。

下面的控制台应用程序演示如何只批量加载 DataTable 中与指定状态匹配的行。在此情况下，只添加未被更改的行。目标表是 AdventureWorks 数据库中的表。 下面的控制台应用程序演示如何只批量加载 DataTable 中与指定状态匹配的行。在此情况下，只添加未被更改的行。目标表是 AdventureWorks 数据库中的表。 下面的控制台应用程序演示如何只批量加载 DataTable 中与指定状态匹配的行。在此情况下，只添加未被更改的行。目标表是 AdventureWorks 数据库中的表。

在此示例中，会在运行时创建一个 DataTable，并向其中添加三个行。在执行 WriteToServer 方法前，对其中某一行进行了编辑。将使用 DataRowState.UnchangedrowState 参数调用 WriteToServer 方法，因此只有两个未更改的行批量复制到目标。 在此示例中，会在运行时创建一个 DataTable，并向其中添加三个行。在执行 WriteToServer 方法前，对其中某一行进行了编辑。将使用 DataRowState.UnchangedrowState 参数调用 WriteToServer 方法，因此只有两个未更改的行批量复制到目标。 在此示例中，会在运行时创建一个 DataTable，并向其中添加三个行。在执行 WriteToServer 方法前，对其中某一行进行了编辑。将使用 DataRowState.UnchangedrowState 参数调用 WriteToServer 方法，因此只有两个未更改的行批量复制到目标。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = _
           New SqlConnection(connectionString)
            connection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                connection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Create a table with some rows.
            Dim newProducts As DataTable = MakeTable()

            ' Make a change to one of the rows in the DataTable.
            Dim row As DataRow = newProducts.Rows(0)
            row.BeginEdit()
            row("Name") = "AAA"
            row.EndEdit()

            ' Set up the bulk copy object.
            ' Note that the column positions in the source DataTable
            ' match the column positions in the destination table,
            ' so there is no need to map columns.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connection)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write unchanged rows from the source to the destination.
                    bulkCopy.WriteToServer(newProducts, DataRowState.Unchanged)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function MakeTable() As DataTable
        ' Create a new DataTable named NewProducts.
        Dim newProducts As DataTable = _
         New DataTable("NewProducts")

        ' Add three column objects to the table.
        Dim productID As DataColumn = New DataColumn()
        productID.DataType = System.Type.GetType("System.Int32")
        productID.ColumnName = "ProductID"
        productID.AutoIncrement = True
        newProducts.Columns.Add(productID)

        Dim productName As DataColumn = New DataColumn()
        productName.DataType = System.Type.GetType("System.String")
        productName.ColumnName = "Name"
        newProducts.Columns.Add(productName)

        Dim productNumber As DataColumn = New DataColumn()
        productNumber.DataType = System.Type.GetType("System.String")
        productNumber.ColumnName = "ProductNumber"
        newProducts.Columns.Add(productNumber)

        ' Create an array for DataColumn objects.
        Dim keys(0) As DataColumn
        keys(0) = productID
        newProducts.PrimaryKey = keys

        ' Add some new rows to the collection.
        Dim row As DataRow
        row = newProducts.NewRow()
        row("Name") = "CC-101-WH"
        row("ProductNumber") = "Cyclocomputer - White"
        newProducts.Rows.Add(row)

        row = newProducts.NewRow()
        row("Name") = "CC-101-BK"
        row("ProductNumber") = "Cyclocomputer - Black"
        newProducts.Rows.Add(row)

        row = newProducts.NewRow()
        row("Name") = "CC-101-ST"
        row("ProductNumber") = "Cyclocomputer - Stainless"
        newProducts.Rows.Add(row)
        newProducts.AcceptChanges()

        ' Return the new DataTable.
        Return newProducts
    End Function

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                connection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Create a table with some rows.
            DataTable newProducts = MakeTable();

            // Make a change to one of the rows in the DataTable.
            DataRow row = newProducts.Rows[0];
            row.BeginEdit();
            row["Name"] = "AAA";
            row.EndEdit();

            // Create the SqlBulkCopy object.
            // Note that the column positions in the source DataTable
            // match the column positions in the destination table so
            // there is no need to map columns.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write unchanged rows from the source to the destination.
                    bulkCopy.WriteToServer(newProducts, DataRowState.Unchanged);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static DataTable MakeTable()
        // Create a new DataTable named NewProducts.
    {
        DataTable newProducts = new DataTable("NewProducts");

        // Add three column objects to the table.
        DataColumn productID = new DataColumn();
        productID.DataType = System.Type.GetType("System.Int32");
        productID.ColumnName = "ProductID";
        productID.AutoIncrement = true;
        newProducts.Columns.Add(productID);

        DataColumn productName = new DataColumn();
        productName.DataType = System.Type.GetType("System.String");
        productName.ColumnName = "Name";
        newProducts.Columns.Add(productName);

        DataColumn productNumber = new DataColumn();
        productNumber.DataType = System.Type.GetType("System.String");
        productNumber.ColumnName = "ProductNumber";
        newProducts.Columns.Add(productNumber);

        // Create an array for DataColumn objects.
        DataColumn[] keys = new DataColumn[1];
        keys[0] = productID;
        newProducts.PrimaryKey = keys;

        // Add some new rows to the collection.
        DataRow row = newProducts.NewRow();
        row["Name"] = "CC-101-WH";
        row["ProductNumber"] = "Cyclocomputer - White";

        newProducts.Rows.Add(row);
        row = newProducts.NewRow();
        row["Name"] = "CC-101-BK";
        row["ProductNumber"] = "Cyclocomputer - Black";

        newProducts.Rows.Add(row);
        row = newProducts.NewRow();
        row["Name"] = "CC-101-ST";
        row["ProductNumber"] = "Cyclocomputer - Stainless";
        newProducts.Rows.Add(row);
        newProducts.AcceptChanges();

        // Return the new DataTable.
        return newProducts;
    }
    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
WriteToServer 重载
System.Data.SqlClient 命名空间
DataRowState

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 属性

SqlBulkCopy 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopy 类

SqlBulkCopy 类型公开以下成员。

名称 说明
页首

参考

SqlBulkCopy 类
System.Data.SqlClient 命名空间


SqlBulkCopy ..::.BatchSize 属性

SqlBulkCopy
.
.
::
.
BatchSize 属性
SqlBulkCopy 类

每一批次中的行数。在每一批次结束时，将该批次中的行发送到服务器。 每一批次中的行数。在每一批次结束时，将该批次中的行发送到服务器。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property BatchSize As Integer
    Get
    Set
public int BatchSize { get; set; }
public:
property int BatchSize {
    int get ();
    void set (int value);
}
member BatchSize : int with get, set

属性值

类型： System Int32
BatchSize 属性的整数值；或者如果未设置任何值，则为零。

处理完 BatchSize 行或已经没有要发送到目标数据源的行时，批处理即完成。

零（默认值）指示每个 WriteToServer 操作都是一个单一批次。

如果在 UseInternalTransaction 选项没有起作用时已经声明 SqlBulkCopy 实例，则一次向服务器 BatchSize 行发送行，但并不进行任何与事务相关的操作。如果 UseInternalTransaction 起作用，则每一批次的行都将作为单独的事务插入。 如果在 UseInternalTransaction 选项没有起作用时已经声明 SqlBulkCopy 实例，则一次向服务器 BatchSize 行发送行，但并不进行任何与事务相关的操作。如果 UseInternalTransaction 起作用，则每一批次的行都将作为单独的事务插入。

在任何时间都可以设置 BatchSize 属性。如果批量复制已在进行中，当前批次则按上一批次的大小进行大小调整。而后续的批次则使用新的大小。如果 BatchSize 最初时为零，并且在 WriteToServer 操作已在进行中时进行了更改，则该操作将以单一批次加载数据。而同一 SqlBulkCopy 实例上的任何后续 WriteToServer 操作都将使用新的 BatchSize。 在任何时间都可以设置 BatchSize 属性。如果批量复制已在进行中，当前批次则按上一批次的大小进行大小调整。而后续的批次则使用新的大小。如果 BatchSize 最初时为零，并且在 WriteToServer 操作已在进行中时进行了更改，则该操作将以单一批次加载数据。而同一 SqlBulkCopy 实例上的任何后续 WriteToServer 操作都将使用新的 BatchSize。 在任何时间都可以设置 BatchSize 属性。如果批量复制已在进行中，当前批次则按上一批次的大小进行大小调整。而后续的批次则使用新的大小。如果 BatchSize 最初时为零，并且在 WriteToServer 操作已在进行中时进行了更改，则该操作将以单一批次加载数据。而同一 SqlBulkCopy 实例上的任何后续 WriteToServer 操作都将使用新的 BatchSize。 在任何时间都可以设置 BatchSize 属性。如果批量复制已在进行中，当前批次则按上一批次的大小进行大小调整。而后续的批次则使用新的大小。如果 BatchSize 最初时为零，并且在 WriteToServer 操作已在进行中时进行了更改，则该操作将以单一批次加载数据。而同一 SqlBulkCopy 实例上的任何后续 WriteToServer 操作都将使用新的 BatchSize。 在任何时间都可以设置 BatchSize 属性。如果批量复制已在进行中，当前批次则按上一批次的大小进行大小调整。而后续的批次则使用新的大小。如果 BatchSize 最初时为零，并且在 WriteToServer 操作已在进行中时进行了更改，则该操作将以单一批次加载数据。而同一 SqlBulkCopy 实例上的任何后续 WriteToServer 操作都将使用新的 BatchSize。

下面的控制台应用程序演示如何以每批次 50 行的大小批量加载数据。有关演示 BatchSize 如何用于事务的示例，请参见事务和批量复制操作 (ADO.NET)。 下面的控制台应用程序演示如何以每批次 50 行的大小批量加载数据。有关演示 BatchSize 如何用于事务的示例，请参见事务和批量复制操作 (ADO.NET)。

在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Create the SqlBulkCopy object using a connection string.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                ' Set the BatchSize.
                bulkCopy.BatchSize = 50

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Create the SqlBulkCopy object using a connection string.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                // Set the BatchSize.
                bulkCopy.BatchSize = 50;

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }

                // Perform a final count on the destination
                // table to see how many rows were added.
                long countEnd = System.Convert.ToInt32(
                    commandRowCount.ExecuteScalar());
                Console.WriteLine("Ending row count = {0}", countEnd);
                Console.WriteLine("{0} rows were added.", countEnd - countStart);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.BulkCopyTimeout 属性

SqlBulkCopy
.
.
::
.
BulkCopyTimeout 属性
SqlBulkCopy 类

超时之前操作完成所允许的秒数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property BulkCopyTimeout As Integer
    Get
    Set
public int BulkCopyTimeout { get; set; }
public:
property int BulkCopyTimeout {
    int get ();
    void set (int value);
}
member BulkCopyTimeout : int with get, set

属性值

类型： System Int32
BulkCopyTimeout 属性的整数值。

如果操作超时，事务便不会提交，而且所有已复制的行都会从目标表中移除。

下面的控制台应用程序演示如何修改在批量加载数据时 30 秒的默认超时设置。

在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先将 SQL Server 表中的源数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Create the SqlBulkCopy object using a connection string.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                ' Set the timeout.
                bulkCopy.BulkCopyTimeout = 60

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();

        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Create the SqlBulkCopy object using a connection string.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                // Set the timeout.
                bulkCopy.BulkCopyTimeout = 60;

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.ColumnMappings 属性

SqlBulkCopy
.
.
::
.
ColumnMappings 属性
SqlBulkCopy 类

返回 SqlBulkCopyColumnMapping 项的集合。列映射定义数据源中的列和目标表中的列之间的关系。 返回 SqlBulkCopyColumnMapping 项的集合。列映射定义数据源中的列和目标表中的列之间的关系。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property ColumnMappings As SqlBulkCopyColumnMappingCollection
    Get
public SqlBulkCopyColumnMappingCollection ColumnMappings { get; }
public:
property SqlBulkCopyColumnMappingCollection^ ColumnMappings {
    SqlBulkCopyColumnMappingCollection^ get ();
}
member ColumnMappings : SqlBulkCopyColumnMappingCollection

属性值

类型： System.Data.SqlClient SqlBulkCopyColumnMappingCollection
列映射集合。默认情况下为空集合。 列映射集合。默认情况下为空集合。

如果数据源和目标表具有相同的列数，并且数据源中每个源列的序号位置匹配相应目标列的序号位置，则无需 ColumnMappings 集合。但是如果列计数不同，或序号位置不一致，则必须使用 ColumnMappings，以确保将数据复制到正确的列中。 如果数据源和目标表具有相同的列数，并且数据源中每个源列的序号位置匹配相应目标列的序号位置，则无需 ColumnMappings 集合。但是如果列计数不同，或序号位置不一致，则必须使用 ColumnMappings，以确保将数据复制到正确的列中。

在执行批量复制操作期间，可以访问此集合，但不能进行更改。任何更改尝试都将引发 InvalidOperationException。 在执行批量复制操作期间，可以访问此集合，但不能进行更改。任何更改尝试都将引发 InvalidOperationException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间
SqlBulkCopyColumnMapping

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.DestinationTableName 属性

SqlBulkCopy
.
.
::
.
DestinationTableName 属性
SqlBulkCopy 类

服务器上目标表的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property DestinationTableName As String
    Get
    Set
public string DestinationTableName { get; set; }
public:
property String^ DestinationTableName {
    String^ get ();
    void set (String^ value);
}
member DestinationTableName : string with get, set

属性值

类型： System String
DestinationTableName 属性的字符串值；或者如果未提供任何值，则为 null。

如果在调用 WriteToServer 时还未设置 DestinationTableName，则会引发 ArgumentNullException。

如果在 WriteToServer 操作运行期间修改 DestinationTableName，此更改将不会影响当前操作。新的 DestinationTableName 值会在下一次调用 WriteToServer 方法时使用。 如果在 WriteToServer 操作运行期间修改 DestinationTableName，此更改将不会影响当前操作。新的 DestinationTableName 值会在下一次调用 WriteToServer 方法时使用。

DestinationTableName 是由三部分组成的名称 (<database>.<owningschema>.<name>)。如果愿意，您可以使用表的数据库和所属架构对表名称进行限定。但是，如果表名称带有下划线（“_”）或任何其他特殊字符，则必须使用括号对名称转义，如 ([<database>.<owningschema>.<name_01>]) 所示。有关更多信息，请参见《SQL Server 联机丛书》中的“标识符”。 DestinationTableName 是由三部分组成的名称 (<database>.<owningschema>.<name>)。如果愿意，您可以使用表的数据库和所属架构对表名称进行限定。但是，如果表名称带有下划线（“_”）或任何其他特殊字符，则必须使用括号对名称转义，如 ([<database>.<owningschema>.<name_01>]) 所示。有关更多信息，请参见《SQL Server 联机丛书》中的“标识符”。 DestinationTableName 是由三部分组成的名称 (<database>.<owningschema>.<name>)。如果愿意，您可以使用表的数据库和所属架构对表名称进行限定。但是，如果表名称带有下划线（“_”）或任何其他特殊字符，则必须使用括号对名称转义，如 ([<database>.<owningschema>.<name_01>]) 所示。有关更多信息，请参见《SQL Server 联机丛书》中的“标识符”。 DestinationTableName 是由三部分组成的名称 (<database>.<owningschema>.<name>)。如果愿意，您可以使用表的数据库和所属架构对表名称进行限定。但是，如果表名称带有下划线（“_”）或任何其他特殊字符，则必须使用括号对名称转义，如 ([<database>.<owningschema>.<name_01>]) 所示。有关更多信息，请参见《SQL Server 联机丛书》中的“标识符”。

可以使用 DestinationTableName 属性的 tempdb..#table 或 tempdb.<owner>.#table 等值将数据批量复制到临时表中。

下面的控制台应用程序演示如何使用已打开的连接批量加载数据。目标表是 AdventureWorks 数据库中的表。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。目标表是 AdventureWorks 数据库中的表。

在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Open the destination connection. In the real world you would
            ' not use SqlBulkCopy to move data from one table to the other
            ' in the same database. This is for demonstration purposes only.
            Using destinationConnection As SqlConnection = _
                New SqlConnection(connectionString)
                destinationConnection.Open()

                ' Set up the bulk copy object.
                ' The column positions in the source data reader
                ' match the column positions in the destination table,
                ' so there is no need to map columns.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(destinationConnection)
                    bulkCopy.DestinationTableName = _
                    "dbo.BulkCopyDemoMatchingColumns"

                    Try
                        ' Write from the source to the destination.
                        bulkCopy.WriteToServer(reader)

                    Catch ex As Exception
                        Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                    End Try
                End Using

                ' Perform a final count on the destination table
                ' to see how many rows were added.
                Dim countEnd As Long = _
                    System.Convert.ToInt32(commandRowCount.ExecuteScalar())
                Console.WriteLine("Ending row count = {0}", countEnd)
                Console.WriteLine("{0} rows were added.", countEnd - countStart)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Open the destination connection. In the real world you would
            // not use SqlBulkCopy to move data from one table to the other
            // in the same database. This is for demonstration purposes only.
            using (SqlConnection destinationConnection =
                       new SqlConnection(connectionString))
            {
                destinationConnection.Open();

                // Set up the bulk copy object.
                // Note that the column positions in the source
                // data reader match the column positions in
                // the destination table so there is no need to
                // map columns.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(destinationConnection))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoMatchingColumns";

                    try
                    {
                        // Write from the source to the destination.
                        bulkCopy.WriteToServer(reader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        // Close the SqlDataReader. The SqlBulkCopy
                        // object is automatically closed at the end
                        // of the using block.
                        reader.Close();
                    }
                }

                // Perform a final count on the destination
                // table to see how many rows were added.
                long countEnd = System.Convert.ToInt32(
                    commandRowCount.ExecuteScalar());
                Console.WriteLine("Ending row count = {0}", countEnd);
                Console.WriteLine("{0} rows were added.", countEnd - countStart);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy ..::.NotifyAfter 属性

SqlBulkCopy
.
.
::
.
NotifyAfter 属性
SqlBulkCopy 类

定义在生成通知事件之前要处理的行数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property NotifyAfter As Integer
    Get
    Set
public int NotifyAfter { get; set; }
public:
property int NotifyAfter {
    int get ();
    void set (int value);
}
member NotifyAfter : int with get, set

属性值

类型： System Int32
NotifyAfter 属性的整数值，或者如果未设置该属性，则为零。

此属性专为用于指示批量复制操作进度的用户界面组件而设计。该属性指示在生成通知事件之前要处理的行数。可以随时设置 NotifyAfter 属性，即便批量复制操作在进行中也是如此。在批量复制操作期间所做的更改会在下次通知后生效。新的设置将应用于同一实例的所有后续操作。 此属性专为用于指示批量复制操作进度的用户界面组件而设计。该属性指示在生成通知事件之前要处理的行数。可以随时设置 NotifyAfter 属性，即便批量复制操作在进行中也是如此。在批量复制操作期间所做的更改会在下次通知后生效。新的设置将应用于同一实例的所有后续操作。 此属性专为用于指示批量复制操作进度的用户界面组件而设计。该属性指示在生成通知事件之前要处理的行数。可以随时设置 NotifyAfter 属性，即便批量复制操作在进行中也是如此。在批量复制操作期间所做的更改会在下次通知后生效。新的设置将应用于同一实例的所有后续操作。 此属性专为用于指示批量复制操作进度的用户界面组件而设计。该属性指示在生成通知事件之前要处理的行数。可以随时设置 NotifyAfter 属性，即便批量复制操作在进行中也是如此。在批量复制操作期间所做的更改会在下次通知后生效。新的设置将应用于同一实例的所有后续操作。 此属性专为用于指示批量复制操作进度的用户界面组件而设计。该属性指示在生成通知事件之前要处理的行数。可以随时设置 NotifyAfter 属性，即便批量复制操作在进行中也是如此。在批量复制操作期间所做的更改会在下次通知后生效。新的设置将应用于同一实例的所有后续操作。

如果将 NotifyAfter 设置为小于零的数字，则会引发 ArgumentOutOfRangeException。

下面的控制台应用程序演示如何使用已打开的连接批量加载数据。该示例设置 NotifyAfter 属性，使得每当将 50 行复制到表后调用一次事件处理程序。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。该示例设置 NotifyAfter 属性，使得每当将 50 行复制到表后调用一次事件处理程序。

在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。然后再打开一个连接以批量复制数据。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。然后再打开一个连接以批量复制数据。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。然后再打开一个连接以批量复制数据。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("NotifyAfter Sample")
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Create the SqlBulkCopy object using a connection string.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                ' Set up the event handler to notify after 50 rows.
                AddHandler bulkCopy.SqlRowsCopied, AddressOf OnSqlRowsCopied
                bulkCopy.DestinationTableName = _
                 "dbo.BulkCopyDemoMatchingColumns"
                bulkCopy.NotifyAfter = 50

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Sub OnSqlRowsCopied(ByVal sender As Object, _
        ByVal args As SqlRowsCopiedEventArgs)
        Console.WriteLine("Copied {0} so far...", args.RowsCopied)
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("NotifyAfter Sample");
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Create the SqlBulkCopy object using a connection string.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                // Set up the event handler to notify after 50 rows.
                bulkCopy.SqlRowsCopied +=
                    new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
                bulkCopy.NotifyAfter = 50;

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static void OnSqlRowsCopied(
        object sender, SqlRowsCopiedEventArgs e)
    {
        Console.WriteLine("Copied {0} so far...", e.RowsCopied);
    }
    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopy 事件

SqlBulkCopy 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopy 类

SqlBulkCopy 类型公开以下成员。

名称 说明
页首

参考

SqlBulkCopy 类
System.Data.SqlClient 命名空间


SqlBulkCopy ..::.SqlRowsCopied 事件

SqlBulkCopy
.
.
::
.
SqlRowsCopied 事件
SqlBulkCopy 类

在每次处理完 NotifyAfter 属性指定的行数时发生。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Event SqlRowsCopied As SqlRowsCopiedEventHandler
public event SqlRowsCopiedEventHandler SqlRowsCopied
public:
 event SqlRowsCopiedEventHandler^ SqlRowsCopied {
    void add (SqlRowsCopiedEventHandler^ value);
    void remove (SqlRowsCopiedEventHandler^ value);
}
member SqlRowsCopied : IEvent<SqlRowsCopiedEventHandler,
    SqlRowsCopiedEventArgs>

请注意，NotifyAfter 和 BatchSize 的设置相互独立。接收到 SqlRowsCopied 事件并不表明任何行已发送到服务器或已提交。 请注意，NotifyAfter 和 BatchSize 的设置相互独立。接收到 SqlRowsCopied 事件并不表明任何行已发送到服务器或已提交。

不能通过此事件调用 Close 方法。执行此操作将导致引发 InvalidOperationException，而且 SqlBulkCopy 对象的状态将不会改变。如果用户要通过此事件取消操作，则可以使用 SqlRowsCopiedEventArgs 的 Abort 属性。（有关使用 Abort 属性的示例，请参见事务和批量复制操作 (ADO.NET)。） 不能通过此事件调用 Close 方法。执行此操作将导致引发 InvalidOperationException，而且 SqlBulkCopy 对象的状态将不会改变。如果用户要通过此事件取消操作，则可以使用 SqlRowsCopiedEventArgs 的 Abort 属性。（有关使用 Abort 属性的示例，请参见事务和批量复制操作 (ADO.NET)。） 不能通过此事件调用 Close 方法。执行此操作将导致引发 InvalidOperationException，而且 SqlBulkCopy 对象的状态将不会改变。如果用户要通过此事件取消操作，则可以使用 SqlRowsCopiedEventArgs 的 Abort 属性。（有关使用 Abort 属性的示例，请参见事务和批量复制操作 (ADO.NET)。） 不能通过此事件调用 Close 方法。执行此操作将导致引发 InvalidOperationException，而且 SqlBulkCopy 对象的状态将不会改变。如果用户要通过此事件取消操作，则可以使用 SqlRowsCopiedEventArgs 的 Abort 属性。（有关使用 Abort 属性的示例，请参见事务和批量复制操作 (ADO.NET)。）

批量复制操作执行期间在连接中不支持任何操作（如事务活动），建议您不使用在 SqlRowsCopied 事件期间所使用的相同的连接。但是，可打开其他连接。 批量复制操作执行期间在连接中不支持任何操作（如事务活动），建议您不使用在 SqlRowsCopied 事件期间所使用的相同的连接。但是，可打开其他连接。

下面的控制台应用程序演示如何使用已打开的连接批量加载数据。该示例设置 NotifyAfter 属性，使得每当将 50 行复制到表后调用一次事件处理程序。 下面的控制台应用程序演示如何使用已打开的连接批量加载数据。该示例设置 NotifyAfter 属性，使得每当将 50 行复制到表后调用一次事件处理程序。

在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。 在此示例中，首先使用该连接将 SQL Server 表中的数据读取到 SqlDataReader 实例。请注意，源数据不必位于 SQL Server 上，您可以使用能读取到 IDataReader 或加载到 DataTable 的任何数据源。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("NotifyAfter Sample")
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Create the SqlBulkCopy object using a connection string.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                ' Set up the event handler to notify after 50 rows.
                AddHandler bulkCopy.SqlRowsCopied, AddressOf OnSqlRowsCopied
                bulkCopy.DestinationTableName = _
                 "dbo.BulkCopyDemoMatchingColumns"
                bulkCopy.NotifyAfter = 50

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Sub OnSqlRowsCopied(ByVal sender As Object, _
        ByVal args As SqlRowsCopiedEventArgs)
        Console.WriteLine("Copied {0} so far...", args.RowsCopied)
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("NotifyAfter Sample");
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Create the SqlBulkCopy object using a connection string.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                // Set up the event handler to notify after 50 rows.
                bulkCopy.SqlRowsCopied +=
                    new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
                bulkCopy.NotifyAfter = 50;

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static void OnSqlRowsCopied(
        object sender, SqlRowsCopiedEventArgs e)
    {
        Console.WriteLine("Copied {0} so far...", e.RowsCopied);
    }
    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopy 类
SqlBulkCopy 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping 类

SqlBulkCopyColumnMapping 类
成员

定义 SqlBulkCopy 实例的数据源中的列与该实例的目标表中的列之间的映射。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlBulkCopyColumnMapping
public sealed class SqlBulkCopyColumnMapping
public ref class SqlBulkCopyColumnMapping sealed
[<SealedAttribute>]
type SqlBulkCopyColumnMapping =  class end

列映射定义数据源与目标表之间的映射。

如果未定义映射，即 ColumnMappings 集合为空，则基于序号位置隐式映射列。要实现此操作，源架构和目标架构必须匹配。如果不匹配，则将引发 InvalidOperationException。 如果未定义映射，即 ColumnMappings 集合为空，则基于序号位置隐式映射列。要实现此操作，源架构和目标架构必须匹配。如果不匹配，则将引发 InvalidOperationException。 如果未定义映射，即 ColumnMappings 集合为空，则基于序号位置隐式映射列。要实现此操作，源架构和目标架构必须匹配。如果不匹配，则将引发 InvalidOperationException。

如果 ColumnMappings 集合不为空，则不必指定数据源中存在的每一列。将忽略集合未映射的那些列。 如果 ColumnMappings 集合不为空，则不必指定数据源中存在的每一列。将忽略集合未映射的那些列。

可以通过名称或序号引用源列和目标列。也可以在同一映射集合中混合按名称列引用与按序号列引用。 可以通过名称或序号引用源列和目标列。也可以在同一映射集合中混合按名称列引用与按序号列引用。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。虽然目标中的列数与源中的列数相同，并且每个目标列都位于与其相应的源列相同的序号位置，但列名不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。虽然目标中的列数与源中的列数相同，并且每个目标列都位于与其相应的源列相同的序号位置，但列名不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。虽然目标中的列数与源中的列数相同，并且每个目标列都位于与其相应的源列相同的序号位置，但列名不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by name.
                Dim mapID As New _
                  SqlBulkCopyColumnMapping("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New _
                 SqlBulkCopyColumnMapping("Name", "ProdName")
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapMumber As New _
                 SqlBulkCopyColumnMapping("ProductNumber", "ProdNum")
                bulkCopy.ColumnMappings.Add(mapMumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by name.
                SqlBulkCopyColumnMapping mapID =
                    new SqlBulkCopyColumnMapping("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName =
                    new SqlBulkCopyColumnMapping("Name", "ProdName");
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapMumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
                bulkCopy.ColumnMappings.Add(mapMumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlBulkCopyColumnMappingSqlBulkCopyColumnMapping
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping 成员

SqlBulkCopyColumnMapping 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMapping 类

定义 SqlBulkCopy 实例的数据源中的列与该实例的目标表中的列之间的映射。

SqlBulkCopyColumnMapping 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlBulkCopyColumnMapping 类
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMapping 构造函数

SqlBulkCopyColumnMapping 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMapping 类

初始化 SqlBulkCopyColumnMapping 类的新实例。

名称 说明
页首

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMapping 构造函数

SqlBulkCopyColumnMapping 构造函数
SqlBulkCopyColumnMapping 类

用于初始化新的 SqlBulkCopyColumnMapping 对象的默认构造函数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlBulkCopyColumnMapping()
public:
SqlBulkCopyColumnMapping()
new : unit -> SqlBulkCopyColumnMapping

如果使用此构造函数，则必须使用 SourceColumn 属性或 SourceOrdinal 属性定义映射源，并使用 DestinationColumn 属性或 DestinationOrdinal 属性定义映射目标。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by name.
                Dim mapID As New _
                  SqlBulkCopyColumnMapping("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New _
                 SqlBulkCopyColumnMapping("Name", "ProdName")
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapMumber As New _
                 SqlBulkCopyColumnMapping("ProductNumber", "ProdNum")
                bulkCopy.ColumnMappings.Add(mapMumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by name.
                SqlBulkCopyColumnMapping mapID =
                    new SqlBulkCopyColumnMapping("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName =
                    new SqlBulkCopyColumnMapping("Name", "ProdName");
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapMumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
                bulkCopy.ColumnMappings.Add(mapMumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
SqlBulkCopyColumnMapping 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping 构造函数 (Int32, Int32)

SqlBulkCopyColumnMapping 构造函数 (Int32, Int32)
SqlBulkCopyColumnMapping 类

创建新的列映射，并使用列序号引用源列和目标列。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    sourceColumnOrdinal As Integer, _
    destinationOrdinal As Integer _
)
public SqlBulkCopyColumnMapping(
    int sourceColumnOrdinal,
    int destinationOrdinal
)
public:
SqlBulkCopyColumnMapping(
    int sourceColumnOrdinal,
    int destinationOrdinal
)
new :
        sourceColumnOrdinal:int *
        destinationOrdinal:int -> SqlBulkCopyColumnMapping

参数

sourceColumnOrdinal
类型： System Int32
数据源中源列的序号位置。
destinationOrdinal
类型： System Int32
目标表中目标列的序号位置。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用来根据列的序号位置为批量复制创建列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用来根据列的序号位置为批量复制创建列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用来根据列的序号位置为批量复制创建列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by ordinal.
                Dim columnMapID As New _
                  SqlBulkCopyColumnMapping(0, 0)
                bulkCopy.ColumnMappings.Add(columnMapID)

                Dim columnMapName As New _
                 SqlBulkCopyColumnMapping(1, 2)
                bulkCopy.ColumnMappings.Add(columnMapName)

                Dim columnMapNumber As New _
                 SqlBulkCopyColumnMapping(2, 1)
                bulkCopy.ColumnMappings.Add(columnMapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by ordinal.
                SqlBulkCopyColumnMapping columnMapID =
                    new SqlBulkCopyColumnMapping(0, 0);
                bulkCopy.ColumnMappings.Add(columnMapID);

                SqlBulkCopyColumnMapping columnMapName =
                    new SqlBulkCopyColumnMapping(1, 2);
                bulkCopy.ColumnMappings.Add(columnMapName);

                SqlBulkCopyColumnMapping columnMapNumber =
                    new SqlBulkCopyColumnMapping(2, 1);
                bulkCopy.ColumnMappings.Add(columnMapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
SqlBulkCopyColumnMapping 重载
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMapping 构造函数 (Int32, String)

SqlBulkCopyColumnMapping 构造函数 (Int32, String)
SqlBulkCopyColumnMapping 类

创建新的列映射，并使用列序号引用源列和目标列的列名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    sourceColumnOrdinal As Integer, _
    destinationColumn As String _
)
public SqlBulkCopyColumnMapping(
    int sourceColumnOrdinal,
    string destinationColumn
)
public:
SqlBulkCopyColumnMapping(
    int sourceColumnOrdinal,
    String^ destinationColumn
)
new :
        sourceColumnOrdinal:int *
        destinationColumn:string -> SqlBulkCopyColumnMapping

参数

sourceColumnOrdinal
类型： System Int32
数据源中源列的序号位置。
destinationColumn
类型： System String
目标表中目标列的名称。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by ordinal and name.
                Dim columnMapID As New _
                  SqlBulkCopyColumnMapping(0, "ProdID")
                bulkCopy.ColumnMappings.Add(columnMapID)

                Dim columnMapName As New _
                 SqlBulkCopyColumnMapping(1, "ProdName")
                bulkCopy.ColumnMappings.Add(columnMapName)

                Dim columnMapNumber As New _
                 SqlBulkCopyColumnMapping(2, "ProdNum")
                bulkCopy.ColumnMappings.Add(columnMapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by ordinal and name.
                SqlBulkCopyColumnMapping columnMapID =
                    new SqlBulkCopyColumnMapping(0, "ProdID");
                bulkCopy.ColumnMappings.Add(columnMapID);

                SqlBulkCopyColumnMapping columnMapName =
                    new SqlBulkCopyColumnMapping(1, "ProdName");
                bulkCopy.ColumnMappings.Add(columnMapName);

                SqlBulkCopyColumnMapping columnMapNumber =
                    new SqlBulkCopyColumnMapping(2, "ProdNum");
                bulkCopy.ColumnMappings.Add(columnMapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
SqlBulkCopyColumnMapping 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping 构造函数 (String, Int32)

SqlBulkCopyColumnMapping 构造函数 (String, Int32)
SqlBulkCopyColumnMapping 类

创建新的列映射，并使用列名称引用源列和目标列的列序号。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    sourceColumn As String, _
    destinationOrdinal As Integer _
)
public SqlBulkCopyColumnMapping(
    string sourceColumn,
    int destinationOrdinal
)
public:
SqlBulkCopyColumnMapping(
    String^ sourceColumn,
    int destinationOrdinal
)
new :
        sourceColumn:string *
        destinationOrdinal:int -> SqlBulkCopyColumnMapping

参数

sourceColumn
类型： System String
数据源中源列的名称。
destinationOrdinal
类型： System Int32
目标表中目标列的序号位置。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by name and ordinal.
                Dim columnMapID As New _
                  SqlBulkCopyColumnMapping("ProductID", 0)
                bulkCopy.ColumnMappings.Add(columnMapID)

                Dim columnMapName As New _
                 SqlBulkCopyColumnMapping("Name", 2)
                bulkCopy.ColumnMappings.Add(columnMapName)

                Dim columnMapNumber As New _
                 SqlBulkCopyColumnMapping("ProductNumber", 1)
                bulkCopy.ColumnMappings.Add(columnMapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by name and ordinal.
                SqlBulkCopyColumnMapping columnMapID =
                    new SqlBulkCopyColumnMapping("ProductID", 0);
                bulkCopy.ColumnMappings.Add(columnMapID);

                SqlBulkCopyColumnMapping columnMapName =
                    new SqlBulkCopyColumnMapping("Name", 2);
                bulkCopy.ColumnMappings.Add(columnMapName);

                SqlBulkCopyColumnMapping columnMapNumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", 1);
                bulkCopy.ColumnMappings.Add(columnMapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
SqlBulkCopyColumnMapping 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping 构造函数 (String, String)

SqlBulkCopyColumnMapping 构造函数 (String, String)
SqlBulkCopyColumnMapping 类

创建新的列映射，并使用列名称引用源列和目标列。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    sourceColumn As String, _
    destinationColumn As String _
)
public SqlBulkCopyColumnMapping(
    string sourceColumn,
    string destinationColumn
)
public:
SqlBulkCopyColumnMapping(
    String^ sourceColumn,
    String^ destinationColumn
)
new :
        sourceColumn:string *
        destinationColumn:string -> SqlBulkCopyColumnMapping

参数

sourceColumn
类型： System String
数据源中源列的名称。
destinationColumn
类型： System String
目标表中目标列的名称。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by name.
                Dim mapID As New _
                  SqlBulkCopyColumnMapping("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New _
                 SqlBulkCopyColumnMapping("Name", "ProdName")
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapMumber As New _
                 SqlBulkCopyColumnMapping("ProductNumber", "ProdNum")
                bulkCopy.ColumnMappings.Add(mapMumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by name.
                SqlBulkCopyColumnMapping mapID =
                    new SqlBulkCopyColumnMapping("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName =
                    new SqlBulkCopyColumnMapping("Name", "ProdName");
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapMumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
                bulkCopy.ColumnMappings.Add(mapMumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
SqlBulkCopyColumnMapping 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping 方法

SqlBulkCopyColumnMapping 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMapping 类

SqlBulkCopyColumnMapping 类型公开以下成员。

名称 说明
页首

参考

SqlBulkCopyColumnMapping 类
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMapping 属性

SqlBulkCopyColumnMapping 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMapping 类

SqlBulkCopyColumnMapping 类型公开以下成员。

名称 说明
页首

参考

SqlBulkCopyColumnMapping 类
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMapping ..::.DestinationColumn 属性

SqlBulkCopyColumnMapping
.
.
::
.
DestinationColumn 属性
SqlBulkCopyColumnMapping 类

正在目标数据库表中映射的列的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property DestinationColumn As String
    Get
    Set
public string DestinationColumn { get; set; }
public:
property String^ DestinationColumn {
    String^ get ();
    void set (String^ value);
}
member DestinationColumn : string with get, set

属性值

类型： System String
DestinationColumn 属性的字符串值。

DestinationColumn 和 DestinationOrdinal 属性是互相排斥的。设置的最后一个值优先使用。 DestinationColumn 和 DestinationOrdinal 属性是互相排斥的。设置的最后一个值优先使用。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings source and destination.
                Dim mapID As New SqlBulkCopyColumnMapping()
                mapID.SourceColumn = "ProductID"
                mapID.DestinationColumn = "ProdID"
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New SqlBulkCopyColumnMapping()
                mapName.SourceColumn = "Name"
                mapName.DestinationColumn = "ProdName"
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapNumber As New SqlBulkCopyColumnMapping()
                mapNumber.SourceColumn = "ProductNumber"
                mapNumber.DestinationColumn = "ProdNum"
                bulkCopy.ColumnMappings.Add(mapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings source and destination.
                SqlBulkCopyColumnMapping mapID = new SqlBulkCopyColumnMapping();
                mapID.SourceColumn = "ProductID";
                mapID.DestinationColumn = "ProdID";
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName = new SqlBulkCopyColumnMapping();
                mapName.SourceColumn = "Name";
                mapName.DestinationColumn = "ProdName";
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapNumber = new SqlBulkCopyColumnMapping();
                mapNumber.SourceColumn = "ProductNumber";
                mapNumber.DestinationColumn = "ProdNum";
                bulkCopy.ColumnMappings.Add(mapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping ..::.DestinationOrdinal 属性

SqlBulkCopyColumnMapping
.
.
::
.
DestinationOrdinal 属性
SqlBulkCopyColumnMapping 类

目标表中目标列的序号值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property DestinationOrdinal As Integer
    Get
    Set
public int DestinationOrdinal { get; set; }
public:
property int DestinationOrdinal {
    int get ();
    void set (int value);
}
member DestinationOrdinal : int with get, set

属性值

类型： System Int32
DestinationOrdinal 属性的整数值，或者如果尚未设置该属性，则为 -1。

DestinationColumn 和 DestinationOrdinal 属性是互相排斥的。设置的最后一个值优先使用。 DestinationColumn 和 DestinationOrdinal 属性是互相排斥的。设置的最后一个值优先使用。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings source and destination.
                Dim mapID As New SqlBulkCopyColumnMapping()
                mapID.SourceOrdinal = 0
                mapID.DestinationOrdinal = 0
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New SqlBulkCopyColumnMapping()
                mapName.SourceOrdinal = 1
                mapName.DestinationOrdinal = 2
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapNumber As New SqlBulkCopyColumnMapping()
                mapNumber.SourceOrdinal = 2
                mapNumber.DestinationOrdinal = 1
                bulkCopy.ColumnMappings.Add(mapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings source and destination.
                SqlBulkCopyColumnMapping mapID = new SqlBulkCopyColumnMapping();
                mapID.SourceOrdinal = 0;
                mapID.DestinationOrdinal = 0;
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName = new SqlBulkCopyColumnMapping();
                mapName.SourceOrdinal = 1;
                mapName.DestinationOrdinal = 2;
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapNumber = new SqlBulkCopyColumnMapping();
                mapNumber.SourceOrdinal = 2;
                mapNumber.DestinationOrdinal = 1;
                bulkCopy.ColumnMappings.Add(mapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping ..::.SourceColumn 属性

SqlBulkCopyColumnMapping
.
.
::
.
SourceColumn 属性
SqlBulkCopyColumnMapping 类

正在数据源中映射的列的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property SourceColumn As String
    Get
    Set
public string SourceColumn { get; set; }
public:
property String^ SourceColumn {
    String^ get ();
    void set (String^ value);
}
member SourceColumn : string with get, set

属性值

类型： System String
SourceColumn 属性的字符串值。

SourceColumn 和 SourceOrdinal 属性是互相排斥的。设置的最后一个值优先使用。 SourceColumn 和 SourceOrdinal 属性是互相排斥的。设置的最后一个值优先使用。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings source and destination.
                Dim mapID As New SqlBulkCopyColumnMapping()
                mapID.SourceColumn = "ProductID"
                mapID.DestinationColumn = "ProdID"
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New SqlBulkCopyColumnMapping()
                mapName.SourceColumn = "Name"
                mapName.DestinationColumn = "ProdName"
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapNumber As New SqlBulkCopyColumnMapping()
                mapNumber.SourceColumn = "ProductNumber"
                mapNumber.DestinationColumn = "ProdNum"
                bulkCopy.ColumnMappings.Add(mapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings source and destination.
                SqlBulkCopyColumnMapping mapID = new SqlBulkCopyColumnMapping();
                mapID.SourceColumn = "ProductID";
                mapID.DestinationColumn = "ProdID";
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName = new SqlBulkCopyColumnMapping();
                mapName.SourceColumn = "Name";
                mapName.DestinationColumn = "ProdName";
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapNumber = new SqlBulkCopyColumnMapping();
                mapNumber.SourceColumn = "ProductNumber";
                mapNumber.DestinationColumn = "ProdNum";
                bulkCopy.ColumnMappings.Add(mapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMapping ..::.SourceOrdinal 属性

SqlBulkCopyColumnMapping
.
.
::
.
SourceOrdinal 属性
SqlBulkCopyColumnMapping 类

数据源中源列的序号位置。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property SourceOrdinal As Integer
    Get
    Set
public int SourceOrdinal { get; set; }
public:
property int SourceOrdinal {
    int get ();
    void set (int value);
}
member SourceOrdinal : int with get, set

属性值

类型： System Int32
SourceOrdinal 属性的整数值。

SourceColumn 和 SourceOrdinal 属性是互相排斥的。设置的最后一个值优先使用。 SourceColumn 和 SourceOrdinal 属性是互相排斥的。设置的最后一个值优先使用。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings source and destination.
                Dim mapID As New SqlBulkCopyColumnMapping()
                mapID.SourceOrdinal = 0
                mapID.DestinationOrdinal = 0
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New SqlBulkCopyColumnMapping()
                mapName.SourceOrdinal = 1
                mapName.DestinationOrdinal = 2
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapNumber As New SqlBulkCopyColumnMapping()
                mapNumber.SourceOrdinal = 2
                mapNumber.DestinationOrdinal = 1
                bulkCopy.ColumnMappings.Add(mapNumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings source and destination.
                SqlBulkCopyColumnMapping mapID = new SqlBulkCopyColumnMapping();
                mapID.SourceOrdinal = 0;
                mapID.DestinationOrdinal = 0;
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName = new SqlBulkCopyColumnMapping();
                mapName.SourceOrdinal = 1;
                mapName.DestinationOrdinal = 2;
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapNumber = new SqlBulkCopyColumnMapping();
                mapNumber.SourceOrdinal = 2;
                mapNumber.DestinationOrdinal = 1;
                bulkCopy.ColumnMappings.Add(mapNumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMapping 类
SqlBulkCopyColumnMapping 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection 类

SqlBulkCopyColumnMappingCollection 类
成员

继承自 CollectionBase 的 SqlBulkCopyColumnMapping 对象的集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlBulkCopyColumnMappingCollection _
    Inherits CollectionBase
public sealed class SqlBulkCopyColumnMappingCollection : CollectionBase
public ref class SqlBulkCopyColumnMappingCollection sealed : public CollectionBase
[<SealedAttribute>]
type SqlBulkCopyColumnMappingCollection =
    class
        inherit CollectionBase
    end

列映射定义数据源与目标表之间的映射。

如果未定义映射，即 ColumnMappings 集合为空，则基于序号位置隐式映射列。要实现此操作，源架构和目标架构必须匹配。如果它们不匹配，将引发 InvalidOperationException。 如果未定义映射，即 ColumnMappings 集合为空，则基于序号位置隐式映射列。要实现此操作，源架构和目标架构必须匹配。如果它们不匹配，将引发 InvalidOperationException。 如果未定义映射，即 ColumnMappings 集合为空，则基于序号位置隐式映射列。要实现此操作，源架构和目标架构必须匹配。如果它们不匹配，将引发 InvalidOperationException。

如果 ColumnMappings 集合不为空，则不必指定数据源中存在的每一列。将忽略集合未映射的那些列。 如果 ColumnMappings 集合不为空，则不必指定数据源中存在的每一列。将忽略集合未映射的那些列。

可以通过名称或序号引用源列和目标列。可以在同一映射集合中混合通过名称和通过序号进行的列引用。 可以通过名称或序号引用源列和目标列。可以在同一映射集合中混合通过名称和通过序号进行的列引用。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 添加到 SqlBulkCopy 对象的 SqlBulkCopyColumnMappingCollection，以便为批量复制创建列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 添加到 SqlBulkCopy 对象的 SqlBulkCopyColumnMappingCollection，以便为批量复制创建列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 添加到 SqlBulkCopy 对象的 SqlBulkCopyColumnMappingCollection，以便为批量复制创建列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add("Name", "ProdName")
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum")

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add("Name", "ProdName");
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum");

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlBulkCopyColumnMappingCollectionSqlBulkCopyColumnMappingCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection 成员

SqlBulkCopyColumnMappingCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMappingCollection 类

继承自 CollectionBase 的 SqlBulkCopyColumnMapping 对象的集合。

SqlBulkCopyColumnMappingCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlBulkCopyColumnMappingCollection 类
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMappingCollection 方法

SqlBulkCopyColumnMappingCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMappingCollection 类

SqlBulkCopyColumnMappingCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlBulkCopyColumnMappingCollection 类
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMappingCollection ..::.Add 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMappingCollection 类

将新 SqlBulkCopyColumnMapping 添加到 SqlBulkCopyColumnMappingCollection 中。

名称 说明
页首

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMappingCollection ..::.Add 方法 (SqlBulkCopyColumnMapping)

SqlBulkCopyColumnMappingCollection
.
.
::
.
Add 方法 (SqlBulkCopyColumnMapping)
SqlBulkCopyColumnMappingCollection 类

将指定的映射添加到 SqlBulkCopyColumnMappingCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    bulkCopyColumnMapping As SqlBulkCopyColumnMapping _
) As SqlBulkCopyColumnMapping
public SqlBulkCopyColumnMapping Add(
    SqlBulkCopyColumnMapping bulkCopyColumnMapping
)
public:
SqlBulkCopyColumnMapping^ Add(
    SqlBulkCopyColumnMapping^ bulkCopyColumnMapping
)
member Add :
        bulkCopyColumnMapping:SqlBulkCopyColumnMapping -> SqlBulkCopyColumnMapping

参数

bulkCopyColumnMapping
类型： System.Data.SqlClient SqlBulkCopyColumnMapping
描述要添加到集合中的映射的 SqlBulkCopyColumnMapping 对象。

返回值

类型： System.Data.SqlClient SqlBulkCopyColumnMapping
一个 SqlBulkCopyColumnMapping 对象。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' Set up the column mappings by name.
                Dim mapID As New _
                  SqlBulkCopyColumnMapping("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New _
                 SqlBulkCopyColumnMapping("Name", "ProdName")
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapMumber As New _
                 SqlBulkCopyColumnMapping("ProductNumber", "ProdNum")
                bulkCopy.ColumnMappings.Add(mapMumber)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // Set up the column mappings by name.
                SqlBulkCopyColumnMapping mapID =
                    new SqlBulkCopyColumnMapping("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName =
                    new SqlBulkCopyColumnMapping("Name", "ProdName");
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapMumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
                bulkCopy.ColumnMappings.Add(mapMumber);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Add 方法 (Int32, Int32)

SqlBulkCopyColumnMappingCollection
.
.
::
.
Add 方法 (Int32, Int32)
SqlBulkCopyColumnMappingCollection 类

通过使用序号指定源列和目标列，创建一个新的 SqlBulkCopyColumnMapping 并将其添加到集合中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    sourceColumnIndex As Integer, _
    destinationColumnIndex As Integer _
) As SqlBulkCopyColumnMapping
public SqlBulkCopyColumnMapping Add(
    int sourceColumnIndex,
    int destinationColumnIndex
)
public:
SqlBulkCopyColumnMapping^ Add(
    int sourceColumnIndex,
    int destinationColumnIndex
)
member Add :
        sourceColumnIndex:int *
        destinationColumnIndex:int -> SqlBulkCopyColumnMapping

参数

sourceColumnIndex
类型： System Int32
数据源中源列的序号位置。
destinationColumnIndex
类型： System Int32
目标表中目标列的序号位置。

返回值

类型： System.Data.SqlClient SqlBulkCopyColumnMapping
SqlBulkCopyColumnMapping。

集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。 集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用来根据源列和目标列的序号位置为批量复制创建列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用来根据源列和目标列的序号位置为批量复制创建列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用来根据源列和目标列的序号位置为批量复制创建列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add(0, 0)
                bulkCopy.ColumnMappings.Add(1, 2)
                bulkCopy.ColumnMappings.Add(2, 1)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add(0, 0);
                bulkCopy.ColumnMappings.Add(1, 2);
                bulkCopy.ColumnMappings.Add(2, 1);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Add 方法 (Int32, String)

SqlBulkCopyColumnMappingCollection
.
.
::
.
Add 方法 (Int32, String)
SqlBulkCopyColumnMappingCollection 类

通过对源列使用序号和对目标列使用字符串，创建一个新的 SqlBulkCopyColumnMapping 并将其添加到集合中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    sourceColumnIndex As Integer, _
    destinationColumn As String _
) As SqlBulkCopyColumnMapping
public SqlBulkCopyColumnMapping Add(
    int sourceColumnIndex,
    string destinationColumn
)
public:
SqlBulkCopyColumnMapping^ Add(
    int sourceColumnIndex,
    String^ destinationColumn
)
member Add :
        sourceColumnIndex:int *
        destinationColumn:string -> SqlBulkCopyColumnMapping

参数

sourceColumnIndex
类型： System Int32
数据源中源列的序号位置。
destinationColumn
类型： System String
目标表中目标列的名称。

返回值

类型： System.Data.SqlClient SqlBulkCopyColumnMapping
SqlBulkCopyColumnMapping。

集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。 集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add(0, "ProdID")
                bulkCopy.ColumnMappings.Add(1, "ProdName")
                bulkCopy.ColumnMappings.Add(2, "ProdNum")

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add(0, "ProdID");
                bulkCopy.ColumnMappings.Add(1, "ProdName");
                bulkCopy.ColumnMappings.Add(2, "ProdNum");

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Add 方法 (String, Int32)

SqlBulkCopyColumnMappingCollection
.
.
::
.
Add 方法 (String, Int32)
SqlBulkCopyColumnMappingCollection 类

通过使用列名称描述源列，同时使用序号指定目标列，从而创建一个新的 SqlBulkCopyColumnMapping 并将其添加到集合中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    sourceColumn As String, _
    destinationColumnIndex As Integer _
) As SqlBulkCopyColumnMapping
public SqlBulkCopyColumnMapping Add(
    string sourceColumn,
    int destinationColumnIndex
)
public:
SqlBulkCopyColumnMapping^ Add(
    String^ sourceColumn,
    int destinationColumnIndex
)
member Add :
        sourceColumn:string *
        destinationColumnIndex:int -> SqlBulkCopyColumnMapping

参数

sourceColumn
类型： System String
数据源中源列的名称。
destinationColumnIndex
类型： System Int32
目标表中目标列的序号位置。

返回值

类型： System.Data.SqlClient SqlBulkCopyColumnMapping
SqlBulkCopyColumnMapping。

集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。 集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。SqlBulkCopyColumnMapping 对象用于创建大容量复制的列映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", 0)
                bulkCopy.ColumnMappings.Add("ProductNumber", 1)
                bulkCopy.ColumnMappings.Add("Name", 2)

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", 0);
                bulkCopy.ColumnMappings.Add("ProductNumber", 1);
                bulkCopy.ColumnMappings.Add("Name", 2);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Add 方法 (String, String)

SqlBulkCopyColumnMappingCollection
.
.
::
.
Add 方法 (String, String)
SqlBulkCopyColumnMappingCollection 类

通过使用列名称指定源列和目标列，创建一个新的 SqlBulkCopyColumnMapping 并将其添加到集合中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    sourceColumn As String, _
    destinationColumn As String _
) As SqlBulkCopyColumnMapping
public SqlBulkCopyColumnMapping Add(
    string sourceColumn,
    string destinationColumn
)
public:
SqlBulkCopyColumnMapping^ Add(
    String^ sourceColumn,
    String^ destinationColumn
)
member Add :
        sourceColumn:string *
        destinationColumn:string -> SqlBulkCopyColumnMapping

参数

sourceColumn
类型： System String
数据源中源列的名称。
destinationColumn
类型： System String
目标表中目标列的名称。

返回值

类型： System.Data.SqlClient SqlBulkCopyColumnMapping
SqlBulkCopyColumnMapping。

集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。 集合中的映射必须一致：全为整数/整数对、字符串/字符串对、整数/字符串对，或字符串/整数对。如果尝试添加与集合中已有的其他映射不同的映射，将引发 InvalidOperationException。

下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。该代码通过指定列名创建一个 SqlBulkCopyColumnMapping 对象。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。该代码通过指定列名创建一个 SqlBulkCopyColumnMapping 对象。 下面的示例将数据从 AdventureWorks 示例数据库中的源表批量复制到同一数据库中的目标表中。尽管目标表中的列数与源表中的列数匹配，但列名和序号位置并不匹配。该代码通过指定列名创建一个 SqlBulkCopyColumnMapping 对象。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoDifferentColumns"

                ' The column order in the source doesn't match the order
                ' in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add("Name", "ProdName")
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum")

                ' Write from the source to the destination.
                Try
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object.
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add("Name", "ProdName");
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum");

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Clear 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
Clear 方法
SqlBulkCopyColumnMappingCollection 类

清除集合的内容。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Clear
public void Clear()
public:
void Clear()
member Clear : unit -> unit

当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，Clear 方法最常用。如果为一个批量复制操作创建了多个列映射，则必须在调用 WriteToServer 之后处理下一个批量复制之前清除 SqlBulkCopyColumnMappingCollection。 当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，Clear 方法最常用。如果为一个批量复制操作创建了多个列映射，则必须在调用 WriteToServer 之后处理下一个批量复制之前清除 SqlBulkCopyColumnMappingCollection。

从性能角度来看，使用同一个 SqlBulkCopy 实例来执行多个批量复制操作通常比为每个操作分别使用一个 SqlBulkCopy 的效率要高。

下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。Clear 方法必须在执行第一个批量复制之后定义下一个批量复制的列映射之前使用。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。Clear 方法必须在执行第一个批量复制之后定义下一个批量复制的列映射之前使用。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。Clear 方法必须在执行第一个批量复制之后定义下一个批量复制的列映射之前使用。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。Clear 方法必须在执行第一个批量复制之后定义下一个批量复制的列映射之前使用。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = New SqlConnection(connectionString)
            connection.Open()

            ' Empty the destination tables.
            Dim deleteHeader As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderHeader;", connection)
            deleteHeader.ExecuteNonQuery()
            deleteHeader.Dispose()
            Dim deleteDetail As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderDetail;", connection)
            deleteDetail.ExecuteNonQuery()

            ' Perform an initial count on the destination table
            ' with matching columns.
            Dim countRowHeader As New SqlCommand( _
               "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;", _
                connection)
            Dim countStartHeader As Long = System.Convert.ToInt32( _
             countRowHeader.ExecuteScalar())
            Console.WriteLine("Starting row count for Header table = {0}", _
             countStartHeader)

            ' Perform an initial count on the destination table
            ' with different column positions.
            Dim countRowDetail As New SqlCommand( _
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;", _
                connection)
            Dim countStartDetail As Long = System.Convert.ToInt32( _
                countRowDetail.ExecuteScalar())
            Console.WriteLine("Starting row count for Detail table = " & _
               countStartDetail)

            ' Get data from the source table as a SqlDataReader.
            ' The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            ' tables are quite large and could easily cause a timeout
            ' if all data from the tables is added to the destination.
            ' To keep the example simple and quick, a parameter is
            ' used to select only orders for a particular account as
            ' the source for the bulk insert.
            Dim headerData As SqlCommand = New SqlCommand( _
             "SELECT [SalesOrderID], [OrderDate], " & _
             "[AccountNumber] FROM [Sales].[SalesOrderHeader] " & _
             "WHERE [AccountNumber] = @accountNumber;", _
             connection)

            Dim parameterAccount As SqlParameter = New SqlParameter()
            parameterAccount.ParameterName = "@accountNumber"
            parameterAccount.SqlDbType = SqlDbType.NVarChar
            parameterAccount.Direction = ParameterDirection.Input
            parameterAccount.Value = "10-4020-000034"
            headerData.Parameters.Add(parameterAccount)

            Dim readerHeader As SqlDataReader = _
             headerData.ExecuteReader()

            ' Get the Detail data in a separate connection.
            Using connection2 As SqlConnection = New SqlConnection(connectionString)
                connection2.Open()

                Dim sourceDetailData As SqlCommand = New SqlCommand( _
                 "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], " & _
                 "[SalesOrderDetailID], [OrderQty], [ProductID], [UnitPrice] " & _
                 "FROM [Sales].[SalesOrderDetail] INNER JOIN " & _
                 "[Sales].[SalesOrderHeader] " & _
                 "ON [Sales].[SalesOrderDetail].[SalesOrderID] = " & _
                 "[Sales].[SalesOrderHeader].[SalesOrderID] " & _
                 "WHERE [AccountNumber] = @accountNumber;", connection2)

                Dim accountDetail As SqlParameter = New SqlParameter()
                accountDetail.ParameterName = "@accountNumber"
                accountDetail.SqlDbType = SqlDbType.NVarChar
                accountDetail.Direction = ParameterDirection.Input
                accountDetail.Value = "10-4020-000034"
                sourceDetailData.Parameters.Add( _
                 accountDetail)

                Dim readerDetail As SqlDataReader = _
                 sourceDetailData.ExecuteReader()

                ' Create the SqlBulkCopy object.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(connectionString)
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderHeader"

                    ' Guarantee that columns are mapped correctly by
                    ' defining the column mappings for the order.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID")
                    bulkCopy.ColumnMappings.Add("OrderDate", "OrderDate")
                    bulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber")

                   ' Write readerHeader to the destination.
                    Try
                        bulkCopy.WriteToServer(readerHeader)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerHeader.Close()
                    End Try

                    ' Set up the order details destination.
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderDetail"

                    ' Clear the ColumnMappingCollection.
                    bulkCopy.ColumnMappings.Clear()

                    ' Add order detail column mappings.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID")
                    bulkCopy.ColumnMappings.Add("SalesOrderDetailID", "SalesOrderDetailID")
                    bulkCopy.ColumnMappings.Add("OrderQty", "OrderQty")
                    bulkCopy.ColumnMappings.Add("ProductID", "ProductID")
                    bulkCopy.ColumnMappings.Add("UnitPrice", "UnitPrice")

                    ' Write readerDetail to the destination.
                    Try
                        bulkCopy.WriteToServer(readerDetail)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerDetail.Close()
                    End Try
                End Using

                ' Perform a final count on the destination tables
                ' to see how many rows were added.
                Dim countEndHeader As Long = System.Convert.ToInt32( _
                  countRowHeader.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Header table.", _
                  countEndHeader - countStartHeader)
                Dim countEndDetail As Long = System.Convert.ToInt32( _
                   countRowDetail.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Detail table.", _
                    countEndDetail - countStartDetail)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Empty the destination tables.
            SqlCommand deleteHeader = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            deleteHeader.ExecuteNonQuery();
            SqlCommand deleteDetail = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            deleteDetail.ExecuteNonQuery();

            // Perform an initial count on the destination
            //  table with matching columns.
            SqlCommand countRowHeader = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            long countStartHeader = System.Convert.ToInt32(
                countRowHeader.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Header table = {0}",
                countStartHeader);

            // Perform an initial count on the destination
            // table with different column positions.
            SqlCommand countRowDetail = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            long countStartDetail = System.Convert.ToInt32(
                countRowDetail.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Detail table = {0}",
                countStartDetail);

            // Get data from the source table as a SqlDataReader.
            // The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            // tables are quite large and could easily cause a timeout
            // if all data from the tables is added to the destination.
            // To keep the example simple and quick, a parameter is
            // used to select only orders for a particular account
            // as the source for the bulk insert.
            SqlCommand headerData = new SqlCommand(
                "SELECT [SalesOrderID], [OrderDate], " +
                "[AccountNumber] FROM [Sales].[SalesOrderHeader] " +
                "WHERE [AccountNumber] = @accountNumber;",
                connection);
            SqlParameter parameterAccount = new SqlParameter();
            parameterAccount.ParameterName = "@accountNumber";
            parameterAccount.SqlDbType = SqlDbType.NVarChar;
            parameterAccount.Direction = ParameterDirection.Input;
            parameterAccount.Value = "10-4020-000034";
            headerData.Parameters.Add(parameterAccount);
            SqlDataReader readerHeader = headerData.ExecuteReader();

            // Get the Detail data in a separate connection.
            using (SqlConnection connection2 = new SqlConnection(connectionString))
            {
                connection2.Open();
                SqlCommand sourceDetailData = new SqlCommand(
                    "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], [SalesOrderDetailID], " +
                    "[OrderQty], [ProductID], [UnitPrice] FROM [Sales].[SalesOrderDetail] " +
                    "INNER JOIN [Sales].[SalesOrderHeader] ON [Sales].[SalesOrderDetail]." +
                    "[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID] " +
                    "WHERE [AccountNumber] = @accountNumber;", connection2);

                SqlParameter accountDetail = new SqlParameter();
                accountDetail.ParameterName = "@accountNumber";
                accountDetail.SqlDbType = SqlDbType.NVarChar;
                accountDetail.Direction = ParameterDirection.Input;
                accountDetail.Value = "10-4020-000034";
                sourceDetailData.Parameters.Add(accountDetail);
                SqlDataReader readerDetail = sourceDetailData.ExecuteReader();

                // Create the SqlBulkCopy object.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(connectionString))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoOrderHeader";

                    // Guarantee that columns are mapped correctly by
                    // defining the column mappings for the order.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID");
                    bulkCopy.ColumnMappings.Add("OrderDate", "OrderDate");
                    bulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber");

                    // Write readerHeader to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerHeader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerHeader.Close();
                    }

                    // Set up the order details destination.
                    bulkCopy.DestinationTableName ="dbo.BulkCopyDemoOrderDetail";

                    // Clear the ColumnMappingCollection.
                    bulkCopy.ColumnMappings.Clear();

                    // Add order detail column mappings.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID");
                    bulkCopy.ColumnMappings.Add("SalesOrderDetailID", "SalesOrderDetailID");
                    bulkCopy.ColumnMappings.Add("OrderQty", "OrderQty");
                    bulkCopy.ColumnMappings.Add("ProductID", "ProductID");
                    bulkCopy.ColumnMappings.Add("UnitPrice", "UnitPrice");

                    // Write readerDetail to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerDetail);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerDetail.Close();
                    }
                }

                // Perform a final count on the destination
                // tables to see how many rows were added.
                long countEndHeader = System.Convert.ToInt32(
                    countRowHeader.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Header table.",
                    countEndHeader - countStartHeader);
                long countEndDetail = System.Convert.ToInt32(
                    countRowDetail.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Detail table.",
                    countEndDetail - countStartDetail);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Contains 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
Contains 方法
SqlBulkCopyColumnMappingCollection 类

获取一个值，该值指示集合中是否存在指定的 SqlBulkCopyColumnMapping 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Contains ( _
    value As SqlBulkCopyColumnMapping _
) As Boolean
public bool Contains(
    SqlBulkCopyColumnMapping value
)
public:
bool Contains(
    SqlBulkCopyColumnMapping^ value
)
member Contains :
        value:SqlBulkCopyColumnMapping -> bool

参数

value
类型： System.Data.SqlClient SqlBulkCopyColumnMapping
有效的 SqlBulkCopyColumnMapping 对象。

返回值

类型： System Boolean
如果集合中存在指定映射，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.CopyTo 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
CopyTo 方法
SqlBulkCopyColumnMappingCollection 类

从特定索引处开始，将 SqlBulkCopyColumnMappingCollection 的元素复制到 SqlBulkCopyColumnMapping 项的数组。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub CopyTo ( _
    array As SqlBulkCopyColumnMapping(), _
    index As Integer _
)
public void CopyTo(
    SqlBulkCopyColumnMapping[] array,
    int index
)
public:
void CopyTo(
    array<SqlBulkCopyColumnMapping^>^ array,
    int index
)
member CopyTo :
        array:SqlBulkCopyColumnMapping[] *
        index:int -> unit

参数

array
类型：
array<
System.Data.SqlClient SqlBulkCopyColumnMapping
>
[]
()
[]

作为从 SqlBulkCopyColumnMappingCollection 复制的元素的目标位置的一维 SqlBulkCopyColumnMapping 数组。该数组必须具有从零开始的索引。 作为从 SqlBulkCopyColumnMappingCollection 复制的元素的目标位置的一维 SqlBulkCopyColumnMapping 数组。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中从零开始的索引，在此处开始复制。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.IndexOf 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
IndexOf 方法
SqlBulkCopyColumnMappingCollection 类

获取指定 SqlBulkCopyColumnMapping 对象的索引。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function IndexOf ( _
    value As SqlBulkCopyColumnMapping _
) As Integer
public int IndexOf(
    SqlBulkCopyColumnMapping value
)
public:
int IndexOf(
    SqlBulkCopyColumnMapping^ value
)
member IndexOf :
        value:SqlBulkCopyColumnMapping -> int

参数

value
类型： System.Data.SqlClient SqlBulkCopyColumnMapping
要搜索的 SqlBulkCopyColumnMapping 对象。

返回值

类型： System Int32
列映射的从零开始的索引；如果在集合中未找到该列映射，则为 -1。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Insert 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
Insert 方法
SqlBulkCopyColumnMappingCollection 类

在指定索引处插入一个新 SqlBulkCopyColumnMapping。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Insert ( _
    index As Integer, _
    value As SqlBulkCopyColumnMapping _
)
public void Insert(
    int index,
    SqlBulkCopyColumnMapping value
)
public:
void Insert(
    int index,
    SqlBulkCopyColumnMapping^ value
)
member Insert :
        index:int *
        value:SqlBulkCopyColumnMapping -> unit

参数

index
类型： System Int32
SqlBulkCopyColumnMappingCollection 中要插入新 SqlBulkCopyColumnMapping 的位置的整数值。
value
类型： System.Data.SqlClient SqlBulkCopyColumnMapping
要插入集合中的 SqlBulkCopyColumnMapping 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.Remove 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
Remove 方法
SqlBulkCopyColumnMappingCollection 类

从 SqlBulkCopyColumnMappingCollection 中移除指定的 SqlBulkCopyColumnMapping 元素。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Remove ( _
    value As SqlBulkCopyColumnMapping _
)
public void Remove(
    SqlBulkCopyColumnMapping value
)
public:
void Remove(
    SqlBulkCopyColumnMapping^ value
)
member Remove :
        value:SqlBulkCopyColumnMapping -> unit

参数

value
类型： System.Data.SqlClient SqlBulkCopyColumnMapping
要从集合中移除的 SqlBulkCopyColumnMapping 对象。

当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，Remove 方法最常用。如果要为批量复制操作创建列映射，您必须移除这些映射，它们在调用 WriteToServer 方法之后以及为下一个批量复制定义映射之前不再适用。可以通过使用 Clear 方法清除整个集合，或者通过使用 Remove 方法或 RemoveAt 方法分别移除映射。 当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，Remove 方法最常用。如果要为批量复制操作创建列映射，您必须移除这些映射，它们在调用 WriteToServer 方法之后以及为下一个批量复制定义映射之前不再适用。可以通过使用 Clear 方法清除整个集合，或者通过使用 Remove 方法或 RemoveAt 方法分别移除映射。 当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，Remove 方法最常用。如果要为批量复制操作创建列映射，您必须移除这些映射，它们在调用 WriteToServer 方法之后以及为下一个批量复制定义映射之前不再适用。可以通过使用 Clear 方法清除整个集合，或者通过使用 Remove 方法或 RemoveAt 方法分别移除映射。

从性能角度来看，使用同一个 SqlBulkCopy 实例来执行多个批量复制操作通常比为每个操作分别使用一个 SqlBulkCopy 的效率要高。

下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = New SqlConnection(connectionString)
            connection.Open()

            ' Empty the destination tables.
            Dim deleteHeader As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderHeader;", connection)
            deleteHeader.ExecuteNonQuery()
            deleteHeader.Dispose()
            Dim deleteDetail As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderDetail;", connection)
            deleteDetail.ExecuteNonQuery()

            ' Perform an initial count on the destination table
            ' with matching columns.
            Dim countRowHeader As New SqlCommand( _
               "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;", _
                connection)
            Dim countStartHeader As Long = System.Convert.ToInt32( _
             countRowHeader.ExecuteScalar())
            Console.WriteLine("Starting row count for Header table = {0}", _
             countStartHeader)

            ' Perform an initial count on the destination table
            ' with different column positions.
            Dim countRowDetail As New SqlCommand( _
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;", _
                connection)
            Dim countStartDetail As Long = System.Convert.ToInt32( _
                countRowDetail.ExecuteScalar())
            Console.WriteLine("Starting row count for Detail table = " & _
               countStartDetail)

            ' Get data from the source table as a SqlDataReader.
            ' The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            ' tables are quite large and could easily cause a timeout
            ' if all data from the tables is added to the destination.
            ' To keep the example simple and quick, a parameter is
            ' used to select only orders for a particular account as
            ' the source for the bulk insert.
            Dim headerData As SqlCommand = New SqlCommand( _
             "SELECT [SalesOrderID], [OrderDate], " & _
             "[AccountNumber] FROM [Sales].[SalesOrderHeader] " & _
             "WHERE [AccountNumber] = @accountNumber;", _
             connection)

            Dim parameterAccount As SqlParameter = New SqlParameter()
            parameterAccount.ParameterName = "@accountNumber"
            parameterAccount.SqlDbType = SqlDbType.NVarChar
            parameterAccount.Direction = ParameterDirection.Input
            parameterAccount.Value = "10-4020-000034"
            headerData.Parameters.Add(parameterAccount)

            Dim readerHeader As SqlDataReader = _
             headerData.ExecuteReader()

            ' Get the Detail data in a separate connection.
            Using connection2 As SqlConnection = New SqlConnection(connectionString)
                connection2.Open()

                Dim sourceDetailData As SqlCommand = New SqlCommand( _
                 "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], " & _
                 "[SalesOrderDetailID], [OrderQty], [ProductID], [UnitPrice] " & _
                 "FROM [Sales].[SalesOrderDetail] INNER JOIN " & _
                 "[Sales].[SalesOrderHeader] " & _
                 "ON [Sales].[SalesOrderDetail].[SalesOrderID] = " & _
                 "[Sales].[SalesOrderHeader].[SalesOrderID] " & _
                 "WHERE [AccountNumber] = @accountNumber;", connection2)

                Dim accountDetail As SqlParameter = New SqlParameter()
                accountDetail.ParameterName = "@accountNumber"
                accountDetail.SqlDbType = SqlDbType.NVarChar
                accountDetail.Direction = ParameterDirection.Input
                accountDetail.Value = "10-4020-000034"
                sourceDetailData.Parameters.Add( _
                 accountDetail)

                Dim readerDetail As SqlDataReader = _
                 sourceDetailData.ExecuteReader()

                ' Create the SqlBulkCopy object.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(connectionString)
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderHeader"

                    ' Guarantee that columns are mapped correctly by
                    ' defining the column mappings for the order.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID")

                    ' Define SqlBulkCopyColumnMapping objects so they
                    ' can be referenced later.
                    Dim columnMappingDate As SqlBulkCopyColumnMapping = _
                        bulkCopy.ColumnMappings.Add("OrderDate", "OrderDate")
                    Dim columnMappingAccount As SqlBulkCopyColumnMapping = _
                        bulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber")

                   ' Write readerHeader to the destination.
                    Try
                        bulkCopy.WriteToServer(readerHeader)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerHeader.Close()
                    End Try

                    ' Set up the order details destination.
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderDetail"

                    ' Rather than clearing mappings that are not necessary
                    ' for the next bulk copy operation, the unneeded
                    ' mappings are removed with the Remove method.
                    bulkCopy.ColumnMappings.Remove(columnMappingDate)
                    bulkCopy.ColumnMappings.Remove(columnMappingAccount)

                    ' Add order detail column mappings.
                    bulkCopy.ColumnMappings.Add("SalesOrderDetailID", "SalesOrderDetailID")
                    bulkCopy.ColumnMappings.Add("OrderQty", "OrderQty")
                    bulkCopy.ColumnMappings.Add("ProductID", "ProductID")
                    bulkCopy.ColumnMappings.Add("UnitPrice", "UnitPrice")

                    ' Write readerDetail to the destination.
                    Try
                        bulkCopy.WriteToServer(readerDetail)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerDetail.Close()
                    End Try
                End Using

                ' Perform a final count on the destination tables
                ' to see how many rows were added.
                Dim countEndHeader As Long = System.Convert.ToInt32( _
                  countRowHeader.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Header table.", _
                  countEndHeader - countStartHeader)
                Dim countEndDetail As Long = System.Convert.ToInt32( _
                   countRowDetail.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Detail table.", _
                    countEndDetail - countStartDetail)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Empty the destination tables.
            SqlCommand deleteHeader = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            deleteHeader.ExecuteNonQuery();
            SqlCommand deleteDetail = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            deleteDetail.ExecuteNonQuery();

            // Perform an initial count on the destination
            //  table with matching columns.
            SqlCommand countRowHeader = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            long countStartHeader = System.Convert.ToInt32(
                countRowHeader.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Header table = {0}",
                countStartHeader);

            // Perform an initial count on the destination
            // table with different column positions.
            SqlCommand countRowDetail = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            long countStartDetail = System.Convert.ToInt32(
                countRowDetail.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Detail table = {0}",
                countStartDetail);

            // Get data from the source table as a SqlDataReader.
            // The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            // tables are quite large and could easily cause a timeout
            // if all data from the tables is added to the destination.
            // To keep the example simple and quick, a parameter is
            // used to select only orders for a particular account
            // as the source for the bulk insert.
            SqlCommand headerData = new SqlCommand(
                "SELECT [SalesOrderID], [OrderDate], " +
                "[AccountNumber] FROM [Sales].[SalesOrderHeader] " +
                "WHERE [AccountNumber] = @accountNumber;",
                connection);
            SqlParameter parameterAccount = new SqlParameter();
            parameterAccount.ParameterName = "@accountNumber";
            parameterAccount.SqlDbType = SqlDbType.NVarChar;
            parameterAccount.Direction = ParameterDirection.Input;
            parameterAccount.Value = "10-4020-000034";
            headerData.Parameters.Add(parameterAccount);
            SqlDataReader readerHeader = headerData.ExecuteReader();

            // Get the Detail data in a separate connection.
            using (SqlConnection connection2 = new SqlConnection(connectionString))
            {
                connection2.Open();
                SqlCommand sourceDetailData = new SqlCommand(
                    "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], [SalesOrderDetailID], " +
                    "[OrderQty], [ProductID], [UnitPrice] FROM [Sales].[SalesOrderDetail] " +
                    "INNER JOIN [Sales].[SalesOrderHeader] ON [Sales].[SalesOrderDetail]." +
                    "[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID] " +
                    "WHERE [AccountNumber] = @accountNumber;", connection2);

                SqlParameter accountDetail = new SqlParameter();
                accountDetail.ParameterName = "@accountNumber";
                accountDetail.SqlDbType = SqlDbType.NVarChar;
                accountDetail.Direction = ParameterDirection.Input;
                accountDetail.Value = "10-4020-000034";
                sourceDetailData.Parameters.Add(accountDetail);
                SqlDataReader readerDetail = sourceDetailData.ExecuteReader();

                // Create the SqlBulkCopy object.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(connectionString))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoOrderHeader";

                    // Guarantee that columns are mapped correctly by
                    // defining the column mappings for the order.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID");

                    // Define SqlBulkCopyColumnMapping objects so they
                    // can be referenced later.
                    SqlBulkCopyColumnMapping columnMappingDate =
                        bulkCopy.ColumnMappings.Add("OrderDate", "OrderDate");
                    SqlBulkCopyColumnMapping columnMappingAccount =
                        bulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber");

                    // Write readerHeader to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerHeader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerHeader.Close();
                    }

                    // Set up the order details destination.
                    bulkCopy.DestinationTableName ="dbo.BulkCopyDemoOrderDetail";

                    // Rather than clearing mappings that are not necessary
                    // for the next bulk copyo peration, the unneeded mappings
                    //  are removed with the Remove method.
                    bulkCopy.ColumnMappings.Remove(columnMappingDate);
                    bulkCopy.ColumnMappings.Remove(columnMappingAccount);

                    // Add order detail column mappings.
                    bulkCopy.ColumnMappings.Add("SalesOrderDetailID", "SalesOrderDetailID");
                    bulkCopy.ColumnMappings.Add("OrderQty", "OrderQty");
                    bulkCopy.ColumnMappings.Add("ProductID", "ProductID");
                    bulkCopy.ColumnMappings.Add("UnitPrice", "UnitPrice");
                    bulkCopy.WriteToServer(readerDetail);

                    // Write readerDetail to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerDetail);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerDetail.Close();
                    }
                }

                // Perform a final count on the destination
                // tables to see how many rows were added.
                long countEndHeader = System.Convert.ToInt32(
                    countRowHeader.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Header table.",
                    countEndHeader - countStartHeader);
                long countEndDetail = System.Convert.ToInt32(
                    countRowDetail.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Detail table.",
                    countEndDetail - countStartDetail);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection ..::.RemoveAt 方法

SqlBulkCopyColumnMappingCollection
.
.
::
.
RemoveAt 方法
SqlBulkCopyColumnMappingCollection 类

从集合中移除指定索引处的映射。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub RemoveAt ( _
    index As Integer _
)
public void RemoveAt(
    int index
)
public:
void RemoveAt(
    int index
)
member RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要从集合中移除的 SqlBulkCopyColumnMapping 对象的从零开始的索引。

当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，RemoveAt 方法最常用。如果要为批量复制操作创建列映射，您必须移除这些映射，它们在调用 WriteToServer 方法之后以及为下一个批量复制定义映射之前不再适用。可以通过使用 Clear 方法清除整个集合，或者通过使用 Remove 方法或 RemoveAt 方法分别移除映射。 当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，RemoveAt 方法最常用。如果要为批量复制操作创建列映射，您必须移除这些映射，它们在调用 WriteToServer 方法之后以及为下一个批量复制定义映射之前不再适用。可以通过使用 Clear 方法清除整个集合，或者通过使用 Remove 方法或 RemoveAt 方法分别移除映射。 当使用一个 SqlBulkCopy 实例来处理多个批量复制操作时，RemoveAt 方法最常用。如果要为批量复制操作创建列映射，您必须移除这些映射，它们在调用 WriteToServer 方法之后以及为下一个批量复制定义映射之前不再适用。可以通过使用 Clear 方法清除整个集合，或者通过使用 Remove 方法或 RemoveAt 方法分别移除映射。

从性能角度来看，使用同一个 SqlBulkCopy 实例来执行多个批量复制操作通常比为每个操作分别使用一个 SqlBulkCopy 的效率要高。

下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。 下面的示例执行两个批量复制操作。第一个操作复制销售订单标头信息，第二个操作复制销售订单详细信息。该示例为每个批量复制操作定义一个列映射，尽管由于源列和目标列的序号位置匹配而并不一定需要这样做。两个批量复制操作都包含 SalesOrderID 的映射，因此, 该示例不在批量复制操作之间移除整个集合，而是移除除 SalesOrderID 映射之外的所有映射，然后为第二个批量复制操作添加合适的映射。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using connection As SqlConnection = New SqlConnection(connectionString)
            connection.Open()

            ' Empty the destination tables.
            Dim deleteHeader As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderHeader;", connection)
            deleteHeader.ExecuteNonQuery()
            deleteHeader.Dispose()
            Dim deleteDetail As New SqlCommand( _
              "DELETE FROM dbo.BulkCopyDemoOrderDetail;", connection)
            deleteDetail.ExecuteNonQuery()

            ' Perform an initial count on the destination table
            ' with matching columns.
            Dim countRowHeader As New SqlCommand( _
               "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;", _
                connection)
            Dim countStartHeader As Long = System.Convert.ToInt32( _
             countRowHeader.ExecuteScalar())
            Console.WriteLine("Starting row count for Header table = {0}", _
             countStartHeader)

            ' Perform an initial count on the destination table
            ' with different column positions.
            Dim countRowDetail As New SqlCommand( _
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;", _
                connection)
            Dim countStartDetail As Long = System.Convert.ToInt32( _
                countRowDetail.ExecuteScalar())
            Console.WriteLine("Starting row count for Detail table = " & _
               countStartDetail)

            ' Get data from the source table as a SqlDataReader.
            ' The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            ' tables are quite large and could easily cause a timeout
            ' if all data from the tables is added to the destination.
            ' To keep the example simple and quick, a parameter is
            ' used to select only orders for a particular account as
            ' the source for the bulk insert.
            Dim headerData As SqlCommand = New SqlCommand( _
             "SELECT [SalesOrderID], [OrderDate], " & _
             "[AccountNumber] FROM [Sales].[SalesOrderHeader] " & _
             "WHERE [AccountNumber] = @accountNumber;", _
             connection)

            Dim parameterAccount As SqlParameter = New SqlParameter()
            parameterAccount.ParameterName = "@accountNumber"
            parameterAccount.SqlDbType = SqlDbType.NVarChar
            parameterAccount.Direction = ParameterDirection.Input
            parameterAccount.Value = "10-4020-000034"
            headerData.Parameters.Add(parameterAccount)

            Dim readerHeader As SqlDataReader = _
             headerData.ExecuteReader()

            ' Get the Detail data in a separate connection.
            Using connection2 As SqlConnection = New SqlConnection(connectionString)
                connection2.Open()

                Dim sourceDetailData As SqlCommand = New SqlCommand( _
                 "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], " & _
                 "[SalesOrderDetailID], [OrderQty], [ProductID], [UnitPrice] " & _
                 "FROM [Sales].[SalesOrderDetail] INNER JOIN " & _
                 "[Sales].[SalesOrderHeader] " & _
                 "ON [Sales].[SalesOrderDetail].[SalesOrderID] = " & _
                 "[Sales].[SalesOrderHeader].[SalesOrderID] " & _
                 "WHERE [AccountNumber] = @accountNumber;", connection2)

                Dim accountDetail As SqlParameter = New SqlParameter()
                accountDetail.ParameterName = "@accountNumber"
                accountDetail.SqlDbType = SqlDbType.NVarChar
                accountDetail.Direction = ParameterDirection.Input
                accountDetail.Value = "10-4020-000034"
                sourceDetailData.Parameters.Add( _
                 accountDetail)

                Dim readerDetail As SqlDataReader = _
                 sourceDetailData.ExecuteReader()

                ' Create the SqlBulkCopy object.
                Using bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(connectionString)
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderHeader"

                    ' Guarantee that columns are mapped correctly by
                    ' defining the column mappings for the order.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID")
                    bulkCopy.ColumnMappings.Add("OrderDate", "OrderDate")
                    bulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber")

                   ' Write readerHeader to the destination.
                    Try
                        bulkCopy.WriteToServer(readerHeader)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerHeader.Close()
                    End Try

                    ' Set up the order details destination.
                    bulkCopy.DestinationTableName = "dbo.BulkCopyDemoOrderDetail"

                    ' Rather than clearing mappings that are not necessary
                    ' for the next bulk copy operation, the unneeded
                    ' mappings are removed with the RemoveAt method.
                    bulkCopy.ColumnMappings.RemoveAt(2)
                    bulkCopy.ColumnMappings.RemoveAt(1)

                    ' Add order detail column mappings.
                    bulkCopy.ColumnMappings.Add("SalesOrderDetailID", "SalesOrderDetailID")
                    bulkCopy.ColumnMappings.Add("OrderQty", "OrderQty")
                    bulkCopy.ColumnMappings.Add("ProductID", "ProductID")
                    bulkCopy.ColumnMappings.Add("UnitPrice", "UnitPrice")

                    ' Write readerDetail to the destination.
                    Try
                        bulkCopy.WriteToServer(readerDetail)
                    Catch ex As Exception
                        Console.WriteLine(ex.Message)
                    Finally
                        readerDetail.Close()
                    End Try
                End Using

                ' Perform a final count on the destination tables
                ' to see how many rows were added.
                Dim countEndHeader As Long = System.Convert.ToInt32( _
                  countRowHeader.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Header table.", _
                  countEndHeader - countStartHeader)
                Dim countEndDetail As Long = System.Convert.ToInt32( _
                   countRowDetail.ExecuteScalar())
                Console.WriteLine("{0} rows were added to the Detail table.", _
                    countEndDetail - countStartDetail)

                Console.WriteLine("Press Enter to finish.")
                Console.ReadLine()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a connection to the AdventureWorks database.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            // Empty the destination tables.
            SqlCommand deleteHeader = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            deleteHeader.ExecuteNonQuery();
            SqlCommand deleteDetail = new SqlCommand(
                "DELETE FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            deleteDetail.ExecuteNonQuery();

            // Perform an initial count on the destination
            //  table with matching columns.
            SqlCommand countRowHeader = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderHeader;",
                connection);
            long countStartHeader = System.Convert.ToInt32(
                countRowHeader.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Header table = {0}",
                countStartHeader);

            // Perform an initial count on the destination
            // table with different column positions.
            SqlCommand countRowDetail = new SqlCommand(
                "SELECT COUNT(*) FROM dbo.BulkCopyDemoOrderDetail;",
                connection);
            long countStartDetail = System.Convert.ToInt32(
                countRowDetail.ExecuteScalar());
            Console.WriteLine(
                "Starting row count for Detail table = {0}",
                countStartDetail);

            // Get data from the source table as a SqlDataReader.
            // The Sales.SalesOrderHeader and Sales.SalesOrderDetail
            // tables are quite large and could easily cause a timeout
            // if all data from the tables is added to the destination.
            // To keep the example simple and quick, a parameter is
            // used to select only orders for a particular account
            // as the source for the bulk insert.
            SqlCommand headerData = new SqlCommand(
                "SELECT [SalesOrderID], [OrderDate], " +
                "[AccountNumber] FROM [Sales].[SalesOrderHeader] " +
                "WHERE [AccountNumber] = @accountNumber;",
                connection);
            SqlParameter parameterAccount = new SqlParameter();
            parameterAccount.ParameterName = "@accountNumber";
            parameterAccount.SqlDbType = SqlDbType.NVarChar;
            parameterAccount.Direction = ParameterDirection.Input;
            parameterAccount.Value = "10-4020-000034";
            headerData.Parameters.Add(parameterAccount);
            SqlDataReader readerHeader = headerData.ExecuteReader();

            // Get the Detail data in a separate connection.
            using (SqlConnection connection2 = new SqlConnection(connectionString))
            {
                connection2.Open();
                SqlCommand sourceDetailData = new SqlCommand(
                    "SELECT [Sales].[SalesOrderDetail].[SalesOrderID], [SalesOrderDetailID], " +
                    "[OrderQty], [ProductID], [UnitPrice] FROM [Sales].[SalesOrderDetail] " +
                    "INNER JOIN [Sales].[SalesOrderHeader] ON [Sales].[SalesOrderDetail]." +
                    "[SalesOrderID] = [Sales].[SalesOrderHeader].[SalesOrderID] " +
                    "WHERE [AccountNumber] = @accountNumber;", connection2);

                    SqlParameter accountDetail = new SqlParameter();
                    accountDetail.ParameterName = "@accountNumber";
                    accountDetail.SqlDbType = SqlDbType.NVarChar;
                    accountDetail.Direction = ParameterDirection.Input;
                    accountDetail.Value = "10-4020-000034";
                    sourceDetailData.Parameters.Add(accountDetail);
                    SqlDataReader readerDetail = sourceDetailData.ExecuteReader();

                // Create the SqlBulkCopy object.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(connectionString))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoOrderHeader";

                    // Guarantee that columns are mapped correctly by
                    // defining the column mappings for the order.
                    bulkCopy.ColumnMappings.Add("SalesOrderID", "SalesOrderID");
                    bulkCopy.ColumnMappings.Add("OrderDate", "OrderDate");
                    bulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber");

                    // Write readerHeader to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerHeader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerHeader.Close();
                    }

                    // Set up the order details destination.
                    bulkCopy.DestinationTableName ="dbo.BulkCopyDemoOrderDetail";

                    // Rather than clearing mappings that are not necessary
                    // for the next bulk copyo peration, the unneeded mappings
                    //  are removed with the RemoveAt method.
                    bulkCopy.ColumnMappings.RemoveAt(2);
                    bulkCopy.ColumnMappings.RemoveAt(1);

                    // Add order detail column mappings.
                    bulkCopy.ColumnMappings.Add("SalesOrderDetailID", "SalesOrderDetailID");
                    bulkCopy.ColumnMappings.Add("OrderQty", "OrderQty");
                    bulkCopy.ColumnMappings.Add("ProductID", "ProductID");
                    bulkCopy.ColumnMappings.Add("UnitPrice", "UnitPrice");
                    bulkCopy.WriteToServer(readerDetail);

                    // Write readerDetail to the destination.
                    try
                    {
                        bulkCopy.WriteToServer(readerDetail);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        readerDetail.Close();
                    }
                }

                // Perform a final count on the destination
                // tables to see how many rows were added.
                long countEndHeader = System.Convert.ToInt32(
                    countRowHeader.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Header table.",
                    countEndHeader - countStartHeader);
                long countEndDetail = System.Convert.ToInt32(
                    countRowDetail.ExecuteScalar());
                Console.WriteLine("{0} rows were added to the Detail table.",
                    countEndDetail - countStartDetail);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyColumnMappingCollection 属性

SqlBulkCopyColumnMappingCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlBulkCopyColumnMappingCollection 类

SqlBulkCopyColumnMappingCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlBulkCopyColumnMappingCollection 类
System.Data.SqlClient 命名空间


SqlBulkCopyColumnMappingCollection ..::.Item 属性

SqlBulkCopyColumnMappingCollection
.
.
::
.
Item 属性
SqlBulkCopyColumnMappingCollection 类

获取位于指定索引位置的 SqlBulkCopyColumnMapping 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Item ( _
    index As Integer _
) As SqlBulkCopyColumnMapping
    Get
public SqlBulkCopyColumnMapping this[
    int index
] { get; }
public:
property SqlBulkCopyColumnMapping^ Item[int index] {
    SqlBulkCopyColumnMapping^ get (int index);
}
member Item : SqlBulkCopyColumnMapping

参数

index
类型： System Int32
要查找的 SqlBulkCopyColumnMapping 的从零开始的索引。

属性值

类型： System.Data.SqlClient SqlBulkCopyColumnMapping
一个 SqlBulkCopyColumnMapping 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlBulkCopyColumnMappingCollection 类
SqlBulkCopyColumnMappingCollection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlBulkCopyOptions 枚举

SqlBulkCopyOptions 枚举

按位标志，指定一个或多个与 SqlBulkCopy 的实例一起使用的选项。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<FlagsAttribute> _
Public Enumeration SqlBulkCopyOptions
[FlagsAttribute]
public enum SqlBulkCopyOptions
[FlagsAttribute]
public enum class SqlBulkCopyOptions
[<FlagsAttribute>]
type SqlBulkCopyOptions
成员名称 | 说明
Default | 对所有选项使用默认值。
KeepIdentity | 保留源标识值。如果未指定，则由目标分配标识值。 保留源标识值。如果未指定，则由目标分配标识值。
CheckConstraints | 请在插入数据的同时检查约束。默认情况下，不检查约束。 请在插入数据的同时检查约束。默认情况下，不检查约束。
TableLock | 在批量复制操作期间获取批量更新锁。如果未指定，则使用行锁。 在批量复制操作期间获取批量更新锁。如果未指定，则使用行锁。
KeepNulls | 保留目标表中的空值，而不管默认值的设置如何。如果未指定，则空值将由默认值替换（如果适用）。 保留目标表中的空值，而不管默认值的设置如何。如果未指定，则空值将由默认值替换（如果适用）。
FireTriggers | 指定后，会导致服务器为插入到数据库中的行激发插入触发器。
UseInternalTransaction | 如果已指定，则每一批批量复制操作将在事务中发生。如果指示了此选项，并且为构造函数提供了 SqlTransaction 对象，则发生 ArgumentException。 如果已指定，则每一批批量复制操作将在事务中发生。如果指示了此选项，并且为构造函数提供了 SqlTransaction 对象，则发生 ArgumentException。

构造 SqlBulkCopy 实例时，可以使用 SqlBulkCopyOptions 枚举来更改该实例的 WriteToServer 方法的行为。

下面的控制台应用程序演示如何执行批量加载，以将源表标识列中的值复制到目标表中的对应列，而不是为每行的标识列生成新值。

若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。接下来，在不清空该表的情况下，再次运行示例。这将引发异常，并且代码会在控制台窗口中显示一条消息，通知您由于主键冲突而未添加行。 若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。接下来，在不清空该表的情况下，再次运行示例。这将引发异常，并且代码会在控制台窗口中显示一条消息，通知您由于主键冲突而未添加行。 若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。接下来，在不清空该表的情况下，再次运行示例。这将引发异常，并且代码会在控制台窗口中显示一条消息，通知您由于主键冲突而未添加行。 若要了解此选项如何改变批量加载的工作方式，请在 dbo.BulkCopyDemoMatchingColumns 表为空的情况下运行该示例。所有行均从源处加载。接下来，在不清空该表的情况下，再次运行示例。这将引发异常，并且代码会在控制台窗口中显示一条消息，通知您由于主键冲突而未添加行。

重要说明 重要事项

只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。 只有按照 批量复制示例设置 (ADO.NET) 中的描述创建了工作表之后，此示例才会运行。提供此代码仅为了演示使用 SqlBulkCopy 的语法。如果源表和目标表在同一个 SQL Server 实例中，则使用 Transact-SQL INSERT … SELECT 语句复制数据更为简便快捷。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Create the SqlBulkCopy object using a connection string
            ' and the KeepIdentity option.
            ' In the real world you would not use SqlBulkCopy to move
            ' data from one table to the other in the same database.
            Using bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Ending row count = {0}", countEnd)
            Console.WriteLine("{0} rows were added.", countEnd - countStart)

            Console.WriteLine("Press Enter to finish.")
            Console.ReadLine()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the sourceConnection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);" & _
            "Integrated Security=true;" & _
            "Initial Catalog=AdventureWorks;"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Create the SqlBulkCopy object using a connection string
            // and the KeepIdentity option.
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy =
                new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                try
                {
                    // Write from the source to the destination.
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code,
        // you can retrieve it from a configuration file.
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间

其他资源

SQL Server 中的批量复制操作 (ADO.NET)


SqlClientFactory 类

SqlClientFactory 类
成员

表示一组方法，这些方法用于创建 System.Data.SqlClient 提供程序对数据源类的实现的实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlClientFactory _
    Inherits DbProviderFactory _
    Implements IServiceProvider
public sealed class SqlClientFactory : DbProviderFactory,
    IServiceProvider
public ref class SqlClientFactory sealed : public DbProviderFactory,
    IServiceProvider
[<SealedAttribute>]
type SqlClientFactory =
    class
        inherit DbProviderFactory
        interface IServiceProvider
    end

System.Data.SqlClient System.Data.SqlClient..::.SqlClientFactorySqlClientFactory
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory 成员

SqlClientFactory 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientFactory 类

表示一组方法，这些方法用于创建 System.Data.SqlClient 提供程序对数据源类的实现的实例。

SqlClientFactory 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlClientFactory 类
System.Data.SqlClient 命名空间


SqlClientFactory 字段

SqlClientFactory 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientFactory 类

SqlClientFactory 类型公开以下成员。

名称 说明
页首

参考

SqlClientFactory 类
System.Data.SqlClient 命名空间


SqlClientFactory ..::.Instance 字段

SqlClientFactory
.
.
::
.
Instance 字段
SqlClientFactory 类

获取 SqlClientFactory 的实例。此操作可用于检索强类型数据对象。 获取 SqlClientFactory 的实例。此操作可用于检索强类型数据对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Instance As SqlClientFactory
public static readonly SqlClientFactory Instance
public:
static initonly SqlClientFactory^ Instance
static val Instance: SqlClientFactory

下面的代码段使用 Instance 属性检索 SqlClientFactory 实例，然后返回强类型 DbCommand 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbCommand = newFactory.CreateCommand()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbCommand cmd = newFactory.CreateCommand();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory 方法

SqlClientFactory 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientFactory 类

SqlClientFactory 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlClientFactory 类
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateCommand 方法

SqlClientFactory
.
.
::
.
CreateCommand 方法
SqlClientFactory 类

返回强类型的 DbCommand 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateCommand As DbCommand
public override DbCommand CreateCommand()
public:
virtual DbCommand^ CreateCommand() override
abstract CreateCommand : unit -> DbCommand
override CreateCommand : unit -> DbCommand

返回值

类型： System.Data.Common DbCommand
DbCommand 的新强类型实例。

下面的代码段返回强类型 DbCommand 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbCommand = newFactory.CreateCommand()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbCommand cmd = newFactory.CreateCommand();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateCommandBuilder 方法

SqlClientFactory
.
.
::
.
CreateCommandBuilder 方法
SqlClientFactory 类

返回强类型的 DbCommandBuilder 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateCommandBuilder As DbCommandBuilder
public override DbCommandBuilder CreateCommandBuilder()
public:
virtual DbCommandBuilder^ CreateCommandBuilder() override
abstract CreateCommandBuilder : unit -> DbCommandBuilder
override CreateCommandBuilder : unit -> DbCommandBuilder

返回值

类型： System.Data.Common DbCommandBuilder
新的强类型 DbCommandBuilder 实例。

下面的代码段返回强类型 DbCommandBuilder 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbCommandBuilder = newFactory.CreateCommandBuilder()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbCommandBuilder cmd = newFactory.CreateCommandBuilder();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateConnection 方法

SqlClientFactory
.
.
::
.
CreateConnection 方法
SqlClientFactory 类

返回强类型的 DbConnection 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateConnection As DbConnection
public override DbConnection CreateConnection()
public:
virtual DbConnection^ CreateConnection() override
abstract CreateConnection : unit -> DbConnection
override CreateConnection : unit -> DbConnection

返回值

类型： System.Data.Common DbConnection
新的强类型 DbConnection 实例。

下面的代码段返回强类型 DbConnection 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbConnection = newFactory.CreateConnection()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbConnection cmd = newFactory.CreateConnection();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateConnectionStringBuilder 方法

SqlClientFactory
.
.
::
.
CreateConnectionStringBuilder 方法
SqlClientFactory 类

返回强类型的 DbConnectionStringBuilder 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateConnectionStringBuilder As DbConnectionStringBuilder
public override DbConnectionStringBuilder CreateConnectionStringBuilder()
public:
virtual DbConnectionStringBuilder^ CreateConnectionStringBuilder() override
abstract CreateConnectionStringBuilder : unit -> DbConnectionStringBuilder
override CreateConnectionStringBuilder : unit -> DbConnectionStringBuilder

返回值

类型： System.Data.Common DbConnectionStringBuilder
新的强类型 DbConnectionStringBuilder 实例。

下面的代码段返回强类型 DbConnectionStringBuilder 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbConnectionStringBuilder = _
    newFactory.CreateConnectionStringBuilder()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbConnectionStringBuilder cmd =
    newFactory.CreateConnectionStringBuilder();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateDataAdapter 方法

SqlClientFactory
.
.
::
.
CreateDataAdapter 方法
SqlClientFactory 类

返回强类型的 DbDataAdapter 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateDataAdapter As DbDataAdapter
public override DbDataAdapter CreateDataAdapter()
public:
virtual DbDataAdapter^ CreateDataAdapter() override
abstract CreateDataAdapter : unit -> DbDataAdapter
override CreateDataAdapter : unit -> DbDataAdapter

返回值

类型： System.Data.Common DbDataAdapter
新的强类型 DbDataAdapter 实例。

下面的代码段返回强类型 DbDataAdapter 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbDataAdapter = newFactory.CreateDataAdapter()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbDataAdapter cmd = newFactory.CreateDataAdapter();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateDataSourceEnumerator 方法

SqlClientFactory
.
.
::
.
CreateDataSourceEnumerator 方法
SqlClientFactory 类

返回一个新 SqlDataSourceEnumerator。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateDataSourceEnumerator As DbDataSourceEnumerator
public override DbDataSourceEnumerator CreateDataSourceEnumerator()
public:
virtual DbDataSourceEnumerator^ CreateDataSourceEnumerator() override
abstract CreateDataSourceEnumerator : unit -> DbDataSourceEnumerator
override CreateDataSourceEnumerator : unit -> DbDataSourceEnumerator

返回值

类型： System.Data.Common DbDataSourceEnumerator
一个 SqlDataSourceEnumerator。

下面的示例使用可以为任何提供程序枚举数据源的代码，显示所有可用 SQL Server 数据源的列表。

Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        ' List all SQL Server instances:
        ListServers(SqlClientFactory.Instance)

        Console.WriteLine()
        Console.WriteLine("Press any key to continue.")
        Console.ReadKey()
    End Sub

    Private Sub ListServers(ByVal factory As DbProviderFactory)
        ' This procedure is provider-agnostic, and can list
        ' instances of any provider's servers. Of course,
        ' not all providers can create a data source enumerator,
        ' so it's best to check the CanCreateDataSourceEnumerator property
        ' before attempting to list the data sources.
        If factory.CanCreateDataSourceEnumerator Then
            Dim instance As DbDataSourceEnumerator = _
             factory.CreateDataSourceEnumerator
            Dim table As System.Data.DataTable = instance.GetDataSources()

            Dim row As DataRow
            For Each row In table.Rows
                Console.WriteLine("{0}\{1}", _
                 row("ServerName"), row("InstanceName"))
            Next
        End If
    End Sub
End Module

using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        // List all SQL Server instances:
        ListServers(SqlClientFactory.Instance);

        Console.WriteLine();
        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }
    private static void ListServers(DbProviderFactory factory)
    {
        // This procedure is provider-agnostic, and can list
        // instances of any provider's servers. Of course,
        // not all providers can create a data source enumerator,
        // so it's best to check the CanCreateDataSourceEnumerator
        // property before attempting to list the data sources.
        if (factory.CanCreateDataSourceEnumerator)
        {
            DbDataSourceEnumerator instance =
                factory.CreateDataSourceEnumerator();
            DataTable table = instance.GetDataSources();

            foreach (DataRow row in table.Rows)
            {
                Console.WriteLine("{0}\\{1}",
                    row["ServerName"], row["InstanceName"]);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreateParameter 方法

SqlClientFactory
.
.
::
.
CreateParameter 方法
SqlClientFactory 类

返回强类型的 DbParameter 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreateParameter As DbParameter
public override DbParameter CreateParameter()
public:
virtual DbParameter^ CreateParameter() override
abstract CreateParameter : unit -> DbParameter
override CreateParameter : unit -> DbParameter

返回值

类型： System.Data.Common DbParameter
DbParameter 的新强类型实例。

下面的代码段返回强类型 DbParameter 实例：

Dim newFactory As SqlClientFactory = SqlClientFactory.Instance
Dim cmd As DbParameter = newFactory.CreateParameter()
SqlClientFactory newFactory = SqlClientFactory.Instance;
DbParameter cmd = newFactory.CreateParameter();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CreatePermission 方法

SqlClientFactory
.
.
::
.
CreatePermission 方法
SqlClientFactory 类

返回一个新 CodeAccessPermission。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreatePermission ( _
    state As PermissionState _
) As CodeAccessPermission
public override CodeAccessPermission CreatePermission(
    PermissionState state
)
public:
virtual CodeAccessPermission^ CreatePermission(
    PermissionState state
) override
abstract CreatePermission :
        state:PermissionState -> CodeAccessPermission
override CreatePermission :
        state:PermissionState -> CodeAccessPermission

参数

state
类型： System.Security.Permissions PermissionState
PermissionState 枚举的成员。

返回值

类型： System.Security CodeAccessPermission
CodeAccessPermission 的强类型实例。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory ..::.IServiceProvider ..::.GetService 方法

SqlClientFactory
.
.
::
.
IServiceProvider
.
.
::
.
GetService 方法
SqlClientFactory 类

有关此成员的说明，请参见 IServiceProvider..::.GetService。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Function GetService ( _
    serviceType As Type _
) As Object Implements IServiceProvider.GetService
Object IServiceProvider.GetService(
    Type serviceType
)
private:
virtual Object^ GetService(
    Type^ serviceType
) sealed = IServiceProvider::GetService
private abstract GetService :
        serviceType:Type -> Object
private override GetService :
        serviceType:Type -> Object

参数

serviceType
类型： System Type
一个对象，它指定要获取的服务对象的类型。

返回值

类型： System Object
服务对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientFactory 属性

SqlClientFactory 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientFactory 类

SqlClientFactory 类型公开以下成员。

名称 说明
页首

参考

SqlClientFactory 类
System.Data.SqlClient 命名空间


SqlClientFactory ..::.CanCreateDataSourceEnumerator 属性

SqlClientFactory
.
.
::
.
CanCreateDataSourceEnumerator 属性
SqlClientFactory 类

如果可以创建 SqlDataSourceEnumerator，则返回 true；否则为 false。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property CanCreateDataSourceEnumerator As Boolean
    Get
public override bool CanCreateDataSourceEnumerator { get; }
public:
virtual property bool CanCreateDataSourceEnumerator {
    bool get () override;
}
abstract CanCreateDataSourceEnumerator : bool
override CanCreateDataSourceEnumerator : bool

属性值

类型： System Boolean
如果可以创建 SqlDataSourceEnumerator，则为 true；否则为 false。

DbProviderFactory 类提供 CanCreateDataSourceEnumerator 属性，以使继承者能够指示它们是否能提供数据源枚举数。SqlClientFactory 显示此属性，但是其值始终为 true。 DbProviderFactory 类提供 CanCreateDataSourceEnumerator 属性，以使继承者能够指示它们是否能提供数据源枚举数。SqlClientFactory 显示此属性，但是其值始终为 true。

下面的示例使用可以为任何提供程序枚举数据源的代码，显示所有可用 SQL Server 数据源的列表。

Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        ' List all SQL Server instances:
        ListServers(SqlClientFactory.Instance)

        Console.WriteLine()
        Console.WriteLine("Press any key to continue.")
        Console.ReadKey()
    End Sub

    Private Sub ListServers(ByVal factory As DbProviderFactory)
        ' This procedure is provider-agnostic, and can list
        ' instances of any provider's servers. Of course,
        ' not all providers can create a data source enumerator,
        ' so it's best to check the CanCreateDataSourceEnumerator property
        ' before attempting to list the data sources.
        If factory.CanCreateDataSourceEnumerator Then
            Dim instance As DbDataSourceEnumerator = _
             factory.CreateDataSourceEnumerator
            Dim table As System.Data.DataTable = instance.GetDataSources()

            Dim row As DataRow
            For Each row In table.Rows
                Console.WriteLine("{0}\{1}", _
                 row("ServerName"), row("InstanceName"))
            Next
        End If
    End Sub
End Module

using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        // List all SQL Server instances:
        ListServers(SqlClientFactory.Instance);

        Console.WriteLine();
        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }
    private static void ListServers(DbProviderFactory factory)
    {
        // This procedure is provider-agnostic, and can list
        // instances of any provider's servers. Of course,
        // not all providers can create a data source enumerator,
        // so it's best to check the CanCreateDataSourceEnumerator
        // property before attempting to list the data sources.
        if (factory.CanCreateDataSourceEnumerator)
        {
            DbDataSourceEnumerator instance =
                factory.CreateDataSourceEnumerator();
            DataTable table = instance.GetDataSources();

            foreach (DataRow row in table.Rows)
            {
                Console.WriteLine("{0}\\{1}",
                    row["ServerName"], row["InstanceName"]);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientFactory 类
SqlClientFactory 成员
System.Data.SqlClient 命名空间


SqlClientMetaDataCollectionNames 类

SqlClientMetaDataCollectionNames 类
成员

提供一个常数列表，该列表与 GetSchema 方法一起使用以检索元数据集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlClientMetaDataCollectionNames
public static class SqlClientMetaDataCollectionNames
public ref class SqlClientMetaDataCollectionNames abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
type SqlClientMetaDataCollectionNames =  class end

System.Data.SqlClient System.Data.SqlClient..::.SqlClientMetaDataCollectionNamesSqlClientMetaDataCollectionNames
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames 成员

SqlClientMetaDataCollectionNames 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientMetaDataCollectionNames 类

提供一个常数列表，该列表与 GetSchema 方法一起使用以检索元数据集合。

SqlClientMetaDataCollectionNames 类型公开以下成员。

名称 说明
页首

参考

SqlClientMetaDataCollectionNames 类
System.Data.SqlClient 命名空间


SqlClientMetaDataCollectionNames 字段

SqlClientMetaDataCollectionNames 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientMetaDataCollectionNames 类

SqlClientMetaDataCollectionNames 类型公开以下成员。

名称 说明
页首

参考

SqlClientMetaDataCollectionNames 类
System.Data.SqlClient 命名空间


SqlClientMetaDataCollectionNames ..::.Columns 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Columns 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Columns 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Columns As String
public static readonly string Columns
public:
static initonly String^ Columns
static val Columns: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Databases 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Databases 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Databases 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Databases As String
public static readonly string Databases
public:
static initonly String^ Databases
static val Databases: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.ForeignKeys 字段

SqlClientMetaDataCollectionNames
.
.
::
.
ForeignKeys 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 ForeignKeys 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly ForeignKeys As String
public static readonly string ForeignKeys
public:
static initonly String^ ForeignKeys
static val ForeignKeys: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.IndexColumns 字段

SqlClientMetaDataCollectionNames
.
.
::
.
IndexColumns 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 IndexColumns 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly IndexColumns As String
public static readonly string IndexColumns
public:
static initonly String^ IndexColumns
static val IndexColumns: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Indexes 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Indexes 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Indexes 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Indexes As String
public static readonly string Indexes
public:
static initonly String^ Indexes
static val Indexes: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Parameters 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Parameters 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Parameters 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Parameters As String
public static readonly string Parameters
public:
static initonly String^ Parameters
static val Parameters: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.ProcedureColumns 字段

SqlClientMetaDataCollectionNames
.
.
::
.
ProcedureColumns 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 ProcedureColumns 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly ProcedureColumns As String
public static readonly string ProcedureColumns
public:
static initonly String^ ProcedureColumns
static val ProcedureColumns: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Procedures 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Procedures 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Procedures 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Procedures As String
public static readonly string Procedures
public:
static initonly String^ Procedures
static val Procedures: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Tables 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Tables 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Tables 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Tables As String
public static readonly string Tables
public:
static initonly String^ Tables
static val Tables: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.UserDefinedTypes 字段

SqlClientMetaDataCollectionNames
.
.
::
.
UserDefinedTypes 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 UserDefinedTypes 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly UserDefinedTypes As String
public static readonly string UserDefinedTypes
public:
static initonly String^ UserDefinedTypes
static val UserDefinedTypes: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Users 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Users 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Users 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Users As String
public static readonly string Users
public:
static initonly String^ Users
static val Users: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.ViewColumns 字段

SqlClientMetaDataCollectionNames
.
.
::
.
ViewColumns 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 ViewColumns 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly ViewColumns As String
public static readonly string ViewColumns
public:
static initonly String^ ViewColumns
static val ViewColumns: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientMetaDataCollectionNames ..::.Views 字段

SqlClientMetaDataCollectionNames
.
.
::
.
Views 字段
SqlClientMetaDataCollectionNames 类

用于 GetSchema 方法的常数，表示 Views 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared ReadOnly Views As String
public static readonly string Views
public:
static initonly String^ Views
static val Views: string

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientMetaDataCollectionNames 类
SqlClientMetaDataCollectionNames 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlClientPermission 类

SqlClientPermission 类
成员

启用用于 SQL Server 的 .NET Framework 数据提供程序，帮助确保用户具有足够的安全级别来访问数据源。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SerializableAttribute> _
Public NotInheritable Class SqlClientPermission _
    Inherits DBDataPermission
[SerializableAttribute]
public sealed class SqlClientPermission : DBDataPermission
[SerializableAttribute]
public ref class SqlClientPermission sealed : public DBDataPermission
[<SealedAttribute>]
[<SerializableAttribute>]
type SqlClientPermission =
    class
        inherit DBDataPermission
    end

IsUnrestricted 属性优先级高于 AllowBlankPassword 属性。因此，如果将 AllowBlankPassword 设置为 false，也必须将 IsUnrestricted 设置为 false，以防止用户使用空白密码进行连接。 IsUnrestricted 属性优先级高于 AllowBlankPassword 属性。因此，如果将 AllowBlankPassword 设置为 false，也必须将 IsUnrestricted 设置为 false，以防止用户使用空白密码进行连接。

说明 说明

将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时授予所有权限然后拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。 将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时授予所有权限然后拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。 将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时授予所有权限然后拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。 将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时授予所有权限然后拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。

System.Data.SqlClient System.Data.SqlClient..::.SqlClientPermissionSqlClientPermission
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermission 成员
System.Data.SqlClient 命名空间

其他资源

代码访问安全性和 ADO.NET


SqlClientPermission 成员

SqlClientPermission 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermission 类

启用用于 SQL Server 的 .NET Framework 数据提供程序，帮助确保用户具有足够的安全级别来访问数据源。

SqlClientPermission 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlClientPermission 类
System.Data.SqlClient 命名空间


SqlClientPermission 构造函数

SqlClientPermission 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermission 类

初始化 SqlClientPermission 类的新实例。

名称 说明
页首

参考

SqlClientPermission 类
SqlClientPermission 成员
System.Data.SqlClient 命名空间


SqlClientPermission 构造函数

SqlClientPermission 构造函数
SqlClientPermission 类

注意：此 API 现在已过时。

初始化 SqlClientPermission 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<ObsoleteAttribute("SqlClientPermission() has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",  _
    True)> _
Public Sub New
[ObsoleteAttribute("SqlClientPermission() has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",
    true)]
public SqlClientPermission()
[ObsoleteAttribute(L"SqlClientPermission() has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",
    true)]
public:
SqlClientPermission()
[<ObsoleteAttribute("SqlClientPermission() has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",
    true)>]
new : unit -> SqlClientPermission

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.0
在 1.1 和后续版本中过时（不编译）

.NET Framework Client Profile

在 4 和后续版本中过时（不编译）

参考

SqlClientPermission 类
SqlClientPermission 成员
SqlClientPermission 重载
System.Data.SqlClient 命名空间


SqlClientPermission 构造函数 (PermissionState)

SqlClientPermission 构造函数 (PermissionState)
SqlClientPermission 类

初始化 SqlClientPermission 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    state As PermissionState _
)
public SqlClientPermission(
    PermissionState state
)
public:
SqlClientPermission(
    PermissionState state
)
new :
        state:PermissionState -> SqlClientPermission

参数

state
类型： System.Security.Permissions PermissionState
PermissionState 值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermission 类
SqlClientPermission 成员
SqlClientPermission 重载
System.Data.SqlClient 命名空间

其他资源

代码访问安全性和 ADO.NET


SqlClientPermission 构造函数 (PermissionState, Boolean)

SqlClientPermission 构造函数 (PermissionState, Boolean)
SqlClientPermission 类

注意：此 API 现在已过时。

初始化 SqlClientPermission 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<ObsoleteAttribute("SqlClientPermission(PermissionState state, Boolean allowBlankPassword) has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",  _
    True)> _
Public Sub New ( _
    state As PermissionState, _
    allowBlankPassword As Boolean _
)
[ObsoleteAttribute("SqlClientPermission(PermissionState state, Boolean allowBlankPassword) has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",
    true)]
public SqlClientPermission(
    PermissionState state,
    bool allowBlankPassword
)
[ObsoleteAttribute(L"SqlClientPermission(PermissionState state, Boolean allowBlankPassword) has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",
    true)]
public:
SqlClientPermission(
    PermissionState state,
    bool allowBlankPassword
)
[<ObsoleteAttribute("SqlClientPermission(PermissionState state, Boolean allowBlankPassword) has been deprecated.  Use the SqlClientPermission(PermissionState.None) constructor.  http://go.microsoft.com/fwlink/?linkid=14202",
    true)>]
new :
        state:PermissionState *
        allowBlankPassword:bool -> SqlClientPermission

参数

state
类型： System.Security.Permissions PermissionState
PermissionState 值之一。
allowBlankPassword
类型： System Boolean
指示是否允许空白密码。

PermissionState 枚举优先于 AllowBlankPassword 属性。因此，如果将 AllowBlankPassword 设置为 false，也必须将 PermissionState 设置为 None，以防止用户使用空白密码进行连接。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 PermissionState 枚举优先于 AllowBlankPassword 属性。因此，如果将 AllowBlankPassword 设置为 false，也必须将 PermissionState 设置为 None，以防止用户使用空白密码进行连接。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 PermissionState 枚举优先于 AllowBlankPassword 属性。因此，如果将 AllowBlankPassword 设置为 false，也必须将 PermissionState 设置为 None，以防止用户使用空白密码进行连接。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.0
在 1.1 和后续版本中过时（不编译）

.NET Framework Client Profile

在 4 和后续版本中过时（不编译）

参考

SqlClientPermission 类
SqlClientPermission 成员
SqlClientPermission 重载
System.Data.SqlClient 命名空间

其他资源

代码访问安全性和 ADO.NET


SqlClientPermission 方法

SqlClientPermission 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermission 类

SqlClientPermission 类型公开以下成员。

名称 说明
页首

参考

SqlClientPermission 类
System.Data.SqlClient 命名空间


SqlClientPermission ..::.Add 方法

SqlClientPermission
.
.
::
.
Add 方法
SqlClientPermission 类

向 SqlClientPermission 对象添加新的连接字符串和一组限制性关键字。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Add ( _
    connectionString As String, _
    restrictions As String, _
    behavior As KeyRestrictionBehavior _
)
public override void Add(
    string connectionString,
    string restrictions,
    KeyRestrictionBehavior behavior
)
public:
virtual void Add(
    String^ connectionString,
    String^ restrictions,
    KeyRestrictionBehavior behavior
) override
abstract Add :
        connectionString:string *
        restrictions:string *
        behavior:KeyRestrictionBehavior -> unit
override Add :
        connectionString:string *
        restrictions:string *
        behavior:KeyRestrictionBehavior -> unit

参数

connectionString
类型： System String
连接字符串。
restrictions
类型： System String
关键限制。
behavior
类型： System.Data KeyRestrictionBehavior
KeyRestrictionBehavior 枚举之一。

使用此方法可以配置特定权限对象允许哪些连接字符串。例如，如果希望只允许特定连接字符串而不允许其他任何连接字符串，则可以使用下面的代码段： 使用此方法可以配置特定权限对象允许哪些连接字符串。例如，如果希望只允许特定连接字符串而不允许其他任何连接字符串，则可以使用下面的代码段：

permission.Add("server=MyServer; database=MyDatabase; Integrated Security=true", "", KeyRestrictionBehavior.AllowOnly)

下面的示例允许满足以下条件的连接字符串：使用任何数据库，但只能在名为 MyServer 的服务器上，具有任何用户和密码组合，但不包含其他连接字符串关键字：

permission.Add("server=MyServer;", "database=; user id=; password=;", KeyRestrictionBehavior.AllowOnly)

下面的示例使用的方案与上面的相同，但允许故障转移合作伙伴，这些故障转移合作伙伴可以在连接到配置用于镜像的服务器时使用：

permission.Add("server=MyServer; failover partner=MyMirrorServer", "database=; user id=; password=;”, KeyRestrictionBehavior.AllowOnly)

说明 说明

将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时即授予所有权限然后尝试拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。 将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时即授予所有权限然后尝试拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。 将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时即授予所有权限然后尝试拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。 将代码访问安全性权限用于 ADO.NET 时，正确的方式是从限制最严格的情况（无任何权限）开始，然后添加代码需要执行的特定任务所需的特定权限。而开始时即授予所有权限然后尝试拒绝特定权限这一相反的做法并不安全，因为有多种方法可以表达相同的连接字符串。例如，如果开始时具有所有权限，然后尝试拒绝使用连接字符串“server=someserver”，则字符串“server=someserver.mycompany.com”仍将被允许。通过在开始时始终不授予任何权限，可以减少权限集中出现漏洞的机会。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermission 类
SqlClientPermission 成员
System.Data.SqlClient 命名空间

其他资源

代码访问安全性和 ADO.NET


SqlClientPermission ..::.Copy 方法

SqlClientPermission
.
.
::
.
Copy 方法
SqlClientPermission 类

以 IPermission 形式返回 SqlClientPermission。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function Copy As IPermission
public override IPermission Copy()
public:
virtual IPermission^ Copy() override
abstract Copy : unit -> IPermission
override Copy : unit -> IPermission

返回值

类型： System.Security IPermission
当前权限对象的副本。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermission 类
SqlClientPermission 成员
System.Data.SqlClient 命名空间


SqlClientPermission 属性

SqlClientPermission 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermission 类

SqlClientPermission 类型公开以下成员。

名称 说明
页首

参考

SqlClientPermission 类
System.Data.SqlClient 命名空间


SqlClientPermissionAttribute 类

SqlClientPermissionAttribute 类
成员

将某安全操作与自定义安全特性相关联。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SerializableAttribute> _
<AttributeUsageAttribute(AttributeTargets.Assembly Or AttributeTargets.Class Or AttributeTargets.Struct Or AttributeTargets.Constructor Or AttributeTargets.Method, AllowMultiple := True,  _
    Inherited := False)> _
Public NotInheritable Class SqlClientPermissionAttribute _
    Inherits DBDataPermissionAttribute
[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method, AllowMultiple = true,
    Inherited = false)]
public sealed class SqlClientPermissionAttribute : DBDataPermissionAttribute
[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets::Assembly|AttributeTargets::Class|AttributeTargets::Struct|AttributeTargets::Constructor|AttributeTargets::Method, AllowMultiple = true,
    Inherited = false)]
public ref class SqlClientPermissionAttribute sealed : public DBDataPermissionAttribute
[<SealedAttribute>]
[<SerializableAttribute>]
[<AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method, AllowMultiple = true,
    Inherited = false)>]
type SqlClientPermissionAttribute =
    class
        inherit DBDataPermissionAttribute
    end

System.Data.SqlClient System.Data.SqlClient..::.SqlClientPermissionAttributeSqlClientPermissionAttribute
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermissionAttribute 成员
System.Data.SqlClient 命名空间


SqlClientPermissionAttribute 成员

SqlClientPermissionAttribute 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermissionAttribute 类

将某安全操作与自定义安全特性相关联。

SqlClientPermissionAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlClientPermissionAttribute 类
System.Data.SqlClient 命名空间


SqlClientPermissionAttribute 构造函数

SqlClientPermissionAttribute 构造函数
SqlClientPermissionAttribute 类

初始化 SqlClientPermissionAttribute 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    action As SecurityAction _
)
public SqlClientPermissionAttribute(
    SecurityAction action
)
public:
SqlClientPermissionAttribute(
    SecurityAction action
)
new :
        action:SecurityAction -> SqlClientPermissionAttribute

参数

action
类型： System.Security.Permissions SecurityAction
SecurityAction 值之一，表示使用声明性安全可执行的操作。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermissionAttribute 类
SqlClientPermissionAttribute 成员
System.Data.SqlClient 命名空间


SqlClientPermissionAttribute 方法

SqlClientPermissionAttribute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermissionAttribute 类

SqlClientPermissionAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlClientPermissionAttribute 类
System.Data.SqlClient 命名空间


SqlClientPermissionAttribute ..::.CreatePermission 方法

SqlClientPermissionAttribute
.
.
::
.
CreatePermission 方法
SqlClientPermissionAttribute 类

返回一个 SqlClientPermission 对象，该对象是根据特性属性配置的。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function CreatePermission As IPermission
public override IPermission CreatePermission()
public:
virtual IPermission^ CreatePermission() override
abstract CreatePermission : unit -> IPermission
override CreatePermission : unit -> IPermission

返回值

类型： System.Security IPermission
一个 SqlClientPermission 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlClientPermissionAttribute 类
SqlClientPermissionAttribute 成员
System.Data.SqlClient 命名空间


SqlClientPermissionAttribute 属性

SqlClientPermissionAttribute 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlClientPermissionAttribute 类

SqlClientPermissionAttribute 类型公开以下成员。

名称 说明
页首

参考

SqlClientPermissionAttribute 类
System.Data.SqlClient 命名空间


SqlCommand 类

SqlCommand 类
成员

表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。 表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlCommand _
    Inherits DbCommand _
    Implements ICloneable
public sealed class SqlCommand : DbCommand,
    ICloneable
public ref class SqlCommand sealed : public DbCommand,
    ICloneable
[<SealedAttribute>]
type SqlCommand =
    class
        inherit DbCommand
        interface ICloneable
    end

当创建 SqlCommand 的实例时，读/写属性将被设置为它们的初始值。有关这些值的列表，请参见 SqlCommand 构造函数。 当创建 SqlCommand 的实例时，读/写属性将被设置为它们的初始值。有关这些值的列表，请参见 SqlCommand 构造函数。

SqlCommand 特别提供了以下对 SQL Server 数据库执行命令的方法：

项 | 说明
BeginExecuteNonQuery | 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，一般情况下执行 INSERT、DELETE、UPDATE 和 SET 语句等命令。每调用一次 BeginExecuteNonQuery，都必须调用一次通常在单独的线程上完成操作的 EndExecuteNonQuery。 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，一般情况下执行 INSERT、DELETE、UPDATE 和 SET 语句等命令。每调用一次 BeginExecuteNonQuery，都必须调用一次通常在单独的线程上完成操作的 EndExecuteNonQuery。
BeginExecuteReader | 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并从服务器中检索一个或多个结果集。每调用一次 BeginExecuteReader，都必须调用一次通常在单独的线程上完成操作的 EndExecuteReader。 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并从服务器中检索一个或多个结果集。每调用一次 BeginExecuteReader，都必须调用一次通常在单独的线程上完成操作的 EndExecuteReader。
BeginExecuteXmlReader | 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。每调用一次 BeginExecuteXmlReader，都必须调用一次 EndExecuteXmlReader，它通常在单独的线程上完成操作，并且返回一个 XmlReader 对象。 启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。每调用一次 BeginExecuteXmlReader，都必须调用一次 EndExecuteXmlReader，它通常在单独的线程上完成操作，并且返回一个 XmlReader 对象。
ExecuteReader | 执行返回行的命令。为了提高性能，ExecuteReader 使用 Transact-SQL sp_executesql 系统存储过程调用命令。因此，如果 ExecuteReader 用于执行命令（例如 Transact-SQL SET 语句），则它可能不会产生预期的效果。 执行返回行的命令。为了提高性能，ExecuteReader 使用 Transact-SQL sp_executesql 系统存储过程调用命令。因此，如果 ExecuteReader 用于执行命令（例如 Transact-SQL SET 语句），则它可能不会产生预期的效果。 执行返回行的命令。为了提高性能，ExecuteReader 使用 Transact-SQL sp_executesql 系统存储过程调用命令。因此，如果 ExecuteReader 用于执行命令（例如 Transact-SQL SET 语句），则它可能不会产生预期的效果。
ExecuteNonQuery | 执行 Transact-SQL INSERT、DELETE、UPDATE 及 SET 语句等命令。
ExecuteScalar | 从数据库中检索单个值（例如一个聚合值）。
ExecuteXmlReader | 将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。

您可以重置 CommandText 属性并重复使用 SqlCommand 对象。但是，在执行新的命令或先前命令之前，必须关闭 SqlDataReader。 您可以重置 CommandText 属性并重复使用 SqlCommand 对象。但是，在执行新的命令或先前命令之前，必须关闭 SqlDataReader。

如果执行 SqlCommand 的方法生成 SqlException，那么当严重级别小于等于 19 时，SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。 如果执行 SqlCommand 的方法生成 SqlException，那么当严重级别小于等于 19 时，SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。 如果执行 SqlCommand 的方法生成 SqlException，那么当严重级别小于等于 19 时，SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。

下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取所有数据，并将其写到控制台。最后，示例在退出 Using 代码块时先后关闭 SqlDataReader 和 SqlConnection。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取所有数据，并将其写到控制台。最后，示例在退出 Using 代码块时先后关闭 SqlDataReader 和 SqlConnection。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取所有数据，并将其写到控制台。最后，示例在退出 Using 代码块时先后关闭 SqlDataReader 和 SqlConnection。

Public Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()
        Dim reader As SqlDataReader = command.ExecuteReader()
        Try
            While reader.Read()
                Console.WriteLine(String.Format("{0}, {1}", _
                    reader(0), reader(1)))
            End While
        Finally
            ' Always call Close when done reading.
            reader.Close()
        End Try
    End Using
End Sub

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
        finally
        {
            // Always call Close when done reading.
            reader.Close();
        }
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlCommandSqlCommand
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 成员

SqlCommand 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。 表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。无法继承此类。

SqlCommand 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlCommand 类
System.Data.SqlClient 命名空间


SqlCommand 构造函数

SqlCommand 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

初始化 SqlCommand 类的新实例。

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand 构造函数

SqlCommand 构造函数
SqlCommand 类

初始化 SqlCommand 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlCommand()
public:
SqlCommand()
new : unit -> SqlCommand

基构造函数将所有字段初始化为它们的默认值。下表显示 SqlCommand 实例的初始属性值。 基构造函数将所有字段初始化为它们的默认值。下表显示 SqlCommand 实例的初始属性值。

属性 | 初始值
CommandText | 空字符串 ("")
CommandTimeout | 30
CommandType | CommandType.Text
Connection | null

通过单独调用属性，可以更改这些属性值中的任何一个。

下面的示例创建 SqlCommand 并设置 CommandTimeout 属性。

Public Sub CreateSqlCommand()
    Dim command As New SqlCommand()
    command.CommandTimeout = 15
    command.CommandType = CommandType.Text
End Sub

public void CreateSqlCommand()
{
   SqlCommand command = new SqlCommand();
   command.CommandTimeout = 15;
   command.CommandType = CommandType.Text;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
SqlCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 构造函数 (String)

SqlCommand 构造函数 (String)
SqlCommand 类

用查询文本初始化 SqlCommand 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    cmdText As String _
)
public SqlCommand(
    string cmdText
)
public:
SqlCommand(
    String^ cmdText
)
new :
        cmdText:string -> SqlCommand

参数

cmdText
类型： System String
查询的文本。

当创建 SqlCommand 的实例时，以下读/写属性将被设置为初始值。

属性 | 初始值
CommandText | cmdText
CommandTimeout | 30
CommandType | CommandType.Text
Connection | null

通过单独调用属性，可以更改这些属性值中的任何一个。

下面的示例创建 SqlCommand，同时传入连接字符串和命令文本。

Public Sub CreateCommand()
    Dim queryString As String = "SELECT * FROM Categories ORDER BY CategoryID"
    Dim command As New SqlCommand(queryString)
    command.CommandTimeout = 15
    command.CommandType = CommandType.Text
End Sub

public void CreateCommand()
 {
    string queryString = "SELECT * FROM Categories ORDER BY CategoryID";
    SqlCommand command = new SqlCommand(queryString);
    command.CommandTimeout = 15;
    command.CommandType = CommandType.Text;
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
SqlCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 构造函数 (String, SqlConnection)

SqlCommand 构造函数 (String, SqlConnection)
SqlCommand 类

初始化具有查询文本和 SqlConnection 的 SqlCommand 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    cmdText As String, _
    connection As SqlConnection _
)
public SqlCommand(
    string cmdText,
    SqlConnection connection
)
public:
SqlCommand(
    String^ cmdText,
    SqlConnection^ connection
)
new :
        cmdText:string *
        connection:SqlConnection -> SqlCommand

参数

cmdText
类型： System String
查询的文本。
connection
类型： System.Data.SqlClient SqlConnection
一个 SqlConnection，它表示到 SQL Server 实例的连接。

下表显示 SqlCommand 实例的初始属性值。

属性 | 初始值
CommandText | cmdText
CommandTimeout | 30
CommandType | CommandType.Text
Connection | 一个新的 SqlConnection，它是 connection 参数的值。

您可以通过设置相关属性来更改这些参数中任何参数的值。

下面的示例创建一个 SqlCommand 并设置它的一些属性。

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        connection.Open()
        Dim reader As SqlDataReader = command.ExecuteReader()
            While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While
    End Using
End Sub

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
SqlCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 构造函数 (String, SqlConnection, SqlTransaction)

SqlCommand 构造函数 (String, SqlConnection, SqlTransaction)
SqlCommand 类

使用查询文本、一个 SqlConnection 以及 SqlTransaction 来初始化 SqlCommand 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    cmdText As String, _
    connection As SqlConnection, _
    transaction As SqlTransaction _
)
public SqlCommand(
    string cmdText,
    SqlConnection connection,
    SqlTransaction transaction
)
public:
SqlCommand(
    String^ cmdText,
    SqlConnection^ connection,
    SqlTransaction^ transaction
)
new :
        cmdText:string *
        connection:SqlConnection *
        transaction:SqlTransaction -> SqlCommand

参数

cmdText
类型： System String
查询的文本。
connection
类型： System.Data.SqlClient SqlConnection
一个 SqlConnection，它表示到 SQL Server 实例的连接。
transaction
类型： System.Data.SqlClient SqlTransaction
将在其中执行 SqlCommand 的 SqlTransaction。

下表显示 SqlCommand 实例的初始属性值。

属性 | 初始值
CommandText | cmdText
CommandTimeout | 30
CommandType | CommandType.Text
Connection | 一个新的 SqlConnection，它是 connection 参数的值。

您可以通过设置相关属性来更改这些参数中任何参数的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
SqlCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 方法

SqlCommand 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

SqlCommand 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlCommand 类
System.Data.SqlClient 命名空间


SqlCommand ..::.BeginExecuteNonQuery 方法

SqlCommand
.
.
::
.
BeginExecuteNonQuery 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.BeginExecuteNonQuery 方法

SqlCommand
.
.
::
.
BeginExecuteNonQuery 方法
SqlCommand 类

启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteNonQuery As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteNonQuery()
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteNonQuery()
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteNonQuery : unit -> IAsyncResult

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用可返回受影响的行数的 EndExecuteNonQuery 时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。

由于该重载不支持回调过程，因此，开发人员必须使用 BeginExecuteNonQuery 方法返回的 IAsyncResult 的 IsCompleted 属性进行轮询，以确定命令是否已完成；或者使用返回的 IAsyncResult 的 AsyncWaitHandle 属性，等待一个或多个命令完成。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的控制台应用程序在 AdventureWorks 示例数据库中异步创建更新数据。为了模拟长时间运行的进程，此示例在命令文本中插入 WAITFOR 语句。通常，您不必特意减慢命令的运行速度，但如果在这种情况下减慢运行速度，会使演示异步行为变得更加容易。 下面的控制台应用程序在 AdventureWorks 示例数据库中异步创建更新数据。为了模拟长时间运行的进程，此示例在命令文本中插入 WAITFOR 语句。通常，您不必特意减慢命令的运行速度，但如果在这种情况下减慢运行速度，会使演示异步行为变得更加容易。 下面的控制台应用程序在 AdventureWorks 示例数据库中异步创建更新数据。为了模拟长时间运行的进程，此示例在命令文本中插入 WAITFOR 语句。通常，您不必特意减慢命令的运行速度，但如果在这种情况下减慢运行速度，会使演示异步行为变得更加容易。

Imports System.Data.SqlClient

Module Module1

    Sub Main()
        ' This is a simple example that demonstrates the usage of the
        ' BeginExecuteNonQuery functionality.
        ' The WAITFOR statement simply adds enough time to prove the
        ' asynchronous nature of the command.
        Dim commandText As String = _
         "UPDATE Production.Product SET ReorderPoint = ReorderPoint + 1 " & _
         "WHERE ReorderPoint Is Not Null;" & _
         "WAITFOR DELAY '0:0:3';" & _
         "UPDATE Production.Product SET ReorderPoint = ReorderPoint - 1 " & _
         "WHERE ReorderPoint Is Not Null"

        RunCommandAsynchronously(commandText, GetConnectionString())

        Console.WriteLine("Press ENTER to continue.")
        Console.ReadLine()
    End Sub

    Private Sub RunCommandAsynchronously( _
     ByVal commandText As String, ByVal connectionString As String)

        ' Given command text and connection string, asynchronously execute
        ' the specified command against the connection. For this example,
        ' the code displays an indicator as it is working, verifying the
        ' asynchronous behavior.
        Using connection As New SqlConnection(connectionString)
            Try
                Dim count As Integer = 0
                Dim command As New SqlCommand(commandText, connection)
                connection.Open()
                Dim result As IAsyncResult = command.BeginExecuteNonQuery()
                While Not result.IsCompleted
                    Console.WriteLine("Waiting ({0})", count)
                    ' Wait for 1/10 second, so the counter
                    ' does not consume all available resources
                    ' on the main thread.
                    Threading.Thread.Sleep(100)
                    count += 1
                End While
                Console.WriteLine("Command complete. Affected {0} rows.", _
                    command.EndExecuteNonQuery(result))
            Catch ex As SqlException
                Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message)
            Catch ex As InvalidOperationException
                Console.WriteLine("Error: {0}", ex.Message)
            Catch ex As Exception
                ' You might want to pass these errors
                ' back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message)
            End Try
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you have not included "Asynchronous Processing=true" in the
        ' connection string, the command is not able
        ' to execute asynchronously.
        Return "Data Source=(local);Integrated Security=SSPI;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function
End Module

using System.Data.SqlClient;

class Class1
{
    static void Main()
    {
        // This is a simple example that demonstrates the usage of the
        // BeginExecuteNonQuery functionality.
        // The WAITFOR statement simply adds enough time to prove the
        // asynchronous nature of the command.

        string commandText =
            "UPDATE Production.Product SET ReorderPoint = ReorderPoint + 1 " +
            "WHERE ReorderPoint Is Not Null;" +
            "WAITFOR DELAY '0:0:3';" +
            "UPDATE Production.Product SET ReorderPoint = ReorderPoint - 1 " +
            "WHERE ReorderPoint Is Not Null";

        RunCommandAsynchronously(commandText, GetConnectionString());

        Console.WriteLine("Press ENTER to continue.");
        Console.ReadLine();
    }

    private static void RunCommandAsynchronously(
        string commandText, string connectionString)
    {
        // Given command text and connection string, asynchronously execute
        // the specified command against the connection. For this example,
        // the code displays an indicator as it is working, verifying the
        // asynchronous behavior.
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            try
            {
                int count = 0;
                SqlCommand command = new SqlCommand(commandText, connection);
                connection.Open();

                IAsyncResult result = command.BeginExecuteNonQuery();
                while (!result.IsCompleted)
                {
                    Console.WriteLine("Waiting ({0})", count++);
                    // Wait for 1/10 second, so the counter
                    // does not consume all available resources
                    // on the main thread.
                    System.Threading.Thread.Sleep(100);
                }
                Console.WriteLine("Command complete. Affected {0} rows.",
                    command.EndExecuteNonQuery(result));
            }
            catch (SqlException ex)
            {
                Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine("Error: {0}", ex.Message);
            }
            catch (Exception ex)
            {
                // You might want to pass these errors
                // back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message);
            }
        }
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.

        // If you have not included "Asynchronous Processing=true" in the
        // connection string, the command is not able
        // to execute asynchronously.
        return "Data Source=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteNonQuery 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteNonQuery 方法 (AsyncCallback, Object)

SqlCommand
.
.
::
.
BeginExecuteNonQuery 方法 (AsyncCallback, Object)
SqlCommand 类

如果提供回调过程和状态信息，则启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteNonQuery ( _
    callback As AsyncCallback, _
    stateObject As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteNonQuery(
    AsyncCallback callback,
    Object stateObject
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteNonQuery(
    AsyncCallback^ callback,
    Object^ stateObject
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteNonQuery :
        callback:AsyncCallback *
        stateObject:Object -> IAsyncResult

参数

callback
类型： System AsyncCallback
命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。 命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。
stateObject
类型： System Object
传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。 传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用可返回受影响的行数的 EndExecuteNonQuery 时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteNonQuery 方法启动异步执行不返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成后，开发人员必须调用 EndExecuteNonQuery 方法以完成操作。BeginExecuteNonQuery 方法立即返回，但在代码执行相应的 EndExecuteNonQuery 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteNonQuery，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteNonQuery 方法。此外，您还可以在 asyncStateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteNonQuery 方法。此外，您还可以在 asyncStateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteNonQuery 方法。此外，您还可以在 asyncStateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。

由于回调过程从 Microsoft .NET 公共语言运行时提供的后台线程内执行，因此采取严格的措施从应用程序内处理线程间交互非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。 由于回调过程从 Microsoft .NET 公共语言运行时提供的后台线程内执行，因此采取严格的措施从应用程序内处理线程间交互非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。 由于回调过程从 Microsoft .NET 公共语言运行时提供的后台线程内执行，因此采取严格的措施从应用程序内处理线程间交互非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。

在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的 Windows 应用程序演示 BeginExecuteNonQuery 方法的用法，并执行一个包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。

该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。

要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。

Imports System.Data.SqlClient

Public Class Form1
    ' Add this code to the form's class:
    ' You need this delegate in order to display text from a thread
    ' other than the form's thread. See the HandleCallback
    ' procedure for more information.
    ' This same delegate matches both the DisplayStatus
    ' and DisplayResults methods.
    Private Delegate Sub DisplayInfoDelegate(ByVal Text As String)

    ' This flag ensures that the user does not attempt
    ' to restart the command or close the form while the
    ' asynchronous command is executing.
    Private isExecuting As Boolean

    ' This example maintains the connection object
    ' externally, so that it is available for closing.
    Private connection As SqlConnection

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you have not included "Asynchronous Processing=true" in the
        ' connection string, the command is not able
        ' to execute asynchronously.
        Return "Data Source=(local);Integrated Security=true;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function

    Private Sub DisplayStatus(ByVal Text As String)
        Me.Label1.Text = Text
    End Sub

    Private Sub DisplayResults(ByVal Text As String)
        Me.Label1.Text = Text
        DisplayStatus("Ready")
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.FormClosingEventArgs) _
        Handles Me.FormClosing
        If isExecuting Then
            MessageBox.Show(Me, "Cannot close the form until " & _
                "the pending asynchronous command has completed. Please wait...")
            e.Cancel = True
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        If isExecuting Then
            MessageBox.Show(Me, _
               "Already executing. Please wait until the current query " & _
                "has completed.")
        Else
            Dim command As SqlCommand
            Try
                DisplayResults("")
                DisplayStatus("Connecting...")
                connection = New SqlConnection(GetConnectionString())
                ' To emulate a long-running query, wait for
                ' a few seconds before working with the data.
                ' This command does not do much, but that's the point--
                ' it does not change your data, in the long run.
                Dim commandText As String = _
                    "WAITFOR DELAY '0:0:05';" & _
                    "UPDATE Production.Product SET ReorderPoint = ReorderPoint + 1 " & _
                    "WHERE ReorderPoint Is Not Null;" & _
                    "UPDATE Production.Product SET ReorderPoint = ReorderPoint - 1 " & _
                    "WHERE ReorderPoint Is Not Null"

                command = New SqlCommand(commandText, connection)
                connection.Open()

                DisplayStatus("Executing...")
                isExecuting = True
                ' Although it is not required that you pass the
                ' SqlCommand object as the second parameter in the
                ' BeginExecuteNonQuery call, doing so makes it easier
                ' to call EndExecuteNonQuery in the callback procedure.
                Dim callback As New AsyncCallback(AddressOf HandleCallback)
                command.BeginExecuteNonQuery(callback, command)

            Catch ex As Exception
                isExecuting = False
                DisplayStatus(String.Format("Ready (last error: {0})", ex.Message))
                If connection IsNot Nothing Then
                    connection.Close()
                End If
            End Try
        End If
    End Sub

    Private Sub HandleCallback(ByVal result As IAsyncResult)
        Try
            ' Retrieve the original command object, passed
            ' to this procedure in the AsyncState property
            ' of the IAsyncResult parameter.
            Dim command As SqlCommand = CType(result.AsyncState, SqlCommand)
            Dim rowCount As Integer = command.EndExecuteNonQuery(result)
            Dim rowText As String = " rows affected."
            If rowCount = 1 Then
                rowText = " row affected."
            End If
            rowText = rowCount & rowText

            ' You may not interact with the form and its contents
            ' from a different thread, and this callback procedure
            ' is all but guaranteed to be running from a different thread
            ' than the form. Therefore you cannot simply call code that
            ' displays the results, like this:
            ' DisplayResults(rowText)

            ' Instead, you must call the procedure from the form's thread.
            ' One simple way to accomplish this is to call the Invoke
            ' method of the form, which calls the delegate you supply
            ' from the form's thread.
            Dim del As New DisplayInfoDelegate(AddressOf DisplayResults)
            Me.Invoke(del, rowText)

        Catch ex As Exception
            ' Because you are now running code in a separate thread,
            ' if you do not handle the exception here, none of your other
            ' code catches the exception. Because none of your code
            ' is on the call stack in this thread, there is nothing
            ' higher up the stack to catch the exception if you do not
            ' handle it here. You can either log the exception or
            ' invoke a delegate (as in the non-error case in this
            ' example) to display the error on the form. In no case
            ' can you simply display the error without executing a delegate
            ' as in the Try block here.

            ' You can create the delegate instance as you
            ' invoke it, like this:
            Me.Invoke(New DisplayInfoDelegate(AddressOf DisplayStatus), _
                String.Format("Ready(last error: {0}", ex.Message))
        Finally
            isExecuting = False
            If connection IsNot Nothing Then
                connection.Close()
            End If
        End Try
    End Sub
End Class

using System.Data.SqlClient;

namespace Microsoft.AdoDotNet.CodeSamples
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // Hook up the form's Load event handler (you can double-click on
        // the form's design surface in Visual Studio), and then add
        // this code to the form's class:
        private void Form1_Load(object sender, EventArgs e)
        {
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.FormClosing += new System.Windows.Forms.
                FormClosingEventHandler(this.Form1_FormClosing);

        }

        // You need this delegate in order to display text from a thread
        // other than the form's thread. See the HandleCallback
        // procedure for more information.
        // This same delegate matches both the DisplayStatus
        // and DisplayResults methods.
        private delegate void DisplayInfoDelegate(string Text);

        // This flag ensures that the user does not attempt
        // to restart the command or close the form while the
        // asynchronous command is executing.
        private bool isExecuting;

        // This example maintains the connection object
        // externally, so that it is available for closing.
        private SqlConnection connection;

        private static string GetConnectionString()
        {
            // To avoid storing the connection string in your code,
            // you can retrieve it from a configuration file.

            // If you have not included "Asynchronous Processing=true" in the
            // connection string, the command is not able
            // to execute asynchronously.
            return "Data Source=(local);Integrated Security=true;" +
                "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
        }

        private void DisplayStatus(string Text)
        {
            this.label1.Text = Text;
        }

        private void DisplayResults(string Text)
        {
            this.label1.Text = Text;
            DisplayStatus("Ready");
        }

        private void Form1_FormClosing(object sender,
            System.Windows.Forms.FormClosingEventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this, "Cannot close the form until " +
                    "the pending asynchronous command has completed. Please wait...");
                e.Cancel = true;
            }
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this,
                    "Already executing. Please wait until the current query " +
                    "has completed.");
            }
            else
            {
                SqlCommand command = null;
                try
                {
                    DisplayResults("");
                    DisplayStatus("Connecting...");
                    connection = new SqlConnection(GetConnectionString());
                    // To emulate a long-running query, wait for
                    // a few seconds before working with the data.
                    // This command does not do much, but that's the point--
                    // it does not change your data, in the long run.
                    string commandText =
                        "WAITFOR DELAY '0:0:05';" +
                        "UPDATE Production.Product SET ReorderPoint = ReorderPoint + 1 " +
                        "WHERE ReorderPoint Is Not Null;" +
                        "UPDATE Production.Product SET ReorderPoint = ReorderPoint - 1 " +
                        "WHERE ReorderPoint Is Not Null";

                    command = new SqlCommand(commandText, connection);
                    connection.Open();

                    DisplayStatus("Executing...");
                    isExecuting = true;
                    // Although it is not required that you pass the
                    // SqlCommand object as the second parameter in the
                    // BeginExecuteNonQuery call, doing so makes it easier
                    // to call EndExecuteNonQuery in the callback procedure.
                    AsyncCallback callback = new AsyncCallback(HandleCallback);
                    command.BeginExecuteNonQuery(callback, command);

                }
                catch (Exception ex)
                {
                    isExecuting = false;
                    DisplayStatus(string.Format("Ready (last error: {0})", ex.Message));
                    if (connection != null)
                    {
                        connection.Close();
                    }
                }
            }
        }

        private void HandleCallback(IAsyncResult result)
        {
            try
            {
                // Retrieve the original command object, passed
                // to this procedure in the AsyncState property
                // of the IAsyncResult parameter.
                SqlCommand command = (SqlCommand)result.AsyncState;
                int rowCount = command.EndExecuteNonQuery(result);
                string rowText = " rows affected.";
                if (rowCount == 1)
                {
                    rowText = " row affected.";
                }
                rowText = rowCount + rowText;

                // You may not interact with the form and its contents
                // from a different thread, and this callback procedure
                // is all but guaranteed to be running from a different thread
                // than the form. Therefore you cannot simply call code that
                // displays the results, like this:
                // DisplayResults(rowText)

                // Instead, you must call the procedure from the form's thread.
                // One simple way to accomplish this is to call the Invoke
                // method of the form, which calls the delegate you supply
                // from the form's thread.
                DisplayInfoDelegate del = new DisplayInfoDelegate(DisplayResults);
                this.Invoke(del, rowText);

            }
            catch (Exception ex)
            {
                // Because you are now running code in a separate thread,
                // if you do not handle the exception here, none of your other
                // code catches the exception. Because none of
                // your code is on the call stack in this thread, there is nothing
                // higher up the stack to catch the exception if you do not
                // handle it here. You can either log the exception or
                // invoke a delegate (as in the non-error case in this
                // example) to display the error on the form. In no case
                // can you simply display the error without executing a delegate
                // as in the try block here.

                // You can create the delegate instance as you
                // invoke it, like this:
                this.Invoke(new DisplayInfoDelegate(DisplayStatus),
                    String.Format("Ready(last error: {0}", ex.Message));
            }
            finally
            {
                isExecuting = false;
                if (connection != null)
                {
                    connection.Close();
                }
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteNonQuery 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteReader 方法

SqlCommand
.
.
::
.
BeginExecuteReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并从服务器中检索一个或多个结果集。

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.BeginExecuteReader 方法

SqlCommand
.
.
::
.
BeginExecuteReader 方法
SqlCommand 类

启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并从服务器中检索一个或多个结果集。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteReader As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteReader()
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteReader()
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteReader : unit -> IAsyncResult

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用 EndExecuteReader（返回一个可用于检索返回行的 SqlDataReader 实例）时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。

由于此重载不支持回调过程，因此，开发人员必须使用 BeginExecuteReader 方法返回的 IAsyncResult 的 IsCompleted 属性进行轮询，以确定命令是否已完成；或者使用返回的 IAsyncResult 的 AsyncWaitHandle 属性，等待一个或多个命令完成。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的控制台应用程序启动异步检索数据读取器的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 SqlDataReader 并显示其内容。 下面的控制台应用程序启动异步检索数据读取器的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 SqlDataReader 并显示其内容。 下面的控制台应用程序启动异步检索数据读取器的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 SqlDataReader 并显示其内容。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        ' This is a simple example that demonstrates the usage of the
        ' BeginExecuteReader functionality.
        ' The WAITFOR statement simply adds enough time to prove the
        ' asynchronous nature of the command.
        Dim commandText As String = _
         "WAITFOR DELAY '00:00:03';" & _
         "SELECT LastName, FirstName FROM Person.Contact " & _
         "WHERE LastName LIKE 'M%'"

        RunCommandAsynchronously(commandText, GetConnectionString())

        Console.WriteLine("Press ENTER to continue.")
        Console.ReadLine()
    End Sub

    Private Sub RunCommandAsynchronously( _
     ByVal commandText As String, ByVal connectionString As String)

        ' Given command text and connection string, asynchronously execute
        ' the specified command against the connection. For this example,
        ' the code displays an indicator as it is working, verifying the
        ' asynchronous behavior.
        Using connection As New SqlConnection(connectionString)
            Try
                Dim command As New SqlCommand(commandText, connection)

                connection.Open()
                Dim result As IAsyncResult = command.BeginExecuteReader()

                ' Although it is not necessary, the following procedure
                ' displays a counter in the console window, indicating that
                ' the main thread is not blocked while awaiting the command
                ' results.
                Dim count As Integer
                While Not result.IsCompleted
                    count += 1
                    Console.WriteLine("Waiting ({0})", count)
                    ' Wait for 1/10 second, so the counter
                    ' does not consume all available resources
                    ' on the main thread.
                    Threading.Thread.Sleep(100)
                End While

                ' Once the IAsyncResult object signals that it is done
                ' waiting for results, you can retrieve the results.
                Using reader As SqlDataReader = command.EndExecuteReader(result)
                    DisplayResults(reader)
                End Using
            Catch ex As SqlException
                Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message)
            Catch ex As InvalidOperationException
                Console.WriteLine("Error: {0}", ex.Message)
            Catch ex As Exception
                ' You might want to pass these errors
                ' back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message)
            End Try
        End Using
    End Sub

    Private Sub DisplayResults(ByVal reader As SqlDataReader)
        ' Display the data within the reader.
        While reader.Read()
            ' Display all the columns.
            For i As Integer = 0 To reader.FieldCount - 1
                Console.Write("{0} ", reader.GetValue(i))
            Next
            Console.WriteLine()
        End While
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you have not included "Asynchronous Processing=true" in the
        ' connection string, the command is not able
        ' to execute asynchronously.
        Return "Data Source=(local);Integrated Security=true;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function
End Module

using System.Data.SqlClient;

class Class1
{
    static void Main()
    {
        // This is a simple example that demonstrates the usage of the
        // BeginExecuteReader functionality
        // The WAITFOR statement simply adds enough time to prove the
        // asynchronous nature of the command.
        string commandText =
            "WAITFOR DELAY '00:00:03';" +
            "SELECT LastName, FirstName FROM Person.Contact " +
            "WHERE LastName LIKE 'M%'";

        RunCommandAsynchronously(commandText, GetConnectionString());

        Console.WriteLine("Press ENTER to continue.");
        Console.ReadLine();
    }

    private static void RunCommandAsynchronously(
        string commandText, string connectionString)
    {
        // Given command text and connection string, asynchronously execute
        // the specified command against the connection. For this example,
        // the code displays an indicator as it is working, verifying the
        // asynchronous behavior.
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                SqlCommand command = new SqlCommand(commandText, connection);

                connection.Open();
                IAsyncResult result = command.BeginExecuteReader();

                // Although it is not necessary, the following code
                // displays a counter in the console window, indicating that
                // the main thread is not blocked while awaiting the command
                // results.
                int count = 0;
                while (!result.IsCompleted)
                {
                    count += 1;
                    Console.WriteLine("Waiting ({0})", count);
                    // Wait for 1/10 second, so the counter
                    // does not consume all available resources
                    // on the main thread.
                    System.Threading.Thread.Sleep(100);
                }

                using (SqlDataReader reader = command.EndExecuteReader(result))
                {
                    DisplayResults(reader);
                }
            }
            catch (SqlException ex)
            {
                Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine("Error: {0}", ex.Message);
            }
            catch (Exception ex)
            {
                // You might want to pass these errors
                // back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message);
            }
        }
    }

    private static void DisplayResults(SqlDataReader reader)
    {
        // Display the data within the reader.
        while (reader.Read())
        {
            // Display all the columns.
            for (int i = 0; i < reader.FieldCount; i++)
                Console.Write("{0} ", reader.GetValue(i));
            Console.WriteLine();
        }
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.

        // If you have not included "Asynchronous Processing=true" in the
        // connection string, the command is not able
        // to execute asynchronously.
        return "Data Source=(local);Integrated Security=true;" +
            "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteReader 方法 (CommandBehavior)

SqlCommand
.
.
::
.
BeginExecuteReader 方法 (CommandBehavior)
SqlCommand 类

使用 CommandBehavior 值之一，启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteReader ( _
    behavior As CommandBehavior _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteReader(
    CommandBehavior behavior
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteReader(
    CommandBehavior behavior
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteReader :
        behavior:CommandBehavior -> IAsyncResult

参数

behavior
类型： System.Data CommandBehavior
CommandBehavior 值之一，指示用于语句执行和数据检索的选项。

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用 EndExecuteReader（返回一个可用于检索返回行的 SqlDataReader 实例）时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

通过 behavior 参数，可以指定用于控制命令的行为及其连接的选项。可以将这些值组合使用（使用编程语言的 OR 运算符）；一般情况下，开发人员使用 CommandBehavior.CloseConnection 值，确保在关闭 SqlDataReader 时由运行时关闭连接。 通过 behavior 参数，可以指定用于控制命令的行为及其连接的选项。可以将这些值组合使用（使用编程语言的 OR 运算符）；一般情况下，开发人员使用 CommandBehavior.CloseConnection 值，确保在关闭 SqlDataReader 时由运行时关闭连接。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。

由于该重载不支持回调过程，因此，开发人员必须使用 BeginExecuteNonQuery 方法返回的 IAsyncResult 的 IsCompleted 属性进行轮询，以确定命令是否已完成；或者使用返回的 IAsyncResult 的 AsyncWaitHandle 属性，等待一个或多个命令完成。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的控制台应用程序启动异步检索数据读取器的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 SqlDataReader 并显示其内容。 下面的控制台应用程序启动异步检索数据读取器的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 SqlDataReader 并显示其内容。 下面的控制台应用程序启动异步检索数据读取器的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 SqlDataReader 并显示其内容。

此示例还会在行为参数中传递 CommandBehavior.CloseConnection 和 CommandBehavior.SingleRow 值，从而在关闭返回的 SqlDataReader 时关闭连接，并针对单个行结果进行优化。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        ' This example is not terribly useful, but it proves a point.
        ' The WAITFOR statement simply adds enough time to prove the
        ' asynchronous nature of the command.
        Dim commandText As String = _
         "WAITFOR DELAY '00:00:03';" & _
         "SELECT ProductID, Name FROM Production.Product WHERE ListPrice < 100"

        RunCommandAsynchronously(commandText, GetConnectionString())

        Console.WriteLine("Press ENTER to continue.")
        Console.ReadLine()
    End Sub

    Private Sub RunCommandAsynchronously( _
     ByVal commandText As String, ByVal connectionString As String)

        ' Given command text and connection string, asynchronously execute
        ' the specified command against the connection. For this example,
        ' the code displays an indicator as it is working, verifying the
        ' asynchronous behavior.
        Try
            ' The code does not need to handle closing the connection explicitly--
            ' the use of the CommandBehavior.CloseConnection option takes care
            ' of that for you.
            Dim connection As New SqlConnection(connectionString)
            Dim command As New SqlCommand(commandText, connection)

            connection.Open()
            Dim result As IAsyncResult = _
              command.BeginExecuteReader(CommandBehavior.CloseConnection)

            ' Although it is not necessary, the following code
            ' displays a counter in the console window, indicating that
            ' the main thread is not blocked while awaiting the command
            ' results.
            Dim count As Integer = 0
            While Not result.IsCompleted
                count += 1
                Console.WriteLine("Waiting ({0})", count)
                ' Wait for 1/10 second, so the counter
                ' does not consume all available resources
                ' on the main thread.
                Threading.Thread.Sleep(100)
            End While

            ' The "using" statement closes the SqlDataReader when it is
            ' done executing.
            Using reader As SqlDataReader = command.EndExecuteReader(result)
                DisplayResults(reader)
            End Using
        Catch ex As SqlException
            Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message)
        Catch ex As InvalidOperationException
            Console.WriteLine("Error: {0}", ex.Message)
        Catch ex As Exception
            ' You might want to pass these errors
            ' back out to the caller.
            Console.WriteLine("Error: {0}", ex.Message)
        End Try
    End Sub

    Private Sub DisplayResults(ByVal reader As SqlDataReader)
        ' Display the data within the reader.
        While reader.Read()
            ' Display all the columns.
            For i As Integer = 0 To reader.FieldCount - 1
                Console.Write("{0} ", reader.GetValue(i))
            Next
            Console.WriteLine()
        End While
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you have not included "Asynchronous Processing=true" in the
        ' connection string, the command is not able
        ' to execute asynchronously.
        Return "Data Source=(local);Integrated Security=true;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function
End Module

using System.Data.SqlClient;
class Class1
{
    static void Main()
    {
        // This example is not terribly useful, but it proves a point.
        // The WAITFOR statement simply adds enough time to prove the
        // asynchronous nature of the command.
        string commandText = "WAITFOR DELAY '00:00:03';" +
            "SELECT ProductID, Name FROM Production.Product WHERE ListPrice < 100";

        RunCommandAsynchronously(commandText, GetConnectionString());

        Console.WriteLine("Press ENTER to continue.");
        Console.ReadLine();
    }

    private static void RunCommandAsynchronously(
        string commandText, string connectionString)
    {
        // Given command text and connection string, asynchronously execute
        // the specified command against the connection. For this example,
        // the code displays an indicator as it is working, verifying the
        // asynchronous behavior.

        try
        {
            // The code does not need to handle closing the connection explicitly--
            // the use of the CommandBehavior.CloseConnection option takes care
            // of that for you.
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand command = new SqlCommand(commandText, connection);

            connection.Open();
            IAsyncResult result = command.BeginExecuteReader(
                CommandBehavior.CloseConnection);

            // Although it is not necessary, the following code
            // displays a counter in the console window, indicating that
            // the main thread is not blocked while awaiting the command
            // results.
            int count = 0;
            while (!result.IsCompleted)
            {
                Console.WriteLine("Waiting ({0})", count++);
                // Wait for 1/10 second, so the counter
                // does not consume all available resources
                // on the main thread.
                System.Threading.Thread.Sleep(100);
            }

            using (SqlDataReader reader = command.EndExecuteReader(result))
            {
                DisplayResults(reader);
            }
        }
        catch (SqlException ex)
        {
            Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message);
        }
        catch (InvalidOperationException ex)
        {
            Console.WriteLine("Error: {0}", ex.Message);
        }
        catch (Exception ex)
        {
            // You might want to pass these errors
            // back out to the caller.
            Console.WriteLine("Error: {0}", ex.Message);
        }
    }

    private static void DisplayResults(SqlDataReader reader)
    {
        // Display the data within the reader.
        while (reader.Read())
        {
            // Display all the columns.
            for (int i = 0; i < reader.FieldCount; i++)
            {
                Console.Write("{0}\t", reader.GetValue(i));
            }
            Console.WriteLine();
        }
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.

        // If you have not included "Asynchronous Processing=true" in the
        // connection string, the command is not able
        // to execute asynchronously.
        return "Data Source=(local);Integrated Security=true;" +
            "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteReader 方法 (AsyncCallback, Object)

SqlCommand
.
.
::
.
BeginExecuteReader 方法 (AsyncCallback, Object)
SqlCommand 类

如果提供回调过程和状态信息，则启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并从服务器中检索一个或多个结果集。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteReader ( _
    callback As AsyncCallback, _
    stateObject As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteReader(
    AsyncCallback callback,
    Object stateObject
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteReader(
    AsyncCallback^ callback,
    Object^ stateObject
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteReader :
        callback:AsyncCallback *
        stateObject:Object -> IAsyncResult

参数

callback
类型： System AsyncCallback
命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。 命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。
stateObject
类型： System Object
传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。 传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用 EndExecuteReader（返回一个可用于检索返回行的 SqlDataReader 实例）时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。

由于回调过程在 Microsoft .NET 运行时提供的后台线程中执行，因此应采用一种严谨的方法来处理应用程序内的跨线程交互，这一点非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。 由于回调过程在 Microsoft .NET 运行时提供的后台线程中执行，因此应采用一种严谨的方法来处理应用程序内的跨线程交互，这一点非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。 由于回调过程在 Microsoft .NET 运行时提供的后台线程中执行，因此应采用一种严谨的方法来处理应用程序内的跨线程交互，这一点非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。

在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的 Windows 应用程序演示 BeginExecuteReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。由于示例异步执行命令，因此窗体在等待结果时保持响应。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 — 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteReader 初始调用的 EndExecuteReader 方法。 下面的 Windows 应用程序演示 BeginExecuteReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。由于示例异步执行命令，因此窗体在等待结果时保持响应。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 — 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteReader 初始调用的 EndExecuteReader 方法。 下面的 Windows 应用程序演示 BeginExecuteReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。由于示例异步执行命令，因此窗体在等待结果时保持响应。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 — 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteReader 初始调用的 EndExecuteReader 方法。

该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。

要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 DataGridView 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 DataGridView 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 DataGridView 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。

Imports System.Data.SqlClient

Public Class Form1
    ' Add this code to the form's class:
    ' You need this delegate in order to fill the grid from
    ' a thread other than the form's thread. See the HandleCallback
    ' procedure for more information.
    Private Delegate Sub FillGridDelegate(ByVal reader As SqlDataReader)

    ' You need this delegate to update the status bar.
    Private Delegate Sub DisplayStatusDelegate(ByVal Text As String)

    ' This flag ensures that the user does not attempt
    ' to restart the command or close the form while the
    ' asynchronous command is executing.
    Private isExecuting As Boolean

    ' Because the overloaded version of BeginExecuteReader
    ' demonstrated here does not allow you to have the connection
    ' closed automatically, this example maintains the
    ' connection object externally, so that it is available for closing.
    Private connection As SqlConnection

    Private Sub DisplayStatus(ByVal Text As String)
        Me.Label1.Text = Text
    End Sub

    Private Sub FillGrid(ByVal reader As SqlDataReader)
        Try
            Dim table As New DataTable
            table.Load(reader)
            Me.DataGridView1.DataSource = table
            DisplayStatus("Ready")

        Catch ex As Exception
            ' Because you are guaranteed this procedure
            ' is running from within the form's thread,
            ' it can directly interact with members of the form.
            DisplayStatus(String.Format("Ready (last attempt failed: {0})", ex.Message))
        Finally
            ' Do not forget to close the connection, as well.
            If Not reader Is Nothing Then
                reader.Close()
            End If
            If Not connection Is Nothing Then
                connection.Close()
            End If
        End Try
    End Sub

    Private Sub HandleCallback(ByVal result As IAsyncResult)
        Try
            ' Retrieve the original command object, passed
            ' to this procedure in the AsyncState property
            ' of the IAsyncResult parameter.
            Dim command As SqlCommand = CType(result.AsyncState, SqlCommand)
            Dim reader As SqlDataReader = command.EndExecuteReader(result)

            ' You may not interact with the form and its contents
            ' from a different thread, and this callback procedure
            ' is all but guaranteed to be running from a different thread
            ' than the form. Therefore you cannot simply call code that
            ' fills the grid, like this:
            ' FillGrid(reader)

            ' Instead, you must call the procedure from the form's thread.
            ' One simple way to accomplish this is to call the Invoke
            ' method of the form, which calls the delegate you supply
            ' from the form's thread.
            Dim del As New FillGridDelegate(AddressOf FillGrid)
            Me.Invoke(del, reader)
            ' Do not close the reader here, because it is being used in
            ' a separate thread. Instead, have the procedure you have
            ' called close the reader once it is done with it.

        Catch ex As Exception
            ' Because you are now running code in a separate thread,
            ' if you do not handle the exception here, none of your other
            ' code catches the exception. Because there is none of
            ' your code on the call stack in this thread, there is nothing
            ' higher up the stack to catch the exception if you do not
            ' handle it here. You can either log the exception or
            ' invoke a delegate (as in the non-error case in this
            ' example) to display the error on the form. In no case
            ' can you simply display the error without executing a delegate
            ' as in the Try block here.

            ' You can create the delegate instance as you
            ' invoke it, like this:
            Me.Invoke(New DisplayStatusDelegate(AddressOf DisplayStatus), _
             "Error: " & ex.Message)
        Finally
            isExecuting = False
        End Try
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you do not include the Asynchronous Processing=true name/value pair,
        ' you wo not be able to execute the command asynchronously.

        Return "Data Source=(local);Integrated Security=true;" & _
        "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        If isExecuting Then
            MessageBox.Show(Me, _
                "Already executing. Please wait until the current query " & _
                "has completed.")
        Else
            Dim command As SqlCommand
            Try
                DisplayStatus("Connecting...")
                connection = New SqlConnection(GetConnectionString())
                ' To emulate a long-running query, wait for
                ' a few seconds before retrieving the real data.
                command = New SqlCommand( _
                 "WAITFOR DELAY '0:0:5';" & _
                 "SELECT ProductID, Name, ListPrice, Weight FROM Production.Product", _
                 connection)
                connection.Open()

                DisplayStatus("Executing...")
                isExecuting = True
                ' Although it is not required that you pass the
                ' SqlCommand object as the second parameter in the
                ' BeginExecuteReader call, doing so makes it easier
                ' to call EndExecuteReader in the callback procedure.
                Dim callback As New AsyncCallback(AddressOf HandleCallback)
                command.BeginExecuteReader(callback, command)

            Catch ex As Exception
                DisplayStatus("Error: " & ex.Message)
                If connection IsNot Nothing Then
                    connection.Close()
                End If
            End Try
        End If
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.FormClosingEventArgs) _
        Handles Me.FormClosing
        If isExecuting Then
            MessageBox.Show(Me, "Cannot close the form until " & _
              "the pending asynchronous command has completed. Please wait...")
            e.Cancel = True
        End If
    End Sub
End Class

using System.Data.SqlClient;

namespace Microsoft.AdoDotNet.CodeSamples
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // Hook up the form's Load event handler (you can double-click on
        // the form's design surface in Visual Studio), and then add
        // this code to the form's class:

        // You need this delegate in order to fill the grid from
        // a thread other than the form's thread. See the HandleCallback
        // procedure for more information.
        private delegate void FillGridDelegate(SqlDataReader reader);

        // You need this delegate to update the status bar.
        private delegate void DisplayStatusDelegate(string Text);

        // This flag ensures that the user does not attempt
        // to restart the command or close the form while the
        // asynchronous command is executing.
        private bool isExecuting = false;

        // Because the overloaded version of BeginExecuteReader
        // demonstrated here does not allow you to have the connection
        // closed automatically, this example maintains the
        // connection object externally, so that it is available for closing.
        private SqlConnection connection = null;

        private void DisplayStatus(string Text)
        {
            this.label1.Text = Text;
        }

        private void FillGrid(SqlDataReader reader)
        {
            try
            {
                DataTable table = new DataTable();
                table.Load(reader);
                this.dataGridView1.DataSource = table;
                DisplayStatus("Ready");
            }
            catch (Exception ex)
            {
                // Because you are guaranteed this procedure
                // is running from within the form's thread,
                // it can directly interact with members of the form.
                DisplayStatus(string.Format("Ready (last attempt failed: {0})",
                    ex.Message));
            }
            finally
            {
                // Do not forget to close the connection, as well.
                if (reader != null)
                {
                    reader.Close();
                }
                if (connection != null)
                {
                    connection.Close();
                }
            }
        }

        private void HandleCallback(IAsyncResult result)
        {
            try
            {
                // Retrieve the original command object, passed
                // to this procedure in the AsyncState property
                // of the IAsyncResult parameter.
                SqlCommand command = (SqlCommand)result.AsyncState;
                SqlDataReader reader = command.EndExecuteReader(result);
                // You may not interact with the form and its contents
                // from a different thread, and this callback procedure
                // is all but guaranteed to be running from a different thread
                // than the form. Therefore you cannot simply call code that
                // fills the grid, like this:
                // FillGrid(reader);
                // Instead, you must call the procedure from the form's thread.
                // One simple way to accomplish this is to call the Invoke
                // method of the form, which calls the delegate you supply
                // from the form's thread.
                FillGridDelegate del = new FillGridDelegate(FillGrid);
                this.Invoke(del, reader);
                // Do not close the reader here, because it is being used in
                // a separate thread. Instead, have the procedure you have
                // called close the reader once it is done with it.
            }
            catch (Exception ex)
            {
                // Because you are now running code in a separate thread,
                // if you do not handle the exception here, none of your other
                // code catches the exception. Because there is none of
                // your code on the call stack in this thread, there is nothing
                // higher up the stack to catch the exception if you do not
                // handle it here. You can either log the exception or
                // invoke a delegate (as in the non-error case in this
                // example) to display the error on the form. In no case
                // can you simply display the error without executing a delegate
                // as in the try block here.
                // You can create the delegate instance as you
                // invoke it, like this:
                this.Invoke(new DisplayStatusDelegate(DisplayStatus),
                    "Error: " + ex.Message);
            }
            finally
            {
                isExecuting = false;
            }
        }

        private string GetConnectionString()
        {
            // To avoid storing the connection string in your code,
            // you can retrieve it from a configuration file.

            // If you do not include the Asynchronous Processing=true name/value pair,
            // you wo not be able to execute the command asynchronously.
            return "Data Source=(local);Integrated Security=true;" +
                "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this,
                    "Already executing. Please wait until the current query " +
                    "has completed.");
            }
            else
            {
                SqlCommand command = null;
                try
                {
                    DisplayStatus("Connecting...");
                    connection = new SqlConnection(GetConnectionString());
                    // To emulate a long-running query, wait for
                    // a few seconds before retrieving the real data.
                    command = new SqlCommand("WAITFOR DELAY '0:0:5';" +
                        "SELECT ProductID, Name, ListPrice, Weight FROM Production.Product",
                        connection);
                    connection.Open();

                    DisplayStatus("Executing...");
                    isExecuting = true;
                    // Although it is not required that you pass the
                    // SqlCommand object as the second parameter in the
                    // BeginExecuteReader call, doing so makes it easier
                    // to call EndExecuteReader in the callback procedure.
                    AsyncCallback callback = new AsyncCallback(HandleCallback);
                    command.BeginExecuteReader(callback, command);
                }
                catch (Exception ex)
                {
                    DisplayStatus("Error: " + ex.Message);
                    if (connection != null)
                    {
                        connection.Close();
                    }
                }
            }
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
        }

        void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this, "Cannot close the form until " +
                    "the pending asynchronous command has completed. Please wait...");
                e.Cancel = true;
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteReader 方法 (AsyncCallback, Object, CommandBehavior)

SqlCommand
.
.
::
.
BeginExecuteReader 方法 (AsyncCallback, Object, CommandBehavior)
SqlCommand 类

在给定回调过程和状态信息的情况下，通过使用 CommandBehavior 值之一并从服务器中检索一个或多个结果集，初始化由此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteReader ( _
    callback As AsyncCallback, _
    stateObject As Object, _
    behavior As CommandBehavior _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteReader(
    AsyncCallback callback,
    Object stateObject,
    CommandBehavior behavior
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteReader(
    AsyncCallback^ callback,
    Object^ stateObject,
    CommandBehavior behavior
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteReader :
        callback:AsyncCallback *
        stateObject:Object *
        behavior:CommandBehavior -> IAsyncResult

参数

callback
类型： System AsyncCallback
命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。 命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。
stateObject
类型： System Object
传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。 传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。
behavior
类型： System.Data CommandBehavior
CommandBehavior 值之一，指示用于语句执行和数据检索的选项。

返回值

类型： System IAsyncResult
一个可用于轮询和/或等待结果的 IAsyncResult；当调用 EndExecuteReader（返回一个可用于检索返回行的 SqlDataReader 实例）时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteReader 方法启动异步执行返回行的 Transact-SQL 语句或存储过程的进程，因此，在执行语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteReader 方法以完成操作并检索命令返回的 SqlDataReader。BeginExecuteReader 方法立即返回，但在代码执行相应的 EndExecuteReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。

通过 behavior 参数，可以指定用于控制命令的行为及其连接的选项。可以将这些值组合使用（使用编程语言的 Or 运算符）；一般情况下，开发人员使用 CloseConnection 值，确保在关闭 SqlDataReader 时由运行时关闭连接。开发人员还可以在预先知道 Transact-SQL 语句或存储过程仅返回一行时，通过指定 SingleRow 值来优化 SqlDataReader 的行为。 通过 behavior 参数，可以指定用于控制命令的行为及其连接的选项。可以将这些值组合使用（使用编程语言的 Or 运算符）；一般情况下，开发人员使用 CloseConnection 值，确保在关闭 SqlDataReader 时由运行时关闭连接。开发人员还可以在预先知道 Transact-SQL 语句或存储过程仅返回一行时，通过指定 SingleRow 值来优化 SqlDataReader 的行为。 通过 behavior 参数，可以指定用于控制命令的行为及其连接的选项。可以将这些值组合使用（使用编程语言的 Or 运算符）；一般情况下，开发人员使用 CloseConnection 值，确保在关闭 SqlDataReader 时由运行时关闭连接。开发人员还可以在预先知道 Transact-SQL 语句或存储过程仅返回一行时，通过指定 SingleRow 值来优化 SqlDataReader 的行为。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。这意味着，当需要更多数据时，如果基础网络的读操作被阻止，那么对 Read 的调用可能会被阻止。

由于回调过程从 Microsoft .NET 公共语言运行时提供的后台线程内执行，因此采取严格的措施从应用程序内处理线程间交互非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。 由于回调过程从 Microsoft .NET 公共语言运行时提供的后台线程内执行，因此采取严格的措施从应用程序内处理线程间交互非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。 由于回调过程从 Microsoft .NET 公共语言运行时提供的后台线程内执行，因此采取严格的措施从应用程序内处理线程间交互非常重要。例如，不得从回调过程内与窗体内容进行交互。如果您不得不更新窗体，则必须切换回该窗体的线程才能完成您的工作。本主题中的示例演示了此行为。

在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的 Windows 应用程序演示 BeginExecuteReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。由于示例异步执行命令，因此窗体在等待结果时保持响应。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 — 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteReader 初始调用的 EndExecuteReader 方法。 下面的 Windows 应用程序演示 BeginExecuteReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。由于示例异步执行命令，因此窗体在等待结果时保持响应。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 — 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteReader 初始调用的 EndExecuteReader 方法。 下面的 Windows 应用程序演示 BeginExecuteReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。由于示例异步执行命令，因此窗体在等待结果时保持响应。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 — 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteReader 初始调用的 EndExecuteReader 方法。

该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。

要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 DataGridView 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 DataGridView 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 DataGridView 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。

此示例在 behavior 参数中传递 CommandBehavior.CloseConnection 值，从而导致返回的 SqlDataReader 在关闭时自动关闭其连接。

Imports System.Data.SqlClient

Public Class Form1
    ' Add this code to the form's class:
    ' You this delegate in order to fill the grid from
    ' a thread other than the form's thread. See the HandleCallback
    ' procedure for more information.
    Private Delegate Sub FillGridDelegate(ByVal reader As SqlDataReader)

    ' You need this delegate to update the status bar.
    Private Delegate Sub DisplayStatusDelegate(ByVal Text As String)

    ' This flag ensures that the user does not attempt
    ' to restart the command or close the form while the
    ' asynchronous command is executing.
    Private isExecuting As Boolean

    Private Sub DisplayStatus(ByVal Text As String)
        Me.Label1.Text = Text
    End Sub

    Private Sub FillGrid(ByVal reader As SqlDataReader)
        Try
            Dim table As New DataTable
            table.Load(reader)
            Me.DataGridView1.DataSource = table
            DisplayStatus("Ready")

        Catch ex As Exception
            ' Because you are guaranteed this procedure
            ' is running from within the form's thread,
            ' it can directly interact with members of the form.
            DisplayStatus(String.Format("Ready (last attempt failed: {0})", ex.Message))
        Finally
            ' Closing the reader also closes the connection,
            ' because this reader was created using the
            ' CommandBehavior.CloseConnection value.
            If reader IsNot Nothing Then
                reader.Close()
            End If
        End Try
    End Sub

    Private Sub HandleCallback(ByVal result As IAsyncResult)
        Try
            ' Retrieve the original command object, passed
            ' to this procedure in the AsyncState property
            ' of the IAsyncResult parameter.
            Dim command As SqlCommand = CType(result.AsyncState, SqlCommand)
            Dim reader As SqlDataReader = command.EndExecuteReader(result)

            ' You may not interact with the form and its contents
            ' from a different thread, and this callback procedure
            ' is all but guaranteed to be running from a different thread
            ' than the form. Therefore you cannot simply call code that
            ' fills the grid, like this:
            ' FillGrid(reader)

            ' Instead, you must call the procedure from the form's thread.
            ' One simple way to accomplish this is to call the Invoke
            ' method of the form, which calls the delegate you supply
            ' from the form's thread.
            Dim del As New FillGridDelegate(AddressOf FillGrid)
            Me.Invoke(del, reader)

            ' Do not close the reader here, because it is being used in
            ' a separate thread. Instead, have the procedure you have
            ' called close the reader once it is done with it.

        Catch ex As Exception
            ' Because you are now running code in a separate thread,
            ' if you do not handle the exception here, none of your other
            ' code catches the exception. Because there is none of
            ' your code on the call stack in this thread, there is nothing
            ' higher up the stack to catch the exception if you do not
            ' handle it here. You can either log the exception or
            ' invoke a delegate (as in the non-error case in this
            ' example) to display the error on the form. In no case
            ' can you simply display the error without executing a delegate
            ' as in the Try block here.

            ' You can create the delegate instance as you
            ' invoke it, like this:
            Me.Invoke(New DisplayStatusDelegate(AddressOf DisplayStatus), _
             "Error: " & ex.Message)
        Finally
            isExecuting = False
        End Try
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you do not include the Asynchronous Processing=true name/value pair,
        ' you wo not be able to execute the command asynchronously.

        Return "Data Source=(local);Integrated Security=true;" & _
        "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        If isExecuting Then
            MessageBox.Show(Me, "Already executing. Please wait until the current query " & _
             "has completed.")
        Else
            Dim connection As SqlConnection
            Dim command As SqlCommand
            Try
                DisplayStatus("Connecting...")
                connection = New SqlConnection(GetConnectionString())
                ' To emulate a long-running query, wait for
                ' a few seconds before retrieving the real data.
                command = New SqlCommand( _
                 "WAITFOR DELAY '0:0:5';" & _
                 "SELECT ProductID, Name, ListPrice, Weight FROM Production.Product", _
                 connection)
                connection.Open()

                DisplayStatus("Executing...")
                isExecuting = True
                ' Although it is not required that you pass the
                ' SqlCommand object as the second parameter in the
                ' BeginExecuteReader call, doing so makes it easier
                ' to call EndExecuteReader in the callback procedure.
                Dim callback As New AsyncCallback(AddressOf HandleCallback)
                command.BeginExecuteReader(callback, command, _
                  CommandBehavior.CloseConnection)

            Catch ex As Exception
                DisplayStatus("Error: " & ex.Message)
                If connection IsNot Nothing Then
                    connection.Close()
                End If
            End Try
        End If
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If isExecuting Then
            MessageBox.Show(Me, "Cannot close the form until " & _
             "the pending asynchronous command has completed. Please wait...")
            e.Cancel = True
        End If
    End Sub
End Class

using System.Data.SqlClient;

namespace Microsoft.AdoDotNet.CodeSamples
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // Hook up the form's Load event handler (you can double-click on
        // the form's design surface in Visual Studio), and then add
        // this code to the form's class:
        // You need this delegate in order to fill the grid from
        // a thread other than the form's thread. See the HandleCallback
        // procedure for more information.
        private delegate void FillGridDelegate(SqlDataReader reader);

        // You need this delegate to update the status bar.
        private delegate void DisplayStatusDelegate(string Text);

        // This flag ensures that the user does not attempt
        // to restart the command or close the form while the
        // asynchronous command is executing.
        private bool isExecuting;

        private void DisplayStatus(string Text)
        {
            this.label1.Text = Text;
        }

        private void FillGrid(SqlDataReader reader)
        {
            try
            {
                DataTable table = new DataTable();
                table.Load(reader);
                this.dataGridView1.DataSource = table;
                DisplayStatus("Ready");
            }
            catch (Exception ex)
            {
                // Because you are guaranteed this procedure
                // is running from within the form's thread,
                // it can directly interact with members of the form.
                DisplayStatus(string.Format("Ready (last attempt failed: {0})",
                    ex.Message));
            }
            finally
            {
                // Closing the reader also closes the connection,
                // because this reader was created using the
                // CommandBehavior.CloseConnection value.
                if (reader != null)
                {
                    reader.Close();
                }
            }
        }

        private void HandleCallback(IAsyncResult result)
        {
            try
            {
                // Retrieve the original command object, passed
                // to this procedure in the AsyncState property
                // of the IAsyncResult parameter.
                SqlCommand command = (SqlCommand)result.AsyncState;
                SqlDataReader reader = command.EndExecuteReader(result);
                // You may not interact with the form and its contents
                // from a different thread, and this callback procedure
                // is all but guaranteed to be running from a different thread
                // than the form. Therefore you cannot simply call code that
                // fills the grid, like this:
                // FillGrid(reader);
                // Instead, you must call the procedure from the form's thread.
                // One simple way to accomplish this is to call the Invoke
                // method of the form, which calls the delegate you supply
                // from the form's thread.
                FillGridDelegate del = new FillGridDelegate(FillGrid);
                this.Invoke(del, reader);
                // Do not close the reader here, because it is being used in
                // a separate thread. Instead, have the procedure you have
                // called close the reader once it is done with it.
            }
            catch (Exception ex)
            {
                // Because you are now running code in a separate thread,
                // if you do not handle the exception here, none of your other
                // code catches the exception. Because there is none of
                // your code on the call stack in this thread, there is nothing
                // higher up the stack to catch the exception if you do not
                // handle it here. You can either log the exception or
                // invoke a delegate (as in the non-error case in this
                // example) to display the error on the form. In no case
                // can you simply display the error without executing a delegate
                // as in the try block here.
                // You can create the delegate instance as you
                // invoke it, like this:
                this.Invoke(new DisplayStatusDelegate(DisplayStatus), "Error: " +
                    ex.Message);
            }
            finally
            {
                isExecuting = false;
            }
        }

        private string GetConnectionString()
        {
            // To avoid storing the connection string in your code,
            // you can retrieve it from a configuration file.

            // If you do not include the Asynchronous Processing=true name/value pair,
            // you wo not be able to execute the command asynchronously.
            return "Data Source=(local);Integrated Security=true;" +
                "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this,
                    "Already executing. Please wait until the current query " +
                    "has completed.");
            }
            else
            {
                SqlCommand command = null;
                SqlConnection connection = null;
                try
                {
                    DisplayStatus("Connecting...");
                    connection = new SqlConnection(GetConnectionString());
                    // To emulate a long-running query, wait for
                    // a few seconds before retrieving the real data.
                    command = new SqlCommand("WAITFOR DELAY '0:0:5';" +
                        "SELECT ProductID, Name, ListPrice, Weight FROM Production.Product",
                        connection);
                    connection.Open();

                    DisplayStatus("Executing...");
                    isExecuting = true;
                    // Although it is not required that you pass the
                    // SqlCommand object as the second parameter in the
                    // BeginExecuteReader call, doing so makes it easier
                    // to call EndExecuteReader in the callback procedure.
                    AsyncCallback callback = new AsyncCallback(HandleCallback);
                    command.BeginExecuteReader(callback, command,
                        CommandBehavior.CloseConnection);
                }
                catch (Exception ex)
                {
                    DisplayStatus("Error: " + ex.Message);
                    if (connection != null)
                    {
                        connection.Close();
                    }
                }
            }
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
        }

        void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this, "Cannot close the form until " +
                    "the pending asynchronous command has completed. Please wait...");
                e.Cancel = true;
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteXmlReader 方法

SqlCommand
.
.
::
.
BeginExecuteXmlReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并将结果作为 XmlReader 对象返回。

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.BeginExecuteXmlReader 方法

SqlCommand
.
.
::
.
BeginExecuteXmlReader 方法
SqlCommand 类

启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并将结果作为 XmlReader 对象返回。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteXmlReader As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteXmlReader()
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteXmlReader()
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteXmlReader : unit -> IAsyncResult

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用可返回单个 XML 值的 EndExecuteXmlReader 时，也需要该值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索命令返回的 XML。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索命令返回的 XML。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索命令返回的 XML。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索命令返回的 XML。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定一个返回包含有效 XML 的 ntext 数据的语句。 CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定一个返回包含有效 XML 的 ntext 数据的语句。

典型的 BeginExecuteXmlReader 查询可以采用类似于下面的 C# 示例的格式：

SqlCommand command = new SqlCommand("SELECT ContactID, FirstName, LastName FROM dbo.Contact FOR XML AUTO, XMLDATA", SqlConn);
说明 说明

这种类型的查询仅适用于 Microsoft SQL Server 2000 或更高版本。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的“Guidelines for Using the FOR XML Clause”（FOR XML 子句使用指南）。 这种类型的查询仅适用于 Microsoft SQL Server 2000 或更高版本。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的“Guidelines for Using the FOR XML Clause”（FOR XML 子句使用指南）。

使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。 使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。

如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。虽然命令的执行是异步的，但获取值的操作仍然是同步的。

由于此重载不支持回调过程，因此，开发人员需要使用 BeginExecuteXmlReader 方法返回的 IAsyncResult 的 IsCompleted 属性进行轮询，以确定命令是否已完成；或者使用返回的 IAsyncResult 的 AsyncWaitHandle 属性，等待一个或多个命令完成。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的控制台应用程序启动异步检索 XML 数据的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 XML 并显示其内容。 下面的控制台应用程序启动异步检索 XML 数据的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 XML 并显示其内容。 下面的控制台应用程序启动异步检索 XML 数据的进程。当等待结果时，该简单应用程序会参与循环，以研究 IsCompleted 属性值。该进程完成后，代码会立即检索 XML 并显示其内容。

Imports System.Data.SqlClient
Imports System.Xml

Module Module1

    Sub Main()
        ' This example is not terribly effective, but it proves a point.
        ' The WAITFOR statement simply adds enough time to prove the
        ' asynchronous nature of the command.
        Dim commandText As String = _
         "WAITFOR DELAY '00:00:03';" & _
         "SELECT Name, ListPrice FROM Production.Product " & _
         "WHERE ListPrice < 100 " & _
         "FOR XML AUTO, XMLDATA"

        RunCommandAsynchronously(commandText, GetConnectionString())

        Console.WriteLine("Press ENTER to continue.")
        Console.ReadLine()
    End Sub

    Private Sub RunCommandAsynchronously( _
     ByVal commandText As String, ByVal connectionString As String)

        ' Given command text and connection string, asynchronously execute
        ' the specified command against the connection. For this example,
        ' the code displays an indicator as it is working, verifying the
        ' asynchronous behavior.
        Using connection As New SqlConnection(connectionString)
            Try
                Dim command As New SqlCommand(commandText, connection)
                connection.Open()
                Dim result As IAsyncResult = command.BeginExecuteXmlReader()

                ' Although it is not necessary, the following procedure
                ' displays a counter in the console window, indicating that
                ' the main thread is not blocked while awaiting the command
                ' results.
                Dim count As Integer = 0
                While Not result.IsCompleted
                    count += 1
                    Console.WriteLine("Waiting ({0})", count)
                    ' Wait for 1/10 second, so the counter
                    ' does not consume all available resources
                    ' on the main thread.
                    Threading.Thread.Sleep(100)
                End While

                Using reader As XmlReader = command.EndExecuteXmlReader(result)
                    DisplayProductInfo(reader)
                End Using
            Catch ex As SqlException
                Console.WriteLine("Error ({0}): {1}", ex.Number, ex.Message)
            Catch ex As InvalidOperationException
                Console.WriteLine("Error: {0}", ex.Message)
            Catch ex As Exception
                ' You might want to pass these errors
                ' back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message)
            End Try
        End Using
    End Sub

    Private Sub DisplayProductInfo(ByVal reader As XmlReader)
        ' Display the data within the reader.
        While reader.Read()
            ' Skip past items that are not from the correct table.
            If reader.LocalName.ToString = "Production.Product" Then
                Console.WriteLine("{0}: {1:C}", _
                 reader("Name"), CSng(reader("ListPrice")))
            End If
        End While
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you have not included "Asynchronous Processing=true" in the
        ' connection string, the command is not able
        ' to execute asynchronously.
        Return "Data Source=(local);Integrated Security=true;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function
End Module

using System.Data.SqlClient;
using System.Xml;

class Class1
{
    static void Main()
    {
        // This example is not terribly effective, but it proves a point.
        // The WAITFOR statement simply adds enough time to prove the
        // asynchronous nature of the command.
        string commandText =
            "WAITFOR DELAY '00:00:03';" +
            "SELECT Name, ListPrice FROM Production.Product " +
            "WHERE ListPrice < 100 " +
            "FOR XML AUTO, XMLDATA";

        RunCommandAsynchronously(commandText, GetConnectionString());

        Console.WriteLine("Press ENTER to continue.");
        Console.ReadLine();
    }

    private static void RunCommandAsynchronously(
        string commandText, string connectionString)
    {
        // Given command text and connection string, asynchronously execute
        // the specified command against the connection. For this example,
        // the code displays an indicator as it is working, verifying the
        // asynchronous behavior.
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(commandText, connection);

            connection.Open();
            IAsyncResult result = command.BeginExecuteXmlReader();

            // Although it is not necessary, the following procedure
            // displays a counter in the console window, indicating that
            // the main thread is not blocked while awaiting the command
            // results.
            int count = 0;
            while (!result.IsCompleted)
            {
                Console.WriteLine("Waiting ({0})", count++);
                // Wait for 1/10 second, so the counter
                // does not consume all available resources
                // on the main thread.
                System.Threading.Thread.Sleep(100);
            }

            XmlReader reader = command.EndExecuteXmlReader(result);
            DisplayProductInfo(reader);
        }
    }

    private static void DisplayProductInfo(XmlReader reader)
    {
        // Display the data within the reader.
        while (reader.Read())
        {
            // Skip past items that are not from the correct table.
            if (reader.LocalName.ToString() == "Production.Product")
            {
                Console.WriteLine("{0}: {1:C}",
                    reader["Name"], Convert.ToSingle(reader["ListPrice"]));
            }
        }
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.

        // If you have not included "Asynchronous Processing=true" in the
        // connection string, the command is not able
        // to execute asynchronously.
        return "Data Source=(local);Integrated Security=true;" +
            "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteXmlReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.BeginExecuteXmlReader 方法 (AsyncCallback, Object)

SqlCommand
.
.
::
.
BeginExecuteXmlReader 方法 (AsyncCallback, Object)
SqlCommand 类

使用回调过程启动此 SqlCommand 描述的 Transact-SQL 语句或存储过程的异步执行，并将结果作为 XmlReader 对象返回。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Function BeginExecuteXmlReader ( _
    callback As AsyncCallback, _
    stateObject As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginExecuteXmlReader(
    AsyncCallback callback,
    Object stateObject
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
IAsyncResult^ BeginExecuteXmlReader(
    AsyncCallback^ callback,
    Object^ stateObject
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
member BeginExecuteXmlReader :
        callback:AsyncCallback *
        stateObject:Object -> IAsyncResult

参数

callback
类型： System AsyncCallback
命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。 命令执行完成时调用的 AsyncCallback 委托。传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Microsoft Visual Basic 中为 Nothing）以指示不需要回调。
stateObject
类型： System Object
传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。 传递到回调过程的用户定义的状态对象。使用 AsyncState 属性从回调过程内检索此对象。

返回值

类型： System IAsyncResult
可用于轮询和/或等待结果的 IAsyncResult；当调用将命令结果以 XML 格式返回的 EndExecuteXmlReader 时，也需要此值。
异常 | 条件
SqlException | 执行命令文本时出现的任何错误。
InvalidOperationException | 为此 SqlCommand 定义连接的连接字符串中未包含名称/值对“Asynchronous Processing=true”。

BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句或存储过程的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索请求的 XML 数据。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句或存储过程的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索请求的 XML 数据。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句或存储过程的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索请求的 XML 数据。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。 BeginExecuteXmlReader 方法启动将行作为 XML 返回的 Transact-SQL 语句或存储过程的异步执行进程，因此，在执行该语句的同时可以并发运行其他任务。当语句完成时，开发人员必须调用 EndExecuteXmlReader 方法以完成操作并检索请求的 XML 数据。BeginExecuteXmlReader 方法立即返回，但在代码执行相应的 EndExecuteXmlReader 方法调用之前，它不得对同一 SqlCommand 对象执行启动同步执行或异步执行的任何其他调用。如果命令尚未执行完就调用 EndExecuteXmlReader，会导致 SqlCommand 对象在命令执行完之前一直被阻止。

CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定一个返回包含有效 XML 的数据的语句。使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。 CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定一个返回包含有效 XML 的数据的语句。使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。 CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定一个返回包含有效 XML 的数据的语句。使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。 CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定一个返回包含有效 XML 的数据的语句。使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。

典型的 BeginExecuteXmlReader 查询可以采用类似于下面的 C# 示例的格式：

SqlCommand command = new SqlCommand("SELECT ContactID, FirstName, LastName FROM Contact FOR XML AUTO, XMLDATA", SqlConn);
说明 说明

这种类型的查询仅在 Microsoft SQL Server 2000 或更高版本中可用。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的“Guidelines for Using the FOR XML Clause”（FOR XML 子句使用指南）。 这种类型的查询仅在 Microsoft SQL Server 2000 或更高版本中可用。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的“Guidelines for Using the FOR XML Clause”（FOR XML 子句使用指南）。

使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。 使用 SQL Server 2005 时，此方法还可用于检索单行单列结果集。这种情况下，如果返回了多个行，则 EndExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。

如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。

通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteXmlReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteXmlReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。 通过 callback 参数，可以指定在语句完成时调用的 AsyncCallback 委托。您可以从该委托过程内或者从您应用程序内的其他任何位置调用 EndExecuteXmlReader 方法。此外，您还可以在 stateObject 参数中传递任何对象，并且回调过程可以使用 AsyncState 属性检索该信息。

请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。 请注意，命令文本和参数会同步发送到服务器。如果发送了较大的命令或许多参数，该方法可能会在写操作期间被阻止。命令发出后，该方法将立即返回，而不等待服务器的应答 -- 也就是说，读操作是异步执行的。

在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。 在回调过程中，执行此操作期间出现的所有错误都将作为异常引发。您必须在回调过程中（而不是在主应用程序中）处理异常。有关在回调过程中处理异常的其他信息，请参见本主题中的示例。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的 Windows 应用程序演示 BeginExecuteXmlReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 - 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteXmlReader 初始调用的 EndExecuteXmlReader 方法。 下面的 Windows 应用程序演示 BeginExecuteXmlReader 方法的用法，并且执行一条包含几秒钟延迟的 Transact-SQL 语句（模拟长时间运行的命令）。该示例将执行的 SqlCommand 对象作为 stateObject 参数传递 - 这使得从回调过程内检索 SqlCommand 对象变得很简单，以便代码可以调用对应于 BeginExecuteXmlReader 初始调用的 EndExecuteXmlReader 方法。

该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。 该示例演示了许多重要的技术。其中包括从单独的线程中调用与窗体进行交互的方法。此外，该示例还演示了必须如何阻止用户并发地执行同一个命令，以及必须如何确保窗体不会在调用回调过程之前关闭。

要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 ListBox 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 ListBox 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。 要设置该示例，请创建一个新的 Windows 应用程序。在窗体上放置一个 Button 控件、一个 ListBox 控件和一个 Label 控件（接受每个控件的默认名称）。向窗体的类添加以下代码，并根据环境的需要相应地修改连接字符串。

Imports System.Data.SqlClient
Imports System.Xml

Public Class Form1
    ' Add this code to the form's class:
    ' You need these delegates in order to display text from a thread
    ' other than the form's thread. See the HandleCallback
    ' procedure for more information.
    Private Delegate Sub DisplayInfoDelegate(ByVal Text As String)
    Private Delegate Sub DisplayReaderDelegate(ByVal reader As XmlReader)

    Private isExecuting As Boolean

    ' This example maintains the connection object
    ' externally, so that it is available for closing.
    Private connection As SqlConnection

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.

        ' If you have not included "Asynchronous Processing=true" in the
        ' connection string, the command is not able
        ' to execute asynchronously.
        Return "Data Source=(local);Integrated Security=true;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=true"
    End Function

    Private Sub DisplayStatus(ByVal Text As String)
        Me.Label1.Text = Text
    End Sub

    Private Sub ClearProductInfo()
        ' Clear the list box.
        Me.ListBox1.Items.Clear()
    End Sub

    Private Sub DisplayProductInfo(ByVal reader As XmlReader)
        ' Display the data within the reader.
        While reader.Read()
            ' Skip past items that are not from the correct table.
            If reader.LocalName.ToString = "Production.Product" Then
                Me.ListBox1.Items.Add(String.Format("{0}: {1:C}", _
                    reader("Name"), CSng(reader("ListPrice"))))
            End If
        End While
        DisplayStatus("Ready")
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If isExecuting Then
            MessageBox.Show(Me, "Cannot close the form until " & _
                "the pending asynchronous command has completed. Please wait...")
            e.Cancel = True
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        If isExecuting Then
            MessageBox.Show(Me, "Already executing. Please wait until the current query " & _
                "has completed.")
        Else
            Dim command As SqlCommand
            Try
                ClearProductInfo()
                DisplayStatus("Connecting...")
                connection = New SqlConnection(GetConnectionString())
                ' To emulate a long-running query, wait for
                ' a few seconds before working with the data.
                Dim commandText As String = _
                    "WAITFOR DELAY '00:00:03';" & _
                    "SELECT Name, ListPrice " & _
                    "FROM Production.Product WHERE ListPrice < 100 " & _
                    "FOR XML AUTO, XMLDATA"

                command = New SqlCommand(commandText, connection)
                connection.Open()

                DisplayStatus("Executing...")
                isExecuting = True
                ' Although it is not required that you pass the
                ' SqlCommand object as the second parameter in the
                ' BeginExecuteXmlReader call, doing so makes it easier
                ' to call EndExecuteXmlReader in the callback procedure.
                Dim callback As New AsyncCallback(AddressOf HandleCallback)
                command.BeginExecuteXmlReader(callback, command)

            Catch ex As Exception
                isExecuting = False
                DisplayStatus(String.Format("Ready (last error: {0})", ex.Message))
                If connection IsNot Nothing Then
                    connection.Close()
                End If
            End Try
        End If
    End Sub

    Private Sub HandleCallback(ByVal result As IAsyncResult)
        Try
            ' Retrieve the original command object, passed
            ' to this procedure in the AsyncState property
            ' of the IAsyncResult parameter.
            Dim command As SqlCommand = CType(result.AsyncState, SqlCommand)
            Dim reader As XmlReader = command.EndExecuteXmlReader(result)

            ' You may not interact with the form and its contents
            ' from a different thread, and this callback procedure
            ' is all but guaranteed to be running from a different thread
            ' than the form.

            ' Instead, you must call the procedure from the form's thread.
            ' One simple way to accomplish this is to call the Invoke
            ' method of the form, which calls the delegate you supply
            ' from the form's thread.
            Dim del As New DisplayReaderDelegate(AddressOf DisplayProductInfo)
            Me.Invoke(del, reader)

        Catch ex As Exception
            ' Because you are now running code in a separate thread,
            ' if you do not handle the exception here, none of your other
            ' code catches the exception. Because none of
            ' your code is on the call stack in this thread, there is nothing
            ' higher up the stack to catch the exception if you do not
            ' handle it here. You can either log the exception or
            ' invoke a delegate (as in the non-error case in this
            ' example) to display the error on the form. In no case
            ' can you simply display the error without executing a delegate
            ' as in the Try block here.

            ' You can create the delegate instance as you
            ' invoke it, like this:
            Me.Invoke(New DisplayInfoDelegate(AddressOf DisplayStatus), _
                String.Format("Ready(last error: {0}", ex.Message))
        Finally
            isExecuting = False
            If connection IsNot Nothing Then
                connection.Close()
            End If
        End Try
    End Sub
End Class

using System.Data.SqlClient;
using System.Xml;

namespace Microsoft.AdoDotNet.CodeSamples
{
    public partial class Form1 : Form
    {
        // Hook up the form's Load event handler and then add
        // this code to the form's class:
        // You need these delegates in order to display text from a thread
        // other than the form's thread. See the HandleCallback
        // procedure for more information.
        private delegate void DisplayInfoDelegate(string Text);
        private delegate void DisplayReaderDelegate(XmlReader reader);

        private bool isExecuting;

        // This example maintains the connection object
        // externally, so that it is available for closing.
        private SqlConnection connection;

        public Form1()
        {
            InitializeComponent();
        }

        private string GetConnectionString()
        {
            // To avoid storing the connection string in your code,
            // you can retrieve it from a configuration file.

            // If you do not include the Asynchronous Processing=true name/value pair,
            // you wo not be able to execute the command asynchronously.
            return "Data Source=(local);Integrated Security=true;" +
            "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
        }

        private void DisplayStatus(string Text)
        {
            this.label1.Text = Text;
        }

        private void ClearProductInfo()
        {
            // Clear the list box.
            this.listBox1.Items.Clear();
        }

        private void DisplayProductInfo(XmlReader reader)
        {
            // Display the data within the reader.
            while (reader.Read())
            {
                // Skip past items that are not from the correct table.
                if (reader.LocalName.ToString() == "Production.Product")
                {
                    this.listBox1.Items.Add(String.Format("{0}: {1:C}",
                        reader["Name"], Convert.ToDecimal(reader["ListPrice"])));
                }
            }
            DisplayStatus("Ready");
        }

        private void Form1_FormClosing(object sender,
            System.Windows.Forms.FormClosingEventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this, "Cannot close the form until " +
                    "the pending asynchronous command has completed. Please wait...");
                e.Cancel = true;
            }
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            if (isExecuting)
            {
                MessageBox.Show(this,
                    "Already executing. Please wait until the current query " +
                    "has completed.");
            }
            else
            {
                SqlCommand command = null;
                try
                {
                    ClearProductInfo();
                    DisplayStatus("Connecting...");
                    connection = new SqlConnection(GetConnectionString());

                    // To emulate a long-running query, wait for
                    // a few seconds before working with the data.
                    string commandText =
                        "WAITFOR DELAY '00:00:03';" +
                        "SELECT Name, ListPrice FROM Production.Product " +
                        "WHERE ListPrice < 100 " +
                        "FOR XML AUTO, XMLDATA";

                    command = new SqlCommand(commandText, connection);
                    connection.Open();

                    DisplayStatus("Executing...");
                    isExecuting = true;
                    // Although it is not required that you pass the
                    // SqlCommand object as the second parameter in the
                    // BeginExecuteXmlReader call, doing so makes it easier
                    // to call EndExecuteXmlReader in the callback procedure.
                    AsyncCallback callback = new AsyncCallback(HandleCallback);
                    command.BeginExecuteXmlReader(callback, command);

                }
                catch (Exception ex)
                {
                    isExecuting = false;
                    DisplayStatus(string.Format("Ready (last error: {0})", ex.Message));
                    if (connection != null)
                    {
                        connection.Close();
                    }
                }
            }
        }

        private void HandleCallback(IAsyncResult result)
        {
            try
            {
                // Retrieve the original command object, passed
                // to this procedure in the AsyncState property
                // of the IAsyncResult parameter.
                SqlCommand command = (SqlCommand)result.AsyncState;
                XmlReader reader = command.EndExecuteXmlReader(result);

                // You may not interact with the form and its contents
                // from a different thread, and this callback procedure
                // is all but guaranteed to be running from a different thread
                // than the form.

                // Instead, you must call the procedure from the form's thread.
                // One simple way to accomplish this is to call the Invoke
                // method of the form, which calls the delegate you supply
                // from the form's thread.
                DisplayReaderDelegate del = new DisplayReaderDelegate(DisplayProductInfo);
                this.Invoke(del, reader);

            }
            catch (Exception ex)
            {
                // Because you are now running code in a separate thread,
                // if you do not handle the exception here, none of your other
                // code catches the exception. Because none of
                // your code is on the call stack in this thread, there is nothing
                // higher up the stack to catch the exception if you do not
                // handle it here. You can either log the exception or
                // invoke a delegate (as in the non-error case in this
                // example) to display the error on the form. In no case
                // can you simply display the error without executing a delegate
                // as in the try block here.

                // You can create the delegate instance as you
                // invoke it, like this:
                this.Invoke(new DisplayInfoDelegate(DisplayStatus),
                String.Format("Ready(last error: {0}", ex.Message));
            }
            finally
            {
                isExecuting = false;
                if (connection != null)
                {
                    connection.Close();
                }
            }
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.button1.Click += new System.EventHandler(this.button1_Click);
            this.FormClosing += new System.Windows.Forms.
                FormClosingEventHandler(this.Form1_FormClosing);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
BeginExecuteXmlReader 重载
System.Data.SqlClient 命名空间
EndExecuteXmlReader
ExecuteXmlReader


SqlCommand ..::.Cancel 方法

SqlCommand
.
.
::
.
Cancel 方法
SqlCommand 类

尝试取消 SqlCommand 的执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Cancel
public override void Cancel()
public:
virtual void Cancel() override
abstract Cancel : unit -> unit
override Cancel : unit -> unit

实现

如果没有要取消的内容，则什么也不会发生。但是，如果有命令正在执行，而取消尝试失败，则不会生成异常。 如果没有要取消的内容，则什么也不会发生。但是，如果有命令正在执行，而取消尝试失败，则不会生成异常。

下面的示例说明 Cancel 方法的用法。

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Threading

Module Module1
    Private m_rCommand As SqlCommand

    Public Property Command() As SqlCommand
        Get
            Return m_rCommand
        End Get
        Set(ByVal value As SqlCommand)
            m_rCommand = value
        End Set
    End Property

    Public Sub Thread_Cancel()
        Command.Cancel()
    End Sub

    Sub Main()
        Dim connectionString As String = GetConnectionString()

        Try
            Using connection As New SqlConnection(connectionString)

                connection.Open()

                Command = connection.CreateCommand()
                Command.CommandText = "DROP TABLE TestCancel"
                Try
                    Command.ExecuteNonQuery()
                Catch
                End Try

                Command.CommandText = "CREATE TABLE TestCancel(co1 int, co2 char(10))"
                Command.ExecuteNonQuery()
                Command.CommandText = "INSERT INTO TestCancel VALUES (1, '1')"
                Command.ExecuteNonQuery()

                Command.CommandText = "SELECT * FROM TestCancel"
                Dim reader As SqlDataReader = Command.ExecuteReader()

                Dim rThread2 As Thread = New Thread( _
                    New ThreadStart(AddressOf Thread_Cancel))

                rThread2.Start()
                rThread2.Join()

                reader.Read()
                Console.WriteLine(reader.FieldCount)
                reader.Close()
            End Using

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);Initial Catalog=AdventureWorks;" _
           & "Integrated Security=SSPI;"
    End Function
End Module

using System;
using System.Data;
using System.Data.SqlClient;
using System.Threading;

class Program
{
    private static SqlCommand m_rCommand;

    public static SqlCommand Command
    {
        get { return m_rCommand; }
        set { m_rCommand = value; }
    }

    public static void Thread_Cancel()
    {
        Command.Cancel();
    }

    static void Main()
    {
        string connectionString = GetConnectionString();
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                Command = connection.CreateCommand();
                Command.CommandText = "DROP TABLE TestCancel";
                try
                {
                    Command.ExecuteNonQuery();
                }
                catch { }

                Command.CommandText = "CREATE TABLE TestCancel(co1 int, co2 char(10))";
                Command.ExecuteNonQuery();
                Command.CommandText = "INSERT INTO TestCancel VALUES (1, '1')";
                Command.ExecuteNonQuery();

                Command.CommandText = "SELECT * FROM TestCancel";
                SqlDataReader reader = Command.ExecuteReader();

                Thread rThread2 = new Thread(new ThreadStart(Thread_Cancel));
                rThread2.Start();
                rThread2.Join();

                reader.Read();
                System.Console.WriteLine(reader.FieldCount);
                reader.Close();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.Clone 方法

SqlCommand
.
.
::
.
Clone 方法
SqlCommand 类

创建作为当前实例副本的新 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Clone As SqlCommand
public SqlCommand Clone()
public:
SqlCommand^ Clone()
member Clone : unit -> SqlCommand

返回值

类型： System.Data.SqlClient SqlCommand
作为此实例副本的新 SqlCommand 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.CreateParameter 方法

SqlCommand
.
.
::
.
CreateParameter 方法
SqlCommand 类

创建 SqlParameter 对象的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function CreateParameter As SqlParameter
public SqlParameter CreateParameter()
public:
SqlParameter^ CreateParameter()
member CreateParameter : unit -> SqlParameter

返回值

类型： System.Data.SqlClient SqlParameter
一个 SqlParameter 对象。

CreateParameter 方法是 CreateParameter 的强类型版本。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.Dispose 方法

SqlCommand
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

释放由 Component 占用的资源。

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.EndExecuteNonQuery 方法

SqlCommand
.
.
::
.
EndExecuteNonQuery 方法
SqlCommand 类

完成 Transact-SQL 语句的异步执行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function EndExecuteNonQuery ( _
    asyncResult As IAsyncResult _
) As Integer
public int EndExecuteNonQuery(
    IAsyncResult asyncResult
)
public:
int EndExecuteNonQuery(
    IAsyncResult^ asyncResult
)
member EndExecuteNonQuery :
        asyncResult:IAsyncResult -> int

参数

asyncResult
类型： System IAsyncResult
通过调用 BeginExecuteNonQuery 返回的 IAsyncResult。

返回值

类型： System Int32
受影响的行数（与 ExecuteNonQuery 相同的行为）。
异常 | 条件
ArgumentException | asyncResult 参数为 null（在 Microsoft Visual Basic 中为 Nothing）
InvalidOperationException | 对一个命令执行调用了多次 EndExecuteNonQuery，或者该方法与其执行方法不匹配（例如，代码调用了 EndExecuteNonQuery 来完成对 BeginExecuteXmlReader 的调用的执行）。

当调用 BeginExecuteNonQuery 以执行 Transact-SQL 语句时，必须调用 EndExecuteNonQuery 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteNonQuery 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteNonQuery 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteNonQuery 以执行 Transact-SQL 语句时，必须调用 EndExecuteNonQuery 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteNonQuery 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteNonQuery 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteNonQuery 以执行 Transact-SQL 语句时，必须调用 EndExecuteNonQuery 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteNonQuery 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteNonQuery 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteNonQuery 以执行 Transact-SQL 语句时，必须调用 EndExecuteNonQuery 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteNonQuery 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteNonQuery 的调用中指定的，则必须调用该方法。

有关演示 EndExecuteNonQuery 方法的用法的示例，请参见 BeginExecuteNonQuery。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.EndExecuteReader 方法

SqlCommand
.
.
::
.
EndExecuteReader 方法
SqlCommand 类

完成 Transact-SQL 语句的异步执行，返回请求的 SqlDataReader。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function EndExecuteReader ( _
    asyncResult As IAsyncResult _
) As SqlDataReader
public SqlDataReader EndExecuteReader(
    IAsyncResult asyncResult
)
public:
SqlDataReader^ EndExecuteReader(
    IAsyncResult^ asyncResult
)
member EndExecuteReader :
        asyncResult:IAsyncResult -> SqlDataReader

参数

asyncResult
类型： System IAsyncResult
由调用 BeginExecuteReader 返回的 IAsyncResult。

返回值

类型： System.Data.SqlClient SqlDataReader
可用于检索请求行的 SqlDataReader 对象。
异常 | 条件
ArgumentException | asyncResult 参数为 null（在 Microsoft Visual Basic 中为 Nothing）
InvalidOperationException | 对一个命令执行调用了多次 EndExecuteReader，或者该方法与其执行方法不匹配（例如，代码调用了 EndExecuteReader 来完成对 BeginExecuteXmlReader 的调用的执行）。

当调用 BeginExecuteReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteReader 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteReader 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteReader 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteReader 的调用中指定的，则必须调用该方法。

有关演示 EndExecuteReader 方法的用法的示例，请参见 BeginExecuteReader。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.EndExecuteXmlReader 方法

SqlCommand
.
.
::
.
EndExecuteXmlReader 方法
SqlCommand 类

完成 Transact-SQL 语句的异步执行，将请求的数据以 XML 形式返回。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function EndExecuteXmlReader ( _
    asyncResult As IAsyncResult _
) As XmlReader
public XmlReader EndExecuteXmlReader(
    IAsyncResult asyncResult
)
public:
XmlReader^ EndExecuteXmlReader(
    IAsyncResult^ asyncResult
)
member EndExecuteXmlReader :
        asyncResult:IAsyncResult -> XmlReader

参数

asyncResult
类型： System IAsyncResult
由调用 BeginExecuteXmlReader 返回的 IAsyncResult。

返回值

类型： System.Xml XmlReader
可用于获取生成的 XML 数据的 XmlReader 对象。
异常 | 条件
ArgumentException | asyncResult 参数为 null（在 Microsoft Visual Basic 中为 Nothing）
InvalidOperationException | 对一个命令执行调用了多次 EndExecuteXmlReader，或者该方法与其执行方法不匹配（例如，代码调用了 EndExecuteXmlReader 来完成对 BeginExecuteNonQuery 的调用的执行）。

当调用 BeginExecuteXmlReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteXmlReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteXmlReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteXmlReader 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteXmlReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteXmlReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteXmlReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteXmlReader 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteXmlReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteXmlReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteXmlReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteXmlReader 的调用中指定的，则必须调用该方法。 当调用 BeginExecuteXmlReader 以执行 Transact-SQL 语句时，必须调用 EndExecuteXmlReader 才能完成该操作。如果执行命令的进程尚未完成，该方法将被阻止，直至操作完成。用户可以通过使用 BeginExecuteXmlReader 方法返回的 IAsyncResult 实例来验证命令是否已完成了其操作。如果回调过程是在对 BeginExecuteXmlReader 的调用中指定的，则必须调用该方法。

有关演示 EndExecuteXmlReader 方法的用法的示例，请参见 BeginExecuteXmlReader。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ExecuteNonQuery 方法

SqlCommand
.
.
::
.
ExecuteNonQuery 方法
SqlCommand 类

对连接执行 Transact-SQL 语句并返回受影响的行数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ExecuteNonQuery As Integer
public override int ExecuteNonQuery()
public:
virtual int ExecuteNonQuery() override
abstract ExecuteNonQuery : unit -> int
override ExecuteNonQuery : unit -> int

返回值

类型： System Int32
受影响的行数。

实现

异常 | 条件
SqlException | 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。

您可以使用 ExecuteNonQuery 来执行目录操作（例如查询数据库的结构或创建诸如表等的数据库对象），或通过执行 UPDATE、INSERT 或 DELETE 语句，在不使用 DataSet 的情况下更改数据库中的数据。

虽然 ExecuteNonQuery 不返回任何行，但映射到参数的任何输出参数或返回值都会用数据进行填充。

对于 UPDATE、INSERT 和 DELETE 语句，返回值为该命令所影响的行数。如果正在执行插入或更新操作的表上存在触发器，则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于其他所有类型的语句，返回值为 -1。如果发生回滚，则返回值也是 -1。 对于 UPDATE、INSERT 和 DELETE 语句，返回值为该命令所影响的行数。如果正在执行插入或更新操作的表上存在触发器，则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于其他所有类型的语句，返回值为 -1。如果发生回滚，则返回值也是 -1。 对于 UPDATE、INSERT 和 DELETE 语句，返回值为该命令所影响的行数。如果正在执行插入或更新操作的表上存在触发器，则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于其他所有类型的语句，返回值为 -1。如果发生回滚，则返回值也是 -1。 对于 UPDATE、INSERT 和 DELETE 语句，返回值为该命令所影响的行数。如果正在执行插入或更新操作的表上存在触发器，则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于其他所有类型的语句，返回值为 -1。如果发生回滚，则返回值也是 -1。

下面的示例创建一个 SqlCommand，然后使用 ExecuteNonQuery 执行它。给该示例传递两个字符串：一个字符串是 Transact-SQL 语句（如 UPDATE、INSERT 或 DELETE），另一个字符串用于连接数据源。 下面的示例创建一个 SqlCommand，然后使用 ExecuteNonQuery 执行它。给该示例传递两个字符串：一个字符串是 Transact-SQL 语句（如 UPDATE、INSERT 或 DELETE），另一个字符串用于连接数据源。

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using
End Sub

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ExecuteReader 方法

SqlCommand
.
.
::
.
ExecuteReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.ExecuteReader 方法

SqlCommand
.
.
::
.
ExecuteReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

将 CommandText 发送到 Connection 并生成一个 SqlDataReader。

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.ExecuteReader 方法

SqlCommand
.
.
::
.
ExecuteReader 方法
SqlCommand 类

将 CommandText 发送到 Connection 并生成一个 SqlDataReader。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function ExecuteReader As SqlDataReader
public SqlDataReader ExecuteReader()
public:
SqlDataReader^ ExecuteReader()
member ExecuteReader : unit -> SqlDataReader

返回值

类型： System.Data.SqlClient SqlDataReader
一个 SqlDataReader 对象。
异常 | 条件
SqlException | 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。
InvalidOperationException | 连接的当前状态为关闭。ExecuteReader 需要打开的 SqlConnection。 连接的当前状态为关闭。ExecuteReader 需要打开的 SqlConnection。

当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。当调用 ExecuteReader 时，该命令将执行此存储过程。 当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。当调用 ExecuteReader 时，该命令将执行此存储过程。

说明 说明

如果事务被死锁，则直到调用 Read 后才可能引发异常。

如果使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

下面的示例创建一个 SqlCommand，然后通过传递两个字符串来执行它，其中一个字符串是 Transact-SQL SELECT 语句，另一个字符串用于连接至数据源。

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As New SqlCommand(queryString, connection)
        Dim reader As SqlDataReader = command.ExecuteReader()
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        connection.Open();

        SqlCommand command = new SqlCommand(queryString, connection);
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
ExecuteReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ExecuteReader 方法 (CommandBehavior)

SqlCommand
.
.
::
.
ExecuteReader 方法 (CommandBehavior)
SqlCommand 类

将 CommandText 发送到 Connection，并使用 CommandBehavior 值之一生成一个 SqlDataReader。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function ExecuteReader ( _
    behavior As CommandBehavior _
) As SqlDataReader
public SqlDataReader ExecuteReader(
    CommandBehavior behavior
)
public:
SqlDataReader^ ExecuteReader(
    CommandBehavior behavior
)
member ExecuteReader :
        behavior:CommandBehavior -> SqlDataReader

参数

behavior
类型： System.Data CommandBehavior
CommandBehavior 值之一。

返回值

类型： System.Data.SqlClient SqlDataReader
一个 SqlDataReader 对象。

当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。当调用 ExecuteReader 时，该命令将执行此存储过程。 当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。当调用 ExecuteReader 时，该命令将执行此存储过程。

说明 说明

请使用 SequentialAccess 检索大值和二进制数据。否则，可能出现 OutOfMemoryException 并且连接将关闭。 请使用 SequentialAccess 检索大值和二进制数据。否则，可能出现 OutOfMemoryException 并且连接将关闭。

如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。在调用 SqlDataReader..::.Close 方法之前一直如此。如果创建了 SqlDataReader 并将 CommandBehavior 设置为 CloseConnection，则关闭 SqlDataReader 会自动关闭此连接。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。在调用 SqlDataReader..::.Close 方法之前一直如此。如果创建了 SqlDataReader 并将 CommandBehavior 设置为 CloseConnection，则关闭 SqlDataReader 会自动关闭此连接。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。在调用 SqlDataReader..::.Close 方法之前一直如此。如果创建了 SqlDataReader 并将 CommandBehavior 设置为 CloseConnection，则关闭 SqlDataReader 会自动关闭此连接。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。在调用 SqlDataReader..::.Close 方法之前一直如此。如果创建了 SqlDataReader 并将 CommandBehavior 设置为 CloseConnection，则关闭 SqlDataReader 会自动关闭此连接。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 SqlDataReader 时，关联的 SqlConnection 将忙于为 SqlDataReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。在调用 SqlDataReader..::.Close 方法之前一直如此。如果创建了 SqlDataReader 并将 CommandBehavior 设置为 CloseConnection，则关闭 SqlDataReader 会自动关闭此连接。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

下面的示例创建一个 SqlCommand，然后通过传递两个字符串来执行它，其中一个字符串是 Transact-SQL SELECT 语句，另一个字符串用于连接至数据源。CommandBehavior 设置为 CloseConnection。 下面的示例创建一个 SqlCommand，然后通过传递两个字符串来执行它，其中一个字符串是 Transact-SQL SELECT 语句，另一个字符串用于连接至数据源。CommandBehavior 设置为 CloseConnection。

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()
        Dim reader As SqlDataReader = _
            command.ExecuteReader(CommandBehavior.CloseConnection)
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        connection.Open();
        SqlDataReader reader =
            command.ExecuteReader(CommandBehavior.CloseConnection);
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}", reader[0]));
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
ExecuteReader 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ExecuteScalar 方法

SqlCommand
.
.
::
.
ExecuteScalar 方法
SqlCommand 类

执行查询，并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 执行查询，并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ExecuteScalar As Object
public override Object ExecuteScalar()
public:
virtual Object^ ExecuteScalar() override
abstract ExecuteScalar : unit -> Object
override ExecuteScalar : unit -> Object

返回值

类型： System Object
结果集中第一行的第一列；如果结果集为空，则为空引用（在 Visual Basic 中为 Nothing）。返回的最大字符数为 2033 个字符。 结果集中第一行的第一列；如果结果集为空，则为空引用（在 Visual Basic 中为 Nothing）。返回的最大字符数为 2033 个字符。

实现

异常 | 条件
SqlException | 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。

使用 ExecuteScalar 方法从数据库中检索单个值（例如一个聚合值）。与使用 ExecuteReader 方法，然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比，此操作需要的代码较少。 使用 ExecuteScalar 方法从数据库中检索单个值（例如一个聚合值）。与使用 ExecuteReader 方法，然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比，此操作需要的代码较少。

典型的 ExecuteScalar 查询可以采用类似于下面的 C# 示例的格式：

 cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
 Int32 count = (Int32) cmd.ExecuteScalar();

下面的示例创建一个 SqlCommand，然后使用 ExecuteScalar 执行它。向该示例传递两个字符串，一个字符串表示要插入到表中的新值，另一个字符串用于连接至数据源。如果已插入新行，则此函数会返回新的“Identity”列值，如果失败，则返回 0。 下面的示例创建一个 SqlCommand，然后使用 ExecuteScalar 执行它。向该示例传递两个字符串，一个字符串表示要插入到表中的新值，另一个字符串用于连接至数据源。如果已插入新行，则此函数会返回新的“Identity”列值，如果失败，则返回 0。 下面的示例创建一个 SqlCommand，然后使用 ExecuteScalar 执行它。向该示例传递两个字符串，一个字符串表示要插入到表中的新值，另一个字符串用于连接至数据源。如果已插入新行，则此函数会返回新的“Identity”列值，如果失败，则返回 0。

Public Function AddProductCategory( _
  ByVal newName As String, ByVal connString As String) As Integer
    Dim newProdID As Int32 = 0
    Dim sql As String = _
     "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); " _
       & "SELECT CAST(scope_identity() AS int);"

    Using conn As New SqlConnection(connString)
        Dim cmd As New SqlCommand(sql, conn)
        cmd.Parameters.Add("@Name", SqlDbType.VarChar)
        cmd.Parameters("@Name").Value = newName
        Try
            conn.Open()
            newProdID = Convert.ToInt32(cmd.ExecuteScalar())
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Using

    Return newProdID
End Function

static public int AddProductCategory(string newName, string connString)
{
    Int32 newProdID = 0;
    string sql =
        "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
        + "SELECT CAST(scope_identity() AS int)";
    using (SqlConnection conn = new SqlConnection(connString))
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.Add("@Name", SqlDbType.VarChar);
        cmd.Parameters["@name"].Value = newName;
        try
        {
            conn.Open();
            newProdID = (Int32)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    return (int)newProdID;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ExecuteXmlReader 方法

SqlCommand
.
.
::
.
ExecuteXmlReader 方法
SqlCommand 类

将 CommandText 发送到 Connection 并生成一个 XmlReader 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function ExecuteXmlReader As XmlReader
public XmlReader ExecuteXmlReader()
public:
XmlReader^ ExecuteXmlReader()
member ExecuteXmlReader : unit -> XmlReader

返回值

类型： System.Xml XmlReader
一个 XmlReader 对象。
异常 | 条件
SqlException | 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。 在对锁定的行执行该命令期间发生了异常。如果使用的是 Microsoft .NET Framework 1.0 版，将不会生成该异常。

CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定返回包含有效 XML 的 ntext 或 nvarchar 数据的语句，或指定用 xml 数据类型定义的列的内容。 CommandText 属性通常指定一个包含有效 FOR XML 子句的 Transact-SQL 语句。但是，CommandText 还可以指定返回包含有效 XML 的 ntext 或 nvarchar 数据的语句，或指定用 xml 数据类型定义的列的内容。

典型的 ExecuteXmlReader 查询可以按下面的 Microsoft Visual C# 示例进行格式化：

SqlCommand command = new SqlCommand("SELECT * FROM dbo.Customers FOR XML AUTO, XMLDATA", SqlConn);
说明 说明

这种类型的查询仅在 Microsoft SQL Server 2000 或更高版本中可用。有关更多信息，请参见“SQL Server 联机丛书”中的“使用 FOR XML 子句的指南”。 这种类型的查询仅在 Microsoft SQL Server 2000 或更高版本中可用。有关更多信息，请参见“SQL Server 联机丛书”中的“使用 FOR XML 子句的指南”。

在 SQL Server 2005 中使用时，还可以同时使用此方法检索包含 XML 数据的单行、单列结果集。这种情况下，如果返回了多个行，则 ExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。 在 SQL Server 2005 中使用时，还可以同时使用此方法检索包含 XML 数据的单行、单列结果集。这种情况下，如果返回了多个行，则 ExecuteXmlReader 方法将 XmlReader 附加到第一行上的值，并将丢弃结果集的其余部分。

如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。 如果您使用 SQL Server 2005 之前的 SQL Server 版本，在使用 XmlReader 时，关联的 SqlConnection 将忙于为 XmlReader 服务。当处于此状态时，除了关闭 SqlConnection 外，不能对其执行其他任何操作。除非调用 XmlReader 的 Close 方法，否则会一直处于此状态。从 SQL Server 2005 开始，多活动结果集 (MARS) 功能允许多个操作使用同一连接。

如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。 如果您使用 ExecuteReader 或 BeginExecuteReader 访问 XML 数据，SQL Server 将以多行（每行 2,033 个字符）方式返回长度大于 2,033 个字符的所有 XML 结果。若要避免发生此行为，请使用 ExecuteXmlReader 或 BeginExecuteXmlReader 读取 FOR XML 查询。有关更多信息，请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 Q310378“PRB: XML Data Is Truncated When You Use SqlDataReader”（PRB：使用 SqlDataReader 时 XML 数据被截断）。

下面的示例创建一个 SqlCommand，然后使用 ExecuteXmlReader 执行它。给该示例传递两个字符串：一个字符串是 Transact-SQL FOR XML SELECT 语句，另一个字符串用于连接数据源。 下面的示例创建一个 SqlCommand，然后使用 ExecuteXmlReader 执行它。给该示例传递两个字符串：一个字符串是 Transact-SQL FOR XML SELECT 语句，另一个字符串用于连接数据源。

Public Sub CreateXMLReader(ByVal queryString As String, _
    ByVal connectionString As String)

    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As New SqlCommand(queryString, connection)
        Dim reader As System.Xml.XmlReader = command.ExecuteXmlReader
    End Using
End Sub

private static void CreateXMLReader(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(queryString, connection);
        System.Xml.XmlReader reader = command.ExecuteXmlReader();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ICloneable ..::.Clone 方法

SqlCommand
.
.
::
.
ICloneable
.
.
::
.
Clone 方法
SqlCommand 类

创建作为当前实例副本的新 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Function Clone As Object Implements ICloneable.Clone
Object ICloneable.Clone()
private:
virtual Object^ Clone() sealed = ICloneable::Clone
private abstract Clone : unit -> Object
private override Clone : unit -> Object

返回值

类型： System Object
作为此实例副本的新 SqlCommand 对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.MemberwiseClone 方法

SqlCommand
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

名称 说明
页首

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.Prepare 方法

SqlCommand
.
.
::
.
Prepare 方法
SqlCommand 类

在 SQL Server 的实例上创建命令的一个准备版本。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Prepare
public override void Prepare()
public:
virtual void Prepare() override
abstract Prepare : unit -> unit
override Prepare : unit -> unit

实现

如果 CommandType 设置为 StoredProcedure，则对 Prepare 的调用应该会成功（虽然它可能导致无操作）。

在调用 Prepare 之前，应指定要准备的语句中的每个参数的数据类型。对于具有可变长度数据类型的每个参数，必须将 Size 属性设置为所需的最大大小。如果不满足这些条件，则 Prepare 会返回错误。 在调用 Prepare 之前，应指定要准备的语句中的每个参数的数据类型。对于具有可变长度数据类型的每个参数，必须将 Size 属性设置为所需的最大大小。如果不满足这些条件，则 Prepare 会返回错误。 在调用 Prepare 之前，应指定要准备的语句中的每个参数的数据类型。对于具有可变长度数据类型的每个参数，必须将 Size 属性设置为所需的最大大小。如果不满足这些条件，则 Prepare 会返回错误。

说明 说明

如果通过执行 TRANSACT-SQL USE <database> 语句，或通过调用 ChangeDatabase 方法来更改数据库上下文，那么必须第二次调用 Prepare。

如果在调用 Prepare 之后调用 Execute 方法，则任何大于 Size 属性所指定值的参数值都会自动截断至该参数的初始指定大小，并且不会返回任何截断错误。

输出参数（无论是否已准备）必须具有用户指定的数据类型。如果指定可变长度的数据类型，则必须也指定最大的 Size。 输出参数（无论是否已准备）必须具有用户指定的数据类型。如果指定可变长度的数据类型，则必须也指定最大的 Size。

在 Visual Studio 2010 之前，Prepare 会引发异常。从 Visual Studio 2010 开始，此方法不会引发异常。 在 Visual Studio 2010 之前，Prepare 会引发异常。从 Visual Studio 2010 开始，此方法不会引发异常。

下面的示例说明 Prepare 方法的用法。

Private Sub SqlCommandPrepareEx(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Dim command As SqlCommand = New SqlCommand("", connection)

        ' Create and prepare an SQL statement.
        command.CommandText = _
           "INSERT INTO Region (RegionID, RegionDescription) " & _
           "VALUES (@id, @desc)"
        Dim idParam As SqlParameter = _
            New SqlParameter("@id", SqlDbType.Int, 0)
        Dim descParam As SqlParameter = _
            New SqlParameter("@desc", SqlDbType.Text, 100)
        idParam.Value = 20
        descParam.Value = "First Region"
        command.Parameters.Add(idParam)
        command.Parameters.Add(descParam)

        ' Call Prepare after setting the Commandtext and Parameters.
        command.Prepare()
        command.ExecuteNonQuery()

        ' Change parameter values and call ExecuteNonQuery.
        command.Parameters(0).Value = 21
        command.Parameters(1).Value = "Second Region"
        command.ExecuteNonQuery()
    End Using
End Sub

private static void SqlCommandPrepareEx(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand(null, connection);

        // Create and prepare an SQL statement.
        command.CommandText =
            "INSERT INTO Region (RegionID, RegionDescription) " +
            "VALUES (@id, @desc)";
        SqlParameter idParam = new SqlParameter("@id", SqlDbType.Int, 0);
        SqlParameter descParam =
            new SqlParameter("@desc", SqlDbType.Text, 100);
        idParam.Value = 20;
        descParam.Value = "First Region";
        command.Parameters.Add(idParam);
        command.Parameters.Add(descParam);

        // Call Prepare after setting the Commandtext and Parameters.
        command.Prepare();
        command.ExecuteNonQuery();

        // Change parameter values and call ExecuteNonQuery.
        command.Parameters[0].Value = 21;
        command.Parameters[1].Value = "Second Region";
        command.ExecuteNonQuery();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.ResetCommandTimeout 方法

SqlCommand
.
.
::
.
ResetCommandTimeout 方法
SqlCommand 类

将 CommandTimeout 属性重置为其默认值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub ResetCommandTimeout
public void ResetCommandTimeout()
public:
void ResetCommandTimeout()
member ResetCommandTimeout : unit -> unit

CommandTimeout 的默认值为 30 秒。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 属性

SqlCommand 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

SqlCommand 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlCommand 类
System.Data.SqlClient 命名空间


SqlCommand ..::.CommandText 属性

SqlCommand
.
.
::
.
CommandText 属性
SqlCommand 类

获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property CommandText As String
    Get
    Set
public override string CommandText { get; set; }
public:
virtual property String^ CommandText {
    String^ get () override;
    void set (String^ value) override;
}
abstract CommandText : string with get, set
override CommandText : string with get, set

属性值

类型： System String
要执行的 Transact-SQL 语句或存储过程。默认值为空字符串。 要执行的 Transact-SQL 语句或存储过程。默认值为空字符串。

实现

当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。如果存储过程名称包含任何特殊字符，则可能会要求用户使用转义符语法。当调用 Execute 方法之一时，该命令将执行此存储过程。 当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。如果存储过程名称包含任何特殊字符，则可能会要求用户使用转义符语法。当调用 Execute 方法之一时，该命令将执行此存储过程。 当 CommandType 属性设置为 StoredProcedure 时，CommandText 属性应设置为存储过程的名称。如果存储过程名称包含任何特殊字符，则可能会要求用户使用转义符语法。当调用 Execute 方法之一时，该命令将执行此存储过程。

SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 Transact-SQL 语句或被 CommandType.Text 命令调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如： SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 Transact-SQL 语句或被 CommandType.Text 命令调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如： SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 Transact-SQL 语句或被 CommandType.Text 命令调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如：

 SELECT * FROM dbo.Customers WHERE CustomerID = @CustomerID

有关更多信息，请参见配置参数和参数数据类型 (ADO.NET)。

下面的示例创建一个 SqlCommand 并设置它的一些属性。

Public Sub CreateCommand()
    Dim command As New SqlCommand()
    command.CommandText = "SELECT * FROM Categories ORDER BY CategoryID"
    command.CommandTimeout = 15
    command.CommandType = CommandType.Text
End Sub

public void CreateCommand()
 {
    SqlCommand command = new SqlCommand();
    command.CommandText = "SELECT * FROM Categories ORDER BY CategoryID";
    command.CommandTimeout = 15;
    command.CommandType = CommandType.Text;
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.CommandTimeout 属性

SqlCommand
.
.
::
.
CommandTimeout 属性
SqlCommand 类

获取或设置在终止执行命令的尝试并生成错误之前的等待时间。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property CommandTimeout As Integer
    Get
    Set
public override int CommandTimeout { get; set; }
public:
virtual property int CommandTimeout {
    int get () override;
    void set (int value) override;
}
abstract CommandTimeout : int with get, set
override CommandTimeout : int with get, set

属性值

类型： System Int32
等待命令执行的时间（以秒为单位）。默认值为 30 秒。 等待命令执行的时间（以秒为单位）。默认值为 30 秒。

实现

值 0 指示无限制，在 CommandTimeout 中应避免值 0，否则会无限期地等待执行命令。

说明 说明

在异步方法调用（如 BeginExecuteReader）过程中，CommandTimeout 属性将被忽略。

当对上下文连接（要用连接字符串中的“context connection=true”打开的 SqlConnection）执行命令时，CommandTimeout 将不起作用。

说明 说明

此属性是在执行命令或处理结果期间所有网络读取的累积超时。在返回第一行之后，超时仍然可能发生，但只包括网络读取时间，而不包括用户处理时间。 此属性是在执行命令或处理结果期间所有网络读取的累积超时。在返回第一行之后，超时仍然可能发生，但只包括网络读取时间，而不包括用户处理时间。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.CommandType 属性

SqlCommand
.
.
::
.
CommandType 属性
SqlCommand 类

获取或设置一个值，该值指示如何解释 CommandText 属性。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property CommandType As CommandType
    Get
    Set
public override CommandType CommandType { get; set; }
public:
virtual property CommandType CommandType {
    CommandType get () override;
    void set (CommandType value) override;
}
abstract CommandType : CommandType with get, set
override CommandType : CommandType with get, set

属性值

类型： System.Data CommandType
CommandType 值之一。默认值为 Text。 CommandType 值之一。默认值为 Text。

实现

异常 | 条件
ArgumentException | 该值不是有效的 CommandType。

当将 CommandType 属性设置为 StoredProcedure 时，应将 CommandText 属性设置为存储过程的名称。当调用 Execute 方法之一时，该命令将执行此存储过程。 当将 CommandType 属性设置为 StoredProcedure 时，应将 CommandText 属性设置为存储过程的名称。当调用 Execute 方法之一时，该命令将执行此存储过程。

SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 SQL 语句或使用 Text 的 CommandType 调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如： SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 SQL 语句或使用 Text 的 CommandType 调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如： SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 SQL 语句或使用 Text 的 CommandType 调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如：

SELECT * FROM Customers WHERE CustomerID = @CustomerID

有关更多信息，请参见配置参数和参数数据类型 (ADO.NET)。

下面的示例创建一个 SqlCommand 并设置它的一些属性。

Public Sub CreateSqlCommand()
    Dim command As New SqlCommand()
    command.CommandTimeout = 15
    command.CommandType = CommandType.Text
End Sub

public void CreateSqlCommand()
{
   SqlCommand command = new SqlCommand();
   command.CommandTimeout = 15;
   command.CommandType = CommandType.Text;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.Connection 属性

SqlCommand
.
.
::
.
Connection 属性
SqlCommand 类

获取或设置 SqlCommand 的此实例使用的 SqlConnection。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Connection As SqlConnection
    Get
    Set
public SqlConnection Connection { get; set; }
public:
property SqlConnection^ Connection {
    SqlConnection^ get ();
    void set (SqlConnection^ value);
}
member Connection : SqlConnection with get, set

属性值

类型： System.Data.SqlClient SqlConnection
与数据源的连接。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 与数据源的连接。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 命令在事务中提交时 Connection 属性被更改。

如果命令登记在现有事务中，且连接被更改，则尝试执行该命令将会引发 InvalidOperationException。

如果 Transaction 属性不为空，而事务已经提交或回滚，则 Transaction 设置为 null。

下面的示例创建一个 SqlCommand 并设置它的一些属性。

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand()
        command.Connection = connection
        command.CommandTimeout = 15
        command.CommandType = CommandType.Text
        command.CommandText = queryString

        connection.Open()
        Dim reader As SqlDataReader = command.ExecuteReader()
            While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While
    End Using
End Sub

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandTimeout = 15;
        command.CommandType = CommandType.Text;
        command.CommandText = queryString;

        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间
CommandText
CommandTimeout
CommandType


SqlCommand ..::.DesignTimeVisible 属性

SqlCommand
.
.
::
.
DesignTimeVisible 属性
SqlCommand 类

获取或设置一个值，该值指示命令对象是否应在 Windows 窗体设计器控件中可见。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property DesignTimeVisible As Boolean
    Get
    Set
[BrowsableAttribute(false)]
public override bool DesignTimeVisible { get; set; }
[BrowsableAttribute(false)]
public:
virtual property bool DesignTimeVisible {
    bool get () override;
    void set (bool value) override;
}
[<BrowsableAttribute(false)>]
abstract DesignTimeVisible : bool with get, set
[<BrowsableAttribute(false)>]
override DesignTimeVisible : bool with get, set

属性值

类型： System Boolean
一个值，它指示命令对象是否应在控件中可见。默认值为 true。 一个值，它指示命令对象是否应在控件中可见。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommand ..::.Notification 属性

SqlCommand
.
.
::
.
Notification 属性
SqlCommand 类

获取或设置一个指定与此命令绑定的 SqlNotificationRequest 对象的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property Notification As SqlNotificationRequest
    Get
    Set
[BrowsableAttribute(false)]
public SqlNotificationRequest Notification { get; set; }
[BrowsableAttribute(false)]
public:
property SqlNotificationRequest^ Notification {
    SqlNotificationRequest^ get ();
    void set (SqlNotificationRequest^ value);
}
[<BrowsableAttribute(false)>]
member Notification : SqlNotificationRequest with get, set

属性值

类型： System.Data.Sql SqlNotificationRequest
如果设置为空（默认值），则不应请求任何通知。

执行命令前必须为此属性设置值，才能使此属性生效。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)
在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.NotificationAutoEnlist 属性

SqlCommand
.
.
::
.
NotificationAutoEnlist 属性
SqlCommand 类

获取或设置一个值，该值指示应用程序是否应自动接收来自公共 SqlDependency 对象的查询通知。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property NotificationAutoEnlist As Boolean
    Get
    Set
public bool NotificationAutoEnlist { get; set; }
public:
property bool NotificationAutoEnlist {
    bool get ();
    void set (bool value);
}
member NotificationAutoEnlist : bool with get, set

属性值

类型： System Boolean
如果应用程序应自动接收查询通知，则为 true；否则为 false。默认值为“True”。 如果应用程序应自动接收查询通知，则为 true；否则为 false。默认值为“True”。

此功能用于 ASP.NET 应用程序中以接收在 ASP 页中对 SQL Server 执行的所有命令的通知。这使 ASP.NET 可以缓存页，直到用于呈现该页的查询产生一个不同的结果。自动登记。 此功能用于 ASP.NET 应用程序中以接收在 ASP 页中对 SQL Server 执行的所有命令的通知。这使 ASP.NET 可以缓存页，直到用于呈现该页的查询产生一个不同的结果。自动登记。 此功能用于 ASP.NET 应用程序中以接收在 ASP 页中对 SQL Server 执行的所有命令的通知。这使 ASP.NET 可以缓存页，直到用于呈现该页的查询产生一个不同的结果。自动登记。

此属性仅适用于支持查询通知的 SQL Server 版本。对于较早的版本，将此属性设置为 true不会对应用程序产生任何影响。 此属性仅适用于支持查询通知的 SQL Server 版本。对于较早的版本，将此属性设置为 true不会对应用程序产生任何影响。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)
在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.Parameters 属性

SqlCommand
.
.
::
.
Parameters 属性
SqlCommand 类

获取 SqlParameterCollection。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Parameters As SqlParameterCollection
    Get
public SqlParameterCollection Parameters { get; }
public:
property SqlParameterCollection^ Parameters {
    SqlParameterCollection^ get ();
}
member Parameters : SqlParameterCollection

属性值

类型： System.Data.SqlClient SqlParameterCollection
Transact-SQL 语句或存储过程的参数。默认值为空集合。 Transact-SQL 语句或存储过程的参数。默认值为空集合。

SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 SQL 语句或被 CommandType.Text 命令调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如： SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 SQL 语句或被 CommandType.Text 命令调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如： SQL Server 的 Microsoft .NET Framework 数据提供程序不支持问号 (?)用于将参数传递给 SQL 语句或被 CommandType.Text 命令调用的存储过程的占位符。在这种情况下，必须使用命名的参数。例如：

SELECT * FROM Customers WHERE CustomerID = @CustomerID

说明 说明

如果集合中的参数不匹配要执行的查询的要求，则可能会导致错误。

有关更多信息，请参见配置参数和参数数据类型 (ADO.NET)。

下面的示例演示如何创建 SqlCommand 和向 SqlParameterCollection 中添加参数。

Private Sub UpdateDemographics(ByVal customerID As Integer, _
    ByVal demoXml As String, _
    ByVal connectionString As String)

    ' Update the demographics for a store, which is stored
    ' in an xml column.
    Dim commandText As String = _
     "UPDATE Sales.Store SET Demographics = @demographics " _
     & "WHERE CustomerID = @ID;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(commandText, connection)

        ' Add CustomerID parameter for WHERE clause.
        command.Parameters.Add("@ID", SqlDbType.Int)
        command.Parameters("@ID").Value = customerID

        ' Use AddWithValue to assign Demographics.
        ' SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml)

        Try
            connection.Open()
            Dim rowsAffected As Integer = command.ExecuteNonQuery()
            Console.WriteLine("RowsAffected: {0}", rowsAffected)

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Using
End Sub

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored
    // in an xml column.
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics.
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.Transaction 属性

SqlCommand
.
.
::
.
Transaction 属性
SqlCommand 类

获取或设置将在其中执行 SqlCommand 的 SqlTransaction。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property Transaction As SqlTransaction
    Get
    Set
[BrowsableAttribute(false)]
public SqlTransaction Transaction { get; set; }
[BrowsableAttribute(false)]
public:
property SqlTransaction^ Transaction {
    SqlTransaction^ get ();
    void set (SqlTransaction^ value);
}
[<BrowsableAttribute(false)>]
member Transaction : SqlTransaction with get, set

属性值

类型： System.Data.SqlClient SqlTransaction
SqlTransaction。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 SqlTransaction。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 Transaction 属性已设置为特定值，而命令正在执行过程中，则不能设置该属性。如果将该事务属性设置为 SqlTransaction 对象，而该对象未连接到与 SqlCommand 对象相同的 SqlConnection，那么在下次尝试执行语句时将会引发异常。 如果 Transaction 属性已设置为特定值，而命令正在执行过程中，则不能设置该属性。如果将该事务属性设置为 SqlTransaction 对象，而该对象未连接到与 SqlCommand 对象相同的 SqlConnection，那么在下次尝试执行语句时将会引发异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)
在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand ..::.UpdatedRowSource 属性

SqlCommand
.
.
::
.
UpdatedRowSource 属性
SqlCommand 类

获取或设置命令结果在由 DbDataAdapter 的“Update”方法使用时，如何应用于 DataRow。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property UpdatedRowSource As UpdateRowSource
    Get
    Set
public override UpdateRowSource UpdatedRowSource { get; set; }
public:
virtual property UpdateRowSource UpdatedRowSource {
    UpdateRowSource get () override;
    void set (UpdateRowSource value) override;
}
abstract UpdatedRowSource : UpdateRowSource with get, set
override UpdatedRowSource : UpdateRowSource with get, set

属性值

类型： System.Data UpdateRowSource
UpdateRowSource 值之一。

实现

除非自动生成该命令，否则，默认的 UpdateRowSource 值为“Both”（就像在 SqlCommandBuilder 的情况下），自动生成命令时默认值为“None”。

有关使用“UpdatedRowSource”属性的更多信息，请参见 DataAdapter 参数 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommand 事件

SqlCommand 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommand 类

SqlCommand 类型公开以下成员。

名称 说明
页首

参考

SqlCommand 类
System.Data.SqlClient 命名空间


SqlCommand ..::.StatementCompleted 事件

SqlCommand
.
.
::
.
StatementCompleted 事件
SqlCommand 类

当 Transact-SQL 语句执行完成时发生。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Event StatementCompleted As StatementCompletedEventHandler
public event StatementCompletedEventHandler StatementCompleted
public:
 event StatementCompletedEventHandler^ StatementCompleted {
    void add (StatementCompletedEventHandler^ value);
    void remove (StatementCompletedEventHandler^ value);
}
member StatementCompleted : IEvent<StatementCompletedEventHandler,
    StatementCompletedEventArgs>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommand 类
SqlCommand 成员
System.Data.SqlClient 命名空间


SqlCommandBuilder 类

SqlCommandBuilder 类
成员

自动生成单表命令，用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。 自动生成单表命令，用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlCommandBuilder _
    Inherits DbCommandBuilder
public sealed class SqlCommandBuilder : DbCommandBuilder
public ref class SqlCommandBuilder sealed : public DbCommandBuilder
[<SealedAttribute>]
type SqlCommandBuilder =
    class
        inherit DbCommandBuilder
    end

SqlDataAdapter 不会自动生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。但是，如果设置了 SqlDataAdapter 的 SelectCommand 属性，则可以创建一个 SqlCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。然后，SqlCommandBuilder 将生成其他任何未设置的 Transact-SQL 语句。 SqlDataAdapter 不会自动生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。但是，如果设置了 SqlDataAdapter 的 SelectCommand 属性，则可以创建一个 SqlCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。然后，SqlCommandBuilder 将生成其他任何未设置的 Transact-SQL 语句。 SqlDataAdapter 不会自动生成实现 DataSet 的更改与关联的 SQL Server 实例之间的协调所需的 Transact-SQL 语句。但是，如果设置了 SqlDataAdapter 的 SelectCommand 属性，则可以创建一个 SqlCommandBuilder 对象来自动生成用于单表更新的 Transact-SQL 语句。然后，SqlCommandBuilder 将生成其他任何未设置的 Transact-SQL 语句。

每当设置了 DataAdapter 属性，SqlCommandBuilder 就将其本身注册为 RowUpdating 事件的侦听器。一次只能将一个 SqlDataAdapter 与一个 SqlCommandBuilder 对象（或相反）互相关联。 每当设置了 DataAdapter 属性，SqlCommandBuilder 就将其本身注册为 RowUpdating 事件的侦听器。一次只能将一个 SqlDataAdapter 与一个 SqlCommandBuilder 对象（或相反）互相关联。

为了生成 INSERT、UPDATE 或 DELETE 语句，SqlCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索到元数据后（例如在第一次更新后）更改 SelectCommand，则应调用 RefreshSchema 方法来更新元数据。 为了生成 INSERT、UPDATE 或 DELETE 语句，SqlCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索到元数据后（例如在第一次更新后）更改 SelectCommand，则应调用 RefreshSchema 方法来更新元数据。

SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回，就会产生 InvalidOperation 异常，不生成命令。 SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回，就会产生 InvalidOperation 异常，不生成命令。

SqlCommandBuilder 还使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 属性。如果修改了这些属性中的一个或多个，或者替换了 SelectCommand 本身，用户则应调用 RefreshSchema。否则，InsertCommand、UpdateCommand 和 DeleteCommand 属性都保留它们以前的值。 SqlCommandBuilder 还使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 属性。如果修改了这些属性中的一个或多个，或者替换了 SelectCommand 本身，用户则应调用 RefreshSchema。否则，InsertCommand、UpdateCommand 和 DeleteCommand 属性都保留它们以前的值。 SqlCommandBuilder 还使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 属性。如果修改了这些属性中的一个或多个，或者替换了 SelectCommand 本身，用户则应调用 RefreshSchema。否则，InsertCommand、UpdateCommand 和 DeleteCommand 属性都保留它们以前的值。

如果调用 Dispose，则会解除 SqlCommandBuilder 与 SqlDataAdapter 的关联，并且不再使用生成的命令。

下面的示例结合 SqlDataAdapter 和 SqlConnection，使用 SqlCommand 从数据源中选择行。向该示例传递了一个连接字符串、一个查询字符串（它是一个 Transact-SQL SELECT 语句）和一个数据库表名称字符串。然后该示例创建一个 SqlCommandBuilder。 下面的示例结合 SqlDataAdapter 和 SqlConnection，使用 SqlCommand 从数据源中选择行。向该示例传递了一个连接字符串、一个查询字符串（它是一个 Transact-SQL SELECT 语句）和一个数据库表名称字符串。然后该示例创建一个 SqlCommandBuilder。 下面的示例结合 SqlDataAdapter 和 SqlConnection，使用 SqlCommand 从数据源中选择行。向该示例传递了一个连接字符串、一个查询字符串（它是一个 Transact-SQL SELECT 语句）和一个数据库表名称字符串。然后该示例创建一个 SqlCommandBuilder。

Private Function SelectSqlRows(ByVal connectionString As String, _
    ByVal queryString As String, ByVal tableName As String) As DataSet

    Using connection As New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter()
        adapter.SelectCommand = New SqlCommand(queryString, connection)
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)

        connection.Open()

        Dim dataSet As DataSet = New DataSet
        adapter.Fill(dataSet, tableName)

        ' Code to modify data in DataSet here

        builder.GetUpdateCommand()

        ' Without the SqlCommandBuilder this line would fail.
        adapter.Update(dataSet, tableName)

        Return dataSet
    End Using
End Function

public static DataSet SelectSqlRows(string connectionString,
    string queryString, string tableName)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(queryString, connection);
        SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

        connection.Open();

        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet, tableName);

        //code to modify data in DataSet here

        builder.GetUpdateCommand();

        //Without the SqlCommandBuilder this line would fail
        adapter.Update(dataSet, tableName);

        return dataSet;
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlCommandBuilderSqlCommandBuilder
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder 成员

SqlCommandBuilder 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

自动生成单表命令，用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。 自动生成单表命令，用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调。无法继承此类。

SqlCommandBuilder 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlCommandBuilder 类
System.Data.SqlClient 命名空间


SqlCommandBuilder 构造函数

SqlCommandBuilder 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

初始化 SqlCommandBuilder 类的新实例。

名称 说明
页首

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间


SqlCommandBuilder 构造函数

SqlCommandBuilder 构造函数
SqlCommandBuilder 类

初始化 SqlCommandBuilder 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlCommandBuilder()
public:
SqlCommandBuilder()
new : unit -> SqlCommandBuilder

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
SqlCommandBuilder 重载
System.Data.SqlClient 命名空间


SqlCommandBuilder 构造函数 (SqlDataAdapter)

SqlCommandBuilder 构造函数 (SqlDataAdapter)
SqlCommandBuilder 类

使用关联的 SqlDataAdapter 对象初始化 SqlCommandBuilder 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    adapter As SqlDataAdapter _
)
public SqlCommandBuilder(
    SqlDataAdapter adapter
)
public:
SqlCommandBuilder(
    SqlDataAdapter^ adapter
)
new :
        adapter:SqlDataAdapter -> SqlCommandBuilder

参数

adapter
类型： System.Data.SqlClient SqlDataAdapter
SqlDataAdapter 的名称。

SqlCommandBuilder 将自身注册为 RowUpdating 事件的侦听器，这些事件由此属性中指定的 SqlDataAdapter 生成。

当创建 SqlCommandBuilder 的新实例时，将释放与此 SqlDataAdapter 关联的任何现有 SqlCommandBuilder。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
SqlCommandBuilder 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder 方法

SqlCommandBuilder 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

SqlCommandBuilder 类型公开以下成员。

名称 说明
页首

参考

SqlCommandBuilder 类
System.Data.SqlClient 命名空间


SqlCommandBuilder ..::.DeriveParameters 方法

SqlCommandBuilder
.
.
::
.
DeriveParameters 方法
SqlCommandBuilder 类

从在 SqlCommand 中指定的存储过程中检索参数信息并填充指定的 SqlCommand 对象的 Parameters 集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared Sub DeriveParameters ( _
    command As SqlCommand _
)
public static void DeriveParameters(
    SqlCommand command
)
public:
static void DeriveParameters(
    SqlCommand^ command
)
static member DeriveParameters :
        command:SqlCommand -> unit

参数

command
类型： System.Data.SqlClient SqlCommand
引用将从其中导出参数信息的存储过程的 SqlCommand。将派生参数添加到 SqlCommand 的 Parameters 集合中。 引用将从其中导出参数信息的存储过程的 SqlCommand。将派生参数添加到 SqlCommand 的 Parameters 集合中。
异常 | 条件
InvalidOperationException | 此命令文本不是一个有效的存储过程名。

DeriveParameters 覆盖 SqlDbCommand 的任何现有参数信息。

DeriveParameters 需要对数据库进行附加的调用以获取信息。如果事先知道该参数信息，则通过显式设置该信息可更有效地填充参数集合。 DeriveParameters 需要对数据库进行附加的调用以获取信息。如果事先知道该参数信息，则通过显式设置该信息可更有效地填充参数集合。

仅可将 DeriveParameters 和存储过程一起使用。不可将 DeriveParameters 和扩展存储过程一起使用。不能使用 DeriveParameters 在 SqlParameterCollection 中填充任意 Transact-SQL 语句（如参数化的 SELECT 语句）。 仅可将 DeriveParameters 和存储过程一起使用。不可将 DeriveParameters 和扩展存储过程一起使用。不能使用 DeriveParameters 在 SqlParameterCollection 中填充任意 Transact-SQL 语句（如参数化的 SELECT 语句）。 仅可将 DeriveParameters 和存储过程一起使用。不可将 DeriveParameters 和扩展存储过程一起使用。不能使用 DeriveParameters 在 SqlParameterCollection 中填充任意 Transact-SQL 语句（如参数化的 SELECT 语句）。

有关更多信息，请参见配置参数和参数数据类型 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.Dispose 方法

SqlCommandBuilder
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

释放由 Component 占用的资源。

名称 说明
页首

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间


SqlCommandBuilder ..::.GetDeleteCommand 方法

SqlCommandBuilder
.
.
::
.
GetDeleteCommand 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

获取自动生成的、对数据库执行删除操作所需的 SqlCommand 对象。

名称 说明
页首

应用程序可以使用 GetDeleteCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetDeleteCommand 用作已修改的命令的基础。例如，您可能调用 GetDeleteCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetDeleteCommand 用作已修改的命令的基础。例如，您可能调用 GetDeleteCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。 当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。 当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetDeleteCommand 方法

SqlCommandBuilder
.
.
::
.
GetDeleteCommand 方法
SqlCommandBuilder 类

获取自动生成的、对数据库执行删除操作所需的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetDeleteCommand As SqlCommand
public SqlCommand GetDeleteCommand()
public:
SqlCommand^ GetDeleteCommand()
member GetDeleteCommand : unit -> SqlCommand

返回值

类型： System.Data.SqlClient SqlCommand
自动生成的、执行删除操作所需的 SqlCommand 对象。

应用程序可以使用 GetDeleteCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetDeleteCommand 用作已修改的命令的基础。例如，您可能调用 GetDeleteCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetDeleteCommand 用作已修改的命令的基础。例如，您可能调用 GetDeleteCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。 当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。 当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
GetDeleteCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetDeleteCommand 方法 (Boolean)

SqlCommandBuilder
.
.
::
.
GetDeleteCommand 方法 (Boolean)
SqlCommandBuilder 类

获取自动生成的、对数据库执行删除操作所需的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetDeleteCommand ( _
    useColumnsForParameterNames As Boolean _
) As SqlCommand
public SqlCommand GetDeleteCommand(
    bool useColumnsForParameterNames
)
public:
SqlCommand^ GetDeleteCommand(
    bool useColumnsForParameterNames
)
member GetDeleteCommand :
        useColumnsForParameterNames:bool -> SqlCommand

参数

useColumnsForParameterNames
类型： System Boolean
如果为 true，则生成与列名匹配的参数名（如果可能）。如果为 false，则生成 @p1、@p2，以此类推。 如果为 true，则生成与列名匹配的参数名（如果可能）。如果为 false，则生成 @p1、@p2，以此类推。

返回值

类型： System.Data.SqlClient SqlCommand
自动生成的、执行删除操作所需的 SqlCommand 对象。

应用程序可以使用 GetDeleteCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetDeleteCommand 用作已修改的命令的基础。例如，您可能调用 GetDeleteCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetDeleteCommand 用作已修改的命令的基础。例如，您可能调用 GetDeleteCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。 当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。 当首次生成 SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetDeleteCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetDeleteCommand 时，将首次生成 SQL 语句。

生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功： 生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功： 生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功：

  • 由 GetSchema 方法调用返回并在 DataSourceInformation 集合中找到的 ParameterNameMaxLength 已指定，其长度等于或大于生成的参数名。

  • 生成的参数名符合 ParameterNamePattern（由 GetSchema 方法调用返回并在 DataSourceInformation 集合正则表达式中找到）中指定的条件。

  • 由 GetSchema 方法调用返回并在 DataSourceInformation 集合中找到的 ParameterMarkerFormat 已指定。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
GetDeleteCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetInsertCommand 方法

SqlCommandBuilder
.
.
::
.
GetInsertCommand 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

名称 说明
页首

应用程序可以使用 GetInsertCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetInsertCommand 用作已修改的命令的基础。例如，您可能调用 GetInsertCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetInsertCommand 用作已修改的命令的基础。例如，您可能调用 GetInsertCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetInsertCommand 方法

SqlCommandBuilder
.
.
::
.
GetInsertCommand 方法
SqlCommandBuilder 类

获取自动生成的、对数据库执行插入操作所需的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetInsertCommand As SqlCommand
public SqlCommand GetInsertCommand()
public:
SqlCommand^ GetInsertCommand()
member GetInsertCommand : unit -> SqlCommand

返回值

类型： System.Data.SqlClient SqlCommand
自动生成的、执行插入操作所需的 SqlCommand 对象。

应用程序可以使用 GetInsertCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetInsertCommand 用作已修改的命令的基础。例如，您可能调用 GetInsertCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetInsertCommand 用作已修改的命令的基础。例如，您可能调用 GetInsertCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
GetInsertCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetInsertCommand 方法 (Boolean)

SqlCommandBuilder
.
.
::
.
GetInsertCommand 方法 (Boolean)
SqlCommandBuilder 类

获取自动生成的、对数据库执行插入操作所需的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetInsertCommand ( _
    useColumnsForParameterNames As Boolean _
) As SqlCommand
public SqlCommand GetInsertCommand(
    bool useColumnsForParameterNames
)
public:
SqlCommand^ GetInsertCommand(
    bool useColumnsForParameterNames
)
member GetInsertCommand :
        useColumnsForParameterNames:bool -> SqlCommand

参数

useColumnsForParameterNames
类型： System Boolean
如果为 true，则生成与列名匹配的参数名（如果可能）。如果为 false，则生成 @p1、@p2，以此类推。 如果为 true，则生成与列名匹配的参数名（如果可能）。如果为 false，则生成 @p1、@p2，以此类推。

返回值

类型： System.Data.SqlClient SqlCommand
自动生成的、执行插入操作所需的 SqlCommand 对象。

应用程序可以使用 GetInsertCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetInsertCommand 用作已修改的命令的基础。例如，您可能调用 GetInsertCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetInsertCommand 用作已修改的命令的基础。例如，您可能调用 GetInsertCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetInsertCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetInsertCommand 时，将首次生成 Transact-SQL 语句。

生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功： 生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功： 生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功：

  • 由 GetSchema 方法调用返回并在 DataSourceInformation 集合中找到的 ParameterNameMaxLength 已指定，其长度等于或大于生成的参数名。

  • 生成的参数名符合 ParameterNamePattern（由 GetSchema 方法调用返回并在 DataSourceInformation 集合正则表达式中找到）中指定的条件。

  • 由 GetSchema 方法调用返回并在 DataSourceInformation 集合中找到的 ParameterMarkerFormat 已指定。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
GetInsertCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetParameterName 方法

SqlCommandBuilder
.
.
::
.
GetParameterName 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回指定参数的名称。

名称 说明
页首

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间


SqlCommandBuilder ..::.GetUpdateCommand 方法

SqlCommandBuilder
.
.
::
.
GetUpdateCommand 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

获取自动生成的、对数据库执行更新操作所需的 SqlCommand 对象。

名称 说明
页首

应用程序可以使用 GetUpdateCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetUpdateCommand 用作已修改的命令的基础。例如，您可能调用 GetUpdateCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetUpdateCommand 用作已修改的命令的基础。例如，您可能调用 GetUpdateCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间


SqlCommandBuilder ..::.GetUpdateCommand 方法

SqlCommandBuilder
.
.
::
.
GetUpdateCommand 方法
SqlCommandBuilder 类

获取自动生成的、对数据库执行更新操作所需的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetUpdateCommand As SqlCommand
public SqlCommand GetUpdateCommand()
public:
SqlCommand^ GetUpdateCommand()
member GetUpdateCommand : unit -> SqlCommand

返回值

类型： System.Data.SqlClient SqlCommand
自动生成的、执行更新所需的 SqlCommand 对象。

应用程序可以使用 GetUpdateCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetUpdateCommand 用作已修改的命令的基础。例如，您可能调用 GetUpdateCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetUpdateCommand 用作已修改的命令的基础。例如，您可能调用 GetUpdateCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
GetUpdateCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.GetUpdateCommand 方法 (Boolean)

SqlCommandBuilder
.
.
::
.
GetUpdateCommand 方法 (Boolean)
SqlCommandBuilder 类

获取自动生成的、对数据库执行更新操作所需的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetUpdateCommand ( _
    useColumnsForParameterNames As Boolean _
) As SqlCommand
public SqlCommand GetUpdateCommand(
    bool useColumnsForParameterNames
)
public:
SqlCommand^ GetUpdateCommand(
    bool useColumnsForParameterNames
)
member GetUpdateCommand :
        useColumnsForParameterNames:bool -> SqlCommand

参数

useColumnsForParameterNames
类型： System Boolean
如果为 true，则生成与列名匹配的参数名（如果可能）。如果为 false，则生成 @p1、@p2，以此类推。 如果为 true，则生成与列名匹配的参数名（如果可能）。如果为 false，则生成 @p1、@p2，以此类推。

返回值

类型： System.Data.SqlClient SqlCommand
自动生成的、执行更新所需的 SqlCommand 对象。

应用程序可以使用 GetUpdateCommand 方法来获取信息或解答疑难，原因是该方法返回要执行的 SqlCommand 对象。

也可以将 GetUpdateCommand 用作已修改的命令的基础。例如，您可能调用 GetUpdateCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。 也可以将 GetUpdateCommand 用作已修改的命令的基础。例如，您可能调用 GetUpdateCommand 并修改 CommandTimeout 值，然后在 SqlDataAdapter 上显式设置该值。

当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。 当首次生成 Transact-SQL 语句后，如果应用程序以任何方式更改该语句，则必须显式调用 RefreshSchema。否则，GetUpdateCommand 仍将使用来自上一语句的信息，而此信息可能是不正确的。当应用程序调用 Update 或 GetUpdateCommand 时，将首次生成 Transact-SQL 语句。

生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功： 生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功： 生成参数名时，默认的行为是对各个参数使用 @p1、@p2，依此类推。如果将 true 传递给 useColumnsForParameterNames 参数，则您可以强制 OleDbCommandBuilder 改为根据列名来生成参数。只有满足以下条件时，此操作才会成功：

  • 由 GetSchema 方法调用返回并在 DataSourceInformation 集合中找到的 ParameterNameMaxLength 已指定，其长度等于或大于生成的参数名。

  • 生成的参数名符合 ParameterNamePattern（由 GetSchema 方法调用返回并在 DataSourceInformation 集合正则表达式中找到）中指定的条件。

  • 由 GetSchema 方法调用返回并在 DataSourceInformation 集合中找到的 ParameterMarkerFormat 已指定。

有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
GetUpdateCommand 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.MemberwiseClone 方法

SqlCommandBuilder
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

名称 说明
页首

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间


SqlCommandBuilder ..::.QuoteIdentifier 方法

SqlCommandBuilder
.
.
::
.
QuoteIdentifier 方法
SqlCommandBuilder 类

给定了具有正确的目录大小写设置且不带引号的标识符时，返回该标识符的正确的带引号形式。这包括正确地转义该标识符中的任何嵌入引号。 给定了具有正确的目录大小写设置且不带引号的标识符时，返回该标识符的正确的带引号形式。这包括正确地转义该标识符中的任何嵌入引号。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function QuoteIdentifier ( _
    unquotedIdentifier As String _
) As String
public override string QuoteIdentifier(
    string unquotedIdentifier
)
public:
virtual String^ QuoteIdentifier(
    String^ unquotedIdentifier
) override
abstract QuoteIdentifier :
        unquotedIdentifier:string -> string
override QuoteIdentifier :
        unquotedIdentifier:string -> string

参数

unquotedIdentifier
类型： System String
不带引号的原始标识符。

返回值

类型： System String
带引号的标识符版本。标识符内的嵌入引号被正确地转义。 带引号的标识符版本。标识符内的嵌入引号被正确地转义。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.UnquoteIdentifier 方法

SqlCommandBuilder
.
.
::
.
UnquoteIdentifier 方法
SqlCommandBuilder 类

给定了带引号的标识符时，返回该标识符的正确的不带引号的形式。这包括正确地非转义该标识符的所有嵌入的引号。 给定了带引号的标识符时，返回该标识符的正确的不带引号的形式。这包括正确地非转义该标识符的所有嵌入的引号。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function UnquoteIdentifier ( _
    quotedIdentifier As String _
) As String
public override string UnquoteIdentifier(
    string quotedIdentifier
)
public:
virtual String^ UnquoteIdentifier(
    String^ quotedIdentifier
) override
abstract UnquoteIdentifier :
        quotedIdentifier:string -> string
override UnquoteIdentifier :
        quotedIdentifier:string -> string

参数

quotedIdentifier
类型： System String
其嵌入引号将被移除的标识符。

返回值

类型： System String
未加引号的标识符，其嵌入的引号已正确进行非转义。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder 属性

SqlCommandBuilder 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

SqlCommandBuilder 类型公开以下成员。

名称 说明
页首

参考

SqlCommandBuilder 类
System.Data.SqlClient 命名空间


SqlCommandBuilder ..::.CatalogLocation 属性

SqlCommandBuilder
.
.
::
.
CatalogLocation 属性
SqlCommandBuilder 类

对于 SqlCommandBuilder 类的实例，获取或设置 CatalogLocation。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property CatalogLocation As CatalogLocation
    Get
    Set
[BrowsableAttribute(false)]
public override CatalogLocation CatalogLocation { get; set; }
[BrowsableAttribute(false)]
public:
virtual property CatalogLocation CatalogLocation {
    CatalogLocation get () override;
    void set (CatalogLocation value) override;
}
[<BrowsableAttribute(false)>]
abstract CatalogLocation : CatalogLocation with get, set
[<BrowsableAttribute(false)>]
override CatalogLocation : CatalogLocation with get, set

属性值

类型： System.Data.Common CatalogLocation
一个 CatalogLocation 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.CatalogSeparator 属性

SqlCommandBuilder
.
.
::
.
CatalogSeparator 属性
SqlCommandBuilder 类

设置或获取一个字符串，该字符串用作 SqlCommandBuilder 类的实例的目录分隔符。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property CatalogSeparator As String
    Get
    Set
[BrowsableAttribute(false)]
public override string CatalogSeparator { get; set; }
[BrowsableAttribute(false)]
public:
virtual property String^ CatalogSeparator {
    String^ get () override;
    void set (String^ value) override;
}
[<BrowsableAttribute(false)>]
abstract CatalogSeparator : string with get, set
[<BrowsableAttribute(false)>]
override CatalogSeparator : string with get, set

属性值

类型： System String
指示要用于 SqlCommandBuilder 类的目录分隔符的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.DataAdapter 属性

SqlCommandBuilder
.
.
::
.
DataAdapter 属性
SqlCommandBuilder 类

获取或设置自动为其生成 Transact-SQL 语句的一个 SqlDataAdapter 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property DataAdapter As SqlDataAdapter
    Get
    Set
public SqlDataAdapter DataAdapter { get; set; }
public:
property SqlDataAdapter^ DataAdapter {
    SqlDataAdapter^ get ();
    void set (SqlDataAdapter^ value);
}
member DataAdapter : SqlDataAdapter with get, set

属性值

类型： System.Data.SqlClient SqlDataAdapter
一个 SqlDataAdapter 对象。

SqlCommandBuilder 将自身注册为 RowUpdating 事件的侦听器，这些事件由此属性中指定的 SqlDataAdapter 生成。

当创建 SqlCommandBuilder 的新实例时，将释放与此 SqlDataAdapter 关联的任何现有 SqlCommandBuilder。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.QuotePrefix 属性

SqlCommandBuilder
.
.
::
.
QuotePrefix 属性
SqlCommandBuilder 类

获取或设置在指定其名称中包含空格或保留标记等字符的 SQL Server 数据库对象（如表或列）时使用的一个或多个起始字符。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property QuotePrefix As String
    Get
    Set
[BrowsableAttribute(false)]
public override string QuotePrefix { get; set; }
[BrowsableAttribute(false)]
public:
virtual property String^ QuotePrefix {
    String^ get () override;
    void set (String^ value) override;
}
[<BrowsableAttribute(false)>]
abstract QuotePrefix : string with get, set
[<BrowsableAttribute(false)>]
override QuotePrefix : string with get, set

属性值

类型： System String
要使用的一个或多个起始字符。默认值为空字符串。 要使用的一个或多个起始字符。默认值为空字符串。
异常 | 条件
InvalidOperationException | 在生成 INSERT、UPDATE 或 DELETE 命令后，不能更改此属性。

SQL Server 2000 和 SQL Server 7.0 版的实例中的数据库对象可包含任何有效的 Microsoft Windows NT 或 Microsoft Windows 2000 字符。这些字符包括空格、逗号和分号。若要运用此功能，请使用 QuotePrefix 和 QuoteSuffix 属性来指定诸如左尖括号和右尖括号等分隔符，以封装对象名称。 SQL Server 2000 和 SQL Server 7.0 版的实例中的数据库对象可包含任何有效的 Microsoft Windows NT 或 Microsoft Windows 2000 字符。这些字符包括空格、逗号和分号。若要运用此功能，请使用 QuotePrefix 和 QuoteSuffix 属性来指定诸如左尖括号和右尖括号等分隔符，以封装对象名称。 SQL Server 2000 和 SQL Server 7.0 版的实例中的数据库对象可包含任何有效的 Microsoft Windows NT 或 Microsoft Windows 2000 字符。这些字符包括空格、逗号和分号。若要运用此功能，请使用 QuotePrefix 和 QuoteSuffix 属性来指定诸如左尖括号和右尖括号等分隔符，以封装对象名称。

说明 说明

虽然在生成插入、更新或删除命令后不能更改 QuotePrefix 或 QuoteSuffix 属性，但可以在调用 DataAdapter 的 Update 方法后更改它们的设置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.QuoteSuffix 属性

SqlCommandBuilder
.
.
::
.
QuoteSuffix 属性
SqlCommandBuilder 类

获取或设置在指定其名称中包含空格或保留标记等字符的 SQL Server 数据库对象（如表或列）时使用的一个或多个结束字符。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property QuoteSuffix As String
    Get
    Set
[BrowsableAttribute(false)]
public override string QuoteSuffix { get; set; }
[BrowsableAttribute(false)]
public:
virtual property String^ QuoteSuffix {
    String^ get () override;
    void set (String^ value) override;
}
[<BrowsableAttribute(false)>]
abstract QuoteSuffix : string with get, set
[<BrowsableAttribute(false)>]
override QuoteSuffix : string with get, set

属性值

类型： System String
要使用的结束字符。默认值为空字符串。 要使用的结束字符。默认值为空字符串。
异常 | 条件
InvalidOperationException | 当生成 Insert、Update 或 Delete 命令后，不能更改此属性。

SQL Server 2000 和 SQL Server 7.0 版的实例中的数据库对象可包含任何有效的 Microsoft Windows NT 或 Microsoft Windows 2000 字符。这些字符包括空格、逗号和分号。若要运用此功能，请使用 QuotePrefix 和 QuoteSuffix 属性来指定诸如左尖括号和右尖括号等分隔符，以封装对象名称。 SQL Server 2000 和 SQL Server 7.0 版的实例中的数据库对象可包含任何有效的 Microsoft Windows NT 或 Microsoft Windows 2000 字符。这些字符包括空格、逗号和分号。若要运用此功能，请使用 QuotePrefix 和 QuoteSuffix 属性来指定诸如左尖括号和右尖括号等分隔符，以封装对象名称。 SQL Server 2000 和 SQL Server 7.0 版的实例中的数据库对象可包含任何有效的 Microsoft Windows NT 或 Microsoft Windows 2000 字符。这些字符包括空格、逗号和分号。若要运用此功能，请使用 QuotePrefix 和 QuoteSuffix 属性来指定诸如左尖括号和右尖括号等分隔符，以封装对象名称。

说明 说明

虽然在生成插入、更新或删除操作后不能更改 QuotePrefix 或 QuoteSuffix 属性，但可以在调用 DataAdapter 的 Update 方法后更改它们的设置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder ..::.SchemaSeparator 属性

SqlCommandBuilder
.
.
::
.
SchemaSeparator 属性
SqlCommandBuilder 类

获取或设置要用作架构标识符和任何其他标识符之间的分隔符的字符。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property SchemaSeparator As String
    Get
    Set
[BrowsableAttribute(false)]
public override string SchemaSeparator { get; set; }
[BrowsableAttribute(false)]
public:
virtual property String^ SchemaSeparator {
    String^ get () override;
    void set (String^ value) override;
}
[<BrowsableAttribute(false)>]
abstract SchemaSeparator : string with get, set
[<BrowsableAttribute(false)>]
override SchemaSeparator : string with get, set

属性值

类型： System String
要用作架构分隔符的字符。

通常，数据库服务器通过用某种字符分隔架构名称和标识符来指示标识符的架构。例如，SQL Server 使用句点来创建完整的标识符，如 Person.CustomerName，其中“Person”是架构名，而“CustomerName”是标识符。设置此属性后，开发人员可以修改这种行为。 通常，数据库服务器通过用某种字符分隔架构名称和标识符来指示标识符的架构。例如，SQL Server 使用句点来创建完整的标识符，如 Person.CustomerName，其中“Person”是架构名，而“CustomerName”是标识符。设置此属性后，开发人员可以修改这种行为。 通常，数据库服务器通过用某种字符分隔架构名称和标识符来指示标识符的架构。例如，SQL Server 使用句点来创建完整的标识符，如 Person.CustomerName，其中“Person”是架构名，而“CustomerName”是标识符。设置此属性后，开发人员可以修改这种行为。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlCommandBuilder 类
SqlCommandBuilder 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlCommandBuilder 事件

SqlCommandBuilder 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlCommandBuilder 类

SqlCommandBuilder 类型公开以下成员。

名称 说明
页首

参考

SqlCommandBuilder 类
System.Data.SqlClient 命名空间


SqlConnection 类

SqlConnection 类
成员

表示 SQL Server 数据库的一个打开的连接。此类不能被继承。 表示 SQL Server 数据库的一个打开的连接。此类不能被继承。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlConnection _
    Inherits DbConnection _
    Implements ICloneable
public sealed class SqlConnection : DbConnection,
    ICloneable
public ref class SqlConnection sealed : public DbConnection,
    ICloneable
[<SealedAttribute>]
type SqlConnection =
    class
        inherit DbConnection
        interface ICloneable
    end

SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。在客户端/服务器数据库系统中，它等效于一个到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用，以便在连接到 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源，请使用 OleDbConnection。 SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。在客户端/服务器数据库系统中，它等效于一个到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用，以便在连接到 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源，请使用 OleDbConnection。 SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。在客户端/服务器数据库系统中，它等效于一个到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用，以便在连接到 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源，请使用 OleDbConnection。 SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。在客户端/服务器数据库系统中，它等效于一个到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用，以便在连接到 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源，请使用 OleDbConnection。

当创建 SqlConnection 的实例时，所有属性都设置为它们的初始值。有关这些值的列表，请参见 SqlConnection 构造函数。 当创建 SqlConnection 的实例时，所有属性都设置为它们的初始值。有关这些值的列表，请参见 SqlConnection 构造函数。

如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则实际上会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则实际上会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则实际上会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则实际上会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则实际上会关闭到服务器的基础连接。

说明 说明

在从连接池中获取连接或将连接返回到连接池时，将不会在服务器上引发登录和注销事件，因为在将连接返回到连接池时，将不会实际关闭连接。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。 在从连接池中获取连接或将连接返回到连接池时，将不会在服务器上引发登录和注销事件，因为在将连接返回到连接池时，将不会实际关闭连接。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。

若要确保连接始终关闭，请在 using 块内部打开连接，如下面的代码段所示。这样可确保在代码退出代码块时自动关闭连接。 若要确保连接始终关闭，请在 using 块内部打开连接，如下面的代码段所示。这样可确保在代码退出代码块时自动关闭连接。

Using connection As New SqlConnection(connectionString)
    connection.Open()
    ' Do work here; connection closed on following line.End Using
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // Do work here; connection closed on following line.}
说明 说明

若要部署高性能应用程序，则必须使用连接池。在使用用于 SQL Server 的 .NET Framework 数据提供程序时，不必启用连接池，因为提供程序会自动对此进行管理，不过您可以修改某些设置。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。 若要部署高性能应用程序，则必须使用连接池。在使用用于 SQL Server 的 .NET Framework 数据提供程序时，不必启用连接池，因为提供程序会自动对此进行管理，不过您可以修改某些设置。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。 若要部署高性能应用程序，则必须使用连接池。在使用用于 SQL Server 的 .NET Framework 数据提供程序时，不必启用连接池，因为提供程序会自动对此进行管理，不过您可以修改某些设置。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。

如果执行 SqlCommand 的方法生成 SqlException，那么当严重级别小于等于 19 时，SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。 如果执行 SqlCommand 的方法生成 SqlException，那么当严重级别小于等于 19 时，SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。 如果执行 SqlCommand 的方法生成 SqlException，那么当严重级别小于等于 19 时，SqlConnection 将仍保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。

创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求，要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用Caspol.exe（代码访问安全策略工具） 来修改计算机、用户和企业级别的安全策略。有关更多信息，请参见.NET Framework 中的安全性。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求，要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用Caspol.exe（代码访问安全策略工具） 来修改计算机、用户和企业级别的安全策略。有关更多信息，请参见.NET Framework 中的安全性。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求，要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用Caspol.exe（代码访问安全策略工具） 来修改计算机、用户和企业级别的安全策略。有关更多信息，请参见.NET Framework 中的安全性。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求，要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用Caspol.exe（代码访问安全策略工具） 来修改计算机、用户和企业级别的安全策略。有关更多信息，请参见.NET Framework 中的安全性。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求，要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用Caspol.exe（代码访问安全策略工具） 来修改计算机、用户和企业级别的安全策略。有关更多信息，请参见.NET Framework 中的安全性。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。 创建 SqlConnection 对象的实例的应用程序可通过设置声明性或命令性安全要求，要求所有直接和间接的调用方都具有访问代码的充分权限。SqlConnection 使用 SqlClientPermission 对象设置安全要求。用户可以通过使用 SqlClientPermissionAttribute 对象来验证他们的代码是否具有足够的权限。用户和管理员还可以使用Caspol.exe（代码访问安全策略工具） 来修改计算机、用户和企业级别的安全策略。有关更多信息，请参见.NET Framework 中的安全性。有关演示如何使用安全请求的示例，请参见 代码访问安全性和 ADO.NET。

说明 说明

如果您正在使用 Microsoft .NET Framework 1.0 版，则在使用 Open 连接到 SQL Server 时必须使用 FullTrust 命名权限集。如果使用的是 .NET Framework 1.1 版或更高版本，则此要求不适用。有关更多信息，请参见请求权限和 命名的权限集。 如果您正在使用 Microsoft .NET Framework 1.0 版，则在使用 Open 连接到 SQL Server 时必须使用 FullTrust 命名权限集。如果使用的是 .NET Framework 1.1 版或更高版本，则此要求不适用。有关更多信息，请参见请求权限和 命名的权限集。 如果您正在使用 Microsoft .NET Framework 1.0 版，则在使用 Open 连接到 SQL Server 时必须使用 FullTrust 命名权限集。如果使用的是 .NET Framework 1.1 版或更高版本，则此要求不适用。有关更多信息，请参见请求权限和 命名的权限集。

有关处理来自服务器的警告和信息性消息的更多信息，请参见连接事件 (ADO.NET)。SQL Server Books Online（《SQL Server 联机丛书》）中记载了 SQL Server 引擎错误和错误消息。 有关处理来自服务器的警告和信息性消息的更多信息，请参见连接事件 (ADO.NET)。SQL Server Books Online（《SQL Server 联机丛书》）中记载了 SQL Server 引擎错误和错误消息。

警告说明 警告

ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是，可以强制用 TCP 代替共享内存。可通过在连接字符串中的服务器名称之前添加 tcp: 前缀或使用本地主机来达到此目的。 ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是，可以强制用 TCP 代替共享内存。可通过在连接字符串中的服务器名称之前添加 tcp: 前缀或使用本地主机来达到此目的。 ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是，可以强制用 TCP 代替共享内存。可通过在连接字符串中的服务器名称之前添加 tcp: 前缀或使用本地主机来达到此目的。

下面的示例创建一个 SqlCommand 和一个 SqlConnection。SqlConnection 打开，并设置为 SqlCommand 的 Connection。该示例然后调用 ExecuteNonQuery。为了完成此任务，将为 ExecuteNonQuery 传递一个连接字符串和一个查询字符串，后者是一个 Transact-SQL INSERT 语句。当代码使用块退出时，连接自动关闭。 下面的示例创建一个 SqlCommand 和一个 SqlConnection。SqlConnection 打开，并设置为 SqlCommand 的 Connection。该示例然后调用 ExecuteNonQuery。为了完成此任务，将为 ExecuteNonQuery 传递一个连接字符串和一个查询字符串，后者是一个 Transact-SQL INSERT 语句。当代码使用块退出时，连接自动关闭。 下面的示例创建一个 SqlCommand 和一个 SqlConnection。SqlConnection 打开，并设置为 SqlCommand 的 Connection。该示例然后调用 ExecuteNonQuery。为了完成此任务，将为 ExecuteNonQuery 传递一个连接字符串和一个查询字符串，后者是一个 Transact-SQL INSERT 语句。当代码使用块退出时，连接自动关闭。 下面的示例创建一个 SqlCommand 和一个 SqlConnection。SqlConnection 打开，并设置为 SqlCommand 的 Connection。该示例然后调用 ExecuteNonQuery。为了完成此任务，将为 ExecuteNonQuery 传递一个连接字符串和一个查询字符串，后者是一个 Transact-SQL INSERT 语句。当代码使用块退出时，连接自动关闭。 下面的示例创建一个 SqlCommand 和一个 SqlConnection。SqlConnection 打开，并设置为 SqlCommand 的 Connection。该示例然后调用 ExecuteNonQuery。为了完成此任务，将为 ExecuteNonQuery 传递一个连接字符串和一个查询字符串，后者是一个 Transact-SQL INSERT 语句。当代码使用块退出时，连接自动关闭。

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using
End Sub

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlConnectionSqlConnection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection 成员

SqlConnection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

表示 SQL Server 数据库的一个打开的连接。此类不能被继承。 表示 SQL Server 数据库的一个打开的连接。此类不能被继承。

SqlConnection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlConnection 类
System.Data.SqlClient 命名空间


SqlConnection 构造函数

SqlConnection 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

初始化 SqlConnection 类的新实例。

名称 说明
页首

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection 构造函数

SqlConnection 构造函数
SqlConnection 类

初始化 SqlConnection 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlConnection()
public:
SqlConnection()
new : unit -> SqlConnection

当创建 SqlConnection 的新实例时，读/写属性将会被设置为以下初始值，除非在 ConnectionString 属性中使用它们的关联关键字专门设置这些属性。

属性 | 初始值
ConnectionString | 空字符串 ("")
ConnectionTimeout | 15
Database | 空字符串 ("")
DataSource | 空字符串 ("")

只能使用 ConnectionString 属性更改这些属性的值。SqlConnectionStringBuilder 类提供了用于创建和管理连接字符串内容的功能。 只能使用 ConnectionString 属性更改这些属性的值。SqlConnectionStringBuilder 类提供了用于创建和管理连接字符串内容的功能。

下面的示例创建并打开一个 SqlConnection。

Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' To avoid storing the connection string in your code,
    ' you can retrieve it from a configuration file, using the
    ' System.Configuration.ConfigurationSettings.AppSettings property
    Return "Data Source=(local);Database=AdventureWorks;" _
      & "Integrated Security=SSPI;"
End Function

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code,
    // you can retrieve it from a configuration file, using the
    // System.Configuration.ConfigurationSettings.AppSettings property
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
SqlConnection 重载
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection 构造函数 (String)

SqlConnection 构造函数 (String)
SqlConnection 类

如果给定包含连接字符串的字符串，则初始化 SqlConnection 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    connectionString As String _
)
public SqlConnection(
    string connectionString
)
public:
SqlConnection(
    String^ connectionString
)
new :
        connectionString:string -> SqlConnection

参数

connectionString
类型： System String
用于打开 SQL Server 数据库的连接。

当创建 SqlConnection 的新实例时，读/写属性将会被设置为以下初始值，除非在 ConnectionString 属性中使用它们的关联关键字专门设置这些属性。

属性 | 初始值
ConnectionString | connectionString
ConnectionTimeout | 15
Database | 空字符串 ("")
DataSource | 空字符串 ("")

只能使用 ConnectionString 属性更改这些属性的值。SqlConnection 类提供了用于创建和管理连接字符串内容的功能。 只能使用 ConnectionString 属性更改这些属性的值。SqlConnection 类提供了用于创建和管理连接字符串内容的功能。

下面的示例创建并打开一个 SqlConnection。

Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()

    Using connection As New SqlConnection(connectionString)

        connection.Open()

        Console.WriteLine("State: {0}", connection.State)
        Console.WriteLine("ConnectionString: {0}", _
            connection.ConnectionString)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' To avoid storing the connection string in your code,
    ' you can retrieve it from a configuration file, using the
    ' System.Configuration.ConfigurationSettings.AppSettings property
    Return "Data Source=(local);Database=AdventureWorks;" _
      & "Integrated Security=SSPI;"
End Function

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        Console.WriteLine("State: {0}", connection.State);
        Console.WriteLine("ConnectionString: {0}",
            connection.ConnectionString);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code,
    // you can retrieve it from a configuration file, using the
    // System.Configuration.ConfigurationSettings.AppSettings property
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
SqlConnection 重载
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection 方法

SqlConnection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

SqlConnection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlConnection 类
System.Data.SqlClient 命名空间


SqlConnection ..::.BeginTransaction 方法

SqlConnection
.
.
::
.
BeginTransaction 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

名称 说明
页首

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection ..::.BeginTransaction 方法

SqlConnection
.
.
::
.
BeginTransaction 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

开始数据库事务。

名称 说明
页首

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection ..::.BeginTransaction 方法

SqlConnection
.
.
::
.
BeginTransaction 方法
SqlConnection 类

开始数据库事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function BeginTransaction As SqlTransaction
public SqlTransaction BeginTransaction()
public:
SqlTransaction^ BeginTransaction()
member BeginTransaction : unit -> SqlTransaction

返回值

类型： System.Data.SqlClient SqlTransaction
表示新事务的对象。
异常 | 条件
SqlException | 使用多活动结果集 (MARS) 时，不允许执行并行事务。
InvalidOperationException | 不支持并行事务。

此命令映射到 BEGIN TRANSACTION 的 SQL Server 实现。

必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。 必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。

说明 说明

如果没有指定隔离级别，则使用默认的隔离级别。要用 BeginTransaction 方法指定隔离级别，请使用采用 iso 参数的重载 (BeginTransaction)。为某个事务设置的隔离级别在该事务完成之后仍然保持，直到关闭或释放连接为止。在没有启用快照隔离级别的数据库中，将隔离级别设置为“快照”不会引发异常。将使用默认的隔离级别来完成事务。 如果没有指定隔离级别，则使用默认的隔离级别。要用 BeginTransaction 方法指定隔离级别，请使用采用 iso 参数的重载 (BeginTransaction)。为某个事务设置的隔离级别在该事务完成之后仍然保持，直到关闭或释放连接为止。在没有启用快照隔离级别的数据库中，将隔离级别设置为“快照”不会引发异常。将使用默认的隔离级别来完成事务。 如果没有指定隔离级别，则使用默认的隔离级别。要用 BeginTransaction 方法指定隔离级别，请使用采用 iso 参数的重载 (BeginTransaction)。为某个事务设置的隔离级别在该事务完成之后仍然保持，直到关闭或释放连接为止。在没有启用快照隔离级别的数据库中，将隔离级别设置为“快照”不会引发异常。将使用默认的隔离级别来完成事务。 如果没有指定隔离级别，则使用默认的隔离级别。要用 BeginTransaction 方法指定隔离级别，请使用采用 iso 参数的重载 (BeginTransaction)。为某个事务设置的隔离级别在该事务完成之后仍然保持，直到关闭或释放连接为止。在没有启用快照隔离级别的数据库中，将隔离级别设置为“快照”不会引发异常。将使用默认的隔离级别来完成事务。 如果没有指定隔离级别，则使用默认的隔离级别。要用 BeginTransaction 方法指定隔离级别，请使用采用 iso 参数的重载 (BeginTransaction)。为某个事务设置的隔离级别在该事务完成之后仍然保持，直到关闭或释放连接为止。在没有启用快照隔离级别的数据库中，将隔离级别设置为“快照”不会引发异常。将使用默认的隔离级别来完成事务。
警告说明 警告

如果启动了某个事务，并且服务器上出现了 16 级或更高级别的错误，则在调用 Read 方法以前，该事务不会回滚。ExecuteReader 上不会引发异常。 如果启动了某个事务，并且服务器上出现了 16 级或更高级别的错误，则在调用 Read 方法以前，该事务不会回滚。ExecuteReader 上不会引发异常。
警告说明 警告

SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。 SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction("SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
BeginTransaction 重载
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)
连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.BeginTransaction 方法 (IsolationLevel)

SqlConnection
.
.
::
.
BeginTransaction 方法 (IsolationLevel)
SqlConnection 类

以指定的隔离级别启动数据库事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function BeginTransaction ( _
    iso As IsolationLevel _
) As SqlTransaction
public SqlTransaction BeginTransaction(
    IsolationLevel iso
)
public:
SqlTransaction^ BeginTransaction(
    IsolationLevel iso
)
member BeginTransaction :
        iso:IsolationLevel -> SqlTransaction

参数

iso
类型： System.Data IsolationLevel
事务应在其下运行的隔离级别。

返回值

类型： System.Data.SqlClient SqlTransaction
表示新事务的对象。
异常 | 条件
SqlException | 使用多活动结果集 (MARS) 时，不允许执行并行事务。
InvalidOperationException | 不支持并行事务。

此命令映射到 BEGIN TRANSACTION 的 SQL Server 实现。

必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。 必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。

说明 说明

事务被提交或回滚后，所有后续的自动提交模式（SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。 事务被提交或回滚后，所有后续的自动提交模式（SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。 事务被提交或回滚后，所有后续的自动提交模式（SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。 事务被提交或回滚后，所有后续的自动提交模式（SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

警告说明 警告

SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。 SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)
        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
            command.ExecuteNonQuery()
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")
        Catch e As Exception
            Try
                transaction.Rollback()
            Catch ex As SqlException
                If Not transaction.Connection Is Nothing Then
                    Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
                      " was encountered while attempting to roll back the transaction.")
                End If
            End Try

            Console.WriteLine("An exception of type " & e.GetType().ToString() & _
              "was encountered while inserting the data.")
            Console.WriteLine("Neither record was written to database.")
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception e)
        {
            try
            {
                transaction.Rollback();
            }
            catch (SqlException ex)
            {
                if (transaction.Connection != null)
                {
                    Console.WriteLine("An exception of type " + ex.GetType() +
                        " was encountered while attempting to roll back the transaction.");
                }
            }

            Console.WriteLine("An exception of type " + e.GetType() +
                " was encountered while inserting the data.");
            Console.WriteLine("Neither record was written to database.");
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
BeginTransaction 重载
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)
连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.BeginTransaction 方法 (String)

SqlConnection
.
.
::
.
BeginTransaction 方法 (String)
SqlConnection 类

以指定的事务名称启动数据库事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function BeginTransaction ( _
    transactionName As String _
) As SqlTransaction
public SqlTransaction BeginTransaction(
    string transactionName
)
public:
SqlTransaction^ BeginTransaction(
    String^ transactionName
)
member BeginTransaction :
        transactionName:string -> SqlTransaction

参数

transactionName
类型： System String
事务的名称。

返回值

类型： System.Data.SqlClient SqlTransaction
表示新事务的对象。
异常 | 条件
SqlException | 使用多活动结果集 (MARS) 时，不允许执行并行事务。
InvalidOperationException | 不支持并行事务。

此命令映射到 BEGIN TRANSACTION 的 SQL Server 实现。

transactionName 参数的长度不得超过 32 个字符；否则会引发异常。

transactionName 参数中的值可以在以后对 Rollback 的调用中使用，以及在 Save 方法的 savePoint 参数中使用。

必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。 必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

警告说明 警告

SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。 SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction("SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
BeginTransaction 重载
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)
连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.BeginTransaction 方法 (IsolationLevel, String)

SqlConnection
.
.
::
.
BeginTransaction 方法 (IsolationLevel, String)
SqlConnection 类

以指定的隔离级别和事务名称启动数据库事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function BeginTransaction ( _
    iso As IsolationLevel, _
    transactionName As String _
) As SqlTransaction
public SqlTransaction BeginTransaction(
    IsolationLevel iso,
    string transactionName
)
public:
SqlTransaction^ BeginTransaction(
    IsolationLevel iso,
    String^ transactionName
)
member BeginTransaction :
        iso:IsolationLevel *
        transactionName:string -> SqlTransaction

参数

iso
类型： System.Data IsolationLevel
事务应在其下运行的隔离级别。
transactionName
类型： System String
事务的名称。

返回值

类型： System.Data.SqlClient SqlTransaction
表示新事务的对象。
异常 | 条件
SqlException | 使用多活动结果集 (MARS) 时，不允许执行并行事务。
InvalidOperationException | 不支持并行事务。

此命令映射到 BEGIN TRANSACTION 的 SQL Server 实现。

transactionName 参数中的值可以在以后对 Rollback 的调用中使用，以及在 Save 方法的 savePoint 参数中使用。

必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。 必须使用 Commit 或 Rollback 方法显式提交或回滚事务。若要确保 SQL Server 的 .NET Framework 数据提供程序事务管理模型正确执行，应避免使用其他事务管理模型，如由 SQL Server 提供的模型。

说明 说明

事务被提交或回滚后，后续的自动提交模式（Microsoft SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。 事务被提交或回滚后，后续的自动提交模式（Microsoft SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。 事务被提交或回滚后，后续的自动提交模式（Microsoft SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。 事务被提交或回滚后，后续的自动提交模式（Microsoft SQL Server 默认）的命令将继续使用该事务的隔离级别。这样将产生意外结果，例如 REPEATABLE READ 隔离级别持续并阻止其他用户使用某一行。若要将隔离级别重置为默认值 (READ COMMITTED)，请执行 Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED 语句，或调用 SqlConnection..::.BeginTransaction 并随后立即调用 SqlTransaction..::.Commit。有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

警告说明 警告

SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。 SQL Server 2005 不允许在使用 MARS 时执行并行事务，因此，当查询返回大量数据和调用 BeginTransaction 时，将引发 SqlException。为避免此问题，打开任何读取器之前，请始终将事务与命令、连接或此二者相关联。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示了如何使用 BeginTransaction、Commit 和 Rollback 方法。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction.
        transaction = connection.BeginTransaction( _
          IsolationLevel.ReadCommitted, "SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
            command.ExecuteNonQuery()
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")
        Catch e As Exception
            Try
                transaction.Rollback()
            Catch ex As SqlException
                If Not transaction.Connection Is Nothing Then
                    Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
                      " was encountered while attempting to roll back the transaction.")
                End If
            End Try

            Console.WriteLine("An exception of type " & e.GetType().ToString() & _
              "was encountered while inserting the data.")
            Console.WriteLine("Neither record was written to database.")
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction(
            IsolationLevel.ReadCommitted, "SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction.
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception e)
        {
            try
            {
                transaction.Rollback();
            }
            catch (SqlException ex)
            {
                if (transaction.Connection != null)
                {
                    Console.WriteLine("An exception of type " + ex.GetType() +
                        " was encountered while attempting to roll back the transaction.");
                }
            }

            Console.WriteLine("An exception of type " + e.GetType() +
                " was encountered while inserting the data.");
            Console.WriteLine("Neither record was written to database.");
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
BeginTransaction 重载
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)
连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.ChangeDatabase 方法

SqlConnection
.
.
::
.
ChangeDatabase 方法
SqlConnection 类

为打开的 SqlConnection 更改当前数据库。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub ChangeDatabase ( _
    database As String _
)
public override void ChangeDatabase(
    string database
)
public:
virtual void ChangeDatabase(
    String^ database
) override
abstract ChangeDatabase :
        database:string -> unit
override ChangeDatabase :
        database:string -> unit

参数

database
类型： System String
要代替当前数据库加以使用的数据库的名称。

实现

异常 | 条件
ArgumentException | 数据库名称无效。
InvalidOperationException | 连接未打开。
SqlException | 不能更改数据库。

在 database 参数中提供的值必须是有效的数据库名称。database 参数不能包含 null 值、空字符串或仅有空白字符的字符串。 在 database 参数中提供的值必须是有效的数据库名称。database 参数不能包含 null 值、空字符串或仅有空白字符的字符串。

如果对 SQL Server 2000 中使用连接池，则在关闭连接时，该连接会返回到连接池中。在下次从使用的池中检索该连接时，将在第一次到服务器的往返行程中发出重置连接请求，并将在用户执行任何操作之前执行该请求。从调用 ChangeDatabase 方法后将连接返回到连接池，到系统检索到该连接前，该连接一直在数据库中保持活动状态。这样，由于该连接仍然处于活动状态，可防止您断开数据库连接。 如果对 SQL Server 2000 中使用连接池，则在关闭连接时，该连接会返回到连接池中。在下次从使用的池中检索该连接时，将在第一次到服务器的往返行程中发出重置连接请求，并将在用户执行任何操作之前执行该请求。从调用 ChangeDatabase 方法后将连接返回到连接池，到系统检索到该连接前，该连接一直在数据库中保持活动状态。这样，由于该连接仍然处于活动状态，可防止您断开数据库连接。 如果对 SQL Server 2000 中使用连接池，则在关闭连接时，该连接会返回到连接池中。在下次从使用的池中检索该连接时，将在第一次到服务器的往返行程中发出重置连接请求，并将在用户执行任何操作之前执行该请求。从调用 ChangeDatabase 方法后将连接返回到连接池，到系统检索到该连接前，该连接一直在数据库中保持活动状态。这样，由于该连接仍然处于活动状态，可防止您断开数据库连接。 如果对 SQL Server 2000 中使用连接池，则在关闭连接时，该连接会返回到连接池中。在下次从使用的池中检索该连接时，将在第一次到服务器的往返行程中发出重置连接请求，并将在用户执行任何操作之前执行该请求。从调用 ChangeDatabase 方法后将连接返回到连接池，到系统检索到该连接前，该连接一直在数据库中保持活动状态。这样，由于该连接仍然处于活动状态，可防止您断开数据库连接。

下面的示例创建一个 SqlConnection 并显示它的一些只读属性。

Private Sub ChangeSqlDatabase(ByVal connectionString As String)
    ' Assumes connectionString represents a valid connection string
    ' to the AdventureWorks sample database.
    Using connection As New SqlConnection(connectionString)

        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("Database: {0}", connection.Database)

        connection.ChangeDatabase("Northwind")
        Console.WriteLine("Database: {0}", connection.Database)
    End Using
End Sub

private static void ChangeSqlDatabase(string connectionString)
{
    // Assumes connectionString represents a valid connection string
    // to the AdventureWorks sample database.
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("Database: {0}", connection.Database);

        connection.ChangeDatabase("Northwind");
        Console.WriteLine("Database: {0}", connection.Database);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.ChangePassword 方法

SqlConnection
.
.
::
.
ChangePassword 方法
SqlConnection 类

将连接字符串中指示的用户的 SQL Server 密码更改为提供的新密码。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared Sub ChangePassword ( _
    connectionString As String, _
    newPassword As String _
)
public static void ChangePassword(
    string connectionString,
    string newPassword
)
public:
static void ChangePassword(
    String^ connectionString,
    String^ newPassword
)
static member ChangePassword :
        connectionString:string *
        newPassword:string -> unit

参数

connectionString
类型： System String
包含连接至所需服务器的足够信息的连接字符串。连接字符串必须包含用户 ID 和当前密码。 包含连接至所需服务器的足够信息的连接字符串。连接字符串必须包含用户 ID 和当前密码。
newPassword
类型： System String
要设置的新密码。此密码必须符合服务器上设置的任何密码安全策略，包括最小长度、特定字符的要求等。 要设置的新密码。此密码必须符合服务器上设置的任何密码安全策略，包括最小长度、特定字符的要求等。
异常 | 条件
ArgumentException | 连接字符串包括使用集成安全性的选项。 Or newPassword 的长度超过 128 个字符。
ArgumentNullException | connectionString 或 newPassword 参数为 null。
InvalidOperationException | connectionString 或一个别名解析为连接计划。

在 Windows Server 2003 或更高版本中使用 SQL Server 2005 时，开发人员可以利用允许客户端应用程序同时提供当前密码和新密码的功能，来更改现有的密码。例如，如果用户的旧密码已过期，则在用户最初登录期间应用程序会提示用户输入新密码，此操作可以在没有管理员干预的情况下完成。 在 Windows Server 2003 或更高版本中使用 SQL Server 2005 时，开发人员可以利用允许客户端应用程序同时提供当前密码和新密码的功能，来更改现有的密码。例如，如果用户的旧密码已过期，则在用户最初登录期间应用程序会提示用户输入新密码，此操作可以在没有管理员干预的情况下完成。

ChangePassword 方法用于将提供的 connectionString 参数中指示的用户的 SQL Server 密码更改为 newPassword 参数中提供的值。如果连接字符串包括集成安全性的选项（即，“Integrated Security=True”或等效选项），则将引发异常。 ChangePassword 方法用于将提供的 connectionString 参数中指示的用户的 SQL Server 密码更改为 newPassword 参数中提供的值。如果连接字符串包括集成安全性的选项（即，“Integrated Security=True”或等效选项），则将引发异常。

若要确定密码是否已过期，可以调用 Open 方法来引发 SqlException。为了指示包含于连接字符串内的密码必须重置，异常的 Number 属性包含状态值 18487 或 18488。第一个值 (18487) 指示密码已过期，第二个值 (18488) 指示必须复位密码后才能登录。 若要确定密码是否已过期，可以调用 Open 方法来引发 SqlException。为了指示包含于连接字符串内的密码必须重置，异常的 Number 属性包含状态值 18487 或 18488。第一个值 (18487) 指示密码已过期，第二个值 (18488) 指示必须复位密码后才能登录。 若要确定密码是否已过期，可以调用 Open 方法来引发 SqlException。为了指示包含于连接字符串内的密码必须重置，异常的 Number 属性包含状态值 18487 或 18488。第一个值 (18487) 指示密码已过期，第二个值 (18488) 指示必须复位密码后才能登录。

此方法将打开本身到服务器的连接，请求密码更改，并在更改完成后立即关闭此连接。此连接不是从 SQL Server 连接池中检索的，也不会返回该连接池。 此方法将打开本身到服务器的连接，请求密码更改，并在更改完成后立即关闭此连接。此连接不是从 SQL Server 连接池中检索的，也不会返回该连接池。

下面的控制台应用程序演示因用户的当前密码已过期而更改密码时涉及的问题。

Option Explicit On
Option Strict On

Imports System
Imports System.Data
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Try
            DemonstrateChangePassword()
        Catch ex As Exception
            Console.WriteLine("Error: " & ex.Message)
        End Try
        Console.WriteLine("Press ENTER to continue...")
        Console.ReadLine()
    End Sub

    Private Sub DemonstrateChangePassword()
        Dim connectionString As String = GetConnectionString()
        Using cnn As New SqlConnection()
            For i As Integer = 0 To 1
                ' Run this loop at most two times. If the first attempt fails,
                ' the code checks the Number property of the SqlException object.
                ' If that contains the special values 18487 or 18488, the code
                ' attempts to set the user's password to a new value.
                ' Assuming this succeeds, the second pass through
                ' successfully opens the connection.
                ' If not, the exception handler catches the exception.
                Try
                    cnn.ConnectionString = connectionString
                    cnn.Open()
                    ' Once this succeeds, just get out of the loop.
                    ' No need to try again if the connection is already open.
                    Exit For

                Catch ex As SqlException _
                 When (i = 0 And (ex.Number = 18487 Or ex.Number = 18488))
                    ' You must reset the password.
                    connectionString = ModifyConnectionString( _
                     connectionString, GetNewPassword())

                Catch ex As SqlException
                    ' Bubble all other SqlException occurrences
                    ' back up to the caller.
                    Throw
                End Try
            Next
            Dim cmd As New SqlCommand("SELECT ProductID, Name FROM Product", cnn)
            ' Use the connection and command here...
        End Using
    End Sub

    Private Function ModifyConnectionString( _
     ByVal connectionString As String, ByVal NewPassword As String) As String

        ' Use the SqlConnectionStringBuilder class to modify the
        ' password portion of the connection string.
        Dim builder As New SqlConnectionStringBuilder(connectionString)
        builder.Password = NewPassword
        Return builder.ConnectionString
    End Function

    Private Function GetNewPassword() As String
        ' In a real application, you might display a modal
        ' dialog box to retrieve the new password. The concepts
        ' are the same as for this simple console application, however.
        Console.Write("Your password must be reset. Enter a new password: ")
        Return Console.ReadLine()
    End Function

    Private Function GetConnectionString() As String
        ' For this demonstration, the connection string must
        ' contain both user and password information. In your own
        ' application, you might want to retrieve this setting
        ' from a config file, or from some other source.

        ' In a production application, you would want to
        ' display a modal form that could gather user and password
        ' information.
        Dim builder As New SqlConnectionStringBuilder( _
         "Data Source=(local);Initial Catalog=AdventureWorks")

        Console.Write("Enter your user id: ")
        builder.UserID = Console.ReadLine()
        Console.Write("Enter your password: ")
        builder.Password = Console.ReadLine()

        Return builder.ConnectionString
    End Function
End Module

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            DemonstrateChangePassword();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
        Console.WriteLine("Press ENTER to continue...");
        Console.ReadLine();
    }

    private static void DemonstrateChangePassword()
    {
        // Retrieve the connection string. In a production application,
        // this string should not be contained within the source code.
        string connectionString = GetConnectionString();

        using (SqlConnection cnn = new SqlConnection())
        {
            for (int i = 0; i <= 1; i++)
            {
                // Run this loop at most two times. If the first attempt fails,
                // the code checks the Number property of the SqlException object.
                // If that contains the special values 18487 or 18488, the code
                // attempts to set the user's password to a new value.
                // Assuming this succeeds, the second pass through
                // successfully opens the connection.
                // If not, the exception handler catches the exception.
                try
                {
                    cnn.ConnectionString = connectionString;
                    cnn.Open();
                    // Once this succeeds, just get out of the loop.
                    // No need to try again if the connection is already open.
                    break;
                }
                catch (SqlException ex)
                {
                    if (i == 0 && ((ex.Number == 18487) || (ex.Number == 18488)))
                    {
                        // You must reset the password.
                        connectionString =
                            ModifyConnectionString(connectionString,
                            GetNewPassword());

                    }
                    else
                        // Bubble all other SqlException occurrences
                        // back up to the caller.
                        throw;
                }
            }
            SqlCommand cmd = new SqlCommand(
                "SELECT ProductID, Name FROM Product", cnn);
            // Use the connection and command here...
        }
    }

    private static string ModifyConnectionString(
        string connectionString, string NewPassword)
    {

        // Use the SqlConnectionStringBuilder class to modify the
        // password portion of the connection string.
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(connectionString);
        builder.Password = NewPassword;
        return builder.ConnectionString;
    }

    private static string GetNewPassword()
    {
        // In a real application, you might display a modal
        // dialog box to retrieve the new password. The concepts
        // are the same as for this simple console application, however.
        Console.Write("Your password must be reset. Enter a new password: ");
        return Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // For this demonstration, the connection string must
        // contain both user and password information. In your own
        // application, you might want to retrieve this setting
        // from a config file, or from some other source.

        // In a production application, you would want to
        // display a modal form that could gather user and password
        // information.
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(
            "Data Source=(local);Initial Catalog=AdventureWorks");

        Console.Write("Enter your user id: ");
        builder.UserID = Console.ReadLine();
        Console.Write("Enter your password: ");
        builder.Password = Console.ReadLine();

        return builder.ConnectionString;
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)
连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.ClearAllPools 方法

SqlConnection
.
.
::
.
ClearAllPools 方法
SqlConnection 类

清空连接池。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared Sub ClearAllPools
public static void ClearAllPools()
public:
static void ClearAllPools()
static member ClearAllPools : unit -> unit

ClearAllPools 重置（或清空）连接池。如果调用时存在使用中的连接，则对这些连接进行相应的标记，并且在对这些连接调用 Close 时，放弃这些连接而不是将其返回连接池。 ClearAllPools 重置（或清空）连接池。如果调用时存在使用中的连接，则对这些连接进行相应的标记，并且在对这些连接调用 Close 时，放弃这些连接而不是将其返回连接池。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)


SqlConnection ..::.ClearPool 方法

SqlConnection
.
.
::
.
ClearPool 方法
SqlConnection 类

清空与指定连接关联的连接池。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Shared Sub ClearPool ( _
    connection As SqlConnection _
)
public static void ClearPool(
    SqlConnection connection
)
public:
static void ClearPool(
    SqlConnection^ connection
)
static member ClearPool :
        connection:SqlConnection -> unit

参数

connection
类型： System.Data.SqlClient SqlConnection
要从连接池中清除的 SqlConnection。

ClearPool 清除与 connection 关联的连接池。如果调用时与 connection 关联的附加连接正在使用，则对这些连接进行相应的标记，并且在对这些连接调用 Close 时，放弃这些连接而不是将其返回连接池。 ClearPool 清除与 connection 关联的连接池。如果调用时与 connection 关联的附加连接正在使用，则对这些连接进行相应的标记，并且在对这些连接调用 Close 时，放弃这些连接而不是将其返回连接池。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)


SqlConnection ..::.Close 方法

SqlConnection
.
.
::
.
Close 方法
SqlConnection 类

关闭与数据库的连接。这是关闭任何打开连接的首选方法。 关闭与数据库的连接。这是关闭任何打开连接的首选方法。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

实现

异常 | 条件
SqlException | 在打开连接时出现连接级别的错误。

Close 方法回滚任何挂起的事务。然后，它将连接释放到连接池，或者在连接池被禁用的情况下关闭连接。 Close 方法回滚任何挂起的事务。然后，它将连接释放到连接池，或者在连接池被禁用的情况下关闭连接。

说明 说明

在启用连接池的情况下重置连接时将自动回滚使用 Transact-SQL 或 BeginTransaction 启动的挂起事务。 如果连接池关闭，则在调用 SqlConnection.Close 之后回滚事务。借助于 System.Transactions 基础结构对通过 System.Transactions 启动的事务进行控制，这些事务不受 SqlConnection.Close 的影响。 在启用连接池的情况下重置连接时将自动回滚使用 Transact-SQL 或 BeginTransaction 启动的挂起事务。 如果连接池关闭，则在调用 SqlConnection.Close 之后回滚事务。借助于 System.Transactions 基础结构对通过 System.Transactions 启动的事务进行控制，这些事务不受 SqlConnection.Close 的影响。

应用程序可以多次调用 Close。不会生成任何异常。 应用程序可以多次调用 Close。不会生成任何异常。

如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则会关闭到服务器的基础连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用Close或Dispose显式关闭该连接。Close 和 Dispose 的功能等效。如果连接池值 Pooling 设置为 true 或 yes，则基础连接将返回到连接池。另一方面，如果 Pooling 设置为 false 或 no，则会关闭到服务器的基础连接。

说明 说明

在从连接池中获取连接或将连接返回到连接池时，将不会在服务器上引发登录和注销事件，因为在将连接返回到连接池时，将不会实际关闭连接。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。 在从连接池中获取连接或将连接返回到连接池时，将不会在服务器上引发登录和注销事件，因为在将连接返回到连接池时，将不会实际关闭连接。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。
警告说明 警告

不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。 不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。 不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。 不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。

下面的示例创建一个 SqlConnection，打开它并显示它的一些属性。该连接在 using 块的末尾自动关闭。 下面的示例创建一个 SqlConnection，打开它并显示它的一些属性。该连接在 using 块的末尾自动关闭。

Private Sub OpenSqlConnection(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

private static void OpenSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)
连接到数据源 (ADO.NET)
SQL Server 和 ADO.NET


SqlConnection ..::.CreateCommand 方法

SqlConnection
.
.
::
.
CreateCommand 方法
SqlConnection 类

创建并返回一个与 SqlConnection 关联的 SqlCommand 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function CreateCommand As SqlCommand
public SqlCommand CreateCommand()
public:
SqlCommand^ CreateCommand()
member CreateCommand : unit -> SqlCommand

返回值

类型： System.Data.SqlClient SqlCommand
一个 SqlCommand 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection ..::.Dispose 方法

SqlConnection
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

释放由 Component 占用的资源。

名称 说明
页首

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection ..::.EnlistDistributedTransaction 方法

SqlConnection
.
.
::
.
EnlistDistributedTransaction 方法
SqlConnection 类

在指定的事务中登记为分布式事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub EnlistDistributedTransaction ( _
    transaction As ITransaction _
)
public void EnlistDistributedTransaction(
    ITransaction transaction
)
public:
void EnlistDistributedTransaction(
    ITransaction^ transaction
)
member EnlistDistributedTransaction :
        transaction:ITransaction -> unit

参数

transaction
类型： System.EnterpriseServices ITransaction
对用于登记的现有 ITransaction 的引用。

ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。因为它在 Transaction 实例中登记一个连接，所以 EnlistTransaction 可以利用 System.Transactions 命名空间中的可用功能管理分布式事务，从而在这方面相对于 EnlistDistributedTransaction 更为可取。有关更多信息，请参见分布式事务 (ADO.NET)。 ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。因为它在 Transaction 实例中登记一个连接，所以 EnlistTransaction 可以利用 System.Transactions 命名空间中的可用功能管理分布式事务，从而在这方面相对于 EnlistDistributedTransaction 更为可取。有关更多信息，请参见分布式事务 (ADO.NET)。 ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。因为它在 Transaction 实例中登记一个连接，所以 EnlistTransaction 可以利用 System.Transactions 命名空间中的可用功能管理分布式事务，从而在这方面相对于 EnlistDistributedTransaction 更为可取。有关更多信息，请参见分布式事务 (ADO.NET)。

如果自动登记被禁用，则可以使用 EnlistDistributedTransaction 方法在现有分布式事务中继续登记。在现有分布式事务中登记可以确保：如果提交或回滚该事务，也将提交或回滚代码在数据源处所做的修改。 如果自动登记被禁用，则可以使用 EnlistDistributedTransaction 方法在现有分布式事务中继续登记。在现有分布式事务中登记可以确保：如果提交或回滚该事务，也将提交或回滚代码在数据源处所做的修改。

如果 SqlConnection 已使用 BeginTransaction 启动了事务，EnlistDistributedTransaction 会返回异常。但是，如果该事务是在数据源启动的一个本地事务（例如，通过使用 SqlCommand 对象显式执行 BEGIN TRANSACTION 语句），则 EnlistDistributedTransaction 将回滚该本地事务并根据请求在现有分布式事务中登记。您不会接收到该本地事务已回滚的通知，并且您负责管理没有使用 BeginTransaction 启动的所有本地事务。 如果 SqlConnection 已使用 BeginTransaction 启动了事务，EnlistDistributedTransaction 会返回异常。但是，如果该事务是在数据源启动的一个本地事务（例如，通过使用 SqlCommand 对象显式执行 BEGIN TRANSACTION 语句），则 EnlistDistributedTransaction 将回滚该本地事务并根据请求在现有分布式事务中登记。您不会接收到该本地事务已回滚的通知，并且您负责管理没有使用 BeginTransaction 启动的所有本地事务。 如果 SqlConnection 已使用 BeginTransaction 启动了事务，EnlistDistributedTransaction 会返回异常。但是，如果该事务是在数据源启动的一个本地事务（例如，通过使用 SqlCommand 对象显式执行 BEGIN TRANSACTION 语句），则 EnlistDistributedTransaction 将回滚该本地事务并根据请求在现有分布式事务中登记。您不会接收到该本地事务已回滚的通知，并且您负责管理没有使用 BeginTransaction 启动的所有本地事务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)


SqlConnection ..::.EnlistTransaction 方法

SqlConnection
.
.
::
.
EnlistTransaction 方法
SqlConnection 类

在指定的事务中登记为分布式事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub EnlistTransaction ( _
    transaction As Transaction _
)
public override void EnlistTransaction(
    Transaction transaction
)
public:
virtual void EnlistTransaction(
    Transaction^ transaction
) override
abstract EnlistTransaction :
        transaction:Transaction -> unit
override EnlistTransaction :
        transaction:Transaction -> unit

参数

transaction
类型： System.Transactions Transaction
对用于登记的现有 Transaction 的引用。

ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。由于 EnlistTransaction 在 Transaction 实例中登记连接，因此，该方法利用 System.Transactions 命名空间中的可用功能来管理分布式事务，从而比使用 System.EnterpriseServices.ITransaction 对象的 EnlistDistributedTransaction 更可取。此外，其语义也稍有不同：在一个事务中显式登记了某个连接后，如果第一个事务尚未完成，将无法取消登记或在另一个事务中登记该连接。有关分布式事务的更多信息，请参见 分布式事务 (ADO.NET)。 ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。由于 EnlistTransaction 在 Transaction 实例中登记连接，因此，该方法利用 System.Transactions 命名空间中的可用功能来管理分布式事务，从而比使用 System.EnterpriseServices.ITransaction 对象的 EnlistDistributedTransaction 更可取。此外，其语义也稍有不同：在一个事务中显式登记了某个连接后，如果第一个事务尚未完成，将无法取消登记或在另一个事务中登记该连接。有关分布式事务的更多信息，请参见 分布式事务 (ADO.NET)。 ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。由于 EnlistTransaction 在 Transaction 实例中登记连接，因此，该方法利用 System.Transactions 命名空间中的可用功能来管理分布式事务，从而比使用 System.EnterpriseServices.ITransaction 对象的 EnlistDistributedTransaction 更可取。此外，其语义也稍有不同：在一个事务中显式登记了某个连接后，如果第一个事务尚未完成，将无法取消登记或在另一个事务中登记该连接。有关分布式事务的更多信息，请参见 分布式事务 (ADO.NET)。 ADO.NET 2.0 中的新增功能支持使用 EnlistTransaction 方法在分布式事务中登记。由于 EnlistTransaction 在 Transaction 实例中登记连接，因此，该方法利用 System.Transactions 命名空间中的可用功能来管理分布式事务，从而比使用 System.EnterpriseServices.ITransaction 对象的 EnlistDistributedTransaction 更可取。此外，其语义也稍有不同：在一个事务中显式登记了某个连接后，如果第一个事务尚未完成，将无法取消登记或在另一个事务中登记该连接。有关分布式事务的更多信息，请参见 分布式事务 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)


SqlConnection ..::.GetSchema 方法

SqlConnection
.
.
::
.
GetSchema 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

返回此 SqlConnection 的数据源的架构信息。

名称 说明
页首

如果尝试检索多个版本的存储过程的架构信息，则仅返回最新版本的架构。有关多版本存储过程的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。 如果尝试检索多个版本的存储过程的架构信息，则仅返回最新版本的架构。有关多版本存储过程的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlConnection ..::.GetSchema 方法

SqlConnection
.
.
::
.
GetSchema 方法
SqlConnection 类

返回此 SqlConnection 的数据源的架构信息。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetSchema As DataTable
public override DataTable GetSchema()
public:
virtual DataTable^ GetSchema() override
abstract GetSchema : unit -> DataTable
override GetSchema : unit -> DataTable

返回值

类型： System.Data DataTable
包含架构信息的 DataTable。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
GetSchema 重载
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlConnection ..::.GetSchema 方法 (String)

SqlConnection
.
.
::
.
GetSchema 方法 (String)
SqlConnection 类

使用指定的架构名称字符串，返回此 SqlConnection 的数据源的架构信息。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetSchema ( _
    collectionName As String _
) As DataTable
public override DataTable GetSchema(
    string collectionName
)
public:
virtual DataTable^ GetSchema(
    String^ collectionName
) override
abstract GetSchema :
        collectionName:string -> DataTable
override GetSchema :
        collectionName:string -> DataTable

参数

collectionName
类型： System String
指定要返回的架构的名称。

返回值

类型： System.Data DataTable
包含架构信息的 DataTable。
异常 | 条件
ArgumentException | collectionName 被指定为空。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
GetSchema 重载
System.Data.SqlClient 命名空间

其他资源

检索数据库架构信息 (ADO.NET)


SqlConnection ..::.GetSchema 方法 (String, array<String >[]()[])

SqlConnection
.
.
::
.
GetSchema 方法 (String,
array<
String
>
[]
()
[]
)
SqlConnection 类

使用指定的架构名称字符串和指定的限制值字符串数组，返回此 SqlConnection 的数据源的架构信息。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetSchema ( _
    collectionName As String, _
    restrictionValues As String() _
) As DataTable
public override DataTable GetSchema(
    string collectionName,
    string[] restrictionValues
)
public:
virtual DataTable^ GetSchema(
    String^ collectionName,
    array<String^>^ restrictionValues
) override
abstract GetSchema :
        collectionName:string *
        restrictionValues:string[] -> DataTable
override GetSchema :
        collectionName:string *
        restrictionValues:string[] -> DataTable

参数

collectionName
类型： System String
指定要返回的架构的名称。
restrictionValues
类型：
array<
System String
>
[]
()
[]

请求的架构的一组限制值。

返回值

类型： System.Data DataTable
包含架构信息的 DataTable。
异常 | 条件
ArgumentException | collectionName 被指定为空。

restrictionValues 参数可以提供深度为 n 的值，这些值由特定集合的限制集合指定。为了设置给定限制而不是其他限制的值，需要将前面的限制设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），然后为要指定其值的限制设置相应的值。 restrictionValues 参数可以提供深度为 n 的值，这些值由特定集合的限制集合指定。为了设置给定限制而不是其他限制的值，需要将前面的限制设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），然后为要指定其值的限制设置相应的值。

例如，对于“Tables”集合，如果“Tables”集合有三个限制（数据库、所有者和表名），您只希望返回与所有者“Carl”关联的表，那么，您需要传入以下值：null，“Carl”。如果没有传入限制值，则使用该限制的默认值。这与传入 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的映射相同，而不同于为参数值传入一个空字符串。在这种情况下，空字符串 ("") 被认为是指定参数的值。 例如，对于“Tables”集合，如果“Tables”集合有三个限制（数据库、所有者和表名），您只希望返回与所有者“Carl”关联的表，那么，您需要传入以下值：null，“Carl”。如果没有传入限制值，则使用该限制的默认值。这与传入 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的映射相同，而不同于为参数值传入一个空字符串。在这种情况下，空字符串 ("") 被认为是指定参数的值。 例如，对于“Tables”集合，如果“Tables”集合有三个限制（数据库、所有者和表名），您只希望返回与所有者“Carl”关联的表，那么，您需要传入以下值：null，“Carl”。如果没有传入限制值，则使用该限制的默认值。这与传入 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的映射相同，而不同于为参数值传入一个空字符串。在这种情况下，空字符串 ("") 被认为是指定参数的值。 例如，对于“Tables”集合，如果“Tables”集合有三个限制（数据库、所有者和表名），您只希望返回与所有者“Carl”关联的表，那么，您需要传入以下值：null，“Carl”。如果没有传入限制值，则使用该限制的默认值。这与传入 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的映射相同，而不同于为参数值传入一个空字符串。在这种情况下，空字符串 ("") 被认为是指定参数的值。 例如，对于“Tables”集合，如果“Tables”集合有三个限制（数据库、所有者和表名），您只希望返回与所有者“Carl”关联的表，那么，您需要传入以下值：null，“Carl”。如果没有传入限制值，则使用该限制的默认值。这与传入 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的映射相同，而不同于为参数值传入一个空字符串。在这种情况下，空字符串 ("") 被认为是指定参数的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
GetSchema 重载
System.Data.SqlClient 命名空间
GetSchema

其他资源

检索数据库架构信息 (ADO.NET)


SqlConnection ..::.ICloneable ..::.Clone 方法

SqlConnection
.
.
::
.
ICloneable
.
.
::
.
Clone 方法
SqlConnection 类

创建作为当前实例副本的新对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Function Clone As Object Implements ICloneable.Clone
Object ICloneable.Clone()
private:
virtual Object^ Clone() sealed = ICloneable::Clone
private abstract Clone : unit -> Object
private override Clone : unit -> Object

返回值

类型： System Object
作为此实例副本的新对象。

实现

此成员是显式的接口成员实现。只能在 SqlConnection 实例强制转换为 ICloneable 接口时使用它。 此成员是显式的接口成员实现。只能在 SqlConnection 实例强制转换为 ICloneable 接口时使用它。

只有 .NET Compact Framework 支持此成员。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection ..::.MemberwiseClone 方法

SqlConnection
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

名称 说明
页首

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间


SqlConnection ..::.Open 方法

SqlConnection
.
.
::
.
Open 方法
SqlConnection 类

使用 ConnectionString 所指定的属性设置打开数据库连接。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Open
public override void Open()
public:
virtual void Open() override
abstract Open : unit -> unit
override Open : unit -> unit

实现

异常 | 条件
InvalidOperationException | 未指定数据源或服务器，不能打开连接。 或 连接已打开。
SqlException | 在打开连接时出现连接级别的错误。如果 Number 属性包含值 18487 或 18488，则表示指定的密码已过期或必须进行重置。有关更多信息，请参见 ChangePassword 方法。 在打开连接时出现连接级别的错误。如果 Number 属性包含值 18487 或 18488，则表示指定的密码已过期或必须进行重置。有关更多信息，请参见 ChangePassword 方法。 在打开连接时出现连接级别的错误。如果 Number 属性包含值 18487 或 18488，则表示指定的密码已过期或必须进行重置。有关更多信息，请参见 ChangePassword 方法。
ArgumentException | 与以下选项之一一起指定连接计划： FailOverPartner，AttachDbFileName，UserInstance = true，或 contextConnection = true。

SqlConnection 从连接池中提取一个打开的连接（如果有可用的连接）。否则，它将建立一个与 SQL Server 实例的新连接。 SqlConnection 从连接池中提取一个打开的连接（如果有可用的连接）。否则，它将建立一个与 SQL Server 实例的新连接。

说明 说明

如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用 Close 显式关闭该连接。 如果 SqlConnection 超出范围，则不会将其关闭。因此，必须通过调用 Close 显式关闭该连接。
说明 说明

在尝试连接至 SQL Server 的实例并使用 TCP/IP 以外的协议时，如果指定 1433 以外的端口号，Open 方法就会失败。若要指定 1433 以外的端口号，请在连接字符串中包括“server=machinename,port number”，并使用 TCP/IP 协议。 在尝试连接至 SQL Server 的实例并使用 TCP/IP 以外的协议时，如果指定 1433 以外的端口号，Open 方法就会失败。若要指定 1433 以外的端口号，请在连接字符串中包括“server=machinename,port number”，并使用 TCP/IP 协议。
说明 说明

SQL Server .NET Framework 数据提供程序要求提供启用了“允许调用非托管程序集”的安全权限（将带有 SecurityPermissionFlag 的 SecurityPermission 设置为 UnmanagedCode），来打开启用了“SQL 调试”的 SqlConnection。

下面的示例创建一个 SqlConnection，打开它并显示它的一些属性。该连接在 using 块的末尾自动关闭。 下面的示例创建一个 SqlConnection，打开它并显示它的一些属性。该连接在 using 块的末尾自动关闭。

Private Sub OpenSqlConnection(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("State: {0}", connection.State)
    End Using
End Sub

private static void OpenSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)
SQL Server 连接池 (ADO.NET)
连接到数据源 (ADO.NET)


SqlConnection ..::.ResetStatistics 方法

SqlConnection
.
.
::
.
ResetStatistics 方法
SqlConnection 类

如果启用统计信息收集，则所有的值都将重置为零。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub ResetStatistics
public void ResetStatistics()
public:
void ResetStatistics()
member ResetStatistics : unit -> unit

如果未启用统计信息收集，但调用了此方法，则不会引发错误。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 提供程序统计信息 (ADO.NET)


SqlConnection ..::.RetrieveStatistics 方法

SqlConnection
.
.
::
.
RetrieveStatistics 方法
SqlConnection 类

调用该方法时，将返回统计信息的名称值对集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function RetrieveStatistics As IDictionary
public IDictionary RetrieveStatistics()
public:
IDictionary^ RetrieveStatistics()
member RetrieveStatistics : unit -> IDictionary

返回值

类型： System.Collections IDictionary
返回 DictionaryEntry 项的 IDictionary 类型的引用。

调用此方法时，检索的值是处于当前时间点的那些值。如果继续使用该连接，则这些值就不正确了。需要重新执行该方法来获取最新的值。 调用此方法时，检索的值是处于当前时间点的那些值。如果继续使用该连接，则这些值就不正确了。需要重新执行该方法来获取最新的值。 调用此方法时，检索的值是处于当前时间点的那些值。如果继续使用该连接，则这些值就不正确了。需要重新执行该方法来获取最新的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 提供程序统计信息 (ADO.NET)


SqlConnection 属性

SqlConnection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

SqlConnection 类型公开以下成员。

名称 说明
页首

参考

SqlConnection 类
System.Data.SqlClient 命名空间


SqlConnection ..::.ConnectionString 属性

SqlConnection
.
.
::
.
ConnectionString 属性
SqlConnection 类

获取或设置用于打开 SQL Server 数据库的字符串。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SettingsBindableAttribute(True)> _
Public Overrides Property ConnectionString As String
    Get
    Set
[SettingsBindableAttribute(true)]
public override string ConnectionString { get; set; }
[SettingsBindableAttribute(true)]
public:
virtual property String^ ConnectionString {
    String^ get () override;
    void set (String^ value) override;
}
[<SettingsBindableAttribute(true)>]
abstract ConnectionString : string with get, set
[<SettingsBindableAttribute(true)>]
override ConnectionString : string with get, set

属性值

类型： System String
连接字符串，其中包含源数据库名称和建立初始连接所需的其他参数。默认值为空字符串。 连接字符串，其中包含源数据库名称和建立初始连接所需的其他参数。默认值为空字符串。

实现

异常 | 条件
ArgumentException | 提供了无效的连接字符串参数，或未提供所需的连接字符串参数。

ConnectionString 类似于 OLE DB 连接字符串，但并不相同。与 OLE DB 或 ADO 不同，如果“Persist Security Info”值设置为 false（默认值），则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。除非将“Persist Security Info”设置为 true，否则，SQL Server .NET Framework 数据提供程序将不会保持，也不会返回连接字符串中的密码。 ConnectionString 类似于 OLE DB 连接字符串，但并不相同。与 OLE DB 或 ADO 不同，如果“Persist Security Info”值设置为 false（默认值），则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。除非将“Persist Security Info”设置为 true，否则，SQL Server .NET Framework 数据提供程序将不会保持，也不会返回连接字符串中的密码。 ConnectionString 类似于 OLE DB 连接字符串，但并不相同。与 OLE DB 或 ADO 不同，如果“Persist Security Info”值设置为 false（默认值），则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。除非将“Persist Security Info”设置为 true，否则，SQL Server .NET Framework 数据提供程序将不会保持，也不会返回连接字符串中的密码。

可以使用 ConnectionString 属性连接到数据库。下面的示例阐释了一个典型的连接字符串。 可以使用 ConnectionString 属性连接到数据库。下面的示例阐释了一个典型的连接字符串。

"Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local)"

使用新的 SqlConnectionStringBuilder 在运行时构造有效的连接字符串。有关更多信息，请参见连接字符串生成器 (ADO.NET)。 使用新的 SqlConnectionStringBuilder 在运行时构造有效的连接字符串。有关更多信息，请参见连接字符串生成器 (ADO.NET)。

只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时，将更新这些属性（除非检测到错误）。在这种情况下，所有属性都不被更新。SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。 只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时，将更新这些属性（除非检测到错误）。在这种情况下，所有属性都不被更新。SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。 只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时，将更新这些属性（除非检测到错误）。在这种情况下，所有属性都不被更新。SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。 只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时，将更新这些属性（除非检测到错误）。在这种情况下，所有属性都不被更新。SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。 只有在连接关闭时才能设置 ConnectionString 属性。许多连接字符串值都具有相应的只读属性。当设置连接字符串时，将更新这些属性（除非检测到错误）。在这种情况下，所有属性都不被更新。SqlConnection 属性只返回那些包含在 ConnectionString 中的设置。

若要连接到本地计算机，请将服务器指定为“(本地)”。如果未指定服务器名称，则会尝试连接到本地计算机上的默认实例。 若要连接到本地计算机，请将服务器指定为“(本地)”。如果未指定服务器名称，则会尝试连接到本地计算机上的默认实例。

重置已关闭连接上的 ConnectionString 会重置包括密码在内的所有连接字符串值（和相关属性）。例如，如果设置一个连接字符串，其中包含“Database= AdventureWorks”，然后再将该连接字符串重置为“Data Source=myserver;Integrated Security=true”，则 Database 属性将不再设置为“AdventureWorks”。 重置已关闭连接上的 ConnectionString 会重置包括密码在内的所有连接字符串值（和相关属性）。例如，如果设置一个连接字符串，其中包含“Database= AdventureWorks”，然后再将该连接字符串重置为“Data Source=myserver;Integrated Security=true”，则 Database 属性将不再设置为“AdventureWorks”。

在设置后会立即分析连接字符串。如果在分析时发现语法中有错误，则产生运行时异常，如 ArgumentException。只有当尝试打开连接时，才会发现其他错误。 在设置后会立即分析连接字符串。如果在分析时发现语法中有错误，则产生运行时异常，如 ArgumentException。只有当尝试打开连接时，才会发现其他错误。 在设置后会立即分析连接字符串。如果在分析时发现语法中有错误，则产生运行时异常，如 ArgumentException。只有当尝试打开连接时，才会发现其他错误。

连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。 连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。 连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。 连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。 连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。 连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。 连接字符串的基本格式包括一系列由分号分隔的关键字/值对。等号 (= ) 连接各个关键字及其值。若要包括含有分号、单引号字符或双引号字符的值，则该值必须用双引号括起来。如果该值同时包含分号和双引号字符，则该值可以用单引号括起来。如果该值以双引号字符开始，则也可以使用单引号。相反，如果该值以单引号开始，也可以使用双引号。如果该值同时包含单引号和双引号字符，则用于将该值括起来的引号字符每次出现时，都必须成对出现。

若要在字符串值中包括前导或尾随空格，则该值必须用单引号或双引号括起来。即使将整数、布尔值或枚举值用引号括起来，其周围的任何前导或尾随空格也将被忽略。然而，保留字符串关键字或值内的空格。使用 .NET Framework 1.1 版或更高版本时，在连接字符串中可以使用单引号或双引号，而不用使用分隔符（例如，Data Source= my'Server 或 Data Source= my"Server），但引号字符不可以为值的第一个或最后一个字符。 若要在字符串值中包括前导或尾随空格，则该值必须用单引号或双引号括起来。即使将整数、布尔值或枚举值用引号括起来，其周围的任何前导或尾随空格也将被忽略。然而，保留字符串关键字或值内的空格。使用 .NET Framework 1.1 版或更高版本时，在连接字符串中可以使用单引号或双引号，而不用使用分隔符（例如，Data Source= my'Server 或 Data Source= my"Server），但引号字符不可以为值的第一个或最后一个字符。 若要在字符串值中包括前导或尾随空格，则该值必须用单引号或双引号括起来。即使将整数、布尔值或枚举值用引号括起来，其周围的任何前导或尾随空格也将被忽略。然而，保留字符串关键字或值内的空格。使用 .NET Framework 1.1 版或更高版本时，在连接字符串中可以使用单引号或双引号，而不用使用分隔符（例如，Data Source= my'Server 或 Data Source= my"Server），但引号字符不可以为值的第一个或最后一个字符。 若要在字符串值中包括前导或尾随空格，则该值必须用单引号或双引号括起来。即使将整数、布尔值或枚举值用引号括起来，其周围的任何前导或尾随空格也将被忽略。然而，保留字符串关键字或值内的空格。使用 .NET Framework 1.1 版或更高版本时，在连接字符串中可以使用单引号或双引号，而不用使用分隔符（例如，Data Source= my'Server 或 Data Source= my"Server），但引号字符不可以为值的第一个或最后一个字符。

关键字不区分大小写。

下表列出了 ConnectionString 中的关键字值的有效名称。

关键字

默认值

说明

Application Name

不可用

应用程序的名称，或者“.Net SqlClient Data Provider”（如果不提供应用程序名称）。

Async

'false'

如果设置为 true，则启用异步操作支持。可识别的值为 true、false、yes 和 no。 如果设置为 true，则启用异步操作支持。可识别的值为 true、false、yes 和 no。

AttachDBFilename

- 或 -

extended properties

- 或 -

Initial File Name

不可用

主数据库文件的名称，包括可连接数据库的完整路径名。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。 主数据库文件的名称，包括可连接数据库的完整路径名。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。

如果主数据文件为只读，则附加操作将失败。

该路经可以是绝对路径，也可以是相对路径，这取决于是否使用 DataDirectory 替换字符串。如果使用 DataDirectory，则对应的数据库文件必须存在于替换字符串指向的目录的子目录中。 该路经可以是绝对路径，也可以是相对路径，这取决于是否使用 DataDirectory 替换字符串。如果使用 DataDirectory，则对应的数据库文件必须存在于替换字符串指向的目录的子目录中。

说明 说明
远程服务器、HTTP 及 UNC 路径名不受支持。

必须按照如下方式使用关键字“database”（或其别名之一）指定数据库名称：

"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

如果数据文件所在的目录中存在日志文件，并且在附加主数据文件时使用了“database”关键字，则会生成错误。这种情况下，请移除日志文件。附加了数据库后，系统将根据物理路径自动生成一个新的日志文件。 如果数据文件所在的目录中存在日志文件，并且在附加主数据文件时使用了“database”关键字，则会生成错误。这种情况下，请移除日志文件。附加了数据库后，系统将根据物理路径自动生成一个新的日志文件。 如果数据文件所在的目录中存在日志文件，并且在附加主数据文件时使用了“database”关键字，则会生成错误。这种情况下，请移除日志文件。附加了数据库后，系统将根据物理路径自动生成一个新的日志文件。

Connect Timeout

- 或 -

Connection Timeout

15

在终止尝试并产生错误之前，等待与服务器的连接的时间长度（以秒为单位）。

Context Connection

'false'

如果应对 SQL Server 进行进程内连接，则为 true。

Current Language

不可用

SQL Server 语言记录名称。

数据源

- 或 -

服务器

- 或 -

地址

- 或 -

Addr

- 或 -

Network Address

不可用

要连接的 SQL Server 实例的名称或网络地址。可以在服务器名称之后指定端口号： 要连接的 SQL Server 实例的名称或网络地址。可以在服务器名称之后指定端口号：

server=tcp:servername, portnumber

指定本地实例时，始终使用 (local)。若要强制使用某个协议，请添加下列前缀之一： 指定本地实例时，始终使用 (local)。若要强制使用某个协议，请添加下列前缀之一：

np:(local), tcp:(local), lpc:(local)

说明 说明
ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是，可以强制用 TCP 代替共享内存，方法是：向连接字符串中的服务器名称添加“tcp:”前缀，或者使用“本地主机”。 ADO.NET 2.0 不支持在 SQL Server 2000 或更低版本的共享内存上执行异步命令。但是，可以强制用 TCP 代替共享内存，方法是：向连接字符串中的服务器名称添加“tcp:”前缀，或者使用“本地主机”。

Encrypt

'false'

当该值为 true 时，如果服务器端安装了证书，则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。可识别的值为 true、false、yes 和 no。 当该值为 true 时，如果服务器端安装了证书，则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。可识别的值为 true、false、yes 和 no。

Enlist

'true'

true 表明 SQL Server 连接池程序在创建线程的当前事务上下文中自动登记连接。

Failover Partner

不可用

在其中配置数据库镜像的故障转移合作伙伴服务器的名称。

.NET Framework 1.0 或 1.1 版不支持 Failover Partner 关键字。

Initial Catalog

- 或 -

数据库

不可用

数据库的名称。

Integrated Security

- 或 -

Trusted_Connection

'false'

当为 false 时，将在连接中指定用户 ID 和密码。当为 true 时，将使用当前的 Windows 帐户凭据进行身份验证。 当为 false 时，将在连接中指定用户 ID 和密码。当为 true 时，将使用当前的 Windows 帐户凭据进行身份验证。

可识别的值为 true、false、yes、no 以及与 true 等效的 sspi（强烈推荐）。

如果指定了用户 ID 和密码，且集成安全性设置为 true，则用户 ID 和密码将被忽略，并使用集成安全性。

MultipleActiveResultSets

'false'

如果为 true，则应用程序可以维护多活动结果集 (MARS)。如果为 false，则应用程序必须在执行该连接上的任何其他批处理之前处理或取消一个批处理中的多个结果集。 如果为 true，则应用程序可以维护多活动结果集 (MARS)。如果为 false，则应用程序必须在执行该连接上的任何其他批处理之前处理或取消一个批处理中的多个结果集。

可识别的值为 true 和 false。

.NET Framework 1.0 或 1.1 版不支持该关键字。

Network Library

- 或 -

Net

'dbmssocn'

用于建立与 SQL Server 实例的连接的网络库。支持的值包括： 用于建立与 SQL Server 实例的连接的网络库。支持的值包括：

dbnmpntw（命名管道）

dbmsrpcn（多协议，Windows RPC）

dbmsadsn (Apple Talk)

dbmsgnet (VIA)

dbmslpcn（共享内存）

dbmsspxn (IPX/SPX)

dbmssocn (TCP/IP)

Dbmsvinn (Banyan Vines)

相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络，且使用本地服务器（例如“.”或 "（本地）"），使用共享内存。在此示例中，网络库为 Win32 Winsock TCP/IP (dbmssocn)，使用的端口为 1433。 相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络，且使用本地服务器（例如“.”或 "（本地）"），使用共享内存。在此示例中，网络库为 Win32 Winsock TCP/IP (dbmssocn)，使用的端口为 1433。 相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络，且使用本地服务器（例如“.”或 "（本地）"），使用共享内存。在此示例中，网络库为 Win32 Winsock TCP/IP (dbmssocn)，使用的端口为 1433。

Network Library=dbmssocn;Data Source=000.000.000.000,1433;

Packet Size

8192

用来与 SQL Server 的实例进行通信的网络数据包的大小，以字节为单位。

Password

- 或 -

Pwd

不可用

SQL Server 帐户登录的密码。建议不要使用。为保持高安全级别，我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。 SQL Server 帐户登录的密码。建议不要使用。为保持高安全级别，我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。 SQL Server 帐户登录的密码。建议不要使用。为保持高安全级别，我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。

Persist Security Info

'false'

当该值设置为 false 或 no（强烈推荐）时，如果连接是打开的或者一直处于打开状态，那么安全敏感信息（如密码）将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 true、false、yes 和 no。 当该值设置为 false 或 no（强烈推荐）时，如果连接是打开的或者一直处于打开状态，那么安全敏感信息（如密码）将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 true、false、yes 和 no。 当该值设置为 false 或 no（强烈推荐）时，如果连接是打开的或者一直处于打开状态，那么安全敏感信息（如密码）将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 true、false、yes 和 no。

计划

不可用

指定连接计划。如果以下项也在连接字符串中指定，则将引发 ArgumentException：failover partner、AttachDbFileName、UserInstance=true 或 contextConnection=true。 指定连接计划。如果以下项也在连接字符串中指定，则将引发 ArgumentException：failover partner、AttachDbFileName、UserInstance=true 或 contextConnection=true。

复制

'false'

如果使用连接来支持复制，则为 true。

Transaction Binding

Implicit Unbind

控制与登记的 System.Transactions 事务关联的连接。

可能的值包括：

Transaction Binding=Implicit Unbind;

Transaction Binding=Explicit Unbind;

Implicit Unbind 可使连接在事务结束时从事务中分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 System.Transactions.Transaction.Current 属性。事务结束后，其他请求将以自动提交模式执行。 Implicit Unbind 可使连接在事务结束时从事务中分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 System.Transactions.Transaction.Current 属性。事务结束后，其他请求将以自动提交模式执行。 Implicit Unbind 可使连接在事务结束时从事务中分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 System.Transactions.Transaction.Current 属性。事务结束后，其他请求将以自动提交模式执行。 Implicit Unbind 可使连接在事务结束时从事务中分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 System.Transactions.Transaction.Current 属性。事务结束后，其他请求将以自动提交模式执行。

Explicit Unbind 可使连接保持连接到事务，直到连接关闭或调用显式 SqlConnection.TransactionEnlist(null)。如果 Transaction.Current 不是登记的事务或登记的事务未处于活动状态，则引发 InvalidOperationException。 Explicit Unbind 可使连接保持连接到事务，直到连接关闭或调用显式 SqlConnection.TransactionEnlist(null)。如果 Transaction.Current 不是登记的事务或登记的事务未处于活动状态，则引发 InvalidOperationException。

TrustServerCertificate

'false'

如果设置为 true，则使用 SSL 对通道进行加密，但不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false，则不对通道进行加密。可识别的值为 true、false、yes 和 no。有关更多信息，请参见连接字符串语法 (ADO.NET)。 如果设置为 true，则使用 SSL 对通道进行加密，但不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false，则不对通道进行加密。可识别的值为 true、false、yes 和 no。有关更多信息，请参见连接字符串语法 (ADO.NET)。 如果设置为 true，则使用 SSL 对通道进行加密，但不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false，则不对通道进行加密。可识别的值为 true、false、yes 和 no。有关更多信息，请参见连接字符串语法 (ADO.NET)。 如果设置为 true，则使用 SSL 对通道进行加密，但不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并将 Encrypt 设置为 false，则不对通道进行加密。可识别的值为 true、false、yes 和 no。有关更多信息，请参见连接字符串语法 (ADO.NET)。

Type System Version

不可用

指示应用程序期望的类型系统的字符串值。可能的值包括： 指示应用程序期望的类型系统的字符串值。可能的值包括：

Type System Version=SQL Server 2000;

Type System Version=SQL Server 2005;

Type System Version=SQL Server 2008;

Type System Version=Latest;

如果设置为 SQL Server 2000，将使用 SQL Server 2000 类型系统。与 SQL Server 2005 实例连接时，执行下列转换： 如果设置为 SQL Server 2000，将使用 SQL Server 2000 类型系统。与 SQL Server 2005 实例连接时，执行下列转换：

XML to NTEXT

UDT to VARBINARY

VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分别与 TEXT、NEXT 和 IMAGE。

如果设置为 SQL Server 2005，将使用 SQL Server 2005 类型系统。对 ADO.NET 的当前版本不进行任何转换。 如果设置为 SQL Server 2005，将使用 SQL Server 2005 类型系统。对 ADO.NET 的当前版本不进行任何转换。

如果设置为 Latest，将使用此客户端-服务器对无法处理的最新版本。这个最新版本将随着客户端和服务器组件的升级自动更新。 如果设置为 Latest，将使用此客户端-服务器对无法处理的最新版本。这个最新版本将随着客户端和服务器组件的升级自动更新。

用户 ID

不可用

SQL Server 登录帐户。建议不要使用。为保持高安全级别，我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。 SQL Server 登录帐户。建议不要使用。为保持高安全级别，我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。 SQL Server 登录帐户。建议不要使用。为保持高安全级别，我们强烈建议您使用 Integrated Security 或 Trusted_Connection 关键字。

User Instance

'false'

一个值，用于指示是否将连接从默认的 SQL Server Express 实例重定向到调用方帐户下运行的运行时启动的实例。

Workstation ID

本地计算机名称

连接到 SQL Server 的工作站的名称。

下表列出了 ConnectionString 内连接池值的有效名称。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。 下表列出了 ConnectionString 内连接池值的有效名称。有关更多信息，请参见SQL Server 连接池 (ADO.NET)。

Name | 默认值 | 说明
Connection Lifetime | 0 | 当连接被返回到池时，将其创建时间与当前时间作比较，如果时间长度（以秒为单位）超出了由 Connection Lifetime 指定的值，该连接就会被销毁。这在聚集配置中很有用（用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡）。 当连接被返回到池时，将其创建时间与当前时间作比较，如果时间长度（以秒为单位）超出了由 Connection Lifetime 指定的值，该连接就会被销毁。这在聚集配置中很有用（用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡）。 零 (0) 值将使池连接具有最大的连接超时。
Enlist | 'true' | 当该值为 true 时，池程序在创建线程的当前事务上下文中自动登记连接。可识别的值为 true、false、yes 和 no。 当该值为 true 时，池程序在创建线程的当前事务上下文中自动登记连接。可识别的值为 true、false、yes 和 no。
Load Balance Timeout | 0 | 连接被销毁前在连接池中生存的最短时间（以秒为单位）。
Max Pool Size | 100 | 池中允许的最大连接数。
Min Pool Size | 0 | 池中允许的最小连接数。
Pooling | 'true' | 当该值为 true 时，系统将从适当的池中提取 SQLConnection 对象，或在需要时创建该对象并将其添加到适当的池中。可识别的值为 true、false、yes 和 no。 当该值为 true 时，系统将从适当的池中提取 SQLConnection 对象，或在需要时创建该对象并将其添加到适当的池中。可识别的值为 true、false、yes 和 no。

当设置需要布尔值的关键字或连接池值时，您可以使用“yes”代替“true”，用“no”代替“false”。整数值表示为字符串。 当设置需要布尔值的关键字或连接池值时，您可以使用“yes”代替“true”，用“no”代替“false”。整数值表示为字符串。

说明 说明

SQL Server .NET Framework 数据提供程序使用它自己的协议与 SQL Server 进行通信。因此，当连接到 SQL Server 时，它不支持 ODBC 数据源名称 (DSN) 的使用，因为它不添加 ODBC 层。 SQL Server .NET Framework 数据提供程序使用它自己的协议与 SQL Server 进行通信。因此，当连接到 SQL Server 时，它不支持 ODBC 数据源名称 (DSN) 的使用，因为它不添加 ODBC 层。
说明 说明

用于 SQL Server 的 .NET Framework 数据提供程序不支持通用数据链接 (UDL) 文件。
警告说明 警告

在此版本中，在应用程序中根据用户输入构造连接字符串时（例如，从对话框中检索用户 ID 和密码信息并将其追加到连接字符串时）应相当谨慎。应用程序应确保用户无法在这些值中嵌入其他连接字符串参数（例如，输入“validpassword;database=somedb”作为密码，以尝试连接到其他数据库）。如果需要根据用户输入构造连接字符串，请使用新的 SqlConnectionStringBuilder，它可以验证连接字符串，并有助于消除此问题。有关更多信息，请参见连接字符串生成器 (ADO.NET)。 在此版本中，在应用程序中根据用户输入构造连接字符串时（例如，从对话框中检索用户 ID 和密码信息并将其追加到连接字符串时）应相当谨慎。应用程序应确保用户无法在这些值中嵌入其他连接字符串参数（例如，输入“validpassword;database=somedb”作为密码，以尝试连接到其他数据库）。如果需要根据用户输入构造连接字符串，请使用新的 SqlConnectionStringBuilder，它可以验证连接字符串，并有助于消除此问题。有关更多信息，请参见连接字符串生成器 (ADO.NET)。 在此版本中，在应用程序中根据用户输入构造连接字符串时（例如，从对话框中检索用户 ID 和密码信息并将其追加到连接字符串时）应相当谨慎。应用程序应确保用户无法在这些值中嵌入其他连接字符串参数（例如，输入“validpassword;database=somedb”作为密码，以尝试连接到其他数据库）。如果需要根据用户输入构造连接字符串，请使用新的 SqlConnectionStringBuilder，它可以验证连接字符串，并有助于消除此问题。有关更多信息，请参见连接字符串生成器 (ADO.NET)。 在此版本中，在应用程序中根据用户输入构造连接字符串时（例如，从对话框中检索用户 ID 和密码信息并将其追加到连接字符串时）应相当谨慎。应用程序应确保用户无法在这些值中嵌入其他连接字符串参数（例如，输入“validpassword;database=somedb”作为密码，以尝试连接到其他数据库）。如果需要根据用户输入构造连接字符串，请使用新的 SqlConnectionStringBuilder，它可以验证连接字符串，并有助于消除此问题。有关更多信息，请参见连接字符串生成器 (ADO.NET)。

下面的示例创建 SqlConnection 并在打开连接前设置 ConnectionString 属性。

Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()

    Using connection As New SqlConnection()

        connection.ConnectionString = connectionString

        connection.Open()

        Console.WriteLine("State: {0}", connection.State)
        Console.WriteLine("ConnectionString: {0}", _
            connection.ConnectionString)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' To avoid storing the connection string in your code,
    ' you can retrieve it from a configuration file.
    Return "Data Source=MSSQL1;Database=AdventureWorks;" _
      & "Integrated Security=true;"
End Function

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();

    using (SqlConnection connection = new SqlConnection())
    {
        connection.ConnectionString = connectionString;

        connection.Open();

        Console.WriteLine("State: {0}", connection.State);
        Console.WriteLine("ConnectionString: {0}",
            connection.ConnectionString);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code,
    // you can retrieve it from a configuration file.
    return "Data Source=MSSQL1;Initial Catalog=AdventureWorks;"
        + "Integrated Security=true;";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server Connection Director (ADO.NET)
连接字符串 (ADO.NET)
SQL Server 连接池 (ADO.NET)
连接到数据源 (ADO.NET)


SqlConnection ..::.ConnectionTimeout 属性

SqlConnection
.
.
::
.
ConnectionTimeout 属性
SqlConnection 类

获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property ConnectionTimeout As Integer
    Get
public override int ConnectionTimeout { get; }
public:
virtual property int ConnectionTimeout {
    int get () override;
}
abstract ConnectionTimeout : int
override ConnectionTimeout : int

属性值

类型： System Int32
等待连接打开的时间（以秒为单位）。默认值为 15 秒。 等待连接打开的时间（以秒为单位）。默认值为 15 秒。

实现

异常 | 条件
ArgumentException | 所设置的值小于 0。

通过在连接字符串中使用 ConnectTimeout 或 Connection Timeout 关键字，可设置连接等候超时的时间量。值 0 指示无限制，在 ConnectionString 中应避免值 0，否则会无限期地等待连接尝试。 通过在连接字符串中使用 ConnectTimeout 或 Connection Timeout 关键字，可设置连接等候超时的时间量。值 0 指示无限制，在 ConnectionString 中应避免值 0，否则会无限期地等待连接尝试。

下面的示例创建 SqlConnection，并在连接字符串中将 Connection Timeout 设置为 30 秒。该代码打开连接并在控制台窗口中显示 ConnectionTimeout 属性。 下面的示例创建 SqlConnection，并在连接字符串中将 Connection Timeout 设置为 30 秒。该代码打开连接并在控制台窗口中显示 ConnectionTimeout 属性。

Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Console.WriteLine("State: {0}", connection.State)
        Console.WriteLine("ConnectionTimeout: {0}", connection.ConnectionTimeout)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' To avoid storing the connection string in your code,
    ' you can retrieve it from a configuration file, using the
    ' System.Configuration.ConfigurationSettings.AppSettings property
    Return "Data Source=(local);Database=AdventureWorks;" _
      & "Integrated Security=SSPI;Connection Timeout=30;"
End Function

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("State: {0}", connection.State);
        Console.WriteLine("ConnectionTimeout: {0}",
            connection.ConnectionTimeout);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code,
    // you can retrieve it from a configuration file, using the
    // System.Configuration.ConfigurationSettings.AppSettings property
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;Connection Timeout=30";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)
SQL Server 连接池 (ADO.NET)
连接到数据源 (ADO.NET)


SqlConnection ..::.Database 属性

SqlConnection
.
.
::
.
Database 属性
SqlConnection 类

获取当前数据库或连接打开后要使用的数据库的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Database As String
    Get
public override string Database { get; }
public:
virtual property String^ Database {
    String^ get () override;
}
abstract Database : string
override Database : string

属性值

类型： System String
当前数据库的名称或连接打开后要使用的数据库的名称。默认值为空字符串。 当前数据库的名称或连接打开后要使用的数据库的名称。默认值为空字符串。

实现

Database 属性会动态更新。如果使用 Transact-SQL 语句或 ChangeDatabase 方法更改当前数据库，就会发送信息性消息并自动更新此属性。 Database 属性会动态更新。如果使用 Transact-SQL 语句或 ChangeDatabase 方法更改当前数据库，就会发送信息性消息并自动更新此属性。

下面的示例创建一个 SqlConnection 并显示它的一些只读属性。

Private Sub ChangeSqlDatabase(ByVal connectionString As String)
    ' Assumes connectionString represents a valid connection string
    ' to the AdventureWorks sample database.
    Using connection As New SqlConnection(connectionString)

        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("Database: {0}", connection.Database)

        connection.ChangeDatabase("Northwind")
        Console.WriteLine("Database: {0}", connection.Database)
    End Using
End Sub

private static void ChangeSqlDatabase(string connectionString)
{
    // Assumes connectionString represents a valid connection string
    // to the AdventureWorks sample database.
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("Database: {0}", connection.Database);

        connection.ChangeDatabase("Northwind");
        Console.WriteLine("Database: {0}", connection.Database);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)
命令和参数 (ADO.NET)


SqlConnection ..::.DataSource 属性

SqlConnection
.
.
::
.
DataSource 属性
SqlConnection 类

获取要连接的 SQL Server 实例的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(True)> _
Public Overrides ReadOnly Property DataSource As String
    Get
[BrowsableAttribute(true)]
public override string DataSource { get; }
[BrowsableAttribute(true)]
public:
virtual property String^ DataSource {
    String^ get () override;
}
[<BrowsableAttribute(true)>]
abstract DataSource : string
[<BrowsableAttribute(true)>]
override DataSource : string

属性值

类型： System String
要连接的 SQL Server 实例的名称。默认值为空字符串。 要连接的 SQL Server 实例的名称。默认值为空字符串。
说明 说明

如果 SqlConnection 的连接字符串为“context connection=true”，DataSource 属性将返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的示例创建一个 SqlConnection 并显示它的一些只读属性。

Private Sub OpenSqlConnection(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("DataSource: {0}", connection.DataSource)
    End Using
End Sub

private static void OpenSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("DataSource: {0}", connection.DataSource);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)


SqlConnection ..::.FireInfoMessageEventOnUserErrors 属性

SqlConnection
.
.
::
.
FireInfoMessageEventOnUserErrors 属性
SqlConnection 类

获取或设置 FireInfoMessageEventOnUserErrors 属性。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property FireInfoMessageEventOnUserErrors As Boolean
    Get
    Set
public bool FireInfoMessageEventOnUserErrors { get; set; }
public:
property bool FireInfoMessageEventOnUserErrors {
    bool get ();
    void set (bool value);
}
member FireInfoMessageEventOnUserErrors : bool with get, set

属性值

类型： System Boolean
如果已设置 FireInfoMessageEventOnUserErrors 属性，则为 true；否则为 false。

如果将 FireInfoMessageEventOnUserErrors 设置为 true，则以前视为异常的错误现在作为 InfoMessage 事件来处理。所有事件立即激发并由事件处理程序来处理。如果将 FireInfoMessageEventOnUserErrors 设置为 false，则在过程结束时处理 InfoMessage 事件。 如果将 FireInfoMessageEventOnUserErrors 设置为 true，则以前视为异常的错误现在作为 InfoMessage 事件来处理。所有事件立即激发并由事件处理程序来处理。如果将 FireInfoMessageEventOnUserErrors 设置为 false，则在过程结束时处理 InfoMessage 事件。 如果将 FireInfoMessageEventOnUserErrors 设置为 true，则以前视为异常的错误现在作为 InfoMessage 事件来处理。所有事件立即激发并由事件处理程序来处理。如果将 FireInfoMessageEventOnUserErrors 设置为 false，则在过程结束时处理 InfoMessage 事件。

说明 说明

严重级别为 17 或以上、导致服务器停止处理命令的错误需要作为异常来处理。在这种情况下，无论在 InfoMessage 事件中如何对该错误进行处理，都将引发异常。 严重级别为 17 或以上、导致服务器停止处理命令的错误需要作为异常来处理。在这种情况下，无论在 InfoMessage 事件中如何对该错误进行处理，都将引发异常。

有关处理事件的更多信息，请参见连接事件 (ADO.NET)。有关由 SQL Server 引擎生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。 有关处理事件的更多信息，请参见连接事件 (ADO.NET)。有关由 SQL Server 引擎生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接事件 (ADO.NET)
连接到数据源 (ADO.NET)


SqlConnection ..::.PacketSize 属性

SqlConnection
.
.
::
.
PacketSize 属性
SqlConnection 类

获取用来与 SQL Server 的实例通信的网络数据包的大小（以字节为单位）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property PacketSize As Integer
    Get
public int PacketSize { get; }
public:
property int PacketSize {
    int get ();
}
member PacketSize : int

属性值

类型： System Int32
网络数据包的大小（以字节为单位）。默认值为 8000。 网络数据包的大小（以字节为单位）。默认值为 8000。

如果应用程序执行批量复制操作，或者发送或接收大量的文本或图像数据，则使用超过默认大小的数据包可提高效率，因为它会导致网络的读取和写入操作减少。如果应用程序发送或接收少量信息，则可以将数据包大小设置为 512 字节（使用 ConnectionString 中的“数据包大小”值），该设置足以应付大多数数据传送操作。对于大多数应用程序而言，最好使用默认的数据包大小。 如果应用程序执行批量复制操作，或者发送或接收大量的文本或图像数据，则使用超过默认大小的数据包可提高效率，因为它会导致网络的读取和写入操作减少。如果应用程序发送或接收少量信息，则可以将数据包大小设置为 512 字节（使用 ConnectionString 中的“数据包大小”值），该设置足以应付大多数数据传送操作。对于大多数应用程序而言，最好使用默认的数据包大小。 如果应用程序执行批量复制操作，或者发送或接收大量的文本或图像数据，则使用超过默认大小的数据包可提高效率，因为它会导致网络的读取和写入操作减少。如果应用程序发送或接收少量信息，则可以将数据包大小设置为 512 字节（使用 ConnectionString 中的“数据包大小”值），该设置足以应付大多数数据传送操作。对于大多数应用程序而言，最好使用默认的数据包大小。

PacketSize 可以是 512 和 32767 字节范围内的一个值。如果该值超出此范围，就会产生异常。 PacketSize 可以是 512 和 32767 字节范围内的一个值。如果该值超出此范围，就会产生异常。

设置为数字的默认值大于 8000 将导致数据包使用 SQL Server 实例上的 MultiPage 分配器而不是更具效率的 SinglePage 分配器，降低了 SQL Server 的整体扩展能力。有关 SQL Server 如何使用内存的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的 Memory Architecture（内存体系结构）。 设置为数字的默认值大于 8000 将导致数据包使用 SQL Server 实例上的 MultiPage 分配器而不是更具效率的 SinglePage 分配器，降低了 SQL Server 的整体扩展能力。有关 SQL Server 如何使用内存的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的 Memory Architecture（内存体系结构）。

下面的示例创建一个 SqlConnection，包括在连接字符串中将 Packet Size 设置为 512。该示例在控制台窗口中显示 PacketSize 和 ServerVersion 属性。 下面的示例创建一个 SqlConnection，包括在连接字符串中将 Packet Size 设置为 512。该示例在控制台窗口中显示 PacketSize 和 ServerVersion 属性。

Private Sub OpenSqlConnection()
    Dim connectionString As String = GetConnectionString()
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("PacketSize: {0}", connection.PacketSize)
    End Using
End Sub

Private Function GetConnectionString() As String
    ' To avoid storing the connection string in your code,
    ' you can retrieve it from a configuration file, using the
    ' System.Configuration.ConfigurationSettings.AppSettings property
    Return "Data Source=(local);Database=AdventureWorks;" _
      & "Integrated Security=SSPI;Packet Size=512;"
End Function

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("PacketSize: {0}", connection.PacketSize);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code,
    // you can retrieve it from a configuration file, using the
    // System.Configuration.ConfigurationSettings.AppSettings property
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;Packet Size=512";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)


SqlConnection ..::.ServerVersion 属性

SqlConnection
.
.
::
.
ServerVersion 属性
SqlConnection 类

获取包含客户端连接的 SQL Server 实例的版本的字符串。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides ReadOnly Property ServerVersion As String
    Get
[BrowsableAttribute(false)]
public override string ServerVersion { get; }
[BrowsableAttribute(false)]
public:
virtual property String^ ServerVersion {
    String^ get () override;
}
[<BrowsableAttribute(false)>]
abstract ServerVersion : string
[<BrowsableAttribute(false)>]
override ServerVersion : string

属性值

类型： System String
SQL Server 实例的版本。
异常 | 条件
InvalidOperationException | 连接处于关闭状态。

版本采用 ##.##.#### 形式，其中前两位数字是主版本号，中间两位是次版本号，最后四位是发行版本号。该字符串采用主版本号.次版本号.内部版本号形式，其中主版本号和次版本号必须为两位数字，内部版本号必须为四位数字。 版本采用 ##.##.#### 形式，其中前两位数字是主版本号，中间两位是次版本号，最后四位是发行版本号。该字符串采用主版本号.次版本号.内部版本号形式，其中主版本号和次版本号必须为两位数字，内部版本号必须为四位数字。

下面的示例创建 SqlConnection 并显示 ServerVersion 属性。

 Private Sub CreateSqlConnection(ByVal connectionString As String)
     Using connection As New SqlConnection(connectionString)
         connection.Open()
         Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
         Console.WriteLine("State: {0}", connection.State)
     End Using
End Sub

private static void CreateSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State );
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 和 ADO.NET


SqlConnection ..::.State 属性

SqlConnection
.
.
::
.
State 属性
SqlConnection 类

指示 SqlConnection 的状态。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Overrides ReadOnly Property State As ConnectionState
    Get
[BrowsableAttribute(false)]
public override ConnectionState State { get; }
[BrowsableAttribute(false)]
public:
virtual property ConnectionState State {
    ConnectionState get () override;
}
[<BrowsableAttribute(false)>]
abstract State : ConnectionState
[<BrowsableAttribute(false)>]
override State : ConnectionState

属性值

类型： System.Data ConnectionState
ConnectionState 枚举。

实现

返回一个 ConnectionState 枚举，用于指示 SqlConnection 的状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接到数据源 (ADO.NET)


SqlConnection ..::.StatisticsEnabled 属性

SqlConnection
.
.
::
.
StatisticsEnabled 属性
SqlConnection 类

如果设置为 true，则对当前连接启用统计信息收集。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property StatisticsEnabled As Boolean
    Get
    Set
public bool StatisticsEnabled { get; set; }
public:
property bool StatisticsEnabled {
    bool get ();
    void set (bool value);
}
member StatisticsEnabled : bool with get, set

属性值

类型： System Boolean
如果启用了统计信息收集，则返回 true；否则返回 false。默认值为 false。 如果启用了统计信息收集，则返回 true；否则返回 false。默认值为 false。

启用统计信息收集对性能稍有影响，但并不严重，因此应该仅在需要时启用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 提供程序统计信息 (ADO.NET)


SqlConnection ..::.WorkstationId 属性

SqlConnection
.
.
::
.
WorkstationId 属性
SqlConnection 类

获取标识数据库客户端的一个字符串。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property WorkstationId As String
    Get
public string WorkstationId { get; }
public:
property String^ WorkstationId {
    String^ get ();
}
member WorkstationId : string

属性值

类型： System String
标识数据库客户端的一个字符串。如果没有指定，则为客户端计算机的名称。如果两个都没有指定，则为空字符串。 标识数据库客户端的一个字符串。如果没有指定，则为客户端计算机的名称。如果两个都没有指定，则为空字符串。 标识数据库客户端的一个字符串。如果没有指定，则为客户端计算机的名称。如果两个都没有指定，则为空字符串。

该字符串通常包含客户端的网络名称。WorkstationId 属性对应于 Workstation ID 连接字符串属性。 该字符串通常包含客户端的网络名称。WorkstationId 属性对应于 Workstation ID 连接字符串属性。

下面的示例创建 SqlConnection 并显示 WorkstationId 属性。

Private Sub OpenSqlConnection(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion)
        Console.WriteLine("WorkstationId: {0}", connection.WorkstationId)
    End Using
End Sub

private static void OpenSqlConnection(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("WorkstationId: {0}", connection.WorkstationId);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 和 ADO.NET


SqlConnection 事件

SqlConnection 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnection 类

SqlConnection 类型公开以下成员。

名称 说明
页首

参考

SqlConnection 类
System.Data.SqlClient 命名空间


SqlConnection ..::.InfoMessage 事件

SqlConnection
.
.
::
.
InfoMessage 事件
SqlConnection 类

当 SQL Server 返回一个警告或信息性消息时发生。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Event InfoMessage As SqlInfoMessageEventHandler
public event SqlInfoMessageEventHandler InfoMessage
public:
 event SqlInfoMessageEventHandler^ InfoMessage {
    void add (SqlInfoMessageEventHandler^ value);
    void remove (SqlInfoMessageEventHandler^ value);
}
member InfoMessage : IEvent<SqlInfoMessageEventHandler,
    SqlInfoMessageEventArgs>

要处理服务器发送的警告或信息性消息的客户端应创建一个 SqlInfoMessageEventHandler 委托来侦听该事件。

当 SQL Server 返回严重度等于或小于 10 的消息时，会发生 InfoMessage 事件。严重级别在 11 和 20 之间的消息会引发错误，而严重级别超过 20 的消息将导致连接关闭。有关 SQL Server 错误级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Database Engine Error Severities”（数据库引擎错误严重级别）。 当 SQL Server 返回严重度等于或小于 10 的消息时，会发生 InfoMessage 事件。严重级别在 11 和 20 之间的消息会引发错误，而严重级别超过 20 的消息将导致连接关闭。有关 SQL Server 错误级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Database Engine Error Severities”（数据库引擎错误严重级别）。 当 SQL Server 返回严重度等于或小于 10 的消息时，会发生 InfoMessage 事件。严重级别在 11 和 20 之间的消息会引发错误，而严重级别超过 20 的消息将导致连接关闭。有关 SQL Server 错误级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Database Engine Error Severities”（数据库引擎错误严重级别）。

有关更多信息及示例，请参见连接事件 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnection 类
SqlConnection 成员
System.Data.SqlClient 命名空间

其他资源

连接事件 (ADO.NET)


SqlConnectionStringBuilder 类

SqlConnectionStringBuilder 类
成员

为创建和管理由 SqlConnection 类使用的连接字符串的内容提供了一种简单方法。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlConnectionStringBuilder _
    Inherits DbConnectionStringBuilder
public sealed class SqlConnectionStringBuilder : DbConnectionStringBuilder
public ref class SqlConnectionStringBuilder sealed : public DbConnectionStringBuilder
[<SealedAttribute>]
type SqlConnectionStringBuilder =
    class
        inherit DbConnectionStringBuilder
    end

连接字符串生成器使开发人员能够使用该类的属性和方法，以编程方式创建语法正确的连接字符串，并分析和重新生成现有的连接字符串。连接字符串生成器提供与 SQL Server 所允许的已知键/值对相对应的强类型属性。如果开发人员需要在应用程序中创建连接字符串，他们可以使用 SqlConnectionStringBuilder 类生成连接字符串并对其进行修改。该类还可简化对应用程序配置文件中存储的连接字符串的管理。 连接字符串生成器使开发人员能够使用该类的属性和方法，以编程方式创建语法正确的连接字符串，并分析和重新生成现有的连接字符串。连接字符串生成器提供与 SQL Server 所允许的已知键/值对相对应的强类型属性。如果开发人员需要在应用程序中创建连接字符串，他们可以使用 SqlConnectionStringBuilder 类生成连接字符串并对其进行修改。该类还可简化对应用程序配置文件中存储的连接字符串的管理。 连接字符串生成器使开发人员能够使用该类的属性和方法，以编程方式创建语法正确的连接字符串，并分析和重新生成现有的连接字符串。连接字符串生成器提供与 SQL Server 所允许的已知键/值对相对应的强类型属性。如果开发人员需要在应用程序中创建连接字符串，他们可以使用 SqlConnectionStringBuilder 类生成连接字符串并对其进行修改。该类还可简化对应用程序配置文件中存储的连接字符串的管理。 连接字符串生成器使开发人员能够使用该类的属性和方法，以编程方式创建语法正确的连接字符串，并分析和重新生成现有的连接字符串。连接字符串生成器提供与 SQL Server 所允许的已知键/值对相对应的强类型属性。如果开发人员需要在应用程序中创建连接字符串，他们可以使用 SqlConnectionStringBuilder 类生成连接字符串并对其进行修改。该类还可简化对应用程序配置文件中存储的连接字符串的管理。

SqlConnectionStringBuilder 对有效的键/值对执行检查。因此，不能使用此类来创建无效的连接字符串；尝试添加无效的键/值对将引发异常。该类维护固定的同义词集合，还可以将同义词转换为对应的已知键名。 SqlConnectionStringBuilder 对有效的键/值对执行检查。因此，不能使用此类来创建无效的连接字符串；尝试添加无效的键/值对将引发异常。该类维护固定的同义词集合，还可以将同义词转换为对应的已知键名。 SqlConnectionStringBuilder 对有效的键/值对执行检查。因此，不能使用此类来创建无效的连接字符串；尝试添加无效的键/值对将引发异常。该类维护固定的同义词集合，还可以将同义词转换为对应的已知键名。

例如，在使用 Item 属性检索某个值时，可以指定包含所需键的任何同义词的字符串。例如，如果使用的任何成员（如 Remove 方法或 Item 属性）需要一个包含键名称的字符串，则可以在连接字符串中为此键指定“Network Address”、“addr”或任何其他可接受的同义词。有关可接受同义词的完整列表，请参见 ConnectionString 属性。 例如，在使用 Item 属性检索某个值时，可以指定包含所需键的任何同义词的字符串。例如，如果使用的任何成员（如 Remove 方法或 Item 属性）需要一个包含键名称的字符串，则可以在连接字符串中为此键指定“Network Address”、“addr”或任何其他可接受的同义词。有关可接受同义词的完整列表，请参见 ConnectionString 属性。 例如，在使用 Item 属性检索某个值时，可以指定包含所需键的任何同义词的字符串。例如，如果使用的任何成员（如 Remove 方法或 Item 属性）需要一个包含键名称的字符串，则可以在连接字符串中为此键指定“Network Address”、“addr”或任何其他可接受的同义词。有关可接受同义词的完整列表，请参见 ConnectionString 属性。

Item 属性对插入恶意项的企图进行处理。例如，下面的代码使用默认的项属性（在 C# 中为索引器）正确转义嵌套的键/值对： Item 属性对插入恶意项的企图进行处理。例如，下面的代码使用默认的项属性（在 C# 中为索引器）正确转义嵌套的键/值对：

[Visual Basic]

Dim builder As New System.Data.SqlClient.SqlConnectionStringBuilder
builder("Data Source") = "(local)"
builder("Integrated Security") = True
builder("Initial Catalog") = "AdventureWorks;NewValue=Bad"
Console.WriteLine(builder.ConnectionString)

[C#]

System.Data.SqlClient.SqlConnectionStringBuilder builder =
  new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);

结果为下面的连接字符串，它以一种安全的方式处理无效值：

Source=(local);Initial Catalog="AdventureWorks;NewValue=Bad";
Integrated Security=True

下面的控制台应用程序生成 SQL Server 2005 数据库的连接字符串。代码使用 SqlConnectionStringBuilder 类创建连接字符串，然后将 SqlConnectionStringBuilder 实例的 ConnectionString 属性传递给该连接类的构造函数。此示例还分析现有的连接字符串，并演示操作连接字符串内容的各种方法。 下面的控制台应用程序生成 SQL Server 2005 数据库的连接字符串。代码使用 SqlConnectionStringBuilder 类创建连接字符串，然后将 SqlConnectionStringBuilder 实例的 ConnectionString 属性传递给该连接类的构造函数。此示例还分析现有的连接字符串，并演示操作连接字符串内容的各种方法。 下面的控制台应用程序生成 SQL Server 2005 数据库的连接字符串。代码使用 SqlConnectionStringBuilder 类创建连接字符串，然后将 SqlConnectionStringBuilder 实例的 ConnectionString 属性传递给该连接类的构造函数。此示例还分析现有的连接字符串，并演示操作连接字符串内容的各种方法。

说明 说明

此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果您必须使用密码，请不要在应用程序中包含硬编码密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果您必须使用密码，请不要在应用程序中包含硬编码密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果您必须使用密码，请不要在应用程序中包含硬编码密码。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        ' Create a new SqlConnectionStringBuilder and
        ' initialize it with a few name/value pairs:
        Dim builder As New SqlConnectionStringBuilder(GetConnectionString())

        ' The input connection string used the
        ' Server key, but the new connection string uses
        ' the well-known Data Source key instead.
        Console.WriteLine(builder.ConnectionString)

        ' Pass the SqlConnectionStringBuilder an existing
        ' connection string, and you can retrieve and
        ' modify any of the elements.
        builder.ConnectionString = _
            "server=(local);user id=ab;" & _
            "password=a!Pass113;initial catalog=AdventureWorks"
        ' Now that the connection string has been parsed,
        ' you can work with individual items.
        Console.WriteLine(builder.Password)
        builder.Password = "new@1Password"
        builder.AsynchronousProcessing = True

        ' You can refer to connection keys using strings,
        ' as well. When you use this technique (the default
        ' Item property in Visual Basic, or the indexer in C#)
        ' you can specify any synonym for the connection string key
        ' name.
        builder("Server") = "."
        builder("Connect Timeout") = 1000

        ' The Item property is the default for the class,
        ' and setting the Item property adds the value to the
        ' dictionary, if necessary.
        builder.Item("Trusted_Connection") = True
        Console.WriteLine(builder.ConnectionString)

        Console.WriteLine("Press Enter to finish.")
        Console.ReadLine()
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Server=(local);Integrated Security=SSPI;" & _
          "Initial Catalog=AdventureWorks"
    End Function
End Module

using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        // Create a new SqlConnectionStringBuilder and
        // initialize it with a few name/value pairs.
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());

        // The input connection string used the
        // Server key, but the new connection string uses
        // the well-known Data Source key instead.
        Console.WriteLine(builder.ConnectionString);

        // Pass the SqlConnectionStringBuilder an existing
        // connection string, and you can retrieve and
        // modify any of the elements.
        builder.ConnectionString = "server=(local);user id=ab;" +
            "password= a!Pass113;initial catalog=AdventureWorks";

        // Now that the connection string has been parsed,
        // you can work with individual items.
        Console.WriteLine(builder.Password);
        builder.Password = "new@1Password";
        builder.AsynchronousProcessing = true;

        // You can refer to connection keys using strings,
        // as well. When you use this technique (the default
        // Item property in Visual Basic, or the indexer in C#),
        // you can specify any synonym for the connection string key
        // name.
        builder["Server"] = ".";
        builder["Connect Timeout"] = 1000;
        builder["Trusted_Connection"] = true;
        Console.WriteLine(builder.ConnectionString);

        Console.WriteLine("Press Enter to finish.");
        Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        return "Server=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlConnectionStringBuilderSqlConnectionStringBuilder
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder 成员

SqlConnectionStringBuilder 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnectionStringBuilder 类

为创建和管理由 SqlConnection 类使用的连接字符串的内容提供了一种简单方法。

SqlConnectionStringBuilder 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlConnectionStringBuilder 类
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder 构造函数

SqlConnectionStringBuilder 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnectionStringBuilder 类

初始化 SqlConnectionStringBuilder 类的一个新实例。

名称 说明
页首

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder 构造函数

SqlConnectionStringBuilder 构造函数
SqlConnectionStringBuilder 类

初始化 SqlConnectionStringBuilder 类的一个新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlConnectionStringBuilder()
public:
SqlConnectionStringBuilder()
new : unit -> SqlConnectionStringBuilder

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
SqlConnectionStringBuilder 重载
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder 构造函数 (String)

SqlConnectionStringBuilder 构造函数 (String)
SqlConnectionStringBuilder 类

初始化 SqlConnectionStringBuilder 类的一个新实例。所提供的连接字符串为实例的内部连接信息提供数据。 初始化 SqlConnectionStringBuilder 类的一个新实例。所提供的连接字符串为实例的内部连接信息提供数据。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    connectionString As String _
)
public SqlConnectionStringBuilder(
    string connectionString
)
public:
SqlConnectionStringBuilder(
    String^ connectionString
)
new :
        connectionString:string -> SqlConnectionStringBuilder

参数

connectionString
类型： System String
对象内部连接信息的基础。分析为名称/值对。无效的键名会引发 KeyNotFoundException。 对象内部连接信息的基础。分析为名称/值对。无效的键名会引发 KeyNotFoundException。 对象内部连接信息的基础。分析为名称/值对。无效的键名会引发 KeyNotFoundException。
异常 | 条件
KeyNotFoundException | 连接字符串中的键名无效。
FormatException | 连接字符串中的值无效（特别是需要布尔值或数值型值而并未提供时）。
ArgumentException | 提供的 connectionString 无效。

SqlConnectionStringBuilder 类提供固定的内部键/值对集合。即便在构造函数中只提供可能的连接字符串值的一个小子集，该对象仍会始终为每个键/值对提供默认值。在检索该对象的 ConnectionString 属性时，该字符串只包含其值并非该项的默认值的键/值对。 SqlConnectionStringBuilder 类提供固定的内部键/值对集合。即便在构造函数中只提供可能的连接字符串值的一个小子集，该对象仍会始终为每个键/值对提供默认值。在检索该对象的 ConnectionString 属性时，该字符串只包含其值并非该项的默认值的键/值对。 SqlConnectionStringBuilder 类提供固定的内部键/值对集合。即便在构造函数中只提供可能的连接字符串值的一个小子集，该对象仍会始终为每个键/值对提供默认值。在检索该对象的 ConnectionString 属性时，该字符串只包含其值并非该项的默认值的键/值对。

下面的示例在 SqlConnectionStringBuilder 对象的构造函数中提供了一个简单的 SQL Server 连接字符串，然后通过循环列举出该对象中的所有键/值对。请注意，该集合为每个项都提供了默认值。还请注意，SqlConnectionStringBuilder 类转换已知键的同义词，使它们与已知的名称保持一致。 下面的示例在 SqlConnectionStringBuilder 对象的构造函数中提供了一个简单的 SQL Server 连接字符串，然后通过循环列举出该对象中的所有键/值对。请注意，该集合为每个项都提供了默认值。还请注意，SqlConnectionStringBuilder 类转换已知键的同义词，使它们与已知的名称保持一致。 下面的示例在 SqlConnectionStringBuilder 对象的构造函数中提供了一个简单的 SQL Server 连接字符串，然后通过循环列举出该对象中的所有键/值对。请注意，该集合为每个项都提供了默认值。还请注意，SqlConnectionStringBuilder 类转换已知键的同义词，使它们与已知的名称保持一致。

说明 说明

此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Try
            Dim connectString As String = _
                "Server=(local);Database=AdventureWorks;UID=ab;Pwd=a!Pass@@"
            Console.WriteLine("Original: " & connectString)
            Dim builder As New SqlConnectionStringBuilder(connectString)
            Console.WriteLine("Modified: " & builder.ConnectionString)
            For Each key As String In builder.Keys
                Console.WriteLine(key & "=" & builder.Item(key).ToString)
            Next
            Console.WriteLine("Press any key to finish.")
            Console.ReadLine()

        Catch ex As System.Collections.Generic.KeyNotFoundException
            Console.WriteLine("KeyNotFoundException: " & ex.Message)
        Catch ex As System.FormatException
            Console.WriteLine("Format exception: " & ex.Message)
        End Try
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString =
                "Server=(local);Database=AdventureWorks;UID=ab;Pwd= a!Pass@@";
            Console.WriteLine("Original: " + connectString);
            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Modified: " + builder.ConnectionString);
            foreach (string key in builder.Keys)
                Console.WriteLine(key + "=" + builder[key].ToString());
            Console.WriteLine("Press any key to finish.");
            Console.ReadLine();

        }
        catch (System.Collections.Generic.KeyNotFoundException ex)
        {
            Console.WriteLine("KeyNotFoundException: " + ex.Message);
        }
        catch (System.FormatException ex)
        {
            Console.WriteLine("Format exception: " + ex.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
SqlConnectionStringBuilder 重载
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder 方法

SqlConnectionStringBuilder 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnectionStringBuilder 类

SqlConnectionStringBuilder 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlConnectionStringBuilder 类
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder ..::.Clear 方法

SqlConnectionStringBuilder
.
.
::
.
Clear 方法
SqlConnectionStringBuilder 类

清除 SqlConnectionStringBuilder 实例的内容。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Clear
public override void Clear()
public:
virtual void Clear() override
abstract Clear : unit -> unit
override Clear : unit -> unit

实现

Clear 方法从 SqlConnectionStringBuilder 中移除所有键/值对，并重置所有相应的属性。这包括将 Count 属性设置为 0 以及将 ConnectionString 属性设置为空字符串。 Clear 方法从 SqlConnectionStringBuilder 中移除所有键/值对，并重置所有相应的属性。这包括将 Count 属性设置为 0 以及将 ConnectionString 属性设置为空字符串。

下面的示例演示如何调用 Clear 方法。此示例用一些键/值对填充 SqlConnectionStringBuilder，然后调用 Clear 方法并显示结果。 下面的示例演示如何调用 Clear 方法。此示例用一些键/值对填充 SqlConnectionStringBuilder，然后调用 Clear 方法并显示结果。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim builder As New SqlConnectionStringBuilder
        builder.DataSource = "(local)"
        builder.IntegratedSecurity = True
        builder.InitialCatalog = "AdventureWorks"
        Console.WriteLine("Initial connection string: " & builder.ConnectionString)

        builder.Clear()
        Console.WriteLine("After call to Clear, count = " & builder.Count)
        Console.WriteLine("Cleared connection string: " & builder.ConnectionString)
        Console.WriteLine()

        Console.WriteLine("Press Enter to continue.")
        Console.ReadLine()
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
        builder.DataSource = "(local)";
        builder.IntegratedSecurity = true;
        builder.InitialCatalog = "AdventureWorks";
        Console.WriteLine("Initial connection string: " + builder.ConnectionString);

        builder.Clear();
        Console.WriteLine("After call to Clear, count = " + builder.Count);
        Console.WriteLine("Cleared connection string: " + builder.ConnectionString);
        Console.WriteLine();

        Console.WriteLine("Press Enter to continue.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.ContainsKey 方法

SqlConnectionStringBuilder
.
.
::
.
ContainsKey 方法
SqlConnectionStringBuilder 类

确定 SqlConnectionStringBuilder 是否包含特定键。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ContainsKey ( _
    keyword As String _
) As Boolean
public override bool ContainsKey(
    string keyword
)
public:
virtual bool ContainsKey(
    String^ keyword
) override
abstract ContainsKey :
        keyword:string -> bool
override ContainsKey :
        keyword:string -> bool

参数

keyword
类型： System String
要在 SqlConnectionStringBuilder 中定位的键。

返回值

类型： System Boolean
如果 SqlConnectionStringBuilder 包含具有指定键的元素，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | keyword 为 null（在 Visual Basic 中为 Nothing）

由于 SqlConnectionStringBuilder 包含固定大小的键/值对集合，因此 ContainsKey 方法只确定特定键名称是否有效。

下面的示例创建一个 SqlConnectionStringBuilder 实例，设置它的一些属性，然后通过调用 ContainsKey 方法尝试确定该对象中存在的各键。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim builder As _
         New SqlConnectionStringBuilder(GetConnectionString())
        Console.WriteLine("Connection string = " & builder.ConnectionString)

        ' Keys you have provided return true.
        Console.WriteLine(builder.ContainsKey("Server"))

        ' Comparison is case insensitive, and synonyms
        ' are automatically converted to their "well-known"
        ' names.
        Console.WriteLine(builder.ContainsKey("Database"))

        ' Keys that are valid but have not been set return true.
        Console.WriteLine(builder.ContainsKey("Max Pool Size"))

        ' Keys that do not exist return false.
        Console.WriteLine(builder.ContainsKey("MyKey"))

        Console.WriteLine("Press Enter to continue.")
        Console.ReadLine()
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Server=(local);Integrated Security=SSPI;" & _
          "Initial Catalog=AdventureWorks"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());
        Console.WriteLine("Connection string = " + builder.ConnectionString);

        // Keys you have provided return true.
        Console.WriteLine(builder.ContainsKey("Server"));

        // Comparison is case insensitive, and synonyms
        // are automatically converted to their "well-known"
        // names.
        Console.WriteLine(builder.ContainsKey("Database"));

        // Keys that are valid but have not been set return true.
        Console.WriteLine(builder.ContainsKey("Max Pool Size"));

        // Keys that do not exist return false.
        Console.WriteLine(builder.ContainsKey("MyKey"));

        Console.WriteLine("Press Enter to continue.");
        Console.ReadLine();

    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        return "Server=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }
}

该示例在控制台窗口中显示以下输出：

Connection string = Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True
True
True
True
False

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.GetEvents 方法

SqlConnectionStringBuilder
.
.
::
.
GetEvents 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnectionStringBuilder 类

名称 说明
页首

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder ..::.GetProperties 方法

SqlConnectionStringBuilder
.
.
::
.
GetProperties 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnectionStringBuilder 类

名称 说明
页首

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder ..::.Remove 方法

SqlConnectionStringBuilder
.
.
::
.
Remove 方法
SqlConnectionStringBuilder 类

移除 SqlConnectionStringBuilder 实例中具有指定键的项。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function Remove ( _
    keyword As String _
) As Boolean
public override bool Remove(
    string keyword
)
public:
virtual bool Remove(
    String^ keyword
) override
abstract Remove :
        keyword:string -> bool
override Remove :
        keyword:string -> bool

参数

keyword
类型： System String
要从此 SqlConnectionStringBuilder 中的连接字符串移除的键/值对中的键。

返回值

类型： System Boolean
如果该键存在于连接字符串中并被移除，则为 true；如果该键不存在，则为 false。
异常 | 条件
ArgumentNullException | keyword 为 null（在 Visual Basic 中为 Nothing）

由于 Remove 方法返回指示其成功状态的值，因此无需在尝试从 SqlConnectionStringBuilder 实例中移除键/值对之前查找该键。由于 SqlConnectionStringBuilder 维护固定大小的键/值对集合，因此调用 Remove 方法只是将键/值对中的值重置为其默认值。 由于 Remove 方法返回指示其成功状态的值，因此无需在尝试从 SqlConnectionStringBuilder 实例中移除键/值对之前查找该键。由于 SqlConnectionStringBuilder 维护固定大小的键/值对集合，因此调用 Remove 方法只是将键/值对中的值重置为其默认值。

由于 SqlConnectionStringBuilder 支持的键集合是固定的，因此集合中的每一项都有一个已知的默认值。下表列出了键以及在首次初始化 SqlConnectionStringBuilder 时或调用 Remove 方法后的键及每个键的值。 由于 SqlConnectionStringBuilder 支持的键集合是固定的，因此集合中的每一项都有一个已知的默认值。下表列出了键以及在首次初始化 SqlConnectionStringBuilder 时或调用 Remove 方法后的键及每个键的值。

键 | 默认值
Application Name | “.Net SqlClient Data Provider”
Asynchronous Processing | False
AttachDBFilename | 空字符串
Connection Timeout | 15
Context Connection | False
Current Language | 空字符串
Data Source | 空字符串
Encrypt | False
Enlist | True
Failover Partner | 空字符串
Initial Catalog | 空字符串
Integrated Security | False
Load Balance Timeout | 0
Max Pool Size | 100
Min Pool Size | 0
MultipleActiveResultSets | False
Network Library | 空字符串
Packet Size | 8000
密码 | 空字符串
Persist Security Info | False
Pooling | True
Replication | False
Transaction Binding | Implicit Unbind
User ID | 空字符串
User Instance | False
Workstation ID | 空字符串

下面的示例将现有的连接字符串从使用 Windows 身份验证转换为使用集成安全性。为了完成此工作，该示例从连接字符串中移除用户名和密码，然后设置 SqlConnectionStringBuilder 对象的 IntegratedSecurity 属性。 下面的示例将现有的连接字符串从使用 Windows 身份验证转换为使用集成安全性。为了完成此工作，该示例从连接字符串中移除用户名和密码，然后设置 SqlConnectionStringBuilder 对象的 IntegratedSecurity 属性。

说明 说明

此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。

Imports System.Data.SqlClient

Module Module1
  Sub Main()
    Try
      Dim connectString As String = _
       "Data Source=(local);User ID=ab;Password=a1Pass@@11;" & _
       "Initial Catalog=AdventureWorks"

      Dim builder As New SqlConnectionStringBuilder(connectString)
      Console.WriteLine("Original: " & builder.ConnectionString)

      ' Use the Remove method
      ' in order to reset the user ID and password back to their
      ' default (empty string) values.
      builder.Remove("User ID")
      builder.Remove("Password")

      ' Turn on integrated security:
      builder.IntegratedSecurity = True

      Console.WriteLine("Modified: " & builder.ConnectionString)

      Using connection As New SqlConnection(builder.ConnectionString)
        connection.Open()
        ' Now use the open connection.
        Console.WriteLine("Database = " & connection.Database)
      End Using

    Catch ex As Exception
      Console.WriteLine(ex.Message)
    End Try

    Console.WriteLine("Press any key to finish.")
    Console.ReadLine()
  End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString =
                "Data Source=(local);User ID=ab;Password= a1Pass@@11;" +
                "Initial Catalog=AdventureWorks";

            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Original: " + builder.ConnectionString);

            // Use the Remove method
            // in order to reset the user ID and password back to their
            // default (empty string) values.
            builder.Remove("User ID");
            builder.Remove("Password");

            // Turn on integrated security:
            builder.IntegratedSecurity = true;

            Console.WriteLine("Modified: " + builder.ConnectionString);

            using (SqlConnection
                       connection = new SqlConnection(builder.ConnectionString))
            {
                connection.Open();
                // Now use the open connection.
                Console.WriteLine("Database = " + connection.Database);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.WriteLine("Press any key to finish.");
        Console.ReadLine();
    }
}

该示例在控制台窗口中显示以下文本：

Original: Data Source=(local);Initial Catalog=AdventureWorks;User ID=ab;Password= a1Pass@@11
Modified: Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True
Database = AdventureWorks

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.ShouldSerialize 方法

SqlConnectionStringBuilder
.
.
::
.
ShouldSerialize 方法
SqlConnectionStringBuilder 类

指示此 SqlConnectionStringBuilder 实例中是否存在指定的键。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ShouldSerialize ( _
    keyword As String _
) As Boolean
public override bool ShouldSerialize(
    string keyword
)
public:
virtual bool ShouldSerialize(
    String^ keyword
) override
abstract ShouldSerialize :
        keyword:string -> bool
override ShouldSerialize :
        keyword:string -> bool

参数

keyword
类型： System String
要在 SqlConnectionStringBuilder 中定位的键。

返回值

类型： System Boolean
如果 SqlConnectionStringBuilder 包含带有指定键的项，则为 true；否则为 false。

此方法与 ContainsKey 方法的行为一致。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.TryGetValue 方法

SqlConnectionStringBuilder
.
.
::
.
TryGetValue 方法
SqlConnectionStringBuilder 类

从此 SqlConnectionStringBuilder 中检索与所提供的键对应的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function TryGetValue ( _
    keyword As String, _
    <OutAttribute> ByRef value As Object _
) As Boolean
public override bool TryGetValue(
    string keyword,
    out Object value
)
public:
virtual bool TryGetValue(
    String^ keyword,
    [OutAttribute] Object^% value
) override
abstract TryGetValue :
        keyword:string *
        value:Object byref -> bool
override TryGetValue :
        keyword:string *
        value:Object byref -> bool

参数

keyword
类型： System String
要检索的项的键。
value
类型： System Object %
与 keyword. 对应的值

返回值

类型： System Boolean
如果在连接字符串中找到 keyword，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | keyword 包含一个 null 值（在 Visual Basic 中为 Nothing）。

TryGetValue 方法使开发人员可以安全地检索 SqlConnectionStringBuilder 中的值，并且无需验证所提供的键名是否有效。由于在调用 TryGetValue 时，若传递不存在的键，它不会引发异常，因此不必在检索键值之前查找该键是否存在。使用不存在的键调用 TryGetValue 将在 value 参数中放置一个 null 值（在 Visual Basic 中为 Nothing）。 TryGetValue 方法使开发人员可以安全地检索 SqlConnectionStringBuilder 中的值，并且无需验证所提供的键名是否有效。由于在调用 TryGetValue 时，若传递不存在的键，它不会引发异常，因此不必在检索键值之前查找该键是否存在。使用不存在的键调用 TryGetValue 将在 value 参数中放置一个 null 值（在 Visual Basic 中为 Nothing）。 TryGetValue 方法使开发人员可以安全地检索 SqlConnectionStringBuilder 中的值，并且无需验证所提供的键名是否有效。由于在调用 TryGetValue 时，若传递不存在的键，它不会引发异常，因此不必在检索键值之前查找该键是否存在。使用不存在的键调用 TryGetValue 将在 value 参数中放置一个 null 值（在 Visual Basic 中为 Nothing）。

下面的示例演示 TryGetValue 方法的行为。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim builder As New SqlConnectionStringBuilder
        builder.ConnectionString = GetConnectionString()

        ' Call TryGetValue method for multiple
        ' key names. Note that these keys are converted
        ' to well-known synonynms for data retrieval.
        DisplayValue(builder, "Data Source")
        DisplayValue(builder, "Trusted_Connection")
        DisplayValue(builder, "InvalidKey")
        DisplayValue(builder, Nothing)

        Console.WriteLine("Press any key to continue.")
        Console.ReadLine()
    End Sub

    Private Sub DisplayValue( _
     ByVal builder As SqlConnectionStringBuilder, ByVal key As String)
        Dim value As Object = Nothing

        ' Although TryGetValue handles missing keys,
        ' it doesn't handle passing in a null (Nothing in Visual Basic)
        ' key. This example traps for that particular error, but
        ' passes any other unknown exceptions back out to the
        ' caller.
        Try
            If builder.TryGetValue(key, value) Then
                Console.WriteLine("{0}='{1}' ", key, value)
            Else
                Console.WriteLine("Unable to retrieve value for '{0}'", key)
            End If
        Catch ex As ArgumentNullException
            Console.WriteLine("Unable to retrieve value for null key.")
        End Try
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Server=(local);Integrated Security=SSPI;" & _
          "Initial Catalog=AdventureWorks"
    End Function
End Module

using System.Data.SqlClient;

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
        builder.ConnectionString = GetConnectionString();

        // Call TryGetValue method for multiple
        // key names. Note that these keys are converted
        // to well-known synonynms for data retrieval.
        DisplayValue(builder, "Data Source");
        DisplayValue(builder, "Trusted_Connection");
        DisplayValue(builder, "InvalidKey");
        DisplayValue(builder, null);

        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
    }

    private static void DisplayValue(
        SqlConnectionStringBuilder builder, string key)
    {
        object value = null;

        // Although TryGetValue handles missing keys,
        // it doesn't handle passing in a null
        // key. This example traps for that particular error, but
        // passes any other unknown exceptions back out to the
        // caller.
        try
        {
            if (builder.TryGetValue(key, out value))
            {
                Console.WriteLine("{0}='{1}'", key, value);
            }
            else
            {
                Console.WriteLine("Unable to retrieve value for '{0}'", key);
            }
        }
        catch (ArgumentNullException)
        {
            Console.WriteLine("Unable to retrieve value for null key.");
        }
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        return "Server=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }
}

此示例显示以下结果：

Data Source=(local)
Trusted_Connection=True
Unable to retrieve value for 'InvalidKey'
Unable to retrieve value for null key.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder 属性

SqlConnectionStringBuilder 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlConnectionStringBuilder 类

SqlConnectionStringBuilder 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlConnectionStringBuilder 类
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder ..::.ApplicationName 属性

SqlConnectionStringBuilder
.
.
::
.
ApplicationName 属性
SqlConnectionStringBuilder 类

获取或设置与连接字符串关联的应用程序的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property ApplicationName As String
    Get
    Set
public string ApplicationName { get; set; }
public:
property String^ ApplicationName {
    String^ get ();
    void set (String^ value);
}
member ApplicationName : string with get, set

属性值

类型： System String
应用程序的名称；或者，如果未提供名称，则为“.NET SqlClient Data Provider”。

该属性对应于连接字符串内的“Application Name”和“app”键。如果尝试设置属性时传入的值为 null，则重置 ApplicationName 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Application Name”和“app”键。如果尝试设置属性时传入的值为 null，则重置 ApplicationName 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Application Name”和“app”键。如果尝试设置属性时传入的值为 null，则重置 ApplicationName 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

下面的示例创建一个新的 SqlConnectionStringBuilder，并在对象的构造函数中为其赋予一个连接字符串。该代码显示分析后的连接字符串及其重建版本，然后修改对象的 ApplicationName 属性。最后，该代码显示新的连接字符串，其中包括新的键/值对。 下面的示例创建一个新的 SqlConnectionStringBuilder，并在对象的构造函数中为其赋予一个连接字符串。该代码显示分析后的连接字符串及其重建版本，然后修改对象的 ApplicationName 属性。最后，该代码显示新的连接字符串，其中包括新的键/值对。 下面的示例创建一个新的 SqlConnectionStringBuilder，并在对象的构造函数中为其赋予一个连接字符串。该代码显示分析后的连接字符串及其重建版本，然后修改对象的 ApplicationName 属性。最后，该代码显示新的连接字符串，其中包括新的键/值对。

Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Try
            Dim connectString As String = _
             "Server=(local);Initial Catalog=AdventureWorks;" & _
                 "Integrated Security=True"
            Dim builder As New SqlConnectionStringBuilder(connectString)
            Console.WriteLine("Original: " & builder.ConnectionString)
            Console.WriteLine("ApplicationName={0}", _
                builder.ApplicationName)
            builder.ApplicationName = "My Application"
            Console.WriteLine("Modified: " & builder.ConnectionString)

            Console.WriteLine("Press any key to finish.")
            Console.ReadLine()

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString = "Server=(local);Initial Catalog=AdventureWorks;" +
                "Integrated Security=true";
            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Original: " + builder.ConnectionString);
            Console.WriteLine("ApplicationName={0}",
                builder.ApplicationName);

            builder.ApplicationName = "My Application";
            Console.WriteLine("Modified: " + builder.ConnectionString);

            Console.WriteLine("Press any key to finish.");
            Console.ReadLine();

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

该示例在控制台窗口中显示下列文本：

Original: Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True
ApplicationName=".Net SqlClient Data Provider"
Modified: Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True;Application Name="My Application"

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.AsynchronousProcessing 属性

SqlConnectionStringBuilder
.
.
::
.
AsynchronousProcessing 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指定使用此连接字符串创建的连接是否允许异步处理。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property AsynchronousProcessing As Boolean
    Get
    Set
public bool AsynchronousProcessing { get; set; }
public:
property bool AsynchronousProcessing {
    bool get ();
    void set (bool value);
}
member AsynchronousProcessing : bool with get, set

属性值

类型： System Boolean
AsynchronousProcessing 属性的值；如果未提供任何值，则为 false。

该属性对应于连接字符串内的“Asynchronous Processing”和“async”键。为了利用 SqlCommand 对象提供的异步处理，此键/值对必须包括在关联的 SqlConnection 对象的连接字符串中。 该属性对应于连接字符串内的“Asynchronous Processing”和“async”键。为了利用 SqlCommand 对象提供的异步处理，此键/值对必须包括在关联的 SqlConnection 对象的连接字符串中。

下面的示例检索一个连接字符串，并验证此连接字符串是否被配置为允许异步处理。（在这种情况下，连接字符串来自应用程序中的一个过程，但在生产应用程序中，连接字符串可能来自配置文件，或其他某些来源。）然后，该示例执行异步操作，在后台线程上更新示例数据库中的值。 下面的示例检索一个连接字符串，并验证此连接字符串是否被配置为允许异步处理。（在这种情况下，连接字符串来自应用程序中的一个过程，但在生产应用程序中，连接字符串可能来自配置文件，或其他某些来源。）然后，该示例执行异步操作，在后台线程上更新示例数据库中的值。

Imports System.Data.SqlClient
Imports System.Threading

Module Module1
    Sub Main()
        ' Create a SqlConnectionStringBuilder instance,
        ' and ensure that it is set up for asynchronous processing.
        Dim builder As _
         New SqlConnectionStringBuilder(GetConnectionString())
        ' Asynchronous method calls won't work unless you
        ' have added this option, or have added
        ' the clause "Asynchronous Processing=True"
        ' to the connection string.
        builder.AsynchronousProcessing = True

        Dim commandText As String = _
         "UPDATE Production.Product SET ReorderPoint = ReorderPoint + 1 " & _
         "WHERE ReorderPoint Is Not Null;" & _
         "WAITFOR DELAY '0:0:3';" & _
         "UPDATE Production.Product SET ReorderPoint = ReorderPoint - 1 " & _
         "WHERE ReorderPoint Is Not Null"
        RunCommandAsynchronously(commandText, builder.ConnectionString)

        Console.WriteLine("Press any key to finish.")
        Console.ReadLine()
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);Integrated Security=SSPI;" & _
          "Initial Catalog=AdventureWorks"
    End Function

    Private Sub RunCommandAsynchronously( _
     ByVal commandText As String, ByVal connectionString As String)

        ' Given command text and connection string, asynchronously execute
        ' the specified command against the connection. For this example,
        ' the code displays an indicator as it's working, verifying the
        ' asynchronous behavior.
        Using connection As New SqlConnection(connectionString)
            Try
                Dim count As Integer = 0
                Dim command As New SqlCommand(commandText, connection)
                connection.Open()
                Dim result As IAsyncResult = command.BeginExecuteNonQuery()
                While Not result.IsCompleted
                    Console.WriteLine("Waiting {0}.", count)
                    ' Wait for 1/10 second, so the counter
                    ' doesn't consume all available resources
                    ' on the main thread.
                    Threading.Thread.Sleep(100)
                    count += 1
                End While
                Console.WriteLine("Command complete. Affected {0} rows.", _
                    command.EndExecuteNonQuery(result))
            Catch ex As SqlException
                Console.WriteLine( _
                "Error {0}: System.Data.SqlClient.SqlConnectionStringBuilder", _
                ex.Number, ex.Message)
            Catch ex As InvalidOperationException
                Console.WriteLine("Error: {0}", ex.Message)
            Catch ex As Exception
                ' You might want to pass these errors
                ' back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message)
            End Try
        End Using
    End Sub
End Module

using System.Data.SqlClient;
using System.Threading;

class Program
{
    static void Main()
    {
        // Create a SqlConnectionStringBuilder instance,
        // and ensure that it is set up for asynchronous processing.
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());
        // Asynchronous method calls won't work unless you
        // have added this option, or have added
        // the clause "Asynchronous Processing=true"
        // to the connection string.
        builder.AsynchronousProcessing = true;

        string commandText =
            "UPDATE Production.Product SET ReorderPoint = ReorderPoint + 1 " +
            "WHERE ReorderPoint IS NOT Null;" +
            "WAITFOR DELAY '0:0:3';" +
            "UPDATE Production.Product SET ReorderPoint = ReorderPoint - 1 " +
            "WHERE ReorderPoint IS NOT Null";
        RunCommandAsynchronously(commandText, builder.ConnectionString);

        Console.WriteLine("Press any key to finish.");
        Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        return "Data Source=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }

    private static void RunCommandAsynchronously(string commandText,
        string connectionString)
    {
        // Given command text and connection string, asynchronously execute
        // the specified command against the connection. For this example,
        // the code displays an indicator as it's working, verifying the
        // asynchronous behavior.
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                int count = 0;
                SqlCommand command = new SqlCommand(commandText, connection);
                connection.Open();
                IAsyncResult result = command.BeginExecuteNonQuery();
                while (!result.IsCompleted)
                {
                    Console.WriteLine("Waiting {0}.", count);
                    // Wait for 1/10 second, so the counter
                    // doesn't consume all available resources
                    // on the main thread.
                    Thread.Sleep(100);
                    count += 1;
                }
                Console.WriteLine("Command complete. Affected {0} rows.",
                    command.EndExecuteNonQuery(result));

            }
            catch (SqlException ex)
            {
                Console.WriteLine(
                    "Error {0}: System.Data.SqlClient.SqlConnectionStringBuilder",
                    ex.Number, ex.Message);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine("Error: {0}", ex.Message);
            }
            catch (Exception ex)
            {
                // You might want to pass these errors
                // back out to the caller.
                Console.WriteLine("Error: {0}", ex.Message);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间
BeginExecuteReader
BeginExecuteNonQuery
BeginExecuteXmlReader

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.AttachDBFilename 属性

SqlConnectionStringBuilder
.
.
::
.
AttachDBFilename 属性
SqlConnectionStringBuilder 类

获取或设置包含主数据文件名称的字符串。该字符串包括可附加数据库的完整路径名。 获取或设置包含主数据文件名称的字符串。该字符串包括可附加数据库的完整路径名。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property AttachDBFilename As String
    Get
    Set
public string AttachDBFilename { get; set; }
public:
property String^ AttachDBFilename {
    String^ get ();
    void set (String^ value);
}
member AttachDBFilename : string with get, set

属性值

类型： System String
AttachDBFilename 属性的值；如果未提供任何值，则为 String.Empty 。

该属性对应于连接字符串内的“AttachDBFilename”、“extended properties”和“initial file name”键。如果尝试设置属性时传入的值为 null，则重置 AttachDBFilename 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“AttachDBFilename”、“extended properties”和“initial file name”键。如果尝试设置属性时传入的值为 null，则重置 AttachDBFilename 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“AttachDBFilename”、“extended properties”和“initial file name”键。如果尝试设置属性时传入的值为 null，则重置 AttachDBFilename 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

说明 说明

如果主数据文件 (.mdf) 为只读，则附加操作将失败，因为 .mdf 文件内的日志路径需要更新。如果是从 CD 复制的文件，则可能发生这种情况。在附加文件之前，请先将文件特性更改为读/写。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。 如果主数据文件 (.mdf) 为只读，则附加操作将失败，因为 .mdf 文件内的日志路径需要更新。如果是从 CD 复制的文件，则可能发生这种情况。在附加文件之前，请先将文件特性更改为读/写。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。 如果主数据文件 (.mdf) 为只读，则附加操作将失败，因为 .mdf 文件内的日志路径需要更新。如果是从 CD 复制的文件，则可能发生这种情况。在附加文件之前，请先将文件特性更改为读/写。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。 如果主数据文件 (.mdf) 为只读，则附加操作将失败，因为 .mdf 文件内的日志路径需要更新。如果是从 CD 复制的文件，则可能发生这种情况。在附加文件之前，请先将文件特性更改为读/写。只有具有 .mdf 扩展名的主数据文件才支持 AttachDBFilename。

如果数据文件所在的目录中存在日志文件，并且在附加主数据文件时使用了“database”关键字，则会生成错误。这种情况下，请移除日志文件。附加了数据库后，系统将根据物理路径自动生成一个新的日志文件。 如果数据文件所在的目录中存在日志文件，并且在附加主数据文件时使用了“database”关键字，则会生成错误。这种情况下，请移除日志文件。附加了数据库后，系统将根据物理路径自动生成一个新的日志文件。 如果数据文件所在的目录中存在日志文件，并且在附加主数据文件时使用了“database”关键字，则会生成错误。这种情况下，请移除日志文件。附加了数据库后，系统将根据物理路径自动生成一个新的日志文件。

下面的示例创建一个新的 SqlConnectionStringBuilder 实例，并设置 AttachDBFilename 属性以指定所附加数据文件的名称。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Try
            Dim connectString As String = _
             "Server=(local);" & _
             "Integrated Security=True"
            Dim builder As New SqlConnectionStringBuilder(connectString)
            Console.WriteLine("Original: " & builder.ConnectionString)
            Console.WriteLine("AttachDBFileName={0}", _
             builder.AttachDBFilename)
            builder.AttachDBFilename = "C:\MyDatabase.mdf"
            Console.WriteLine("Modified: " & builder.ConnectionString)

            Using connection As New SqlConnection(builder.ConnectionString)
                connection.Open()
                ' Now use the open connection.
                Console.WriteLine("Database = " & connection.Database)
            End Using

            Console.WriteLine("Press any key to finish.")
            Console.ReadLine()

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString =
                "Server=(local);" +
                "Integrated Security=true";
            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Original: " + builder.ConnectionString);
            Console.WriteLine("AttachDBFileName={0}", builder.AttachDBFilename);

            builder.AttachDBFilename = @"C:\MyDatabase.mdf";
            Console.WriteLine("Modified: " + builder.ConnectionString);

            using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
            {
                connection.Open();
                // Now use the open connection.
                Console.WriteLine("Database = " + connection.Database);
            }
            Console.WriteLine("Press any key to finish.");
            Console.ReadLine();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.ConnectionReset 属性

SqlConnectionStringBuilder
.
.
::
.
ConnectionReset 属性
SqlConnectionStringBuilder 类

注意：此 API 现在已过时。 非过时替代项是 [None]。

已过时。获取或设置一个布尔值，该值指示在从连接池中提取连接时是否重置连接。 已过时。获取或设置一个布尔值，该值指示在从连接池中提取连接时是否重置连接。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<ObsoleteAttribute("ConnectionReset has been deprecated.  SqlConnection will ignore the 'connection reset' keyword and always reset the connection")> _
<BrowsableAttribute(False)> _
Public Property ConnectionReset As Boolean
    Get
    Set
[ObsoleteAttribute("ConnectionReset has been deprecated.  SqlConnection will ignore the 'connection reset' keyword and always reset the connection")]
[BrowsableAttribute(false)]
public bool ConnectionReset { get; set; }
[ObsoleteAttribute(L"ConnectionReset has been deprecated.  SqlConnection will ignore the 'connection reset' keyword and always reset the connection")]
[BrowsableAttribute(false)]
public:
property bool ConnectionReset {
    bool get ();
    void set (bool value);
}
[<ObsoleteAttribute("ConnectionReset has been deprecated.  SqlConnection will ignore the 'connection reset' keyword and always reset the connection")>]
[<BrowsableAttribute(false)>]
member ConnectionReset : bool with get, set

属性值

类型： System Boolean
ConnectionReset 属性的值；如果未提供任何值，则为 true。

此属性对应于 SqlConnection 连接字符串内的“Connection Reset”键，.NET Framework 版本 3.5 SP1 中已移除了该键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：3.5、3.0、2.0
在 4 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间


SqlConnectionStringBuilder ..::.ConnectTimeout 属性

SqlConnectionStringBuilder
.
.
::
.
ConnectTimeout 属性
SqlConnectionStringBuilder 类

获取或设置在终止尝试并产生错误之前，等待与服务器连接的时间长度（以秒为单位）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property ConnectTimeout As Integer
    Get
    Set
public int ConnectTimeout { get; set; }
public:
property int ConnectTimeout {
    int get ();
    void set (int value);
}
member ConnectTimeout : int with get, set

属性值

类型： System Int32
ConnectTimeout 属性的值；如果未提供任何值，则为 15 秒。

该属性对应于连接字符串内的“Connect Timeout”、“connection timeout”和“timeout”键。

下面的示例首先显示一个未指定“Connect Timeout”值的连接字符串的内容，然后设置 ConnectTimeout 属性，最后显示新的连接字符串。

Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Try
            Dim connectString As String = _
             "Server=(local);Initial Catalog=AdventureWorks;" & _
             "Integrated Security=True"
            Dim builder As New SqlConnectionStringBuilder(connectString)
            Console.WriteLine("Original: " & builder.ConnectionString)
            Console.WriteLine("ConnectTimeout={0}", _
                builder.ConnectTimeout)
            builder.ConnectTimeout = 100
            Console.WriteLine("Modified: " & builder.ConnectionString)

            Console.WriteLine("Press any key to finish.")
            Console.ReadLine()

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub

End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString =
                "Server=(local);Initial Catalog=AdventureWorks;" +
                "Integrated Security=true";
            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Original: " + builder.ConnectionString);
            Console.WriteLine("ConnectTimeout={0}",
                builder.ConnectTimeout);
            builder.ConnectTimeout = 100;
            Console.WriteLine("Modified: " + builder.ConnectionString);

            Console.WriteLine("Press any key to finish.");
            Console.ReadLine();

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.ContextConnection 属性

SqlConnectionStringBuilder
.
.
::
.
ContextConnection 属性
SqlConnectionStringBuilder 类

获取或设置一个值，该值指示应建立与 SQL Server 的客户端/服务器连接还是进程内连接。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property ContextConnection As Boolean
    Get
    Set
public bool ContextConnection { get; set; }
public:
property bool ContextConnection {
    bool get ();
    void set (bool value);
}
member ContextConnection : bool with get, set

属性值

类型： System Boolean
ContextConnection 属性的值；如果未提供任何值，则为 False。

该属性对应于连接字符串内的“Context Connection”键。如果尝试设置属性时传入的值为 null，则重置 ContextConnection 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 False。 该属性对应于连接字符串内的“Context Connection”键。如果尝试设置属性时传入的值为 null，则重置 ContextConnection 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 False。 该属性对应于连接字符串内的“Context Connection”键。如果尝试设置属性时传入的值为 null，则重置 ContextConnection 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 False。

说明 说明

如果 SqlConnection 的连接字符串为“context connection=true”，DataSource 属性将返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.CurrentLanguage 属性

SqlConnectionStringBuilder
.
.
::
.
CurrentLanguage 属性
SqlConnectionStringBuilder 类

获取或设置 SQL Server 语言记录名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property CurrentLanguage As String
    Get
    Set
public string CurrentLanguage { get; set; }
public:
property String^ CurrentLanguage {
    String^ get ();
    void set (String^ value);
}
member CurrentLanguage : string with get, set

属性值

类型： System String
CurrentLanguage 属性的值；如果未提供任何值，则为 String.Empty。

该属性对应于连接字符串内的“Current Language”和“language”键。如果尝试设置属性时传入的值为 null，则重置 CurrentLanguage 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Current Language”和“language”键。如果尝试设置属性时传入的值为 null，则重置 CurrentLanguage 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Current Language”和“language”键。如果尝试设置属性时传入的值为 null，则重置 CurrentLanguage 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.DataSource 属性

SqlConnectionStringBuilder
.
.
::
.
DataSource 属性
SqlConnectionStringBuilder 类

获取或设置要连接到的 SQL Server 实例的名称或网络地址。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property DataSource As String
    Get
    Set
public string DataSource { get; set; }
public:
property String^ DataSource {
    String^ get ();
    void set (String^ value);
}
member DataSource : string with get, set

属性值

类型： System String
DataSource 属性的值；如果未提供任何值，则为 String.Empty。

该属性对应于连接字符串内的“Data Source”、“server”、“address”、“addr”和“network address”键。无论所提供的连接字符串中提供了这些值中的哪一个，SqlConnectionStringBuilder 创建的连接字符串都将使用众所周知的“Data Source”键。如果尝试设置属性时传入的值为 null，则重置 DataSource 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Data Source”、“server”、“address”、“addr”和“network address”键。无论所提供的连接字符串中提供了这些值中的哪一个，SqlConnectionStringBuilder 创建的连接字符串都将使用众所周知的“Data Source”键。如果尝试设置属性时传入的值为 null，则重置 DataSource 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Data Source”、“server”、“address”、“addr”和“network address”键。无论所提供的连接字符串中提供了这些值中的哪一个，SqlConnectionStringBuilder 创建的连接字符串都将使用众所周知的“Data Source”键。如果尝试设置属性时传入的值为 null，则重置 DataSource 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 该属性对应于连接字符串内的“Data Source”、“server”、“address”、“addr”和“network address”键。无论所提供的连接字符串中提供了这些值中的哪一个，SqlConnectionStringBuilder 创建的连接字符串都将使用众所周知的“Data Source”键。如果尝试设置属性时传入的值为 null，则重置 DataSource 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

下面的示例演示 SqlConnectionStringBuilder 类将“Data Source”连接字符串键的同义词转换为众所周知的键：

Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim builder As _
         New SqlConnectionStringBuilder( _
         "Network Address=(local);Integrated Security=SSPI;" & _
         "Initial Catalog=AdventureWorks")

        ' Display the connection string, which should now
        ' contain the "Data Source" key, as opposed to the
        ' supplied "Network Address".
        Console.WriteLine(builder.ConnectionString)

        ' Retrieve the DataSource property:
        Console.WriteLine("DataSource = " & builder.DataSource)

        Console.WriteLine("Press any key to continue.")
        Console.ReadLine()
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(
            "Network Address=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks");

        // Display the connection string, which should now
        // contain the "Data Source" key, as opposed to the
        // supplied "Network Address".
        Console.WriteLine(builder.ConnectionString);

        // Retrieve the DataSource property.
        Console.WriteLine("DataSource = " + builder.DataSource);

        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Encrypt 属性

SqlConnectionStringBuilder
.
.
::
.
Encrypt 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示在服务器安装了证书的情况下，SQL Server 是否为客户端和服务器之间发送的所有数据使用 SSL 加密。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Encrypt As Boolean
    Get
    Set
public bool Encrypt { get; set; }
public:
property bool Encrypt {
    bool get ();
    void set (bool value);
}
member Encrypt : bool with get, set

属性值

类型： System Boolean
Encrypt 属性的值；如果未提供任何值，则为 false。

该属性对应于连接字符串内的“Encrypt”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Enlist 属性

SqlConnectionStringBuilder
.
.
::
.
Enlist 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示 SQL Server 连接池程序是否在创建线程的当前事务上下文中自动登记连接。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Enlist As Boolean
    Get
    Set
public bool Enlist { get; set; }
public:
property bool Enlist {
    bool get ();
    void set (bool value);
}
member Enlist : bool with get, set

属性值

类型： System Boolean
Enlist 属性的值；如果未提供任何值，则为 true 。

该属性对应于连接字符串内的“Enlist”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.FailoverPartner 属性

SqlConnectionStringBuilder
.
.
::
.
FailoverPartner 属性
SqlConnectionStringBuilder 类

获取或设置在主服务器停机时要连接到的伙伴服务器的名称或地址。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property FailoverPartner As String
    Get
    Set
public string FailoverPartner { get; set; }
public:
property String^ FailoverPartner {
    String^ get ();
    void set (String^ value);
}
member FailoverPartner : string with get, set

属性值

类型： System String
FailoverPartner 属性的值；如果未提供任何值，则为 String.Empty。

如果尝试设置属性时传入的值为 null，则重置 FailoverPartner 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 如果尝试设置属性时传入的值为 null，则重置 FailoverPartner 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.InitialCatalog 属性

SqlConnectionStringBuilder
.
.
::
.
InitialCatalog 属性
SqlConnectionStringBuilder 类

获取或设置与该连接关联的数据库的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property InitialCatalog As String
    Get
    Set
public string InitialCatalog { get; set; }
public:
property String^ InitialCatalog {
    String^ get ();
    void set (String^ value);
}
member InitialCatalog : string with get, set

属性值

类型： System String
InitialCatalog 属性的值；如果未提供任何值，则为 String.Empty。

该属性对应于连接字符串内的“Initial Catalog”和“database”键。

如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

下面的示例创建一个简单的连接字符串，然后使用 SqlConnectionStringBuilder 类将数据库的名称添加到连接字符串中。此代码显示 InitialCatalog 属性的内容，这样做只是为了确认该类是否能够从同义词（“Database”）转换为相应的属性值。 下面的示例创建一个简单的连接字符串，然后使用 SqlConnectionStringBuilder 类将数据库的名称添加到连接字符串中。此代码显示 InitialCatalog 属性的内容，这样做只是为了确认该类是否能够从同义词（“Database”）转换为相应的属性值。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Try
            Dim connectString As String = _
             "Data Source=(local);" & _
             "Integrated Security=True"

            Dim builder As New SqlConnectionStringBuilder(connectString)
            Console.WriteLine("Original: " & builder.ConnectionString)

            ' Normally, you could simply set the InitialCatalog
            ' property of the SqlConnectionStringBuilder object. This
            ' example uses the default Item property (the C# indexer)
            ' and the "Database" string, simply to demonstrate that
            ' setting the value in this way results in the same
            ' connection string.
            builder("Database") = "AdventureWorks"
            Console.WriteLine("builder.InitialCatalog = " _
                & builder.InitialCatalog)
            Console.WriteLine("Modified: " & builder.ConnectionString)

            Using connection As New SqlConnection(builder.ConnectionString)
                connection.Open()
                ' Now use the open connection.
                Console.WriteLine("Database = " & connection.Database)
            End Using

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

        Console.WriteLine("Press any key to finish.")
        Console.ReadLine()
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString = "Data Source=(local);" +
                "Integrated Security=true";

            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Original: " + builder.ConnectionString);

            // Normally, you could simply set the InitialCatalog
            // property of the SqlConnectionStringBuilder object. This
            // example uses the default Item property (the C# indexer)
            // and the "Database" string, simply to demonstrate that
            // setting the value in this way results in the same
            // connection string:
            builder["Database"] = "AdventureWorks";
            Console.WriteLine("builder.InitialCatalog = "
                + builder.InitialCatalog);
            Console.WriteLine("Modified: " + builder.ConnectionString);

            using (SqlConnection connection =
                new SqlConnection(builder.ConnectionString))
            {
                connection.Open();
                // Now use the open connection.
                Console.WriteLine("Database = " + connection.Database);
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.WriteLine("Press any key to finish.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.IntegratedSecurity 属性

SqlConnectionStringBuilder
.
.
::
.
IntegratedSecurity 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示是否在连接中指定用户 ID 和密码（值为 false 时），或者是否使用当前的 Windows 帐户凭据进行身份验证（值为 true 时）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property IntegratedSecurity As Boolean
    Get
    Set
public bool IntegratedSecurity { get; set; }
public:
property bool IntegratedSecurity {
    bool get ();
    void set (bool value);
}
member IntegratedSecurity : bool with get, set

属性值

类型： System Boolean
IntegratedSecurity 属性的值；如果未提供任何值，则为 false。

该属性对应于连接字符串内的“Integrated Security”和“trusted_connection”键。

下面的示例将现有连接字符串从使用 SQL Server 身份验证转换为使用集成安全性。为了完成此操作，本示例从连接字符串中移除用户名和密码，然后设置 SqlConnectionStringBuilder 对象的 IntegratedSecurity 属性。 下面的示例将现有连接字符串从使用 SQL Server 身份验证转换为使用集成安全性。为了完成此操作，本示例从连接字符串中移除用户名和密码，然后设置 SqlConnectionStringBuilder 对象的 IntegratedSecurity 属性。

说明 说明

此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。 此示例包含一个密码，用以演示 SqlConnectionStringBuilder 如何使用连接字符串。在您的应用程序中，建议您使用 Windows 身份验证。如果必须使用密码，请不要在应用程序中包含硬编码的密码。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Try
            Dim connectString As String = _
             "Data Source=(local);User ID=ab;Password=MyPassword;" & _
             "Initial Catalog=AdventureWorks"

            Dim builder As New SqlConnectionStringBuilder(connectString)
            Console.WriteLine("Original: " & builder.ConnectionString)

            ' Use the Remove method
            ' in order to reset the user ID and password back to their
            ' default (empty string) values. Simply setting the
            ' associated property values to an empty string won't
            ' remove them from the connection string; you must
            ' call the Remove method.
            builder.Remove("User ID")
            builder.Remove("Password")

            ' Turn on integrated security.
            builder.IntegratedSecurity = True

            Console.WriteLine("Modified: " & builder.ConnectionString)

            Using connection As New SqlConnection(builder.ConnectionString)
                connection.Open()
                ' Now use the open connection.
                Console.WriteLine("Database = " & connection.Database)
            End Using

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

        Console.WriteLine("Press any key to finish.")
        Console.ReadLine()
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        try
        {
            string connectString =
                "Data Source=(local);User ID=ab;Password=MyPassword;" +
                "Initial Catalog=AdventureWorks";

            SqlConnectionStringBuilder builder =
                new SqlConnectionStringBuilder(connectString);
            Console.WriteLine("Original: " + builder.ConnectionString);

            // Use the Remove method
            // in order to reset the user ID and password back to their
            // default (empty string) values. Simply setting the
            // associated property values to an empty string won't
            // remove them from the connection string; you must
            // call the Remove method.
            builder.Remove("User ID");
            builder.Remove("Password");

            // Turn on integrated security:
            builder.IntegratedSecurity = true;

            Console.WriteLine("Modified: " + builder.ConnectionString);

            using (SqlConnection connection =
                       new SqlConnection(builder.ConnectionString))
            {
                connection.Open();
                // Now use the open connection.
                Console.WriteLine("Database = " + connection.Database);
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.WriteLine("Press any key to finish.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.IsFixedSize 属性

SqlConnectionStringBuilder
.
.
::
.
IsFixedSize 属性
SqlConnectionStringBuilder 类

获取一个值，该值指示 SqlConnectionStringBuilder 是否具有固定大小。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property IsFixedSize As Boolean
    Get
public override bool IsFixedSize { get; }
public:
virtual property bool IsFixedSize {
    bool get () override;
}
abstract IsFixedSize : bool
override IsFixedSize : bool

属性值

类型： System Boolean
任何情况下都为 true，因为 SqlConnectionStringBuilder 提供固定大小的键/值对集合。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Item 属性

SqlConnectionStringBuilder
.
.
::
.
Item 属性
SqlConnectionStringBuilder 类

获取或设置与指定的键相关联的值。在 C# 中，此属性为索引器。 获取或设置与指定的键相关联的值。在 C# 中，此属性为索引器。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property Item ( _
    keyword As String _
) As Object
    Get
    Set
public override Object this[
    string keyword
] { get; set; }
public:
virtual property Object^ Item[String^ keyword] {
    Object^ get (String^ keyword) override;
    void set (String^ keyword, Object^ value) override;
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

keyword
类型： System String
要获取或设置的项的键。

属性值

类型： System Object
与指定的键相关联的值。
异常 | 条件
ArgumentNullException | keyword 为空引用（在 Visual Basic 中为 Nothing）。
KeyNotFoundException | 尝试添加可用键中不存在的键。
FormatException | 连接字符串中的值无效（特别是需要布尔值或数值型值而并未提供时）。

由于 SqlConnectionStringBuilder 包含固定大小的字典，因此尝试添加字典中不存在的键会引发 KeyNotFoundException。

下面的代码（在控制台应用程序中）创建一个新的 SqlConnectionStringBuilder，并使用 Item 属性向其连接字符串添加键/值对。

Module Module1
    Sub Main()
        Dim builder As New SqlConnectionStringBuilder
        builder.Item("Data Source") = "(local)"
        ' Item is the default property, so
        ' you needn't include it in the reference.
        builder("Integrated Security") = True
        builder.Item("Initial Catalog") = "AdventureWorks"

        ' Overwrite the existing value for the Data Source value.
        builder.Item("Data Source") = "."

        Console.WriteLine(builder.ConnectionString)
        Console.WriteLine()
        Console.WriteLine("Press Enter to continue.")
        Console.ReadLine()
    End Sub
End Module

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder();
        builder["Data Source"] = "(local)";
        builder["Integrated Security"] = true;
        builder["Initial Catalog"] = "AdventureWorks";

        // Overwrite the existing value for the Data Source value.
        builder["Data Source"] = ".";

        Console.WriteLine(builder.ConnectionString);
        Console.WriteLine();
        Console.WriteLine("Press Enter to continue.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Keys 属性

SqlConnectionStringBuilder
.
.
::
.
Keys 属性
SqlConnectionStringBuilder 类

获取包含 SqlConnectionStringBuilder 中的键的 ICollection。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Keys As ICollection
    Get
public override ICollection Keys { get; }
public:
virtual property ICollection^ Keys {
    ICollection^ get () override;
}
abstract Keys : ICollection
override Keys : ICollection

属性值

类型： System.Collections ICollection
一个 ICollection，它包含 SqlConnectionStringBuilder 中的键。

实现

ICollection 中值的顺序未经指定，但它与 Values 属性返回的 ICollection 中的关联值的顺序相同。

下面的控制台应用程序示例创建一个新的 SqlConnectionStringBuilder。此代码循环访问 Keys 属性返回的 ICollection，以显示键/值对。 下面的控制台应用程序示例创建一个新的 SqlConnectionStringBuilder。此代码循环访问 Keys 属性返回的 ICollection，以显示键/值对。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim builder As New SqlConnectionStringBuilder
        builder.DataSource = "(local)"
        builder.IntegratedSecurity = True
        builder.InitialCatalog = "AdventureWorks"

        ' Loop through the collection of keys, displaying
        ' the key and value for each item.
        For Each key As String In builder.Keys
            Console.WriteLine("{0}={1}", key, builder(key))
        Next

        Console.WriteLine()
        Console.WriteLine("Press Enter to continue.")
        Console.ReadLine()
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder();
        builder.DataSource = "(local)";
        builder.IntegratedSecurity = true;
        builder.InitialCatalog = "AdventureWorks";

        // Loop through the collection of keys, displaying
        // the key and value for each item:
        foreach (string key in builder.Keys)
            Console.WriteLine("{0}={1}", key, builder[key]);

        Console.WriteLine();
        Console.WriteLine("Press Enter to continue.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间
Values
Item

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.LoadBalanceTimeout 属性

SqlConnectionStringBuilder
.
.
::
.
LoadBalanceTimeout 属性
SqlConnectionStringBuilder 类

获取或设置连接被销毁前在连接池中存活的最短时间（以秒为单位）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property LoadBalanceTimeout As Integer
    Get
    Set
public int LoadBalanceTimeout { get; set; }
public:
property int LoadBalanceTimeout {
    int get ();
    void set (int value);
}
member LoadBalanceTimeout : int with get, set

属性值

类型： System Int32
LoadBalanceTimeout 属性的值；如果未提供任何值，则为 0。

该属性对应于连接字符串内的“Load Balance Timeout”和“connection lifetime”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.MaxPoolSize 属性

SqlConnectionStringBuilder
.
.
::
.
MaxPoolSize 属性
SqlConnectionStringBuilder 类

获取或设置针对此特定连接字符串连接池中所允许的最大连接数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property MaxPoolSize As Integer
    Get
    Set
public int MaxPoolSize { get; set; }
public:
property int MaxPoolSize {
    int get ();
    void set (int value);
}
member MaxPoolSize : int with get, set

属性值

类型： System Int32
MaxPoolSize 属性的值；如果未提供任何值，则为 100。

该属性对应于连接字符串内的“Max Pool Size”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.MinPoolSize 属性

SqlConnectionStringBuilder
.
.
::
.
MinPoolSize 属性
SqlConnectionStringBuilder 类

获取或设置针对此特定连接字符串连接池中所允许的最小连接数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property MinPoolSize As Integer
    Get
    Set
public int MinPoolSize { get; set; }
public:
property int MinPoolSize {
    int get ();
    void set (int value);
}
member MinPoolSize : int with get, set

属性值

类型： System Int32
MinPoolSize 属性的值；如果未提供任何值，则为 0。

该属性对应于连接字符串内的“Min Pool Size”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.MultipleActiveResultSets 属性

SqlConnectionStringBuilder
.
.
::
.
MultipleActiveResultSets 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示多活动结果集是否可与关联的连接相关联。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property MultipleActiveResultSets As Boolean
    Get
    Set
public bool MultipleActiveResultSets { get; set; }
public:
property bool MultipleActiveResultSets {
    bool get ();
    void set (bool value);
}
member MultipleActiveResultSets : bool with get, set

属性值

类型： System Boolean
MultipleActiveResultSets 属性的值；如果未提供任何值，则为 false。

该属性对应于连接字符串内的“MultipleActiveResultSets”键。此设置只有在与 SQL Server 2005 或更高版本一起使用时才会产生效果。 该属性对应于连接字符串内的“MultipleActiveResultSets”键。此设置只有在与 SQL Server 2005 或更高版本一起使用时才会产生效果。

下面的示例显式禁用在对 SQL Server 2005 编程时可用的多活动结果集功能。

Imports System.Data.SqlClient
Module Module1
    Sub Main()
        Dim builder As New SqlConnectionStringBuilder
        builder.DataSource = "(local)"
        builder.IntegratedSecurity = True
        builder.InitialCatalog = "AdventureWorks"

        ' The connection does not allow multiple active result sets
        ' by default, so this line of code explicitly
        ' enables this feature. Note that this feature is
        ' only available when programming against SQL Server 2005
        ' or later.
        builder.MultipleActiveResultSets = True

        Console.WriteLine(builder.ConnectionString)
        Console.WriteLine()

        Console.WriteLine("Press Enter to continue.")
        Console.ReadLine()
    End Sub
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
        builder.DataSource = "(local)";
        builder.IntegratedSecurity = true;
        builder.InitialCatalog = "AdventureWorks";

        // The connection does not allow multiple active result sets
        // by default, so this line of code explicitly
        // enables this feature. Note that this feature is
        // only available when programming against SQL Server 2005
        // or later.
        builder.MultipleActiveResultSets = true;

        Console.WriteLine(builder.ConnectionString);
        Console.WriteLine();

        Console.WriteLine("Press Enter to continue.");
        Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.NetworkLibrary 属性

SqlConnectionStringBuilder
.
.
::
.
NetworkLibrary 属性
SqlConnectionStringBuilder 类

获取或设置一个字符串，该字符串包含用于建立与 SQL Server 的连接的网络库的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property NetworkLibrary As String
    Get
    Set
public string NetworkLibrary { get; set; }
public:
property String^ NetworkLibrary {
    String^ get ();
    void set (String^ value);
}
member NetworkLibrary : string with get, set

属性值

类型： System String
NetworkLibrary 属性的值；如果未提供任何值，则为 String.Empty。

此属性对应于连接字符串的“Network Library”、“network”和“net”键。

如果尝试设置属性时传入的值为 null，则重置 NetworkLibrary 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 如果尝试设置属性时传入的值为 null，则重置 NetworkLibrary 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

此属性支持的值包括 dbnmpntw（命名管道）、dbmsrpcn（多协议）、dbmsadsn (AppleTalk)、dbmsgnet (VIA)、dbmslpcn（共享内存）及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络，且使用本地服务器（例如“.”或 "（本地）"），使用共享内存。 此属性支持的值包括 dbnmpntw（命名管道）、dbmsrpcn（多协议）、dbmsadsn (AppleTalk)、dbmsgnet (VIA)、dbmslpcn（共享内存）及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络，且使用本地服务器（例如“.”或 "（本地）"），使用共享内存。 此属性支持的值包括 dbnmpntw（命名管道）、dbmsrpcn（多协议）、dbmsadsn (AppleTalk)、dbmsgnet (VIA)、dbmslpcn（共享内存）及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。相应的网络 DLL 必须安装在要连接的系统上。如果您不指定网络，且使用本地服务器（例如“.”或 "（本地）"），使用共享内存。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.PacketSize 属性

SqlConnectionStringBuilder
.
.
::
.
PacketSize 属性
SqlConnectionStringBuilder 类

获取或设置用来与 SQL Server 的实例通信的网络数据包的大小（以字节为单位）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property PacketSize As Integer
    Get
    Set
public int PacketSize { get; set; }
public:
property int PacketSize {
    int get ();
    void set (int value);
}
member PacketSize : int with get, set

属性值

类型： System Int32
PacketSize 属性的值；如果未提供任何值，则为 8000。

该属性对应于连接字符串内的“Packet Size”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Password 属性

SqlConnectionStringBuilder
.
.
::
.
Password 属性
SqlConnectionStringBuilder 类

获取或设置 SQL Server 帐户的密码。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Password As String
    Get
    Set
public string Password { get; set; }
public:
property String^ Password {
    String^ get ();
    void set (String^ value);
}
member Password : string with get, set

属性值

类型： System String
Password 属性的值；如果未提供任何值，则为 String.Empty。

该属性对应于连接字符串内的“Password”和“pwd”键。

如果尝试设置属性时传入的值为 null，则重置 Password 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 如果尝试设置属性时传入的值为 null，则重置 Password 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

若要保持最高级别的安全性，强烈建议您使用 SQL Server 的集成安全性功能，请将 IntegratedSecurity 属性设置为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.PersistSecurityInfo 属性

SqlConnectionStringBuilder
.
.
::
.
PersistSecurityInfo 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示如果连接是打开的或者一直处于打开状态，那么安全敏感信息（如密码）是否将不作为连接的一部分返回。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property PersistSecurityInfo As Boolean
    Get
    Set
public bool PersistSecurityInfo { get; set; }
public:
property bool PersistSecurityInfo {
    bool get ();
    void set (bool value);
}
member PersistSecurityInfo : bool with get, set

属性值

类型： System Boolean
PersistSecurityInfo 属性的值；如果未提供任何值，则为 false。

该属性对应于连接字符串内的“Persist Security Info”和“persistsecurityinfo”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Pooling 属性

SqlConnectionStringBuilder
.
.
::
.
Pooling 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示每次请求连接时该连接是汇入连接池还是显式打开。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Pooling As Boolean
    Get
    Set
public bool Pooling { get; set; }
public:
property bool Pooling {
    bool get ();
    void set (bool value);
}
member Pooling : bool with get, set

属性值

类型： System Boolean
Pooling 属性的值；如果未提供任何值，则为 true。

该属性对应于连接字符串内的“Pooling”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Replication 属性

SqlConnectionStringBuilder
.
.
::
.
Replication 属性
SqlConnectionStringBuilder 类

获取或设置一个布尔值，该值指示是否使用连接来支持复制。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Replication As Boolean
    Get
    Set
public bool Replication { get; set; }
public:
property bool Replication {
    bool get ();
    void set (bool value);
}
member Replication : bool with get, set

属性值

类型： System Boolean
Replication 属性的值；如果未提供任何值，则为 false。

该属性对应于连接字符串内的“Replication”键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.TransactionBinding 属性

SqlConnectionStringBuilder
.
.
::
.
TransactionBinding 属性
SqlConnectionStringBuilder 类

获取或设置一个字符串值，该值指示该连接如何保持与登记 System.Transactions 事务的关联。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property TransactionBinding As String
    Get
    Set
public string TransactionBinding { get; set; }
public:
property String^ TransactionBinding {
    String^ get ();
    void set (String^ value);
}
member TransactionBinding : string with get, set

属性值

类型： System String
TransactionBinding 属性的值；如果未提供任何值，则为 String.Empty。

ConnectionString 中的 Transaction Binding 关键字控制 SqlConnection 如何绑定到登记的 Transaction。

下表列出了 TransactionBinding 属性的可能值：

值 | 说明
Implicit Unbind | 默认值。可使连接在事务结束时与事务分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 Current 属性。事务结束后，其他请求将以自动提交模式执行。 默认值。可使连接在事务结束时与事务分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 Current 属性。事务结束后，其他请求将以自动提交模式执行。 默认值。可使连接在事务结束时与事务分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 Current 属性。事务结束后，其他请求将以自动提交模式执行。 默认值。可使连接在事务结束时与事务分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 Current 属性。事务结束后，其他请求将以自动提交模式执行。 默认值。可使连接在事务结束时与事务分离。分离后，连接上的其他请求将以自动提交模式执行。在事务处于活动状态的情况下执行请求时，不会检查 Current 属性。事务结束后，其他请求将以自动提交模式执行。
Explicit Unbind | 可使连接保持连接到事务，直到连接关闭或使用 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）调用 EnlistTransaction。如果 Current 不是登记的事务或登记的事务未处于活动状态，则引发 InvalidOperationException。此行为强制使用提供 TransactionScope 支持所需的严格范围规则。 可使连接保持连接到事务，直到连接关闭或使用 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）调用 EnlistTransaction。如果 Current 不是登记的事务或登记的事务未处于活动状态，则引发 InvalidOperationException。此行为强制使用提供 TransactionScope 支持所需的严格范围规则。 可使连接保持连接到事务，直到连接关闭或使用 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）调用 EnlistTransaction。如果 Current 不是登记的事务或登记的事务未处于活动状态，则引发 InvalidOperationException。此行为强制使用提供 TransactionScope 支持所需的严格范围规则。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)
分布式事务 (ADO.NET)


SqlConnectionStringBuilder ..::.TrustServerCertificate 属性

SqlConnectionStringBuilder
.
.
::
.
TrustServerCertificate 属性
SqlConnectionStringBuilder 类

获取或设置一个值，该值指示在跳过用于验证信任的证书链遍历时是否加密信道。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property TrustServerCertificate As Boolean
    Get
    Set
public bool TrustServerCertificate { get; set; }
public:
property bool TrustServerCertificate {
    bool get ();
    void set (bool value);
}
member TrustServerCertificate : bool with get, set

属性值

类型： System Boolean
Boolean。可识别的值为 true、false、yes 和 no。 Boolean。可识别的值为 true、false、yes 和 no。

TrustServerCertificate 被设置为 true 时，传输层将使用 SSL 对通道进行加密，并且不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并开启加密，即使 Encrypt 被设置为 false，仍会使用服务器上指定的加密级别。否则连接将失败。 TrustServerCertificate 被设置为 true 时，传输层将使用 SSL 对通道进行加密，并且不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并开启加密，即使 Encrypt 被设置为 false，仍会使用服务器上指定的加密级别。否则连接将失败。 TrustServerCertificate 被设置为 true 时，传输层将使用 SSL 对通道进行加密，并且不通过证书链对可信度进行验证。如果将 TrustServerCertificate 设置为 true 并开启加密，即使 Encrypt 被设置为 false，仍会使用服务器上指定的加密级别。否则连接将失败。

有关更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Encryption Hierarchy”（加密层次结构）和“Using Encryption Without Validation”（使用不验证的加密）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.TypeSystemVersion 属性

SqlConnectionStringBuilder
.
.
::
.
TypeSystemVersion 属性
SqlConnectionStringBuilder 类

获取或设置一个字符串值，该值指示应用程序所需的类型系统。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property TypeSystemVersion As String Get Set
public string TypeSystemVersion { get; set; }
public:
property String^ TypeSystemVersion {
    String^ get ();
    void set (String^ value);
}
member TypeSystemVersion : string with get, set
属性值
类型： System String
下表列出了
TypeSystemVersion
属性的可能值：
值
说明
SQL Server 2000
使用 SQL Server 2000 类型系统。
连接到 SQL Server 2005 实例时将执行下列比较：
使用 SQL Server 2000 类型系统。
连接到 SQL Server 2005 实例时将执行下列比较：
XML 与 NTEXT
UDT 到 VARBINARY
VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 分别与 TEXT、NEXT 和 IMAGE。
SQL Server 2005
使用 SQL Server 2005 类型系统。
对 ADO.NET 的当前版本不进行任何转换。
使用 SQL Server 2005 类型系统。
对 ADO.NET 的当前版本不进行任何转换。
SQL Server 2008
使用 SQL Server 2008 类型系统。
最新
使用此客户端/服务器对能够处理的最新版本。
这个最新版本将随着客户端和服务器组件的升级自动更新。
使用此客户端/服务器对能够处理的最新版本。
这个最新版本将随着客户端和服务器组件的升级自动更新。

TypeSystemVersion 属性可用于为针对某一低级版本的 SQL Server 编写的应用程序指定该相应版本。这将避免新版本 SQL Server 中可能出现的类型不兼容问题，该问题可能会导致应用程序中断。例如，在连接到 SQL Server 2005 实例时将 TypeSystemVersion 属性设置为“SQL Server 2000”会向应用程序公开 2000 类型系统。 TypeSystemVersion 属性可用于为针对某一低级版本的 SQL Server 编写的应用程序指定该相应版本。这将避免新版本 SQL Server 中可能出现的类型不兼容问题，该问题可能会导致应用程序中断。例如，在连接到 SQL Server 2005 实例时将 TypeSystemVersion 属性设置为“SQL Server 2000”会向应用程序公开 2000 类型系统。 TypeSystemVersion 属性可用于为针对某一低级版本的 SQL Server 编写的应用程序指定该相应版本。这将避免新版本 SQL Server 中可能出现的类型不兼容问题，该问题可能会导致应用程序中断。例如，在连接到 SQL Server 2005 实例时将 TypeSystemVersion 属性设置为“SQL Server 2000”会向应用程序公开 2000 类型系统。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.UserID 属性

SqlConnectionStringBuilder
.
.
::
.
UserID 属性
SqlConnectionStringBuilder 类

获取或设置连接到 SQL Server 时要使用的用户 ID。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property UserID As String
    Get
    Set
public string UserID { get; set; }
public:
property String^ UserID {
    String^ get ();
    void set (String^ value);
}
member UserID : string with get, set

属性值

类型： System String
UserID 属性的值；如果未提供任何值，则为 String.Empty。

此属性对应于连接字符串的“User ID”、“user”和“uid”键。

如果尝试设置属性时传入的值为 null，则重置 UserID 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 如果尝试设置属性时传入的值为 null，则重置 UserID 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.UserInstance 属性

SqlConnectionStringBuilder
.
.
::
.
UserInstance 属性
SqlConnectionStringBuilder 类

获取或设置一个值，该值指示是否将连接从默认的 SQL Server Express 实例重定向到在调用方帐户之下运行并且在运行时启动的实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property UserInstance As Boolean
    Get
    Set
public bool UserInstance { get; set; }
public:
property bool UserInstance {
    bool get ();
    void set (bool value);
}
member UserInstance : bool with get, set

属性值

类型： System Boolean
UserInstance 属性的值；如果未提供任何值，则为 False。

该属性对应于连接字符串内的“User Instance”键。如果尝试设置属性时传入的值为 null，则重置 UserInstance 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 False。 该属性对应于连接字符串内的“User Instance”键。如果尝试设置属性时传入的值为 null，则重置 UserInstance 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 False。 该属性对应于连接字符串内的“User Instance”键。如果尝试设置属性时传入的值为 null，则重置 UserInstance 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 False。

说明 说明

此功能仅适用于 SQL Server 2005 速成版。有关用户实例的更多信息，请参见连接到 SQL Server Express 用户实例 (ADO.NET) 和 SQL Server Books Online（《SQL Server 联机丛书》）中的“User Instances for Non-Administrators”（针对非管理员的用户实例）。 此功能仅适用于 SQL Server 2005 速成版。有关用户实例的更多信息，请参见连接到 SQL Server Express 用户实例 (ADO.NET) 和 SQL Server Books Online（《SQL Server 联机丛书》）中的“User Instances for Non-Administrators”（针对非管理员的用户实例）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.Values 属性

SqlConnectionStringBuilder
.
.
::
.
Values 属性
SqlConnectionStringBuilder 类

获取一个包含 SqlConnectionStringBuilder 中的值的 ICollection。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Values As ICollection
    Get
public override ICollection Values { get; }
public:
virtual property ICollection^ Values {
    ICollection^ get () override;
}
abstract Values : ICollection
override Values : ICollection

属性值

类型： System.Collections ICollection
一个 ICollection，它包含 SqlConnectionStringBuilder 中的值。

实现

ICollection 中值的顺序未经指定，但它与 Keys 属性返回的 ICollection 中的关联键的顺序相同。由于 SqlConnectionStringBuilder 的每个实例都始终包含一组固定的相同键，因此 Values 属性始终以与键相同的顺序返回与一组固定键对应的值。 ICollection 中值的顺序未经指定，但它与 Keys 属性返回的 ICollection 中的关联键的顺序相同。由于 SqlConnectionStringBuilder 的每个实例都始终包含一组固定的相同键，因此 Values 属性始终以与键相同的顺序返回与一组固定键对应的值。

下面的示例首先创建一个新的 SqlConnectionStringBuilder，然后通过循环列举对象中的所有值。

Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim builder As _
         New SqlConnectionStringBuilder(GetConnectionString())

        ' Loop through each of the values, displaying the contents.
        For Each value As Object In builder.Values
            Console.WriteLine(value)
        Next

        Console.WriteLine("Press any key to continue.")
        Console.ReadLine()
    End Sub

    Private Function GetConnectionString() As String
        ' To avoid storing the connection string in your code,
        ' you can retrieve it from a configuration file.
        Return "Data Source=(local);Integrated Security=SSPI;" & _
          "Initial Catalog=AdventureWorks; Asynchronous Processing=True"
    End Function
End Module

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());

        // Loop through each of the values, displaying the contents.
        foreach (object value in builder.Values)
            Console.WriteLine(value);

        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file.
        return "Data Source=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks; Asynchronous Processing=true";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间
Keys

其他资源

连接字符串 (ADO.NET)


SqlConnectionStringBuilder ..::.WorkstationID 属性

SqlConnectionStringBuilder
.
.
::
.
WorkstationID 属性
SqlConnectionStringBuilder 类

获取或设置连接到 SQL Server 的工作站的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property WorkstationID As String
    Get
    Set
public string WorkstationID { get; set; }
public:
property String^ WorkstationID {
    String^ get ();
    void set (String^ value);
}
member WorkstationID : string with get, set

属性值

类型： System String
WorkstationID 属性的值；如果未提供任何值，则为 String.Empty。

该属性对应于连接字符串内的“Workstation ID”和“wsid”键。

如果尝试设置属性时传入的值为 null，则重置 WorkstationID 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。 如果尝试设置属性时传入的值为 null，则重置 WorkstationID 属性。如果在开发人员尝试检索此属性时尚未设置该值，则返回值为 String.Empty。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlConnectionStringBuilder 类
SqlConnectionStringBuilder 成员
System.Data.SqlClient 命名空间

其他资源

连接字符串 (ADO.NET)


SqlDataAdapter 类

SqlDataAdapter 类
成员

表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。无法继承此类。 表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlDataAdapter _
    Inherits DbDataAdapter _
    Implements IDbDataAdapter, IDataAdapter, ICloneable
public sealed class SqlDataAdapter : DbDataAdapter,
    IDbDataAdapter, IDataAdapter, ICloneable
public ref class SqlDataAdapter sealed : public DbDataAdapter,
    IDbDataAdapter, IDataAdapter, ICloneable
[<SealedAttribute>]
type SqlDataAdapter =
    class
        inherit DbDataAdapter
        interface IDbDataAdapter
        interface IDataAdapter
        interface ICloneable
    end

SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。 SqlDataAdapter 是 DataSet 和 SQL Server 之间的桥接器，用于检索和保存数据。SqlDataAdapter 通过对数据源使用适当的 Transact-SQL 语句映射 Fill（它可更改 DataSet 中的数据以匹配数据源中的数据）和 Update（它可更改数据源中的数据以匹配 DataSet 中的数据）来提供这一桥接。更新是逐行进行的。对于每个已插入、修改和删除的行，Update 方法会确定已对其执行的更改的类型（Insert、Update 或 Delete）。根据更改类型，执行 Insert、Update 或 Delete 命令模板将已修改的行传播给数据源。当 SqlDataAdapter 填充 DataSet 时，它为返回的数据创建必需的表和列（如果这些表和列尚不存在）。但是，除非 MissingSchemaAction 属性设置为 AddWithKey，否则这个隐式创建的架构中不包括主键信息。也可以使用 FillSchema，让 SqlDataAdapter 创建 DataSet 的架构，并在用数据填充它之前就将主键信息包括进去。有关更多信息，请参见向数据集添加现有约束 (ADO.NET)。

SqlDataAdapter 与 SqlConnection 和 SqlCommand 一起使用，以便在连接到 SQL Server 数据库时提高性能。

说明 说明

如果使用 SQL Server 存储过程编辑或删除使用 DataAdapter 的数据，请确保不要在存储过程定义中使用 SET NOCOUNT ON。这将导致返回的受影响行数为零，DataAdapter 将其解释为并发冲突。这种情况下将引发 DBConcurrencyException。 如果使用 SQL Server 存储过程编辑或删除使用 DataAdapter 的数据，请确保不要在存储过程定义中使用 SET NOCOUNT ON。这将导致返回的受影响行数为零，DataAdapter 将其解释为并发冲突。这种情况下将引发 DBConcurrencyException。 如果使用 SQL Server 存储过程编辑或删除使用 DataAdapter 的数据，请确保不要在存储过程定义中使用 SET NOCOUNT ON。这将导致返回的受影响行数为零，DataAdapter 将其解释为并发冲突。这种情况下将引发 DBConcurrencyException。

SqlDataAdapter 还包括 SelectCommand、InsertCommand、DeleteCommand、UpdateCommand 和 TableMappings 属性，以便于数据的加载和更新。

当创建 SqlDataAdapter 的实例时，读/写属性将被设置为初始值。有关这些值的列表，请参见 SqlDataAdapter 构造函数。 当创建 SqlDataAdapter 的实例时，读/写属性将被设置为初始值。有关这些值的列表，请参见 SqlDataAdapter 构造函数。

InsertCommand、DeleteCommand 和 UpdateCommand 是泛型模板，通过参数机制由来自每个修改行的各个值自动填充。

对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。DbParameter 对象的 SourceColumn 属性将被设置为列的名称。此设置指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。DbParameter 对象的 SourceColumn 属性将被设置为列的名称。此设置指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。DbParameter 对象的 SourceColumn 属性将被设置为列的名称。此设置指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。

说明 说明

如果调用 Fill 方法并且表包含客户端计算机上不可用的用户定义的类型，则会发生 InvalidOperationException。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的 Creating and Using User-Defined Types（创建和使用用户定义的类型）。 如果调用 Fill 方法并且表包含客户端计算机上不可用的用户定义的类型，则会发生 InvalidOperationException。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的 Creating and Using User-Defined Types（创建和使用用户定义的类型）。

下面的示例使用 SqlCommand、SqlDataAdapter 和 SqlConnection 从数据库中选择记录，并用选定的行填充 DataSet。然后返回已填充的 DataSet。为完成此任务，向该方法传递一个已初始化的 DataSet、一个连接字符串和一个查询字符串，后者是一个 Transact-SQL SELECT 语句。 下面的示例使用 SqlCommand、SqlDataAdapter 和 SqlConnection 从数据库中选择记录，并用选定的行填充 DataSet。然后返回已填充的 DataSet。为完成此任务，向该方法传递一个已初始化的 DataSet、一个连接字符串和一个查询字符串，后者是一个 Transact-SQL SELECT 语句。 下面的示例使用 SqlCommand、SqlDataAdapter 和 SqlConnection 从数据库中选择记录，并用选定的行填充 DataSet。然后返回已填充的 DataSet。为完成此任务，向该方法传递一个已初始化的 DataSet、一个连接字符串和一个查询字符串，后者是一个 Transact-SQL SELECT 语句。

Public Function SelectRows( _
    ByVal dataSet As DataSet, ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter()
        adapter.SelectCommand = New SqlCommand( _
            queryString, connection)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

private static DataSet SelectRows(DataSet dataset,
    string connectionString,string queryString)
{
    using (SqlConnection connection =
        new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(
            queryString, connection);
        adapter.Fill(dataset);
        return dataset;
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlDataAdapterSqlDataAdapter
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapter 和 DataReader (ADO.NET)
在 ADO.NET 中检索和修改数据


SqlDataAdapter 成员

SqlDataAdapter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。无法继承此类。 表示用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接。无法继承此类。

SqlDataAdapter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlDataAdapter 类
System.Data.SqlClient 命名空间


SqlDataAdapter 构造函数

SqlDataAdapter 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

初始化 SqlDataAdapter 类的一个新实例。

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter 构造函数

SqlDataAdapter 构造函数
SqlDataAdapter 类

初始化 SqlDataAdapter 类的一个新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlDataAdapter()
public:
SqlDataAdapter()
new : unit -> SqlDataAdapter

当创建 SqlDataAdapter 的实例时，下面的读/写属性将设置为以下初始值。

属性 | 初始值
MissingMappingAction | MissingMappingAction.Passthrough
MissingSchemaAction | MissingSchemaAction.Add

可以通过单独调用属性来更改任何这些属性的值。

下面的示例创建一个 SqlDataAdapter 并设置它的一些属性。

Public Function CreateSqlDataAdapter( _
    ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

    ' Create the commands.
    adapter.SelectCommand = New SqlCommand( _
        "SELECT CustomerID, CompanyName FROM CUSTOMERS", connection)
    adapter.InsertCommand = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
         "VALUES (@CustomerID, @CompanyName)", connection)
    adapter.UpdateCommand = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = " & _
        "@CompanyName WHERE CustomerID = @oldCustomerID", connection)
    adapter.DeleteCommand = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.InsertCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")

    adapter.UpdateCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.UpdateCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = _
        DataRowVersion.Original

    adapter.DeleteCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = _
        DataRowVersion.Original

    Return adapter
End Function

public static SqlDataAdapter CreateSqlDataAdapter(SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

    // Create the commands.
    adapter.SelectCommand = new SqlCommand(
        "SELECT CustomerID, CompanyName FROM CUSTOMERS", connection);
    adapter.InsertCommand = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);
    adapter.UpdateCommand = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);
    adapter.DeleteCommand = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.InsertCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");

    adapter.UpdateCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.UpdateCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion =
        DataRowVersion.Original;

    adapter.DeleteCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion =
        DataRowVersion.Original;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
SqlDataAdapter 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter 构造函数 (SqlCommand)

SqlDataAdapter 构造函数 (SqlCommand)
SqlDataAdapter 类

初始化 SqlDataAdapter 类的新实例，用指定的 SqlCommand 作为 SelectCommand 的属性。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    selectCommand As SqlCommand _
)
public SqlDataAdapter(
    SqlCommand selectCommand
)
public:
SqlDataAdapter(
    SqlCommand^ selectCommand
)
new :
        selectCommand:SqlCommand -> SqlDataAdapter

参数

selectCommand
类型： System.Data.SqlClient SqlCommand
一个 SqlCommand（可以是 Transact-SQL SELECT 语句或存储过程），已设置为 SqlDataAdapter 的 SelectCommand 属性。

SqlDataAdapter 构造函数的实现将 SelectCommand 属性设置为在 selectCommand 参数中指定的值。

当创建 SqlDataAdapter 的实例时，下面的读/写属性将设置为以下初始值。

属性 | 初始值
MissingMappingAction | MissingMappingAction.Passthrough
MissingSchemaAction | MissingSchemaAction.Add

可以通过单独调用属性来更改任何这些属性的值。

当 SelectCommand（或任何其他命令属性）分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。SelectCommand 维护对以前创建的 SqlCommand 对象的引用。 当 SelectCommand（或任何其他命令属性）分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。SelectCommand 维护对以前创建的 SqlCommand 对象的引用。

下面的示例创建一个 SqlDataAdapter 并设置它的一些属性。

Public Function CreateSqlDataAdapter(ByVal selectCommand As SqlCommand, _
    ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter(selectCommand)
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

    ' Create the commands.
    adapter.InsertCommand = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
         "VALUES (@CustomerID, @CompanyName)", connection)

    adapter.UpdateCommand = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID", connection)

    adapter.DeleteCommand = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.InsertCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")

    adapter.UpdateCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.UpdateCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original

    Return adapter
End Function

public static SqlDataAdapter CreateSqlDataAdapter(SqlCommand selectCommand,
    SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter(selectCommand);
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

    // Create the other commands.
    adapter.InsertCommand = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    adapter.UpdateCommand = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    adapter.DeleteCommand = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.InsertCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");

    adapter.UpdateCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.UpdateCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
SqlDataAdapter 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter 构造函数 (String, SqlConnection)

SqlDataAdapter 构造函数 (String, SqlConnection)
SqlDataAdapter 类

使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的一个新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    selectCommandText As String, _
    selectConnection As SqlConnection _
)
public SqlDataAdapter(
    string selectCommandText,
    SqlConnection selectConnection
)
public:
SqlDataAdapter(
    String^ selectCommandText,
    SqlConnection^ selectConnection
)
new :
        selectCommandText:string *
        selectConnection:SqlConnection -> SqlDataAdapter

参数

selectCommandText
类型： System String
一个 String，它是将要由 SqlDataAdapter 的 SelectCommand 属性使用的 Transact-SQL SELECT 语句或存储过程。
selectConnection
类型： System.Data.SqlClient SqlConnection
表示该连接的 SqlConnection。

SqlDataAdapter 的这一实现打开和关闭 SqlConnection（如果它尚未打开）。在必须为两个或更多 SqlDataAdapter 对象调用 Fill 方法的应用程序中，它会非常有用。如果 SqlConnection 已打开，则必须显式调用 Close 或 Dispose 以将其关闭。 SqlDataAdapter 的这一实现打开和关闭 SqlConnection（如果它尚未打开）。在必须为两个或更多 SqlDataAdapter 对象调用 Fill 方法的应用程序中，它会非常有用。如果 SqlConnection 已打开，则必须显式调用 Close 或 Dispose 以将其关闭。 SqlDataAdapter 的这一实现打开和关闭 SqlConnection（如果它尚未打开）。在必须为两个或更多 SqlDataAdapter 对象调用 Fill 方法的应用程序中，它会非常有用。如果 SqlConnection 已打开，则必须显式调用 Close 或 Dispose 以将其关闭。

当创建 SqlDataAdapter 的实例时，下面的读/写属性将设置为以下初始值。

属性 | 初始值
MissingMappingAction | MissingMappingAction.Passthrough
MissingSchemaAction | MissingSchemaAction.Add

可以通过单独调用属性来更改这些属性中任一属性的值。

下面的示例创建一个 SqlDataAdapter 并设置它的一些属性。

Public Function CreateSqlDataAdapter(ByVal commandText As String, _
    ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter(commandText, connection)

    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

    ' Create the commands.
    adapter.InsertCommand = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
         "VALUES (@CustomerID, @CompanyName)")

    adapter.UpdateCommand = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID")

    adapter.DeleteCommand = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID")

    ' Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.InsertCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")

    adapter.UpdateCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.UpdateCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original

    Return adapter
End Function

public static SqlDataAdapter CreateSqlDataAdapter(string commandText,
    SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter(commandText, connection);

    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

    // Create the other commands.
    adapter.InsertCommand = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)");

    adapter.UpdateCommand = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID");

    adapter.DeleteCommand = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID");

    // Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.InsertCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");

    adapter.UpdateCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.UpdateCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
SqlDataAdapter 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter 构造函数 (String, String)

SqlDataAdapter 构造函数 (String, String)
SqlDataAdapter 类

用 SelectCommand 和一个连接字符串初始化 SqlDataAdapter 类的一个新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    selectCommandText As String, _
    selectConnectionString As String _
)
public SqlDataAdapter(
    string selectCommandText,
    string selectConnectionString
)
public:
SqlDataAdapter(
    String^ selectCommandText,
    String^ selectConnectionString
)
new :
        selectCommandText:string *
        selectConnectionString:string -> SqlDataAdapter

参数

selectCommandText
类型： System String
一个 String，它是将要由 SqlDataAdapter 的 SelectCommand 属性使用的 Transact-SQL SELECT 语句或存储过程。
selectConnectionString
类型： System String
连接字符串。

SqlDataAdapter 构造函数的此重载使用 selectCommandText 参数来设置 SelectCommand 属性。SqlDataAdapter 将使用 selectConnectionString 参数创建连接并对该连接进行维护。 SqlDataAdapter 构造函数的此重载使用 selectCommandText 参数来设置 SelectCommand 属性。SqlDataAdapter 将使用 selectConnectionString 参数创建连接并对该连接进行维护。

当创建 SqlDataAdapter 的实例时，下面的读/写属性将设置为以下初始值。

属性 | 初始值
MissingMappingAction | MissingMappingAction.Passthrough
MissingSchemaAction | MissingSchemaAction.Add

可以通过单独调用属性来更改任何这些属性的值。

下面的示例创建一个 SqlDataAdapter 并设置它的一些属性。

Public Function CreateSqlDataAdapter(ByVal commandText As String, _
    ByVal connectionString As String) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter(commandText, connectionString)
    Dim connection As SqlConnection = adapter.SelectCommand.Connection

    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

    ' Create the commands.
    adapter.InsertCommand = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
         "VALUES (@CustomerID, @CompanyName)", connection)

    adapter.UpdateCommand = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID", connection)

    adapter.DeleteCommand = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.InsertCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")

    adapter.UpdateCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID")
    adapter.UpdateCommand.Parameters.Add("@CompanyName", _
        SqlDbType.VarChar, 40, "CompanyName")
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand.Parameters.Add("@CustomerID", _
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original

    Return adapter
End Function

public static SqlDataAdapter CreateSqlDataAdapter(string commandText,
    string connectionString)
{
    SqlDataAdapter adapter = new SqlDataAdapter(commandText, connectionString);
    SqlConnection connection = adapter.SelectCommand.Connection;

    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

    // Create the commands.
    adapter.InsertCommand = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    adapter.UpdateCommand = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    adapter.DeleteCommand = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Create the parameters.
    adapter.InsertCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.InsertCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");

    adapter.UpdateCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID");
    adapter.UpdateCommand.Parameters.Add("@CompanyName",
        SqlDbType.VarChar, 40, "CompanyName");
    adapter.UpdateCommand.Parameters.Add("@oldCustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand.Parameters.Add("@CustomerID",
        SqlDbType.Char, 5, "CustomerID").SourceVersion = DataRowVersion.Original;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
SqlDataAdapter 重载
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter 方法

SqlDataAdapter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

SqlDataAdapter 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlDataAdapter 类
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.Clone 方法

SqlDataAdapter
.
.
::
.
Clone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.ICloneable ..::.Clone 方法

SqlDataAdapter
.
.
::
.
ICloneable
.
.
::
.
Clone 方法
SqlDataAdapter 类

有关此成员的说明，请参见 Clone。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Function Clone As Object Implements ICloneable.Clone
Object ICloneable.Clone()
private:
virtual Object^ Clone() sealed = ICloneable::Clone
private abstract Clone : unit -> Object
private override Clone : unit -> Object

返回值

类型： System Object
作为当前实例的副本的新对象。

实现

此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 ICloneable 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 ICloneable 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
Clone 重载
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.Dispose 方法

SqlDataAdapter
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

释放由 Component 占用的资源。

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.Fill 方法

SqlDataAdapter
.
.
::
.
Fill 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

在 DataSet 中添加或刷新行以与数据源中的行匹配。

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.FillSchema 方法

SqlDataAdapter
.
.
::
.
FillSchema 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

向指定的 DataSet 添加一个 DataTable。

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.MemberwiseClone 方法

SqlDataAdapter
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.Update 方法

SqlDataAdapter
.
.
::
.
Update 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

为 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。

名称 说明
页首

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter 属性

SqlDataAdapter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

SqlDataAdapter 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlDataAdapter 类
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.DeleteCommand 属性

SqlDataAdapter
.
.
::
.
DeleteCommand 属性
SqlDataAdapter 类

获取或设置一个 Transact-SQL 语句或存储过程，以从数据集删除记录。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property DeleteCommand As SqlCommand
    Get
    Set
public SqlCommand DeleteCommand { get; set; }
public:
property SqlCommand^ DeleteCommand {
    SqlCommand^ get ();
    void set (SqlCommand^ value);
}
member DeleteCommand : SqlCommand with get, set

属性值

类型： System.Data.SqlClient SqlCommand
在 Update 过程中使用 SqlCommand，以在数据库中删除对应于 DataSet 中已删除行的记录。

在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 DeleteCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 DeleteCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 DeleteCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 DeleteCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

在将 DeleteCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。DeleteCommand 维护对以前创建的 SqlCommand 对象的引用。 在将 DeleteCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。DeleteCommand 维护对以前创建的 SqlCommand 对象的引用。

对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。

下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。 下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。

Public Function CreateCustomerAdapter( _
  ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter()

    ' Create the SelectCommand.
    Dim command As SqlCommand = New SqlCommand( _
        "SELECT * FROM Customers " & _
        "WHERE Country = @Country AND City = @City", connection)

    ' Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15)
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15)

    adapter.SelectCommand = command

    ' Create the InsertCommand.
    command = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
        "VALUES (@CustomerID, @CompanyName)", connection)

    ' Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")

    adapter.InsertCommand = command

    ' Create the UpdateCommand.
    command = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID", connection)

    ' Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")
    Dim parameter As SqlParameter = command.Parameters.Add( _
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.UpdateCommand = command

    ' Create the DeleteCommand.
    command = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Add the parameters for the DeleteCommand.
    command.Parameters.Add( _
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand = command

    Return adapter
End Function

public static SqlDataAdapter CreateCustomerAdapter(
    SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter();

    // Create the SelectCommand.
    SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
        "WHERE Country = @Country AND City = @City", connection);

    // Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15);

    adapter.SelectCommand = command;

    // Create the InsertCommand.
    command = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    // Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

    adapter.InsertCommand = command;

    // Create the UpdateCommand.
    command = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    // Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
    SqlParameter parameter = command.Parameters.Add(
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.UpdateCommand = command;

    // Create the DeleteCommand.
    command = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Add the parameters for the DeleteCommand.
    parameter = command.Parameters.Add(
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand = command;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter ..::.IDbDataAdapter ..::.DeleteCommand 属性

SqlDataAdapter
.
.
::
.
IDbDataAdapter
.
.
::
.
DeleteCommand 属性
SqlDataAdapter 类

有关此成员的说明，请参见 DeleteCommand。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Property DeleteCommand As IDbCommand
    Implements IDbDataAdapter.DeleteCommand
    Get
    Set
IDbCommand IDbDataAdapter.DeleteCommand { get; set; }
private:
virtual property IDbCommand^ DeleteCommand {
    IDbCommand^ get () sealed = IDbDataAdapter::DeleteCommand::get;
    void set (IDbCommand^ value) sealed = IDbDataAdapter::DeleteCommand::set;
}
private abstract DeleteCommand : IDbCommand with get, set
private override DeleteCommand : IDbCommand with get, set

属性值

类型： System.Data IDbCommand
在 Update 过程中使用的 IdbCommand，它针对数据集中已删除的行删除数据源中的记录。

实现

此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.IDbDataAdapter ..::.InsertCommand 属性

SqlDataAdapter
.
.
::
.
IDbDataAdapter
.
.
::
.
InsertCommand 属性
SqlDataAdapter 类

有关此成员的说明，请参见 InsertCommand。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Property InsertCommand As IDbCommand
    Implements IDbDataAdapter.InsertCommand
    Get
    Set
IDbCommand IDbDataAdapter.InsertCommand { get; set; }
private:
virtual property IDbCommand^ InsertCommand {
    IDbCommand^ get () sealed = IDbDataAdapter::InsertCommand::get;
    void set (IDbCommand^ value) sealed = IDbDataAdapter::InsertCommand::set;
}
private abstract InsertCommand : IDbCommand with get, set
private override InsertCommand : IDbCommand with get, set

属性值

类型： System.Data IDbCommand
在 Update 过程中使用的 IDbCommand，它针对数据集中的新行将记录插入到数据源。

实现

此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.IDbDataAdapter ..::.SelectCommand 属性

SqlDataAdapter
.
.
::
.
IDbDataAdapter
.
.
::
.
SelectCommand 属性
SqlDataAdapter 类

有关此成员的说明，请参见 SelectCommand。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Property SelectCommand As IDbCommand
    Implements IDbDataAdapter.SelectCommand
    Get
    Set
IDbCommand IDbDataAdapter.SelectCommand { get; set; }
private:
virtual property IDbCommand^ SelectCommand {
    IDbCommand^ get () sealed = IDbDataAdapter::SelectCommand::get;
    void set (IDbCommand^ value) sealed = IDbDataAdapter::SelectCommand::set;
}
private abstract SelectCommand : IDbCommand with get, set
private override SelectCommand : IDbCommand with get, set

属性值

类型： System.Data IDbCommand
在 Update 过程中使用的 IDbCommand，它从数据源中选择记录以便放入数据集中。

实现

此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.IDbDataAdapter ..::.UpdateCommand 属性

SqlDataAdapter
.
.
::
.
IDbDataAdapter
.
.
::
.
UpdateCommand 属性
SqlDataAdapter 类

有关此成员的说明，请参见 UpdateCommand。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Property UpdateCommand As IDbCommand
    Implements IDbDataAdapter.UpdateCommand
    Get
    Set
IDbCommand IDbDataAdapter.UpdateCommand { get; set; }
private:
virtual property IDbCommand^ UpdateCommand {
    IDbCommand^ get () sealed = IDbDataAdapter::UpdateCommand::get;
    void set (IDbCommand^ value) sealed = IDbDataAdapter::UpdateCommand::set;
}
private abstract UpdateCommand : IDbCommand with get, set
private override UpdateCommand : IDbCommand with get, set

属性值

类型： System.Data IDbCommand
在 Update 过程中使用的 IdbCommand，它针对数据集中已修改的行更新数据源中的记录。

实现

此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlDataAdapter 实例被强制转换为 IDbDataAdapter 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.InsertCommand 属性

SqlDataAdapter
.
.
::
.
InsertCommand 属性
SqlDataAdapter 类

获取或设置一个 Transact-SQL 语句或存储过程，以在数据源中插入新记录。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property InsertCommand As SqlCommand
    Get
    Set
public SqlCommand InsertCommand { get; set; }
public:
property SqlCommand^ InsertCommand {
    SqlCommand^ get ();
    void set (SqlCommand^ value);
}
member InsertCommand : SqlCommand with get, set

属性值

类型： System.Data.SqlClient SqlCommand
在 Update 过程中使用 SqlCommand，以在数据库中插入对应于 DataSet 中的新行的记录。

在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 InsertCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 InsertCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 InsertCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 InsertCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

在将 InsertCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。InsertCommand 维护对以前创建的 SqlCommand 对象的引用。 在将 InsertCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。InsertCommand 维护对以前创建的 SqlCommand 对象的引用。

如果执行此命令后返回行，则可以将这些行添加到 DataSet 中，具体取决于如何设置 SqlCommand 对象的 UpdatedRowSource 属性。

对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。

下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。 下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。

Public Function CreateCustomerAdapter( _
  ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter()

    ' Create the SelectCommand.
    Dim command As SqlCommand = New SqlCommand( _
        "SELECT * FROM Customers " & _
        "WHERE Country = @Country AND City = @City", connection)

    ' Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15)
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15)

    adapter.SelectCommand = command

    ' Create the InsertCommand.
    command = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
        "VALUES (@CustomerID, @CompanyName)", connection)

    ' Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")

    adapter.InsertCommand = command

    ' Create the UpdateCommand.
    command = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID", connection)

    ' Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")
    Dim parameter As SqlParameter = command.Parameters.Add( _
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.UpdateCommand = command

    ' Create the DeleteCommand.
    command = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Add the parameters for the DeleteCommand.
    command.Parameters.Add( _
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand = command

    Return adapter
End Function

public static SqlDataAdapter CreateCustomerAdapter(
    SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter();

    // Create the SelectCommand.
    SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
        "WHERE Country = @Country AND City = @City", connection);

    // Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15);

    adapter.SelectCommand = command;

    // Create the InsertCommand.
    command = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    // Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

    adapter.InsertCommand = command;

    // Create the UpdateCommand.
    command = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    // Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
    SqlParameter parameter = command.Parameters.Add(
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.UpdateCommand = command;

    // Create the DeleteCommand.
    command = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Add the parameters for the DeleteCommand.
    parameter = command.Parameters.Add(
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand = command;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter ..::.SelectCommand 属性

SqlDataAdapter
.
.
::
.
SelectCommand 属性
SqlDataAdapter 类

获取或设置一个 Transact-SQL 语句或存储过程，用于在数据源中选择记录。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property SelectCommand As SqlCommand
    Get
    Set
public SqlCommand SelectCommand { get; set; }
public:
property SqlCommand^ SelectCommand {
    SqlCommand^ get ();
    void set (SqlCommand^ value);
}
member SelectCommand : SqlCommand with get, set

属性值

类型： System.Data.SqlClient SqlCommand
在 Fill 过程中使用的 SqlCommand，用来从数据库中为 DataSet 中的位置选择记录。

在将 SelectCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。SelectCommand 维护对以前创建的 SqlCommand 对象的引用。 在将 SelectCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。SelectCommand 维护对以前创建的 SqlCommand 对象的引用。

如果 SelectCommand 不返回任何行，则没有任何表添加到 DataSet 中，并且不会引发任何异常。

下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。 下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。

Public Function CreateCustomerAdapter( _
  ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter()

    ' Create the SelectCommand.
    Dim command As SqlCommand = New SqlCommand( _
        "SELECT * FROM Customers " & _
        "WHERE Country = @Country AND City = @City", connection)

    ' Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15)
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15)

    adapter.SelectCommand = command

    ' Create the InsertCommand.
    command = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
        "VALUES (@CustomerID, @CompanyName)", connection)

    ' Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")

    adapter.InsertCommand = command

    ' Create the UpdateCommand.
    command = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID", connection)

    ' Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")
    Dim parameter As SqlParameter = command.Parameters.Add( _
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.UpdateCommand = command

    ' Create the DeleteCommand.
    command = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Add the parameters for the DeleteCommand.
    command.Parameters.Add( _
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand = command

    Return adapter
End Function

public static SqlDataAdapter CreateCustomerAdapter(
    SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter();

    // Create the SelectCommand.
    SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
        "WHERE Country = @Country AND City = @City", connection);

    // Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15);

    adapter.SelectCommand = command;

    // Create the InsertCommand.
    command = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    // Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

    adapter.InsertCommand = command;

    // Create the UpdateCommand.
    command = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    // Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
    SqlParameter parameter = command.Parameters.Add(
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.UpdateCommand = command;

    // Create the DeleteCommand.
    command = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Add the parameters for the DeleteCommand.
    parameter = command.Parameters.Add(
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand = command;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter ..::.UpdateBatchSize 属性

SqlDataAdapter
.
.
::
.
UpdateBatchSize 属性
SqlDataAdapter 类

获取或设置每次到服务器的往返过程中处理的行数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property UpdateBatchSize As Integer Get Set
public override int UpdateBatchSize { get; set; }
public:
virtual property int UpdateBatchSize {
    int get () override;
    void set (int value) override;
}
abstract UpdateBatchSize : int with get, set override UpdateBatchSize : int with get, set
属性值
类型： System Int32
每一批处理的行数。
值为
效果
0
批大小没有限制。
1
禁用批量更新。
>1
一次使用多批
UpdateBatchSize
操作来发送更改。
将此值设置为 1 之外的值时，与
SqlDataAdapter
关联的所有命令必须将其
UpdatedRowSource
属性设置为
None
或
OutputParameters
。
否则将引发异常。
将此值设置为 1 之外的值时，与
SqlDataAdapter
关联的所有命令必须将其
UpdatedRowSource
属性设置为
None
或
OutputParameters
。
否则将引发异常。

获取或设置一个值，该值启用或禁用批处理支持，并且指定可在一次批处理中执行的命令的数量。

使用 UpdateBatchSize 属性更新包含来自 DataSet 的更改的数据源。此操作可以减少到服务器的往返过程数，从而提高应用程序的性能。 使用 UpdateBatchSize 属性更新包含来自 DataSet 的更改的数据源。此操作可以减少到服务器的往返过程数，从而提高应用程序的性能。

执行极大规模的批处理会降低性能。因此，在实现应用程序前应进行测试以得到最佳的批大小。 执行极大规模的批处理会降低性能。因此，在实现应用程序前应进行测试以得到最佳的批大小。

如果该值设置为小于零的数，将引发 ArgumentOutOfRangeException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter ..::.UpdateCommand 属性

SqlDataAdapter
.
.
::
.
UpdateCommand 属性
SqlDataAdapter 类

获取或设置一个 Transact-SQL 语句或存储过程，用于更新数据源中的记录。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property UpdateCommand As SqlCommand
    Get
    Set
public SqlCommand UpdateCommand { get; set; }
public:
property SqlCommand^ UpdateCommand {
    SqlCommand^ get ();
    void set (SqlCommand^ value);
}
member UpdateCommand : SqlCommand with get, set

属性值

类型： System.Data.SqlClient SqlCommand
在 Update 过程中使用的 SqlCommand，用于在数据库中更新对应于 DataSet 中已修改行的记录。

在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 UpdateCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 UpdateCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 UpdateCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。 在 Update 过程中，如果未设置此属性而且 DataSet 中存在主键信息，那么在设置 SelectCommand 属性并使用 SqlCommandBuilder 的情况下，可以自动生成 UpdateCommand。然后，SqlCommandBuilder 将生成其他任何未设置的命令。此生成逻辑要求 DataSet 中存在键列信息。有关更多信息，请参见使用 CommandBuilder 生成命令 (ADO.NET)。

在将 UpdateCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。UpdateCommand 维护对以前创建的 SqlCommand 对象的引用。 在将 UpdateCommand 分配给以前创建的 SqlCommand 时，不克隆 SqlCommand。UpdateCommand 维护对以前创建的 SqlCommand 对象的引用。

说明 说明

如果执行此命令返回行，则更新的行可能会合并到 DataSet 中，具体取决于如何设置 SqlCommand 对象的 UpdatedRowSource 属性。

对于传播给 Update 上的数据源的每一列，应向 InsertCommand、UpdateCommand 或 DeleteCommand 添加一个参数。

该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。 该参数的 SourceColumn 属性将被设置为列的名称。这指示该参数值并非手动设置，而是获取自当前处理的行中的特定列。

下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。 下面的示例将创建一个 SqlDataAdapter，并设置 SelectCommand、InsertCommand、UpdateCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。

Public Function CreateCustomerAdapter( _
  ByVal connection As SqlConnection) As SqlDataAdapter

    Dim adapter As SqlDataAdapter = New SqlDataAdapter()

    ' Create the SelectCommand.
    Dim command As SqlCommand = New SqlCommand( _
        "SELECT * FROM Customers " & _
        "WHERE Country = @Country AND City = @City", connection)

    ' Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15)
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15)

    adapter.SelectCommand = command

    ' Create the InsertCommand.
    command = New SqlCommand( _
        "INSERT INTO Customers (CustomerID, CompanyName) " & _
        "VALUES (@CustomerID, @CompanyName)", connection)

    ' Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")

    adapter.InsertCommand = command

    ' Create the UpdateCommand.
    command = New SqlCommand( _
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " & _
        "WHERE CustomerID = @oldCustomerID", connection)

    ' Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName")
    Dim parameter As SqlParameter = command.Parameters.Add( _
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.UpdateCommand = command

    ' Create the DeleteCommand.
    command = New SqlCommand( _
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection)

    ' Add the parameters for the DeleteCommand.
    command.Parameters.Add( _
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID")
    parameter.SourceVersion = DataRowVersion.Original

    adapter.DeleteCommand = command

    Return adapter
End Function

public static SqlDataAdapter CreateCustomerAdapter(
    SqlConnection connection)
{
    SqlDataAdapter adapter = new SqlDataAdapter();

    // Create the SelectCommand.
    SqlCommand command = new SqlCommand("SELECT * FROM Customers " +
        "WHERE Country = @Country AND City = @City", connection);

    // Add the parameters for the SelectCommand.
    command.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
    command.Parameters.Add("@City", SqlDbType.NVarChar, 15);

    adapter.SelectCommand = command;

    // Create the InsertCommand.
    command = new SqlCommand(
        "INSERT INTO Customers (CustomerID, CompanyName) " +
        "VALUES (@CustomerID, @CompanyName)", connection);

    // Add the parameters for the InsertCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");

    adapter.InsertCommand = command;

    // Create the UpdateCommand.
    command = new SqlCommand(
        "UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
        "WHERE CustomerID = @oldCustomerID", connection);

    // Add the parameters for the UpdateCommand.
    command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
    SqlParameter parameter = command.Parameters.Add(
        "@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.UpdateCommand = command;

    // Create the DeleteCommand.
    command = new SqlCommand(
        "DELETE FROM Customers WHERE CustomerID = @CustomerID", connection);

    // Add the parameters for the DeleteCommand.
    parameter = command.Parameters.Add(
        "@CustomerID", SqlDbType.NChar, 5, "CustomerID");
    parameter.SourceVersion = DataRowVersion.Original;

    adapter.DeleteCommand = command;

    return adapter;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter 事件

SqlDataAdapter 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataAdapter 类

SqlDataAdapter 类型公开以下成员。

名称 说明
页首

参考

SqlDataAdapter 类
System.Data.SqlClient 命名空间


SqlDataAdapter ..::.RowUpdated 事件

SqlDataAdapter
.
.
::
.
RowUpdated 事件
SqlDataAdapter 类

在对数据源执行命令后的 Update 过程中发生。尝试进行更新，因此激发了该事件。 在对数据源执行命令后的 Update 过程中发生。尝试进行更新，因此激发了该事件。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Event RowUpdated As SqlRowUpdatedEventHandler
public event SqlRowUpdatedEventHandler RowUpdated
public:
 event SqlRowUpdatedEventHandler^ RowUpdated {
    void add (SqlRowUpdatedEventHandler^ value);
    void remove (SqlRowUpdatedEventHandler^ value);
}
member RowUpdated : IEvent<SqlRowUpdatedEventHandler,
    SqlRowUpdatedEventArgs>

当使用 Update 时，每一个更新的数据行都会发生两个事件。执行顺序如下： 当使用 Update 时，每一个更新的数据行都会发生两个事件。执行顺序如下：

  1. 将 DataRow 中的值移至参数值。

  2. 引发 OnRowUpdating 事件。

  3. 执行命令。

  4. 如果该命令设置为 FirstReturnedRecord，返回的第一项结果将放置在 DataRow 中。

  5. 如果存在输出参数，它们将被放在 DataRow 中。

  6. 引发 OnRowUpdated 事件。

  7. 调用 AcceptChanges。

下面的示例显示如何使用 RowUpdating 和 RowUpdated 事件。

RowUpdating 事件返回下面的输出：

event args: (command=System.Data.SqlClient.SqlCommand commandType=2 status=0)

RowUpdated 事件返回下面的输出：

event args: (command=System.Data.SqlClient.SqlCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)

    ' handler for RowUpdating event
    Private Shared Sub OnRowUpdating(sender As Object, e As SqlRowUpdatingEventArgs)
        PrintEventArgs(e)
    End Sub

    ' handler for RowUpdated event
    Private Shared Sub OnRowUpdated(sender As Object, e As SqlRowUpdatedEventArgs)
        PrintEventArgs(e)
    End Sub

    'Entry point which delegates to C-style main Private Function
    Public Overloads Shared Sub Main()
        System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs())
    End Sub

    Overloads Public Shared Function Main(args() As String) As Integer
        Const connectionString As String = _
            "Integrated Security=SSPI;database=Northwind;server=MSSQL1"
        Const queryString As String = "SELECT * FROMProducts"

        ' create DataAdapter
        Dim adapter As New SqlDataAdapter(queryString, connectionString)
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)

        ' Create and fill DataSet (select only first 5 rows)
        Dim dataSet As New DataSet()
        adapter.Fill(dataSet, 0, 5, "Table")

        ' Modify DataSet
        Dim table As DataTable = dataSet.Tables("Table")
        table.Rows(0)(1) = "new product"

        ' add handlers
        AddHandler adapter.RowUpdating, AddressOf OnRowUpdating
        AddHandler adapter.RowUpdated, AddressOf OnRowUpdated

        ' update, this operation fires two events
        '(RowUpdating/RowUpdated) per changed row
        adapter.Update(dataSet, "Table")

        ' remove handlers
        RemoveHandler adapter.RowUpdating, AddressOf OnRowUpdating
        RemoveHandler adapter.RowUpdated, AddressOf OnRowUpdated
        Return 0
    End Function

    Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatingEventArgs)
        Console.WriteLine("OnRowUpdating")
        Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
           " commandType=" & args.StatementType & " status=" & args.Status & ")")
    End Sub

    Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatedEventArgs)
        Console.WriteLine("OnRowUpdated")
        Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
           " commandType=" & args.StatementType & " recordsAffected=" & _
           args.RecordsAffected & " status=" & args.Status & ")")
    End Sub
End Class

// handler for RowUpdating event
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
    PrintEventArgs(e);
}

// handler for RowUpdated event
private static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
    PrintEventArgs(e);
}

public static int Main()
{
    const string connectionString =
              "Integrated Security=SSPI;database=Northwind;server=MSSQL1";
    const string queryString = "SELECT * FROMProducts";

    // create DataAdapter
    SqlDataAdapter adapter = new SqlDataAdapter(queryString, connectionString);
    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

    // Create and fill DataSet (select only first 5 rows)
    DataSet dataSet = new DataSet();
    adapter.Fill(dataSet, 0, 5, "Table");

    // Modify DataSet
    DataTable table = dataSet.Tables["Table"];
    table.Rows[0][1] = "new product";

    // add handlers
    adapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
    adapter.RowUpdated += new SqlRowUpdatedEventHandler( OnRowUpdated );

    // update, this operation fires two events
    // (RowUpdating/RowUpdated) per changed row
    adapter.Update(dataSet, "Table");

    // remove handlers
    adapter.RowUpdating -= new SqlRowUpdatingEventHandler( OnRowUpdating );
    adapter.RowUpdated -= new SqlRowUpdatedEventHandler( OnRowUpdated );
    return 0;
}

private static void PrintEventArgs(SqlRowUpdatingEventArgs args)
{
    Console.WriteLine("OnRowUpdating");
    Console.WriteLine("  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " status=" + args.Status + ")");
}

private static void PrintEventArgs(SqlRowUpdatedEventArgs args)
{
    Console.WriteLine("OnRowUpdated");
    Console.WriteLine( "  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " recordsAffected=" + args.RecordsAffected +
        " status=" + args.Status + ")");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataAdapter ..::.RowUpdating 事件

SqlDataAdapter
.
.
::
.
RowUpdating 事件
SqlDataAdapter 类

在对数据源执行命令前的 Update 过程中发生。尝试进行更新，因此激发了该事件。 在对数据源执行命令前的 Update 过程中发生。尝试进行更新，因此激发了该事件。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Event RowUpdating As SqlRowUpdatingEventHandler
public event SqlRowUpdatingEventHandler RowUpdating
public:
 event SqlRowUpdatingEventHandler^ RowUpdating {
    void add (SqlRowUpdatingEventHandler^ value);
    void remove (SqlRowUpdatingEventHandler^ value);
}
member RowUpdating : IEvent<SqlRowUpdatingEventHandler,
    SqlRowUpdatingEventArgs>

当使用 Update 时，每一个更新的数据行都会发生两个事件。执行顺序如下： 当使用 Update 时，每一个更新的数据行都会发生两个事件。执行顺序如下：

  1. 将 DataRow 中的值移至参数值。

  2. 引发 OnRowUpdating 事件。

  3. 执行命令。

  4. 如果该命令设置为 FirstReturnedRecord，返回的第一项结果将放置在 DataRow 中。

  5. 如果存在输出参数，它们将被放在 DataRow 中。

  6. 引发 OnRowUpdated 事件。

  7. 调用 AcceptChanges。

下面的示例显示如何使用 RowUpdating 和 RowUpdated 事件。

RowUpdating 事件返回下面的输出：

event args: (command=System.Data.SqlClient.SqlCommand commandType=2 status=0)

RowUpdated 事件返回下面的输出：

event args: (command=System.Data.SqlClient.SqlCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)

    ' handler for RowUpdating event
    Private Shared Sub OnRowUpdating(sender As Object, e As SqlRowUpdatingEventArgs)
        PrintEventArgs(e)
    End Sub

    ' handler for RowUpdated event
    Private Shared Sub OnRowUpdated(sender As Object, e As SqlRowUpdatedEventArgs)
        PrintEventArgs(e)
    End Sub

    'Entry point which delegates to C-style main Private Function
    Public Overloads Shared Sub Main()
        System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs())
    End Sub

    Overloads Public Shared Function Main(args() As String) As Integer
        Const connectionString As String = _
            "Integrated Security=SSPI;database=Northwind;server=MSSQL1"
        Const queryString As String = "SELECT * FROMProducts"

        ' create DataAdapter
        Dim adapter As New SqlDataAdapter(queryString, connectionString)
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)

        ' Create and fill DataSet (select only first 5 rows)
        Dim dataSet As New DataSet()
        adapter.Fill(dataSet, 0, 5, "Table")

        ' Modify DataSet
        Dim table As DataTable = dataSet.Tables("Table")
        table.Rows(0)(1) = "new product"

        ' add handlers
        AddHandler adapter.RowUpdating, AddressOf OnRowUpdating
        AddHandler adapter.RowUpdated, AddressOf OnRowUpdated

        ' update, this operation fires two events
        '(RowUpdating/RowUpdated) per changed row
        adapter.Update(dataSet, "Table")

        ' remove handlers
        RemoveHandler adapter.RowUpdating, AddressOf OnRowUpdating
        RemoveHandler adapter.RowUpdated, AddressOf OnRowUpdated
        Return 0
    End Function

    Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatingEventArgs)
        Console.WriteLine("OnRowUpdating")
        Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
           " commandType=" & args.StatementType & " status=" & args.Status & ")")
    End Sub

    Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatedEventArgs)
        Console.WriteLine("OnRowUpdated")
        Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
           " commandType=" & args.StatementType & " recordsAffected=" & _
           args.RecordsAffected & " status=" & args.Status & ")")
    End Sub
End Class

// handler for RowUpdating event
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
    PrintEventArgs(e);
}

// handler for RowUpdated event
private static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
    PrintEventArgs(e);
}

public static int Main()
{
    const string connectionString =
              "Integrated Security=SSPI;database=Northwind;server=MSSQL1";
    const string queryString = "SELECT * FROMProducts";

    // create DataAdapter
    SqlDataAdapter adapter = new SqlDataAdapter(queryString, connectionString);
    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

    // Create and fill DataSet (select only first 5 rows)
    DataSet dataSet = new DataSet();
    adapter.Fill(dataSet, 0, 5, "Table");

    // Modify DataSet
    DataTable table = dataSet.Tables["Table"];
    table.Rows[0][1] = "new product";

    // add handlers
    adapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
    adapter.RowUpdated += new SqlRowUpdatedEventHandler( OnRowUpdated );

    // update, this operation fires two events
    // (RowUpdating/RowUpdated) per changed row
    adapter.Update(dataSet, "Table");

    // remove handlers
    adapter.RowUpdating -= new SqlRowUpdatingEventHandler( OnRowUpdating );
    adapter.RowUpdated -= new SqlRowUpdatedEventHandler( OnRowUpdated );
    return 0;
}

private static void PrintEventArgs(SqlRowUpdatingEventArgs args)
{
    Console.WriteLine("OnRowUpdating");
    Console.WriteLine("  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " status=" + args.Status + ")");
}

private static void PrintEventArgs(SqlRowUpdatedEventArgs args)
{
    Console.WriteLine("OnRowUpdated");
    Console.WriteLine( "  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " recordsAffected=" + args.RecordsAffected +
        " status=" + args.Status + ")");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataAdapter 类
SqlDataAdapter 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
SQL Server 和 ADO.NET


SqlDataReader 类

SqlDataReader 类
成员

提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。 提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Class SqlDataReader _
    Inherits DbDataReader _
    Implements IDataReader, IDisposable, IDataRecord
public class SqlDataReader : DbDataReader,
    IDataReader, IDisposable, IDataRecord
public ref class SqlDataReader : public DbDataReader,
    IDataReader, IDisposable, IDataRecord
type SqlDataReader =
    class
        inherit DbDataReader
        interface IDataReader
        interface IDisposable
        interface IDataRecord
    end

若要创建 SqlDataReader，必须调用 SqlCommand 对象的 ExecuteReader 方法，而不要直接使用构造函数。

在使用 SqlDataReader 时，关联的 SqlConnection 正忙于为 SqlDataReader 服务，对 SqlConnection 无法执行任何其他操作，只能将其关闭。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。例如，在调用 Close 之前，无法检索输出参数。 在使用 SqlDataReader 时，关联的 SqlConnection 正忙于为 SqlDataReader 服务，对 SqlConnection 无法执行任何其他操作，只能将其关闭。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。例如，在调用 Close 之前，无法检索输出参数。 在使用 SqlDataReader 时，关联的 SqlConnection 正忙于为 SqlDataReader 服务，对 SqlConnection 无法执行任何其他操作，只能将其关闭。除非调用 SqlDataReader 的 Close 方法，否则会一直处于此状态。例如，在调用 Close 之前，无法检索输出参数。

SqlDataReader 的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是，确切的行为与执行时间有关。 SqlDataReader 的用户可能会看到在读取数据时另一进程或线程对结果集所做的更改。但是，确切的行为与执行时间有关。

当 SqlDataReader 关闭后，只能调用 IsClosed 和 RecordsAffected 属性。尽管当 SqlDataReader 存在时可以访问 RecordsAffected 属性，但是请始终在返回 RecordsAffected 的值之前调用 Close，以保证返回精确的值。 当 SqlDataReader 关闭后，只能调用 IsClosed 和 RecordsAffected 属性。尽管当 SqlDataReader 存在时可以访问 RecordsAffected 属性，但是请始终在返回 RecordsAffected 的值之前调用 Close，以保证返回精确的值。

说明 说明

为了获得最佳性能，SqlDataReader 会避免创建不必要的对象或复制不必要的数据。因此，对 GetValue 等方法的多次调用将返回对相同对象的引用。如果正在修改由 GetValue 等方法返回的对象的基础值，请使用警告。 为了获得最佳性能，SqlDataReader 会避免创建不必要的对象或复制不必要的数据。因此，对 GetValue 等方法的多次调用将返回对相同对象的引用。如果正在修改由 GetValue 等方法返回的对象的基础值，请使用警告。 为了获得最佳性能，SqlDataReader 会避免创建不必要的对象或复制不必要的数据。因此，对 GetValue 等方法的多次调用将返回对相同对象的引用。如果正在修改由 GetValue 等方法返回的对象的基础值，请使用警告。

下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。

Private Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call Read before accessing data.
        While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call Read before accessing data.
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlDataReaderSqlDataReader
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader 成员

SqlDataReader 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataReader 类

提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。 提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。

SqlDataReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlDataReader 类
System.Data.SqlClient 命名空间


SqlDataReader 方法

SqlDataReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataReader 类

SqlDataReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlDataReader 类
System.Data.SqlClient 命名空间


SqlDataReader ..::.Close 方法

SqlDataReader
.
.
::
.
Close 方法
SqlDataReader 类

关闭 SqlDataReader 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

实现

当使用 SqlDataReader 将关联的 SqlConnection 用于任何其他用途时，必须显式调用 Close 方法。

Close 方法填写输出参数的值、返回值和 RecordsAffected，从而增加了关闭用于处理大型或复杂查询的 SqlDataReader 所用的时间。如果返回值和查询影响的记录的数量不重要，则可以在调用 Close 方法前调用关联的 SqlCommand 对象的 Cancel 方法，从而减少关闭 SqlDataReader 所需的时间。 Close 方法填写输出参数的值、返回值和 RecordsAffected，从而增加了关闭用于处理大型或复杂查询的 SqlDataReader 所用的时间。如果返回值和查询影响的记录的数量不重要，则可以在调用 Close 方法前调用关联的 SqlCommand 对象的 Cancel 方法，从而减少关闭 SqlDataReader 所需的时间。

警告说明 警告

不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。 不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。 不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。 不要对 Connection、DataReader 或类的 Finalize 方法中的任何其他托管对象调用 Close 或 Dispose。在终结器中，应该仅释放类直接拥有的非托管资源。如果您的类不拥有任何非托管资源，则不要在类定义中包括 Finalize 方法。有关更多信息，请参见垃圾回收。

下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。

Private Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call Read before accessing data.
        While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call Read before accessing data.
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET
SQL Server 连接池 (ADO.NET)


SqlDataReader ..::.Dispose 方法

SqlDataReader
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataReader 类

释放 DbDataReader 使用的资源并调用 Close。

名称 说明
页首

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.GetBoolean 方法

SqlDataReader
.
.
::
.
GetBoolean 方法
SqlDataReader 类

获取指定列的布尔值形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetBoolean ( _
    i As Integer _
) As Boolean
public override bool GetBoolean(
    int i
)
public:
virtual bool GetBoolean(
    int i
) override
abstract GetBoolean :
        i:int -> bool
override GetBoolean :
        i:int -> bool

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Boolean
列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是布尔值，否则会生成异常。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetByte 方法

SqlDataReader
.
.
::
.
GetByte 方法
SqlDataReader 类

获取指定列的字节形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetByte ( _
    i As Integer _
) As Byte
public override byte GetByte(
    int i
)
public:
virtual unsigned char GetByte(
    int i
) override
abstract GetByte :
        i:int -> byte
override GetByte :
        i:int -> byte

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Byte
指定列的字节形式的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是一个字节。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetBytes 方法

SqlDataReader
.
.
::
.
GetBytes 方法
SqlDataReader 类

从指定的列偏移量将字节流读入缓冲区，并将其作为从给定的缓冲区偏移量开始的数组。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetBytes ( _
    i As Integer, _
    dataIndex As Long, _
    buffer As Byte(), _
    bufferIndex As Integer, _
    length As Integer _
) As Long
public override long GetBytes(
    int i,
    long dataIndex,
    byte[] buffer,
    int bufferIndex,
    int length
)
public:
virtual long long GetBytes(
    int i,
    long long dataIndex,
    array<unsigned char>^ buffer,
    int bufferIndex,
    int length
) override
abstract GetBytes :
        i:int *
        dataIndex:int64 *
        buffer:byte[] *
        bufferIndex:int *
        length:int -> int64
override GetBytes :
        i:int *
        dataIndex:int64 *
        buffer:byte[] *
        bufferIndex:int *
        length:int -> int64

参数

i
类型： System Int32
从零开始的列序号。
dataIndex
类型： System Int64
字段中的索引，从其开始读取操作。
buffer
类型：
array<
System Byte
>
[]
()
[]

要将字节流读入的缓冲区。
bufferIndex
类型： System Int32
buffer 中写入操作开始位置的索引。
length
类型： System Int32
要复制到缓冲区中的最大长度。

返回值

类型： System Int64
读取的实际字节数。

实现

GetBytes 返回字段中的可用字节数。在大多数情况下，这是字段的准确长度。但是，如果 GetBytes 已用于从字段中获取字节，则所返回的数字可能会小于该字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetBytes 返回字段中的可用字节数。在大多数情况下，这是字段的准确长度。但是，如果 GetBytes 已用于从字段中获取字节，则所返回的数字可能会小于该字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetBytes 返回字段中的可用字节数。在大多数情况下，这是字段的准确长度。但是，如果 GetBytes 已用于从字段中获取字节，则所返回的数字可能会小于该字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetBytes 返回字段中的可用字节数。在大多数情况下，这是字段的准确长度。但是，如果 GetBytes 已用于从字段中获取字节，则所返回的数字可能会小于该字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetBytes 返回字段中的可用字节数。在大多数情况下，这是字段的准确长度。但是，如果 GetBytes 已用于从字段中获取字节，则所返回的数字可能会小于该字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。

如果传递为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的缓冲区，则 GetBytes 以字节为单位返回整个字段的长度，而不是基于缓冲区偏移量参数的剩余大小。

不执行任何转换，因此所检索的数据必须已经是字节数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetChar 方法

SqlDataReader
.
.
::
.
GetChar 方法
SqlDataReader 类

获取指定列的单个字符串形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetChar ( _
    i As Integer _
) As Char
public override char GetChar(
    int i
)
public:
virtual wchar_t GetChar(
    int i
) override
abstract GetChar :
        i:int -> char
override GetChar :
        i:int -> char

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Char
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

对于 System.Data.SqlClient，不受支持。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.GetChars 方法

SqlDataReader
.
.
::
.
GetChars 方法
SqlDataReader 类

从指定的列偏移量将字符流作为数组从给定的缓冲区偏移量开始读入缓冲区。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetChars ( _
    i As Integer, _
    dataIndex As Long, _
    buffer As Char(), _
    bufferIndex As Integer, _
    length As Integer _
) As Long
public override long GetChars(
    int i,
    long dataIndex,
    char[] buffer,
    int bufferIndex,
    int length
)
public:
virtual long long GetChars(
    int i,
    long long dataIndex,
    array<wchar_t>^ buffer,
    int bufferIndex,
    int length
) override
abstract GetChars :
        i:int *
        dataIndex:int64 *
        buffer:char[] *
        bufferIndex:int *
        length:int -> int64
override GetChars :
        i:int *
        dataIndex:int64 *
        buffer:char[] *
        bufferIndex:int *
        length:int -> int64

参数

i
类型： System Int32
从零开始的列序号。
dataIndex
类型： System Int64
字段中的索引，从其开始读取操作。
buffer
类型：
array<
System Char
>
[]
()
[]

要将字节流读入的缓冲区。
bufferIndex
类型： System Int32
buffer 中写入操作开始位置的索引。
length
类型： System Int32
要复制到缓冲区中的最大长度。

返回值

类型： System Int64
读取的实际字符数。

实现

GetChars 返回字段中可用字符的数目。通常情况下，这是字段的准确长度。但是，如果 GetChars 已用于从字段中获取字符，则返回的数字可能会小于字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetChars 返回字段中可用字符的数目。通常情况下，这是字段的准确长度。但是，如果 GetChars 已用于从字段中获取字符，则返回的数字可能会小于字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetChars 返回字段中可用字符的数目。通常情况下，这是字段的准确长度。但是，如果 GetChars 已用于从字段中获取字符，则返回的数字可能会小于字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetChars 返回字段中可用字符的数目。通常情况下，这是字段的准确长度。但是，如果 GetChars 已用于从字段中获取字符，则返回的数字可能会小于字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。 GetChars 返回字段中可用字符的数目。通常情况下，这是字段的准确长度。但是，如果 GetChars 已用于从字段中获取字符，则返回的数字可能会小于字段的真实长度。例如，如果 SqlDataReader 正在将一个大型数据结构读入缓冲区，则可能出现这种情况。有关更多信息，请参见 CommandBehavior 的 SequentialAccess 设置。

读取的实际字符数可以小于请求的长度，如果已到达字段的结尾。如果传递为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的缓冲区，则 GetChars 以字符为单位返回整个字段的长度，而不是基于缓冲区偏移量参数的剩余大小。 读取的实际字符数可以小于请求的长度，如果已到达字段的结尾。如果传递为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的缓冲区，则 GetChars 以字符为单位返回整个字段的长度，而不是基于缓冲区偏移量参数的剩余大小。

未执行任何转换；因此所检索的数据必须已经是字符数组。 未执行任何转换；因此所检索的数据必须已经是字符数组。

说明 说明

当 dataIndex 为负数时，GetChars 方法返回 0。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetDataTypeName 方法

SqlDataReader
.
.
::
.
GetDataTypeName 方法
SqlDataReader 类

获取一个表示指定列的数据类型的字符串。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetDataTypeName ( _
    i As Integer _
) As String
public override string GetDataTypeName(
    int i
)
public:
virtual String^ GetDataTypeName(
    int i
) override
abstract GetDataTypeName :
        i:int -> string
override GetDataTypeName :
        i:int -> string

参数

i
类型： System Int32
要查找的列的从零开始的序号位置。

返回值

类型： System String
表示指定列的数据类型的字符串。

实现

返回后端数据类型的名称。

在 SQL Server 中，numeric 是 decimal 数据类型的同义词。因此，对于定义为 decimal 或 numeric 的列，GetDataTypeName 将返回“decimal”。 在 SQL Server 中，numeric 是 decimal 数据类型的同义词。因此，对于定义为 decimal 或 numeric 的列，GetDataTypeName 将返回“decimal”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.GetDateTime 方法

SqlDataReader
.
.
::
.
GetDateTime 方法
SqlDataReader 类

获取指定列的 DateTime 对象形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetDateTime ( _
    i As Integer _
) As DateTime
public override DateTime GetDateTime(
    int i
)
public:
virtual DateTime GetDateTime(
    int i
) override
abstract GetDateTime :
        i:int -> DateTime
override GetDateTime :
        i:int -> DateTime

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System DateTime
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 DateTime 对象。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetDateTimeOffset 方法

SqlDataReader
.
.
::
.
GetDateTimeOffset 方法
SqlDataReader 类

检索指定列的 DateTimeOffset 对象形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetDateTimeOffset ( _
    i As Integer _
) As DateTimeOffset
public virtual DateTimeOffset GetDateTimeOffset(
    int i
)
public:
virtual DateTimeOffset GetDateTimeOffset(
    int i
)
abstract GetDateTimeOffset :
        i:int -> DateTimeOffset
override GetDateTimeOffset :
        i:int -> DateTimeOffset

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System DateTimeOffset
指定列的值。
异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 DateTimeOffset 对象。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 2008 中的日期和时间数据 (ADO.NET)
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetDecimal 方法

SqlDataReader
.
.
::
.
GetDecimal 方法
SqlDataReader 类

获取指定列的 Decimal 对象形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetDecimal ( _
    i As Integer _
) As Decimal
public override decimal GetDecimal(
    int i
)
public:
virtual Decimal GetDecimal(
    int i
) override
abstract GetDecimal :
        i:int -> decimal
override GetDecimal :
        i:int -> decimal

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Decimal
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 Decimal 对象。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetDouble 方法

SqlDataReader
.
.
::
.
GetDouble 方法
SqlDataReader 类

获取指定列的双精度浮点数形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetDouble ( _
    i As Integer _
) As Double
public override double GetDouble(
    int i
)
public:
virtual double GetDouble(
    int i
) override
abstract GetDouble :
        i:int -> float
override GetDouble :
        i:int -> float

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Double
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换。因此，所检索的数据必须已经是双精度浮点数。 不执行任何转换。因此，所检索的数据必须已经是双精度浮点数。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetEnumerator 方法

SqlDataReader
.
.
::
.
GetEnumerator 方法
SqlDataReader 类

返回循环访问 SqlDataReader 的 IEnumerator。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
用于 SqlDataReader 的 IEnumerator。

实现

虽然可以使用此方法检索显式枚举数，但是在支持 foreach 构造的语言中，直接使用该循环构造循环访问数据读取器中的行将更加容易。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetFieldType 方法

SqlDataReader
.
.
::
.
GetFieldType 方法
SqlDataReader 类

获取是对象的数据类型的 Type。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetFieldType ( _
    i As Integer _
) As Type
public override Type GetFieldType(
    int i
)
public:
virtual Type^ GetFieldType(
    int i
) override
abstract GetFieldType :
        i:int -> Type
override GetFieldType :
        i:int -> Type

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Type
Type，它是对象的数据类型。在用户定义的类型 (UDT) 从数据库中返回的情况下，如果客户端上不存在该类型，则 GetFieldType 返回 null。 Type，它是对象的数据类型。在用户定义的类型 (UDT) 从数据库中返回的情况下，如果客户端上不存在该类型，则 GetFieldType 返回 null。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetFloat 方法

SqlDataReader
.
.
::
.
GetFloat 方法
SqlDataReader 类

获取指定列的单精度浮点数形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetFloat ( _
    i As Integer _
) As Single
public override float GetFloat(
    int i
)
public:
virtual float GetFloat(
    int i
) override
abstract GetFloat :
        i:int -> float32
override GetFloat :
        i:int -> float32

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Single
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换。因此，所检索的数据必须已经是单精度浮点数。 不执行任何转换。因此，所检索的数据必须已经是单精度浮点数。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetGuid 方法

SqlDataReader
.
.
::
.
GetGuid 方法
SqlDataReader 类

获取指定列的值作为全局唯一标识符 (GUID)。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetGuid ( _
    i As Integer _
) As Guid
public override Guid GetGuid(
    int i
)
public:
virtual Guid GetGuid(
    int i
) override
abstract GetGuid :
        i:int -> Guid
override GetGuid :
        i:int -> Guid

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Guid
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 GUID。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetInt16 方法

SqlDataReader
.
.
::
.
GetInt16 方法
SqlDataReader 类

获取指定列的 16 位有符号整数形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetInt16 ( _
    i As Integer _
) As Short
public override short GetInt16(
    int i
)
public:
virtual short GetInt16(
    int i
) override
abstract GetInt16 :
        i:int -> int16
override GetInt16 :
        i:int -> int16

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Int16
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 16 位有符号整数。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetInt32 方法

SqlDataReader
.
.
::
.
GetInt32 方法
SqlDataReader 类

获取指定列的 32 位有符号整数形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetInt32 ( _
    i As Integer _
) As Integer
public override int GetInt32(
    int i
)
public:
virtual int GetInt32(
    int i
) override
abstract GetInt32 :
        i:int -> int
override GetInt32 :
        i:int -> int

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Int32
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 32 位有符号整数。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetInt64 方法

SqlDataReader
.
.
::
.
GetInt64 方法
SqlDataReader 类

获取指定列的 64 位有符号整数形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetInt64 ( _
    i As Integer _
) As Long
public override long GetInt64(
    int i
)
public:
virtual long long GetInt64(
    int i
) override
abstract GetInt64 :
        i:int -> int64
override GetInt64 :
        i:int -> int64

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Int64
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 64 位有符号整数。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetName 方法

SqlDataReader
.
.
::
.
GetName 方法
SqlDataReader 类

获取指定列的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetName ( _
    i As Integer _
) As String
public override string GetName(
    int i
)
public:
virtual String^ GetName(
    int i
) override
abstract GetName :
        i:int -> string
override GetName :
        i:int -> string

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System String
指定列的名称。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetOrdinal 方法

SqlDataReader
.
.
::
.
GetOrdinal 方法
SqlDataReader 类

在给定列名称的情况下获取列序号。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetOrdinal ( _
    name As String _
) As Integer
public override int GetOrdinal(
    string name
)
public:
virtual int GetOrdinal(
    String^ name
) override
abstract GetOrdinal :
        name:string -> int
override GetOrdinal :
        name:string -> int

参数

name
类型： System String
列的名称。

返回值

类型： System Int32
从零开始的列序号。

实现

异常 | 条件
IndexOutOfRangeException | 指定的名称不是有效的列名称。

GetOrdinal 首先执行区分大小写的查找。如果失败，则进行另一次不区分大小写的搜索。如果找不到从零开始的列序号，该方法将引发 IndexOutOfRange 异常。 GetOrdinal 首先执行区分大小写的查找。如果失败，则进行另一次不区分大小写的搜索。如果找不到从零开始的列序号，该方法将引发 IndexOutOfRange 异常。 GetOrdinal 首先执行区分大小写的查找。如果失败，则进行另一次不区分大小写的搜索。如果找不到从零开始的列序号，该方法将引发 IndexOutOfRange 异常。

GetOrdinal 不区分假名宽度。

由于基于序号的查找比命名查找更为有效，因此在循环中调用 GetOrdinal 的效率较低。为了节省时间，可以调用一次 GetOrdinal，然后将结果分配给整数变量以便在循环中使用。 由于基于序号的查找比命名查找更为有效，因此在循环中调用 GetOrdinal 的效率较低。为了节省时间，可以调用一次 GetOrdinal，然后将结果分配给整数变量以便在循环中使用。

下面的示例说明如何使用 GetOrdinal 方法。

Private Sub ReadGetOrdinal(ByVal connectionString As String)
    Dim queryString As String = _
       "SELECT DISTINCT CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call GetOrdinal and assign value to variable.
        Dim customerID As Integer = reader.GetOrdinal("CustomerID")

        ' Use variable with GetString inside of loop.
        While reader.Read()
            Console.WriteLine("CustomerID={0}", reader.GetString(customerID))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub

private static void ReadGetOrdinal(string connectionString)
{
    string queryString = "SELECT DISTINCT CustomerID FROM dbo.Orders;";
    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call GetOrdinal and assign value to variable.
        int customerID = reader.GetOrdinal("CustomerID");

        // Use variable with GetString inside of loop.
        while (reader.Read())
        {
            Console.WriteLine("CustomerID={0}", reader.GetString(customerID));
        }

        // Call Close when done reading.
        reader.Close();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetProviderSpecificFieldType 方法

SqlDataReader
.
.
::
.
GetProviderSpecificFieldType 方法
SqlDataReader 类

获取一个 Object，它表示基础提供程序特定的字段类型。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetProviderSpecificFieldType ( _
    i As Integer _
) As Type
public override Type GetProviderSpecificFieldType(
    int i
)
public:
virtual Type^ GetProviderSpecificFieldType(
    int i
) override
abstract GetProviderSpecificFieldType :
        i:int -> Type
override GetProviderSpecificFieldType :
        i:int -> Type

参数

i
类型： System Int32
表示列序号的 Int32。

返回值

类型： System Type
获取一个 Object，它表示基础提供程序特定的字段类型。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetProviderSpecificValue 方法

SqlDataReader
.
.
::
.
GetProviderSpecificValue 方法
SqlDataReader 类

获取一个表示基础提供程序特定值的 Object。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetProviderSpecificValue ( _
    i As Integer _
) As Object
public override Object GetProviderSpecificValue(
    int i
)
public:
virtual Object^ GetProviderSpecificValue(
    int i
) override
abstract GetProviderSpecificValue :
        i:int -> Object
override GetProviderSpecificValue :
        i:int -> Object

参数

i
类型： System Int32
表示列序号的 Int32。

返回值

类型： System Object
一个 Object，它表示基础提供程序特定值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetProviderSpecificValues 方法

SqlDataReader
.
.
::
.
GetProviderSpecificValues 方法
SqlDataReader 类

获取表示基础提供程序特定值的对象的数组。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetProviderSpecificValues ( _
    values As Object() _
) As Integer
public override int GetProviderSpecificValues(
    Object[] values
)
public:
virtual int GetProviderSpecificValues(
    array<Object^>^ values
) override
abstract GetProviderSpecificValues :
        values:Object[] -> int
override GetProviderSpecificValues :
        values:Object[] -> int

参数

values
类型：
array<
System Object
>
[]
()
[]

要将列值复制到其中的 Object 数组。

返回值

类型： System Int32
对象数组，它表示基础提供程序特定的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSchemaTable 方法

SqlDataReader
.
.
::
.
GetSchemaTable 方法
SqlDataReader 类

返回一个 DataTable，它描述 SqlDataReader 的列元数据。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetSchemaTable As DataTable
public override DataTable GetSchemaTable()
public:
virtual DataTable^ GetSchemaTable() override
abstract GetSchemaTable : unit -> DataTable
override GetSchemaTable : unit -> DataTable

返回值

类型： System.Data DataTable
一个描述列元数据的 DataTable。

实现

异常 | 条件
InvalidOperationException | SqlDataReader 是关闭的。

对于 GetSchemaTable 方法，将按以下顺序返回关于每个列的元数据：

DataReader 列

说明

ColumnName

列的名称；它可能不唯一。如果无法确定该名称，则返回 null 值。此名称始终反映最近对当前视图或命令文本中的列进行的重命名。 列的名称；它可能不唯一。如果无法确定该名称，则返回 null 值。此名称始终反映最近对当前视图或命令文本中的列进行的重命名。 列的名称；它可能不唯一。如果无法确定该名称，则返回 null 值。此名称始终反映最近对当前视图或命令文本中的列进行的重命名。

ColumnOrdinal

列的序号。它对于行的书签列（如果有的话）为零。其他列从一开始编号。该列不能包含 null 值。 列的序号。它对于行的书签列（如果有的话）为零。其他列从一开始编号。该列不能包含 null 值。 列的序号。它对于行的书签列（如果有的话）为零。其他列从一开始编号。该列不能包含 null 值。 列的序号。它对于行的书签列（如果有的话）为零。其他列从一开始编号。该列不能包含 null 值。

ColumnSize

列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。 列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 nvarchar(MAX)、varchar(MAX) 和 varbinary(MAX) 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 Type System Version 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 nvarchar ，MAX 数据类型返回正常的 4k，而对于 varchar，则为 8000。有关更多信息，请参见“SQL Server 联机丛书”中的“Transact-SQL 参考”。

NumericPrecision

如果 ProviderType 是数值数据类型，则它是列的最大精度。精度取决于列的定义。如果 ProviderType 不是数值数据类型，则它为 null 值。 如果 ProviderType 是数值数据类型，则它是列的最大精度。精度取决于列的定义。如果 ProviderType 不是数值数据类型，则它为 null 值。 如果 ProviderType 是数值数据类型，则它是列的最大精度。精度取决于列的定义。如果 ProviderType 不是数值数据类型，则它为 null 值。

NumericScale

如果 ProviderType 是 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC，则为小数点右侧的位数。否则，它为 null 值。 如果 ProviderType 是 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC，则为小数点右侧的位数。否则，它为 null 值。

IsUnique

只有对于 timestamp 列才为 true，而对于其他所有列，为 false。

IsKey

true：此列是行集合中合起来可唯一地标识该行的一组列中的一列。IsKey 设置为 true 的一组列必须唯一地标识行集合中的一行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。 true：此列是行集合中合起来可唯一地标识该行的一组列中的一列。IsKey 设置为 true 的一组列必须唯一地标识行集合中的一行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。 true：此列是行集合中合起来可唯一地标识该行的一组列中的一列。IsKey 设置为 true 的一组列必须唯一地标识行集合中的一行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。 true：此列是行集合中合起来可唯一地标识该行的一组列中的一列。IsKey 设置为 true 的一组列必须唯一地标识行集合中的一行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。

false：唯一地标识该行时不需要此列。

BaseServerName

SqlDataReader 使用的 Microsoft SQL Server 实例的名称。

BaseCatalogName

包含列的数据存储区中的目录的名称。如果不能确定基目录名称，则为 NULL。该列的默认值为 null 值。 包含列的数据存储区中的目录的名称。如果不能确定基目录名称，则为 NULL。该列的默认值为 null 值。 包含列的数据存储区中的目录的名称。如果不能确定基目录名称，则为 NULL。该列的默认值为 null 值。

BaseColumnName

数据存储区中列的名称。如果使用别名，它可能不同于在 ColumnName 列中返回的列名称。如果无法确定基列名称，或者如果行集合列从数据存储区中的列导出但不等于该列，则为 null 值。该列的默认值为 null 值。 数据存储区中列的名称。如果使用别名，它可能不同于在 ColumnName 列中返回的列名称。如果无法确定基列名称，或者如果行集合列从数据存储区中的列导出但不等于该列，则为 null 值。该列的默认值为 null 值。 数据存储区中列的名称。如果使用别名，它可能不同于在 ColumnName 列中返回的列名称。如果无法确定基列名称，或者如果行集合列从数据存储区中的列导出但不等于该列，则为 null 值。该列的默认值为 null 值。 数据存储区中列的名称。如果使用别名，它可能不同于在 ColumnName 列中返回的列名称。如果无法确定基列名称，或者如果行集合列从数据存储区中的列导出但不等于该列，则为 null 值。该列的默认值为 null 值。

BaseSchemaName

包含列的数据存储区中的架构的名称。如果无法确定基架构名称，则为 null 值。该列的默认值为 null 值。 包含列的数据存储区中的架构的名称。如果无法确定基架构名称，则为 null 值。该列的默认值为 null 值。 包含列的数据存储区中的架构的名称。如果无法确定基架构名称，则为 null 值。该列的默认值为 null 值。

BaseTableName

包含列的数据存储区中的表或视图的名称。如果无法确定基表名称，则为 null 值。该列的默认值为 null 值。 包含列的数据存储区中的表或视图的名称。如果无法确定基表名称，则为 null 值。该列的默认值为 null 值。 包含列的数据存储区中的表或视图的名称。如果无法确定基表名称，则为 null 值。该列的默认值为 null 值。

DataType

映射到列的 .NET Framework 类型。

AllowDBNull

如果使用者可以将该列设置为 null 值，或者如果提供程序不能确定使用者是否可以将该列设置为 null 值，则设置该值。否则，不设置该值。即使列无法设置为 null 值，它仍可能包含 null 值。 如果使用者可以将该列设置为 null 值，或者如果提供程序不能确定使用者是否可以将该列设置为 null 值，则设置该值。否则，不设置该值。即使列无法设置为 null 值，它仍可能包含 null 值。 如果使用者可以将该列设置为 null 值，或者如果提供程序不能确定使用者是否可以将该列设置为 null 值，则设置该值。否则，不设置该值。即使列无法设置为 null 值，它仍可能包含 null 值。

ProviderType

列的数据类型的指示符。如果不同行的列数据类型不同，则它必须为 Object。该列不能包含 null 值。 列的数据类型的指示符。如果不同行的列数据类型不同，则它必须为 Object。该列不能包含 null 值。 列的数据类型的指示符。如果不同行的列数据类型不同，则它必须为 Object。该列不能包含 null 值。

IsAliased

如果列名称为别名，则为 true；否则为 false。

IsExpression

如果此列为表达式，则为 true；否则为 false。

IsIdentity

如果此列为标识列，则为 true；否则为 false。

IsAutoIncrement

true：该列以固定的增量向新行赋值。

false：该列不以固定的增量向新行赋值。该列的默认值为 false。 false：该列不以固定的增量向新行赋值。该列的默认值为 false。

IsRowVersion

如果列包含无法写入的不变的行标识符，并且除了标识行外没有其他有意义的值，则设置该值。

IsHidden

如果列是隐藏的，则为 true；否则为 false。

IsLong

如果列包含二进制长对象 (BLOB)（它包含非常长的数据），则设置该值。非常长的数据的定义针对于提供程序。 如果列包含二进制长对象 (BLOB)（它包含非常长的数据），则设置该值。非常长的数据的定义针对于提供程序。

IsReadOnly

如果不能修改该列，则为 true；否则为 false。

ProviderSpecificDataType

根据连接字符串中的 Type System Version 关键字，返回列的提供程序特定的数据类型。

DataTypeName

返回表示指定列的数据类型的字符串。

XmlSchemaCollectionDatabase

此 XML 实例的架构集合所在的数据库的名称（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也为 null，这时 XmlSchemaCollectionName 和 XmlSchemaCollectionOwningSchema 列也为 null。 此 XML 实例的架构集合所在的数据库的名称（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也为 null，这时 XmlSchemaCollectionName 和 XmlSchemaCollectionOwningSchema 列也为 null。 此 XML 实例的架构集合所在的数据库的名称（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也为 null，这时 XmlSchemaCollectionName 和 XmlSchemaCollectionOwningSchema 列也为 null。

XmlSchemaCollectionOwningSchema

此 XML 实例的架构集合所在的所属关系架构（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也为 null，这时 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 列也为 null。 此 XML 实例的架构集合所在的所属关系架构（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也为 null，这时 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 列也为 null。 此 XML 实例的架构集合所在的所属关系架构（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也为 null，这时 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 列也为 null。

XmlSchemaCollectionName

此 XML 实例的架构集合的名称（如果该行包含有关 XML 列的信息）。如果没有关联的架构集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果此值为 null，则 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionOwningSchema 列也为 null。 此 XML 实例的架构集合的名称（如果该行包含有关 XML 列的信息）。如果没有关联的架构集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果此值为 null，则 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionOwningSchema 列也为 null。 此 XML 实例的架构集合的名称（如果该行包含有关 XML 列的信息）。如果没有关联的架构集合，则此值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 Nothing）。如果此值为 null，则 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionOwningSchema 列也为 null。
说明 说明

若要确保元数据列返回正确的信息，必须调用 ExecuteReader，并将 behavior 参数设置为 KeyInfo。否则，架构中的一些列可能返回默认的、 null 或不正确的数据。 若要确保元数据列返回正确的信息，必须调用 ExecuteReader，并将 behavior 参数设置为 KeyInfo。否则，架构中的一些列可能返回默认的、 null 或不正确的数据。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.GetSqlBinary 方法

SqlDataReader
.
.
::
.
GetSqlBinary 方法
SqlDataReader 类

获取指定列的 SqlBinary 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlBinary ( _
    i As Integer _
) As SqlBinary
public virtual SqlBinary GetSqlBinary(
    int i
)
public:
virtual SqlBinary GetSqlBinary(
    int i
)
abstract GetSqlBinary :
        i:int -> SqlBinary
override GetSqlBinary :
        i:int -> SqlBinary

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlBinary
SqlBinary。

不执行任何转换，因此所检索的数据必须已经是二进制结构，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlBoolean 方法

SqlDataReader
.
.
::
.
GetSqlBoolean 方法
SqlDataReader 类

获取指定列的 SqlBoolean 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlBoolean ( _
    i As Integer _
) As SqlBoolean
public virtual SqlBoolean GetSqlBoolean(
    int i
)
public:
virtual SqlBoolean GetSqlBoolean(
    int i
)
abstract GetSqlBoolean :
        i:int -> SqlBoolean
override GetSqlBoolean :
        i:int -> SqlBoolean

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlBoolean
列的值。

不执行任何转换，因此所检索的数据必须已经是布尔值，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlByte 方法

SqlDataReader
.
.
::
.
GetSqlByte 方法
SqlDataReader 类

获取指定列的 SqlByte 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlByte ( _
    i As Integer _
) As SqlByte
public virtual SqlByte GetSqlByte(
    int i
)
public:
virtual SqlByte GetSqlByte(
    int i
)
abstract GetSqlByte :
        i:int -> SqlByte
override GetSqlByte :
        i:int -> SqlByte

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlByte
SqlByte。

不执行任何转换，因此所检索的数据必须已经是一个字节，否则会产生异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlBytes 方法

SqlDataReader
.
.
::
.
GetSqlBytes 方法
SqlDataReader 类

获取指定列的 SqlBytes 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlBytes ( _
    i As Integer _
) As SqlBytes
public virtual SqlBytes GetSqlBytes(
    int i
)
public:
virtual SqlBytes^ GetSqlBytes(
    int i
)
abstract GetSqlBytes :
        i:int -> SqlBytes
override GetSqlBytes :
        i:int -> SqlBytes

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlBytes
SqlBytes。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlChars 方法

SqlDataReader
.
.
::
.
GetSqlChars 方法
SqlDataReader 类

获取指定列的 SqlChars 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlChars ( _
    i As Integer _
) As SqlChars
public virtual SqlChars GetSqlChars(
    int i
)
public:
virtual SqlChars^ GetSqlChars(
    int i
)
abstract GetSqlChars :
        i:int -> SqlChars
override GetSqlChars :
        i:int -> SqlChars

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlChars
SqlChars。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlDateTime 方法

SqlDataReader
.
.
::
.
GetSqlDateTime 方法
SqlDataReader 类

获取指定列的 SqlDateTime 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlDateTime ( _
    i As Integer _
) As SqlDateTime
public virtual SqlDateTime GetSqlDateTime(
    int i
)
public:
virtual SqlDateTime GetSqlDateTime(
    int i
)
abstract GetSqlDateTime :
        i:int -> SqlDateTime
override GetSqlDateTime :
        i:int -> SqlDateTime

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlDateTime
SqlDateTime。

不执行任何转换，因此所检索的数据必须已经是一个日期/时间值，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlDecimal 方法

SqlDataReader
.
.
::
.
GetSqlDecimal 方法
SqlDataReader 类

获取指定列的 SqlDecimal 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlDecimal ( _
    i As Integer _
) As SqlDecimal
public virtual SqlDecimal GetSqlDecimal(
    int i
)
public:
virtual SqlDecimal GetSqlDecimal(
    int i
)
abstract GetSqlDecimal :
        i:int -> SqlDecimal
override GetSqlDecimal :
        i:int -> SqlDecimal

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlDecimal
SqlDecimal。

不执行任何转换，因此所检索的数据必须已经是十进制值，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlDouble 方法

SqlDataReader
.
.
::
.
GetSqlDouble 方法
SqlDataReader 类

获取指定列的 SqlDouble 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlDouble ( _
    i As Integer _
) As SqlDouble
public virtual SqlDouble GetSqlDouble(
    int i
)
public:
virtual SqlDouble GetSqlDouble(
    int i
)
abstract GetSqlDouble :
        i:int -> SqlDouble
override GetSqlDouble :
        i:int -> SqlDouble

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlDouble
SqlDouble。

不执行任何转换，因此所检索的数据必须已经是双精度浮点数字，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlGuid 方法

SqlDataReader
.
.
::
.
GetSqlGuid 方法
SqlDataReader 类

获取指定列的 SqlGuid 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlGuid ( _
    i As Integer _
) As SqlGuid
public virtual SqlGuid GetSqlGuid(
    int i
)
public:
virtual SqlGuid GetSqlGuid(
    int i
)
abstract GetSqlGuid :
        i:int -> SqlGuid
override GetSqlGuid :
        i:int -> SqlGuid

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlGuid
SqlGuid。

不执行任何转换，因此所检索的数据必须已经是 GUID，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlInt16 方法

SqlDataReader
.
.
::
.
GetSqlInt16 方法
SqlDataReader 类

获取指定列的 SqlInt16 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlInt16 ( _
    i As Integer _
) As SqlInt16
public virtual SqlInt16 GetSqlInt16(
    int i
)
public:
virtual SqlInt16 GetSqlInt16(
    int i
)
abstract GetSqlInt16 :
        i:int -> SqlInt16
override GetSqlInt16 :
        i:int -> SqlInt16

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlInt16
SqlInt16。

不执行任何转换，因此所检索的数据必须已经是 16 位有符号整数，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlInt32 方法

SqlDataReader
.
.
::
.
GetSqlInt32 方法
SqlDataReader 类

获取指定列的 SqlInt32 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlInt32 ( _
    i As Integer _
) As SqlInt32
public virtual SqlInt32 GetSqlInt32(
    int i
)
public:
virtual SqlInt32 GetSqlInt32(
    int i
)
abstract GetSqlInt32 :
        i:int -> SqlInt32
override GetSqlInt32 :
        i:int -> SqlInt32

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlInt32
SqlInt32。

不执行任何转换，因此所检索的数据必须已经是 32 位有符号整数，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlInt64 方法

SqlDataReader
.
.
::
.
GetSqlInt64 方法
SqlDataReader 类

获取指定列的 SqlInt64 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlInt64 ( _
    i As Integer _
) As SqlInt64
public virtual SqlInt64 GetSqlInt64(
    int i
)
public:
virtual SqlInt64 GetSqlInt64(
    int i
)
abstract GetSqlInt64 :
        i:int -> SqlInt64
override GetSqlInt64 :
        i:int -> SqlInt64

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlInt64
SqlInt64。

不执行任何转换，因此所检索的数据必须已经是 64 位有符号整数，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlMoney 方法

SqlDataReader
.
.
::
.
GetSqlMoney 方法
SqlDataReader 类

获取指定列的 SqlMoney 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlMoney ( _
    i As Integer _
) As SqlMoney
public virtual SqlMoney GetSqlMoney(
    int i
)
public:
virtual SqlMoney GetSqlMoney(
    int i
)
abstract GetSqlMoney :
        i:int -> SqlMoney
override GetSqlMoney :
        i:int -> SqlMoney

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlMoney
SqlMoney。

不执行任何转换，因此所检索的数据必须已经是十进制值，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlSingle 方法

SqlDataReader
.
.
::
.
GetSqlSingle 方法
SqlDataReader 类

获取指定列的 SqlSingle 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlSingle ( _
    i As Integer _
) As SqlSingle
public virtual SqlSingle GetSqlSingle(
    int i
)
public:
virtual SqlSingle GetSqlSingle(
    int i
)
abstract GetSqlSingle :
        i:int -> SqlSingle
override GetSqlSingle :
        i:int -> SqlSingle

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlSingle
SqlSingle。

不执行任何转换，因此所检索的数据必须已经是单精度浮点数字，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlString 方法

SqlDataReader
.
.
::
.
GetSqlString 方法
SqlDataReader 类

获取指定列的 SqlString 形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlString ( _
    i As Integer _
) As SqlString
public virtual SqlString GetSqlString(
    int i
)
public:
virtual SqlString GetSqlString(
    int i
)
abstract GetSqlString :
        i:int -> SqlString
override GetSqlString :
        i:int -> SqlString

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlString
SqlString。

不执行任何转换，因此所检索的数据必须已经是字符串，否则会生成异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlValue 方法

SqlDataReader
.
.
::
.
GetSqlValue 方法
SqlDataReader 类

返回指定列中 SQL Server 类型的数据值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlValue ( _
    i As Integer _
) As Object
public virtual Object GetSqlValue(
    int i
)
public:
virtual Object^ GetSqlValue(
    int i
)
abstract GetSqlValue :
        i:int -> Object
override GetSqlValue :
        i:int -> Object

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Object
表示为 SqlDbType 的列值。

GetSqlValue 使用本机 SQL Server 类型返回数据。若要检索使用 .NET Framework 类型的数据，请参见 GetValue。 GetSqlValue 使用本机 SQL Server 类型返回数据。若要检索使用 .NET Framework 类型的数据，请参见 GetValue。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlValues 方法

SqlDataReader
.
.
::
.
GetSqlValues 方法
SqlDataReader 类

填充包含记录中所有列的值的 Object 数组，这些值表示为 SQL Server 类型。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlValues ( _
    values As Object() _
) As Integer
public virtual int GetSqlValues(
    Object[] values
)
public:
virtual int GetSqlValues(
    array<Object^>^ values
)
abstract GetSqlValues :
        values:Object[] -> int
override GetSqlValues :
        values:Object[] -> int

参数

values
类型：
array<
System Object
>
[]
()
[]

要将值复制到其中的 Object 数组。这些列值表示为 SQL Server 类型。 要将值复制到其中的 Object 数组。这些列值表示为 SQL Server 类型。

返回值

类型： System Int32
表示复制的列数的整数。
异常 | 条件
ArgumentNullException | values 为 null。

使用 SQL 类型系统（而不是 CLR 类型系统）在一个调用中返回记录中所有列的值。Object 数组的长度不需要与记录中的列数相匹配。您可以传递所含列数少于记录中所含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中，从序号 0 的列开始。还可以传递其长度大于结果行中所包含列数的 Object 数组。其他任何列保留不动。 使用 SQL 类型系统（而不是 CLR 类型系统）在一个调用中返回记录中所有列的值。Object 数组的长度不需要与记录中的列数相匹配。您可以传递所含列数少于记录中所含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中，从序号 0 的列开始。还可以传递其长度大于结果行中所包含列数的 Object 数组。其他任何列保留不动。 使用 SQL 类型系统（而不是 CLR 类型系统）在一个调用中返回记录中所有列的值。Object 数组的长度不需要与记录中的列数相匹配。您可以传递所含列数少于记录中所含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中，从序号 0 的列开始。还可以传递其长度大于结果行中所包含列数的 Object 数组。其他任何列保留不动。 使用 SQL 类型系统（而不是 CLR 类型系统）在一个调用中返回记录中所有列的值。Object 数组的长度不需要与记录中的列数相匹配。您可以传递所含列数少于记录中所含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中，从序号 0 的列开始。还可以传递其长度大于结果行中所包含列数的 Object 数组。其他任何列保留不动。 使用 SQL 类型系统（而不是 CLR 类型系统）在一个调用中返回记录中所有列的值。Object 数组的长度不需要与记录中的列数相匹配。您可以传递所含列数少于记录中所含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中，从序号 0 的列开始。还可以传递其长度大于结果行中所包含列数的 Object 数组。其他任何列保留不动。 使用 SQL 类型系统（而不是 CLR 类型系统）在一个调用中返回记录中所有列的值。Object 数组的长度不需要与记录中的列数相匹配。您可以传递所含列数少于记录中所含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中，从序号 0 的列开始。还可以传递其长度大于结果行中所包含列数的 Object 数组。其他任何列保留不动。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetSqlXml 方法

SqlDataReader
.
.
::
.
GetSqlXml 方法
SqlDataReader 类

获取指定列的 XML 值形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetSqlXml ( _
    i As Integer _
) As SqlXml
public virtual SqlXml GetSqlXml(
    int i
)
public:
virtual SqlXml^ GetSqlXml(
    int i
)
abstract GetSqlXml :
        i:int -> SqlXml
override GetSqlXml :
        i:int -> SqlXml

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System.Data.SqlTypes SqlXml
包含相应字段中存储的 XML 的 SqlXml 值。
异常 | 条件
ArgumentOutOfRangeException | 传递的索引在 0 至 FieldCount -1 的范围之外。
InvalidOperationException | 已尝试读取或访问关闭的 SqlDataReader 中的列。
InvalidCastException | 检索的数据与 SqlXml 类型不兼容。

不执行任何转换，因此所检索的数据必须已经是 XML 值。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

在 ADO.NET 中检索和修改数据
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetString 方法

SqlDataReader
.
.
::
.
GetString 方法
SqlDataReader 类

获取指定列的字符串形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetString ( _
    i As Integer _
) As String
public override string GetString(
    int i
)
public:
virtual String^ GetString(
    int i
) override
abstract GetString :
        i:int -> string
override GetString :
        i:int -> string

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System String
指定列的值。

实现

异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是字符串。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetTimeSpan 方法

SqlDataReader
.
.
::
.
GetTimeSpan 方法
SqlDataReader 类

检索指定列的 TimeSpan 对象形式的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overridable Function GetTimeSpan ( _
    i As Integer _
) As TimeSpan
public virtual TimeSpan GetTimeSpan(
    int i
)
public:
virtual TimeSpan GetTimeSpan(
    int i
)
abstract GetTimeSpan :
        i:int -> TimeSpan
override GetTimeSpan :
        i:int -> TimeSpan

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System TimeSpan
指定列的值。
异常 | 条件
InvalidCastException | 指定的强制转换无效。

不执行任何转换，因此所检索的数据必须已经是 TimeSpan 对象。

调用 IsDBNull 以便在调用此方法之前检查 null 值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 2008 中的日期和时间数据 (ADO.NET)
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetValue 方法

SqlDataReader
.
.
::
.
GetValue 方法
SqlDataReader 类

获取以本机格式表示的指定列的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetValue ( _
    i As Integer _
) As Object
public override Object GetValue(
    int i
)
public:
virtual Object^ GetValue(
    int i
) override
abstract GetValue :
        i:int -> Object
override GetValue :
        i:int -> Object

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Object
对于 null 数据库列，此方法返回 DBNull。

实现

GetValue 使用 .NET Framework 类型返回数据。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.GetValues 方法

SqlDataReader
.
.
::
.
GetValues 方法
SqlDataReader 类

使用当前行的列值来填充对象数组。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetValues ( _
    values As Object() _
) As Integer
public override int GetValues(
    Object[] values
)
public:
virtual int GetValues(
    array<Object^>^ values
) override
abstract GetValues :
        values:Object[] -> int
override GetValues :
        values:Object[] -> int

参数

values
类型：
array<
System Object
>
[]
()
[]

要将特性列复制到其中的 Object 数组。

返回值

类型： System Int32
数组中 Object 的实例的数目。

实现

对于大多数应用程序，此方法提供了一种高效的方法，它检索所有列，而不是分别检索每一列。

可以传递一个包含列数少于结果行中包含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中。还可以传递其长度大于结果行中所包含列数的 Object 数组。 可以传递一个包含列数少于结果行中包含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中。还可以传递其长度大于结果行中所包含列数的 Object 数组。 可以传递一个包含列数少于结果行中包含列数的 Object 数组。只有 Object 数组包含的数据量才会复制到数组中。还可以传递其长度大于结果行中所包含列数的 Object 数组。

此方法对于 null 数据库列返回 DBNull。

下面的示例演示如何使用大小正确的数组读取所提供的 SqlDataReader 中当前行的所有值。此外，该示例还演示如何使用大小固定（可以小于或大于可用的列数）的数组。 下面的示例演示如何使用大小正确的数组读取所提供的 SqlDataReader 中当前行的所有值。此外，该示例还演示如何使用大小固定（可以小于或大于可用的列数）的数组。

Private Sub TestGetValues(ByVal reader As SqlDataReader)

    ' Given a SqlDataReader, use the GetValues
    ' method to retrieve a full row of data.

    ' Test the GetValues method, passing in an array large
    ' enough for all the columns.
    Dim values(reader.FieldCount - 1) As Object
    Dim fieldCount As Integer = reader.GetValues(values)
    Console.WriteLine("reader.GetValues retrieved {0} columns.", _
         fieldCount)
    For i As Integer = 0 To fieldCount - 1
        Console.WriteLine(values(i))
    Next

    Console.WriteLine()

    ' Now repeat, using an array that may contain a different
    ' number of columns than the original data. This should work correctly,
    ' whether the size of the array is larger or smaller than
    ' the number of columns.

    ' Attempt to retrieve three columns of data.
    ReDim values(2)
    fieldCount = reader.GetValues(values)
    Console.WriteLine("reader.GetValues retrieved {0} columns.", _
    fieldCount)
    For i As Integer = 0 To fieldCount - 1
        Console.WriteLine(values(i))
    Next
End Sub

private static void TestGetValues(SqlDataReader reader)
{
    // Given a SqlDataReader, use the GetValues
    // method to retrieve a full row of data.
    // Test the GetValues method, passing in an array large
    // enough for all the columns.
    Object[] values = new Object[reader.FieldCount];
    int fieldCount = reader.GetValues(values);

    Console.WriteLine("reader.GetValues retrieved {0} columns.",
        fieldCount);
    for (int i = 0; i < fieldCount; i++)
        Console.WriteLine(values[i]);

    Console.WriteLine();

    // Now repeat, using an array that may contain a different
    // number of columns than the original data. This should work correctly,
    // whether the size of the array is larger or smaller than
    // the number of columns.

    // Attempt to retrieve three columns of data.
    values = new Object[3];
    fieldCount = reader.GetValues(values);
    Console.WriteLine("reader.GetValues retrieved {0} columns.",
        fieldCount);
    for (int i = 0; i < fieldCount; i++)
        Console.WriteLine(values[i]);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.IDataRecord ..::.GetData 方法

SqlDataReader
.
.
::
.
IDataRecord
.
.
::
.
GetData 方法
SqlDataReader 类

返回指定的列序号的 IDataReader。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Function GetData ( _
    i As Integer _
) As IDataReader Implements IDataRecord.GetData
IDataReader IDataRecord.GetData(
    int i
)
private:
virtual IDataReader^ GetData(
    int i
) sealed = IDataRecord::GetData
private abstract GetData :
        i:int -> IDataReader
private override GetData :
        i:int -> IDataReader

参数

i
类型： System Int32
列序号。

返回值

类型： System.Data IDataReader
指定列序号的 IDataReader 实例。

实现

此成员是显式的接口成员实现。它只能在 SqlDataReader 实例被强制转换为 IDataRecord 接口时使用。 此成员是显式的接口成员实现。它只能在 SqlDataReader 实例被强制转换为 IDataRecord 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.IsCommandBehavior 方法

SqlDataReader
.
.
::
.
IsCommandBehavior 方法
SqlDataReader 类

确定指定的 CommandBehavior 是否与 SqlDataReader 的对应项匹配。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Protected Function IsCommandBehavior ( _
    condition As CommandBehavior _
) As Boolean
protected bool IsCommandBehavior(
    CommandBehavior condition
)
protected:
bool IsCommandBehavior(
    CommandBehavior condition
)
member IsCommandBehavior :
        condition:CommandBehavior -> bool

参数

condition
类型： System.Data CommandBehavior
一个 CommandBehavior 枚举。

返回值

类型： System Boolean
如果指定的 CommandBehavior 为 true，则为 true；否则为 false。

该成员支持 .NET Framework 结构，不应从代码直接使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.IsDBNull 方法

SqlDataReader
.
.
::
.
IsDBNull 方法
SqlDataReader 类

获取一个值，用于指示列中是否包含不存在的或缺少的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function IsDBNull ( _
    i As Integer _
) As Boolean
public override bool IsDBNull(
    int i
)
public:
virtual bool IsDBNull(
    int i
) override
abstract IsDBNull :
        i:int -> bool
override IsDBNull :
        i:int -> bool

参数

i
类型： System Int32
从零开始的列序号。

返回值

类型： System Boolean
如果指定的列值与 DBNull 等效，则为 true；否则为 false。

实现

在调用类型化 get 方法（例如 GetByte、GetChar 等）前调用此方法来检查 null 列值，以避免引发错误。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.MemberwiseClone 方法

SqlDataReader
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataReader 类

名称 说明
页首

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.NextResult 方法

SqlDataReader
.
.
::
.
NextResult 方法
SqlDataReader 类

当读取批处理 Transact-SQL 语句的结果时，使数据读取器前进到下一个结果。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function NextResult As Boolean
public override bool NextResult()
public:
virtual bool NextResult() override
abstract NextResult : unit -> bool
override NextResult : unit -> bool

返回值

类型： System Boolean
如果存在多个结果集，则为 true；否则为 false。

实现

用于处理多个结果，这些结果可通过执行批处理 Transact-SQL 语句而生成。

默认情况下，数据读取器定位在第一项结果上。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.Read 方法

SqlDataReader
.
.
::
.
Read 方法
SqlDataReader 类

使 SqlDataReader 前进到下一条记录。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function Read As Boolean
public override bool Read()
public:
virtual bool Read() override
abstract Read : unit -> bool
override Read : unit -> bool

返回值

类型： System Boolean
如果存在多个行，则为 true；否则为 false。

实现

SqlDataReader 的默认位置在第一条记录前面。因此，必须调用 Read 来开始访问任何数据。 SqlDataReader 的默认位置在第一条记录前面。因此，必须调用 Read 来开始访问任何数据。

对于每个关联的 SqlConnection，一次只能打开一个 SqlDataReader，在第一个关闭之前，打开另一个的任何尝试都将失败。类似地，在使用 SqlDataReader 时，关联的 SqlConnection 正忙于为它提供服务，直到调用 Close 时为止。 对于每个关联的 SqlConnection，一次只能打开一个 SqlDataReader，在第一个关闭之前，打开另一个的任何尝试都将失败。类似地，在使用 SqlDataReader 时，关联的 SqlConnection 正忙于为它提供服务，直到调用 Close 时为止。

下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。 下面的示例创建一个 SqlConnection、一个 SqlCommand 和一个 SqlDataReader。该示例读取全部数据，并将这些数据写到控制台窗口。随后此代码关闭 SqlDataReader。SqlConnection 在 using 代码块的结尾处自动关闭。

Private Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call Read before accessing data.
        While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call Read before accessing data.
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader 属性

SqlDataReader 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataReader 类

SqlDataReader 类型公开以下成员。

名称 说明
页首

参考

SqlDataReader 类
System.Data.SqlClient 命名空间


SqlDataReader ..::.Connection 属性

SqlDataReader
.
.
::
.
Connection 属性
SqlDataReader 类

获取与 SqlDataReader 关联的 SqlConnection。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Protected ReadOnly Property Connection As SqlConnection
    Get
protected SqlConnection Connection { get; }
protected:
property SqlConnection^ Connection {
    SqlConnection^ get ();
}
member Connection : SqlConnection

属性值

类型： System.Data.SqlClient SqlConnection
与 SqlDataReader 关联的 SqlConnection。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.Depth 属性

SqlDataReader
.
.
::
.
Depth 属性
SqlDataReader 类

获取一个值，用于指示当前行的嵌套深度。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Depth As Integer
    Get
public override int Depth { get; }
public:
virtual property int Depth {
    int get () override;
}
abstract Depth : int
override Depth : int

属性值

类型： System Int32
当前行的嵌套深度。

实现

最外层表的深度为零。SQL Server .NET Framework 数据提供程序不支持嵌套并总是返回零值。 最外层表的深度为零。SQL Server .NET Framework 数据提供程序不支持嵌套并总是返回零值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.FieldCount 属性

SqlDataReader
.
.
::
.
FieldCount 属性
SqlDataReader 类

获取当前行中的列数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property FieldCount As Integer
    Get
public override int FieldCount { get; }
public:
virtual property int FieldCount {
    int get () override;
}
abstract FieldCount : int
override FieldCount : int

属性值

类型： System Int32
如果未放在有效的记录集中，则为 0；否则为当前行中的列数。默认值为 -1。 如果未放在有效的记录集中，则为 0；否则为当前行中的列数。默认值为 -1。

实现

异常 | 条件
NotSupportedException | 没有对 SQL Server 实例的当前连接。

执行一个查询，本质上不返回行（如 DELETE 查询），将 FieldCount 设置为 0。但是不应将这个情况与返回 0 行的查询（如 SELECT * FROM table WHERE 1 = 2）相混淆，在该查询中，FieldCount 返回表的列数（包括隐藏字段）。使用 VisibleFieldCount 可以排除隐藏字段。 执行一个查询，本质上不返回行（如 DELETE 查询），将 FieldCount 设置为 0。但是不应将这个情况与返回 0 行的查询（如 SELECT * FROM table WHERE 1 = 2）相混淆，在该查询中，FieldCount 返回表的列数（包括隐藏字段）。使用 VisibleFieldCount 可以排除隐藏字段。 执行一个查询，本质上不返回行（如 DELETE 查询），将 FieldCount 设置为 0。但是不应将这个情况与返回 0 行的查询（如 SELECT * FROM table WHERE 1 = 2）相混淆，在该查询中，FieldCount 返回表的列数（包括隐藏字段）。使用 VisibleFieldCount 可以排除隐藏字段。 执行一个查询，本质上不返回行（如 DELETE 查询），将 FieldCount 设置为 0。但是不应将这个情况与返回 0 行的查询（如 SELECT * FROM table WHERE 1 = 2）相混淆，在该查询中，FieldCount 返回表的列数（包括隐藏字段）。使用 VisibleFieldCount 可以排除隐藏字段。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.HasRows 属性

SqlDataReader
.
.
::
.
HasRows 属性
SqlDataReader 类

获取一个值，该值指示 SqlDataReader 是否包含一行或多行。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property HasRows As Boolean
    Get
public override bool HasRows { get; }
public:
virtual property bool HasRows {
    bool get () override;
}
abstract HasRows : bool
override HasRows : bool

属性值

类型： System Boolean
如果 SqlDataReader 包含一行或多行，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.IsClosed 属性

SqlDataReader
.
.
::
.
IsClosed 属性
SqlDataReader 类

检索一个布尔值，该值指示是否已关闭指定的 SqlDataReader 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property IsClosed As Boolean
    Get
public override bool IsClosed { get; }
public:
virtual property bool IsClosed {
    bool get () override;
}
abstract IsClosed : bool
override IsClosed : bool

属性值

类型： System Boolean
如果指定的 SqlDataReader 实例已关闭，则为 true；否则为 false。

实现

不可能从关闭的 SqlDataReader 实例中读取。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.Item 属性

SqlDataReader
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDataReader 类

获取以本机格式表示的列的值。

名称 说明
页首

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间


SqlDataReader ..::.Item 属性 (Int32)

SqlDataReader
.
.
::
.
Item 属性 (Int32)
SqlDataReader 类

在给定列序号的情况下，获取指定列的以本机格式表示的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Item ( _
    i As Integer _
) As Object
    Get
public override Object this[
    int i
] { get; }
public:
virtual property Object^ Item[int i] {
    Object^ get (int i) override;
}
abstract Item : Object
override Item : Object

参数

i
类型： System Int32
从零开始的列序号。

属性值

类型： System Object
指定列的以本机格式表示的值。

实现

异常 | 条件
IndexOutOfRangeException | 传递的索引位于 0 至 FieldCount 的范围之外。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
Item 重载
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.Item 属性 (String)

SqlDataReader
.
.
::
.
Item 属性 (String)
SqlDataReader 类

在给定列名称的情况下，获取指定列的以本机格式表示的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Item ( _
    name As String _
) As Object
    Get
public override Object this[
    string name
] { get; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name) override;
}
abstract Item : Object
override Item : Object

参数

name
类型： System String
列名称。

属性值

类型： System Object
指定列的以本机格式表示的值。

实现

异常 | 条件
IndexOutOfRangeException | 未找到具有指定名称的列。

首先执行区分大小写的查找。如果失败，则进行另一次不区分大小写的搜索。 首先执行区分大小写的查找。如果失败，则进行另一次不区分大小写的搜索。

此方法不区分假名宽度。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
Item 重载
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.RecordsAffected 属性

SqlDataReader
.
.
::
.
RecordsAffected 属性
SqlDataReader 类

获取执行 Transact-SQL 语句所更改、插入或删除的行数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property RecordsAffected As Integer
    Get
public override int RecordsAffected { get; }
public:
virtual property int RecordsAffected {
    int get () override;
}
abstract RecordsAffected : int
override RecordsAffected : int

属性值

类型： System Int32
已更改、插入或删除的行数；如果没有任何行受到影响或语句失败，则为 0；-1 表示 SELECT 语句。

实现

直到读取了所有行并关闭 SqlDataReader 时，才会设置 RecordsAffected 属性。

该属性的值是累积值。例如，如果以批处理模式插入两个记录，则 RecordsAffected 的值将为二。 该属性的值是累积值。例如，如果以批处理模式插入两个记录，则 RecordsAffected 的值将为二。

当 SqlDataReader 关闭后，只能调用 IsClosed 和 RecordsAffected 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 连接池 (ADO.NET)
DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SqlDataReader ..::.VisibleFieldCount 属性

SqlDataReader
.
.
::
.
VisibleFieldCount 属性
SqlDataReader 类

获取 SqlDataReader 中未隐藏的字段的数目。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property VisibleFieldCount As Integer
    Get
public override int VisibleFieldCount { get; }
public:
virtual property int VisibleFieldCount {
    int get () override;
}
abstract VisibleFieldCount : int
override VisibleFieldCount : int

属性值

类型： System Int32
未隐藏的字段的数目。

此值用来确定 SqlDataReader 中有多少字段是可见的。例如，在部分主键上使用 SELECT 会将键的剩余部分作为隐藏字段返回。隐藏字段总是附加在可见字段后面。 此值用来确定 SqlDataReader 中有多少字段是可见的。例如，在部分主键上使用 SELECT 会将键的剩余部分作为隐藏字段返回。隐藏字段总是附加在可见字段后面。 此值用来确定 SqlDataReader 中有多少字段是可见的。例如，在部分主键上使用 SELECT 会将键的剩余部分作为隐藏字段返回。隐藏字段总是附加在可见字段后面。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDataReader 类
SqlDataReader 成员
System.Data.SqlClient 命名空间

其他资源

DataAdapters and DataReaders (ADO.NET)
SQL Server 和 ADO.NET


SQLDebugging 类

SQLDebugging 类
成员

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

包括此对象是为了支持应用程序调试。不应直接使用。 包括此对象是为了支持应用程序调试。不应直接使用。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
<GuidAttribute("afef65ad-4577-447a-a148-83acadd3d4b9")> _
<PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")> _
Public NotInheritable Class SQLDebugging
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[GuidAttribute("afef65ad-4577-447a-a148-83acadd3d4b9")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public sealed class SQLDebugging
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType::None)]
[GuidAttribute(L"afef65ad-4577-447a-a148-83acadd3d4b9")]
[PermissionSetAttribute(SecurityAction::LinkDemand, Name = L"FullTrust")]
public ref class SQLDebugging sealed
[<SealedAttribute>]
[<ComVisibleAttribute(true)>]
[<ClassInterfaceAttribute(ClassInterfaceType.None)>]
[<GuidAttribute("afef65ad-4577-447a-a148-83acadd3d4b9")>]
[<PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")>]
type SQLDebugging =  class end

System.Data.SqlClient System.Data.SqlClient..::.SQLDebuggingSQLDebugging
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SQLDebugging 成员
System.Data.SqlClient 命名空间


SQLDebugging 成员

SQLDebugging 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SQLDebugging 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

包括此对象是为了支持应用程序调试。不应直接使用。 包括此对象是为了支持应用程序调试。不应直接使用。

SQLDebugging 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SQLDebugging 类
System.Data.SqlClient 命名空间


SQLDebugging 构造函数

SQLDebugging 构造函数
SQLDebugging 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

包括此对象是为了支持应用程序调试。不应直接使用。 包括此对象是为了支持应用程序调试。不应直接使用。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SQLDebugging()
public:
SQLDebugging()
new : unit -> SQLDebugging

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SQLDebugging 类
SQLDebugging 成员
System.Data.SqlClient 命名空间


SQLDebugging 方法

SQLDebugging 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SQLDebugging 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

SQLDebugging 类型公开以下成员。

名称 说明
页首

参考

SQLDebugging 类
System.Data.SqlClient 命名空间


SqlDependency 类

SqlDependency 类
成员

SqlDependency 对象表示应用程序和 SQL Server 2005 实例间的查询通知依赖关系。应用程序可以创建一个 SqlDependency 对象并进行注册以通过 OnChangeEventHandler 事件处理程序接收通知。 SqlDependency 对象表示应用程序和 SQL Server 2005 实例间的查询通知依赖关系。应用程序可以创建一个 SqlDependency 对象并进行注册以通过 OnChangeEventHandler 事件处理程序接收通知。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlDependency
public sealed class SqlDependency
public ref class SqlDependency sealed
[<SealedAttribute>]
type SqlDependency =  class end

SqlDependency 非常适用于使用缓存的情况，在这种情况下您的 ASP.NET 应用程序或中间层服务需要将某些信息缓存在内存中。SqlDependency 使您在数据库中的元素数据更改时收到通知，从而可以刷新该缓存。 SqlDependency 非常适用于使用缓存的情况，在这种情况下您的 ASP.NET 应用程序或中间层服务需要将某些信息缓存在内存中。SqlDependency 使您在数据库中的元素数据更改时收到通知，从而可以刷新该缓存。

若要建立依赖项，需要将一个 SqlDependency 对象与一个或多个 SqlCommand 对象关联。要接收通知，需要订阅 OnChange 事件。有关创建通知查询的要求条件的更多信息，请参见“SQL Server 联机丛书”中的“Creating a Query for Notification”（创建通知查询）。 若要建立依赖项，需要将一个 SqlDependency 对象与一个或多个 SqlCommand 对象关联。要接收通知，需要订阅 OnChange 事件。有关创建通知查询的要求条件的更多信息，请参见“SQL Server 联机丛书”中的“Creating a Query for Notification”（创建通知查询）。 若要建立依赖项，需要将一个 SqlDependency 对象与一个或多个 SqlCommand 对象关联。要接收通知，需要订阅 OnChange 事件。有关创建通知查询的要求条件的更多信息，请参见“SQL Server 联机丛书”中的“Creating a Query for Notification”（创建通知查询）。

说明 说明

SqlDependency 被设计为用在 ASP.NET 或中间层服务中，这里对数据库有活动依赖项的服务器的数量相对较少。它不应用在客户端应用程序中，因为其中可能有成百上千个客户端计算机将为单个数据库服务器建立 SqlDependency 对象。 SqlDependency 被设计为用在 ASP.NET 或中间层服务中，这里对数据库有活动依赖项的服务器的数量相对较少。它不应用在客户端应用程序中，因为其中可能有成百上千个客户端计算机将为单个数据库服务器建立 SqlDependency 对象。

SqlDependency 要求使用 .NET Framework 2.0 版和 SQL Server 2005。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的SQL Server 中的查询通知 (ADO.NET)和“构建通知解决方案”。 SqlDependency 要求使用 .NET Framework 2.0 版和 SQL Server 2005。有关更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）中的SQL Server 中的查询通知 (ADO.NET)和“构建通知解决方案”。

说明 说明

OnChange 事件可以在与启动命令执行的线程不同的线程上生成。

仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。 仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。

SQL Server 2005 联机丛书 | SQL Server 2008 联机丛书
创建用于通知的查询 | 创建用于通知的查询
有关 Service Broker 的安全注意事项 | 安全和保护 (Service Broker)
有关通知服务的安全注意事项 | 查询通知权限
有关 Service Broker 的国际化注意事项 | 解决方案设计注意事项 (Service Broker)
Service Broker 开发人员信息中心 | 开发人员指南 (Service Broker)

System.Data.SqlClient System.Data.SqlClient..::.SqlDependencySqlDependency
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency 成员

SqlDependency 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

SqlDependency 对象表示应用程序和 SQL Server 2005 实例间的查询通知依赖关系。应用程序可以创建一个 SqlDependency 对象并进行注册以通过 OnChangeEventHandler 事件处理程序接收通知。 SqlDependency 对象表示应用程序和 SQL Server 2005 实例间的查询通知依赖关系。应用程序可以创建一个 SqlDependency 对象并进行注册以通过 OnChangeEventHandler 事件处理程序接收通知。

SqlDependency 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlDependency 类
System.Data.SqlClient 命名空间


SqlDependency 构造函数

SqlDependency 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

创建 SqlDependency 类的新实例。

名称 说明
页首

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间


SqlDependency 构造函数

SqlDependency 构造函数
SqlDependency 类

用默认设置创建 SqlDependency 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlDependency()
public:
SqlDependency()
new : unit -> SqlDependency

构造函数使用默认的 Service Broker 服务名称和超时初始化 SqlDependency 对象。在构造之后的某个位置，必须使用 AddCommandDependency 方法将一个或多个命令与此 SqlDependency 对象关联。 构造函数使用默认的 Service Broker 服务名称和超时初始化 SqlDependency 对象。在构造之后的某个位置，必须使用 AddCommandDependency 方法将一个或多个命令与此 SqlDependency 对象关联。

仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。 仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。

SQL Server 2005 联机丛书 | SQL Server 2008 联机丛书
创建用于通知的查询 | 创建用于通知的查询
有关 Service Broker 的安全注意事项 | 安全和保护 (Service Broker)
有关通知服务的安全注意事项 | 查询通知权限
有关 Service Broker 的国际化注意事项 | 解决方案设计注意事项 (Service Broker)
Service Broker 开发人员信息中心 | 开发人员指南 (Service Broker)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
SqlDependency 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency 构造函数 (SqlCommand)

SqlDependency 构造函数 (SqlCommand)
SqlDependency 类

创建 SqlDependency 类的新实例，并将其与 SqlCommand 参数关联。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    command As SqlCommand _
)
public SqlDependency(
    SqlCommand command
)
public:
SqlDependency(
    SqlCommand^ command
)
new :
        command:SqlCommand -> SqlDependency

参数

command
类型： System.Data.SqlClient SqlCommand
要与此 SqlDependency 对象关联的 SqlCommand 对象。该构造函数将设置 SqlNotificationRequest 对象，并将其绑定到此命令。 要与此 SqlDependency 对象关联的 SqlCommand 对象。该构造函数将设置 SqlNotificationRequest 对象，并将其绑定到此命令。
异常 | 条件
ArgumentNullException | command 参数为 NULL。
InvalidOperationException | 已将一个 SqlNotificationRequest 对象赋值给了 SqlCommand 对象的 Notification 属性，且该 SqlNotificationRequest 未与此依赖项关联。

此构造函数在内部创建一个 SqlNotificationRequest 类的实例，并将其绑定到一个 SqlCommand 对象。

仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。 仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。

SQL Server 2005 联机丛书 | SQL Server 2008 联机丛书
创建用于通知的查询 | 创建用于通知的查询
有关 Service Broker 的安全注意事项 | 安全和保护 (Service Broker)
有关通知服务的安全注意事项 | 查询通知权限
有关 Service Broker 的国际化注意事项 | 解决方案设计注意事项 (Service Broker)
Service Broker 开发人员信息中心 | 开发人员指南 (Service Broker)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
SqlDependency 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency 构造函数 (SqlCommand, String, Int32)

SqlDependency 构造函数 (SqlCommand, String, Int32)
SqlDependency 类

创建 SqlDependency 类的一个新实例，将其与 SqlCommand 参数关联，并指定通知选项和超时值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    command As SqlCommand, _
    options As String, _
    timeout As Integer _
)
public SqlDependency(
    SqlCommand command,
    string options,
    int timeout
)
public:
SqlDependency(
    SqlCommand^ command,
    String^ options,
    int timeout
)
new :
        command:SqlCommand *
        options:string *
        timeout:int -> SqlDependency

参数

command
类型： System.Data.SqlClient SqlCommand
要与此 SqlDependency 对象关联的 SqlCommand 对象。该构造函数将设置 SqlNotificationRequest 对象，并将其绑定到此命令。 要与此 SqlDependency 对象关联的 SqlCommand 对象。该构造函数将设置 SqlNotificationRequest 对象，并将其绑定到此命令。
options
类型： System String
此依赖关系要使用的通知请求选项。如果为 null，则使用默认服务。 此依赖关系要使用的通知请求选项。如果为 null，则使用默认服务。
timeout
类型： System Int32
此通知的超时时间（以秒为单位）。默认值为 0，指示应当使用服务器的超时。 此通知的超时时间（以秒为单位）。默认值为 0，指示应当使用服务器的超时。
异常 | 条件
ArgumentNullException | command 参数为 NULL。
ArgumentOutOfRangeException | 超时值小于零。
InvalidOperationException | 已将一个 SqlNotificationRequest 对象赋值给了 SqlCommand 对象的 Notification 属性，且该 SqlNotificationRequest 未与此依赖项关联。 进行了从 SQLCLR 内创建一个 SqlDependency 实例的尝试。

仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。 仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。

SQL Server 2005 联机丛书 | SQL Server 2008 联机丛书
创建用于通知的查询 | 创建用于通知的查询
有关 Service Broker 的安全注意事项 | 安全和保护 (Service Broker)
有关通知服务的安全注意事项 | 查询通知权限
有关 Service Broker 的国际化注意事项 | 解决方案设计注意事项 (Service Broker)
Service Broker 开发人员信息中心 | 开发人员指南 (Service Broker)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
SqlDependency 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency 方法

SqlDependency 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

SqlDependency 类型公开以下成员。

名称 说明
页首

参考

SqlDependency 类
System.Data.SqlClient 命名空间


SqlDependency ..::.AddCommandDependency 方法

SqlDependency
.
.
::
.
AddCommandDependency 方法
SqlDependency 类

将 SqlCommand 对象与此 SqlDependency 实例关联。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub AddCommandDependency ( _
    command As SqlCommand _
)
public void AddCommandDependency(
    SqlCommand command
)
public:
void AddCommandDependency(
    SqlCommand^ command
)
member AddCommandDependency :
        command:SqlCommand -> unit

参数

command
类型： System.Data.SqlClient SqlCommand
一个 SqlCommand 对象，包含一个对通知有效的语句。
异常 | 条件
ArgumentNullException | command 参数为 null。
InvalidOperationException | 已将一个 SqlNotificationRequest 对象赋值给了 SqlCommand 对象的 Notification 属性，且该 SqlNotificationRequest 未与此依赖项关联。

仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。 仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。

SQL Server 2005 联机丛书 | SQL Server 2008 联机丛书
创建用于通知的查询 | 创建用于通知的查询
有关 Service Broker 的安全注意事项 | 安全和保护 (Service Broker)
有关通知服务的安全注意事项 | 查询通知权限
有关 Service Broker 的国际化注意事项 | 解决方案设计注意事项 (Service Broker)
Service Broker 开发人员信息中心 | 开发人员指南 (Service Broker)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency ..::.Start 方法

SqlDependency
.
.
::
.
Start 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

启动用于接收依赖项更改通知的侦听器。

名称 说明
页首

SQL Server 连接中发生错误时，将重新启动 SqlDependency 侦听器。

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间


SqlDependency ..::.Start 方法 (String)

SqlDependency
.
.
::
.
Start 方法 (String)
SqlDependency 类

启动用于接收依赖项更改通知的侦听器，该通知来自由连接字符串指定的 SQL Server 实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Shared Function Start ( _
    connectionString As String _
) As Boolean
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public static bool Start(
    string connectionString
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
static bool Start(
    String^ connectionString
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
static member Start :
        connectionString:string -> bool

参数

connectionString
类型： System String
SQL Server 实例（从中获取更改通知）的连接字符串。

返回值

类型： System Boolean
如果侦听器初始化成功，则为 true；如果已存在兼容的侦听器，则为 false。
异常 | 条件
ArgumentNullException | connectionString 参数为 NULL。
InvalidOperationException | 与上次调用此方法相比，connectionString 参数相同，但其他参数不同。 此方法是从 SQLCLR 内部调用的。
SecurityException | 调用方没有所必需的 SqlClientPermission 代码访问安全性 (CAS) 权限。
SqlException | 随后调用了该方法，调用使用等效的 connectionString 参数和不同的用户，或者不是同一架构的默认用户的用户。 还有所有基础 SqlClient 异常。

此方法启动 AppDomain 的侦听器，从由 connectionString 参数指定的 SQL Server 实例接收依赖项通知。此方法可以用多个服务器的不同连接字符串多次调用。 此方法启动 AppDomain 的侦听器，从由 connectionString 参数指定的 SQL Server 实例接收依赖项通知。此方法可以用多个服务器的不同连接字符串多次调用。

可对 Start 方法进行多次调用，但要遵守下列限制条件：

  • 使用相同参数（相同的连接字符串和调用线程中的 Windows 凭据）的多次调用是有效的。

  • 使用不同连接字符串的多次调用也是有效的，但要符合下列条件：

    • 每个连接字符串指定一个不同的数据库，或者

    • 每个连接字符串指定一个不同的用户，或者

    • 调用来自不同的应用程序域。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
Start 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency ..::.Start 方法 (String, String)

SqlDependency
.
.
::
.
Start 方法 (String, String)
SqlDependency 类

启动用于接收依赖项更改通知的侦听器，该侦听器使用指定的 SQL Server Service Broker 队列从由连接字符串指定的 SQL Server 实例接收。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Shared Function Start ( _
    connectionString As String, _
    queue As String _
) As Boolean
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public static bool Start(
    string connectionString,
    string queue
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
static bool Start(
    String^ connectionString,
    String^ queue
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
static member Start :
        connectionString:string *
        queue:string -> bool

参数

connectionString
类型： System String
SQL Server 实例（从中获取更改通知）的连接字符串。
queue
类型： System String
要使用的现有 SQL Server Service Broker 队列。如果为 null，则使用默认队列。 要使用的现有 SQL Server Service Broker 队列。如果为 null，则使用默认队列。

返回值

类型： System Boolean
如果侦听器初始化成功，则为 true；如果已存在兼容的侦听器，则为 false。
异常 | 条件
ArgumentNullException | connectionString 参数为 NULL。
InvalidOperationException | 与上次调用此方法相比，connectionString 参数相同，但其他参数不同。 此方法是从 SQLCLR 内部调用的。
SecurityException | 调用方没有所必需的 SqlClientPermission 代码访问安全性 (CAS) 权限。
SqlException | 已经随后调用了该方法，调用使用等效的 connectionString 参数和不同的用户，或者不是同一架构的默认用户的用户。 还有所有基础 SqlClient 异常。

此方法启动 AppDomain 的侦听器，从由 connectionString 参数指定的 SQL Server 实例接收依赖项通知。此方法可以用多个服务器的不同连接字符串多次调用。 此方法启动 AppDomain 的侦听器，从由 connectionString 参数指定的 SQL Server 实例接收依赖项通知。此方法可以用多个服务器的不同连接字符串多次调用。

如果没有指定队列名称，则 SqlDependency 在服务器中创建一个用于整个过程的临时队列和服务，即使过程涉及多个 AppDomain。一旦应用程序关闭，就自动移除队列和服务。 如果没有指定队列名称，则 SqlDependency 在服务器中创建一个用于整个过程的临时队列和服务，即使过程涉及多个 AppDomain。一旦应用程序关闭，就自动移除队列和服务。

可对 Start 方法进行多次调用，但要遵守下列限制条件：

  • 具有相同参数（相同的连接字符串、队列和调用线程中的 Windows 凭据）的多次调用是有效的。

  • 使用不同连接字符串的多次调用也是有效的，但要符合下列条件：

    • 每个连接字符串指定一个不同的数据库，或者

    • 每个连接字符串指定一个不同的用户，或者

    • 调用来自不同的应用程序域。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
Start 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency ..::.Stop 方法

SqlDependency
.
.
::
.
Stop 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

停止在上一次 Start 调用中指定的连接的侦听器。

名称 说明
页首

SQL Server 连接中发生错误时，将重新启动 SqlDependency 侦听器。

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间


SqlDependency ..::.Stop 方法 (String)

SqlDependency
.
.
::
.
Stop 方法 (String)
SqlDependency 类

停止在上一次 Start 调用中指定的连接的侦听器。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Shared Function Stop ( _
    connectionString As String _
) As Boolean
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public static bool Stop(
    string connectionString
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
static bool Stop(
    String^ connectionString
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
static member Stop :
        connectionString:string -> bool

参数

connectionString
类型： System String
SQL Server 实例的连接字符串，在上一次 Start 调用中使用。

返回值

类型： System Boolean
如果侦听器完全停止，则为 true；如果 AppDomain 从侦听器解除绑定，但至少还有一个其他 AppDomain 使用同一侦听器，则为 false。
异常 | 条件
ArgumentNullException | connectionString 参数为 NULL。
InvalidOperationException | 此方法是从 SQLCLR 内部调用的。
SecurityException | 调用方没有所必需的 SqlClientPermission 代码访问安全性 (CAS) 权限。
SqlException | 发生基础 SqlClient 异常。

必须为每次 Start 调用调用 Stop 方法。仅当给定的侦听器接收到的 Stop 请求数与 Start 请求数相同时，该侦听器才完全关闭。 必须为每次 Start 调用调用 Stop 方法。仅当给定的侦听器接收到的 Stop 请求数与 Start 请求数相同时，该侦听器才完全关闭。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
Stop 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency ..::.Stop 方法 (String, String)

SqlDependency
.
.
::
.
Stop 方法 (String, String)
SqlDependency 类

停止在上一次 Start 调用中指定的连接的侦听器。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Shared Function Stop ( _
    connectionString As String, _
    queue As String _
) As Boolean
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public static bool Stop(
    string connectionString,
    string queue
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
static bool Stop(
    String^ connectionString,
    String^ queue
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
static member Stop :
        connectionString:string *
        queue:string -> bool

参数

connectionString
类型： System String
SQL Server 实例的连接字符串，在上一次 Start 调用中使用。
queue
类型： System String
在上一次 Start 调用中使用的 SQL Server Service Broker 队列。

返回值

类型： System Boolean
如果侦听器完全停止，则为 true；如果 AppDomain 从侦听器解除绑定，但至少还有一个其他 AppDomain 使用同一侦听器，则为 false。
异常 | 条件
ArgumentNullException | connectionString 参数为 NULL。
InvalidOperationException | 此方法是从 SQLCLR 内部调用的。
SecurityException | 调用方没有所必需的 SqlClientPermission 代码访问安全性 (CAS) 权限。
SqlException | 发生基础 SqlClient 异常。

必须为每次 Start 调用调用 Stop 方法。仅当给定的侦听器接收到的 Stop 请求数与 Start 请求数相同时，该侦听器才完全关闭。 必须为每次 Start 调用调用 Stop 方法。仅当给定的侦听器接收到的 Stop 请求数与 Start 请求数相同时，该侦听器才完全关闭。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
Stop 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency 属性

SqlDependency 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

SqlDependency 类型公开以下成员。

名称 说明
页首

参考

SqlDependency 类
System.Data.SqlClient 命名空间


SqlDependency ..::.HasChanges 属性

SqlDependency
.
.
::
.
HasChanges 属性
SqlDependency 类

获取一个值，该值指示与依赖项关联的结果集之一是否已经更改。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property HasChanges As Boolean
    Get
public bool HasChanges { get; }
public:
property bool HasChanges {
    bool get ();
}
member HasChanges : bool

属性值

类型： System Boolean
一个布尔值，指示结果集之一是否已经更改。

如果您没有使用 OnChange 事件，可检查 HasChanges 属性以确定查询结果是否已更改。

HasChanges 属性不一定意味着数据发生了改变。在其他情况下，如超时时间已过和设置通知请求失败，也会生成更改事件。 HasChanges 属性不一定意味着数据发生了改变。在其他情况下，如超时时间已过和设置通知请求失败，也会生成更改事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency ..::.Id 属性

SqlDependency
.
.
::
.
Id 属性
SqlDependency 类

获取一个值，该值唯一标识 SqlDependency 类的此实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Id As String
    Get
public string Id { get; }
public:
property String^ Id {
    String^ get ();
}
member Id : string

属性值

类型： System String
GUID 的字符串表示，为 SqlDependency 类的每个实例都生成。

Id 属性用于唯一标识给定的 SqlDependency 实例。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlDependency 事件

SqlDependency 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlDependency 类

SqlDependency 类型公开以下成员。

名称 说明
页首

参考

SqlDependency 类
System.Data.SqlClient 命名空间


SqlDependency ..::.OnChange 事件

SqlDependency
.
.
::
.
OnChange 事件
SqlDependency 类

当收到与此 SqlDependency 对象关联的任意命令的通知时发生。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Event OnChange As OnChangeEventHandler
public event OnChangeEventHandler OnChange
public:
 event OnChangeEventHandler^ OnChange {
    void add (OnChangeEventHandler^ value);
    void remove (OnChangeEventHandler^ value);
}
member OnChange : IEvent<OnChangeEventHandler,
    SqlNotificationEventArgs>

OnChange 在关联命令的结果更改时发生。如果您没有使用 OnChange，可检查 HasChanges 属性以确定查询结果是否已更改。 OnChange 在关联命令的结果更改时发生。如果您没有使用 OnChange，可检查 HasChanges 属性以确定查询结果是否已更改。

OnChange 事件不一定意味着数据发生了更改。在其他情况下，如超时时间已过和设置通知请求失败，也会生成 OnChange。 OnChange 事件不一定意味着数据发生了更改。在其他情况下，如超时时间已过和设置通知请求失败，也会生成 OnChange。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlDependency 类
SqlDependency 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 中的查询通知 (ADO.NET)


SqlError 类

SqlError 类
成员

收集与 SQL Server 返回的警告或错误有关的信息。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SerializableAttribute> _
Public NotInheritable Class SqlError
[SerializableAttribute]
public sealed class SqlError
[SerializableAttribute]
public ref class SqlError sealed
[<SealedAttribute>]
[<SerializableAttribute>]
type SqlError =  class end

此类是在发生错误时由 SQL Server .NET Framework 数据提供程序创建的。SqlError 的实例是由 SqlErrorCollection 创建和管理的，后者又是由 SqlException 类创建的。 此类是在发生错误时由 SQL Server .NET Framework 数据提供程序创建的。SqlError 的实例是由 SqlErrorCollection 创建和管理的，后者又是由 SqlException 类创建的。

严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。

当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。 当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。 当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。 当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。

有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            DisplaySqlErrors(ex)
        End Try
    End Using
End Sub

Private Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine("Index #" & i & ControlChars.NewLine & _
            "Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
    Next i
    Console.ReadLine()
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}

System.Data.SqlClient System.Data.SqlClient..::.SqlErrorSqlError
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 成员
System.Data.SqlClient 命名空间
SqlErrorCollection
SqlException


SqlError 成员

SqlError 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlError 类

收集与 SQL Server 返回的警告或错误有关的信息。

SqlError 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlError 类
System.Data.SqlClient 命名空间


SqlError 方法

SqlError 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlError 类

SqlError 类型公开以下成员。

名称 说明
页首

参考

SqlError 类
System.Data.SqlClient 命名空间


SqlError ..::.ToString 方法

SqlError
.
.
::
.
ToString 方法
SqlError 类

获取错误信息的完整文本。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
错误信息的完整文本。

该字符串的格式为：“SqlError:”后跟 Message 和堆栈跟踪。例如： 该字符串的格式为：“SqlError:”后跟 Message 和堆栈跟踪。例如：

SqlError:用户 ID 或密码无效。<堆栈跟踪> SqlError:用户 ID 或密码无效。<堆栈跟踪>

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            DisplaySqlErrors(ex)
        End Try
    End Using
End Sub

Private Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine("Index #" & i & ControlChars.NewLine & _
            "Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
    Next i
    Console.ReadLine()
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError 属性

SqlError 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlError 类

SqlError 类型公开以下成员。

名称 说明
页首

参考

SqlError 类
System.Data.SqlClient 命名空间


SqlError ..::.Class 属性

SqlError
.
.
::
.
Class 属性
SqlError 类

获取从 SQL Server 返回的错误的严重程度。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Class As Byte
    Get
public byte Class { get; }
public:
property unsigned char Class {
    unsigned char get ();
}
member Class : byte

属性值

类型： System Byte
一个 1 至 25 的值，它指示错误的严重级别。默认值为 0。 一个 1 至 25 的值，它指示错误的严重级别。默认值为 0。

严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重程度等于或小于 10 的消息是信息性消息，它们指示由用户输入信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别 17 至 25 的消息指示软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。

当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。 当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。 当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。 当严重级别小于等于 19 时，SqlConnection 保持打开状态。当严重度等于或大于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续操作。在这两种情况下，执行命令的方法都会生成 SqlException。

有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.LineNumber 属性

SqlError
.
.
::
.
LineNumber 属性
SqlError 类

从包含错误的 Transact-SQL 批命令或存储过程中获取行号。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property LineNumber As Integer
    Get
public int LineNumber { get; }
public:
property int LineNumber {
    int get ();
}
member LineNumber : int

属性值

类型： System Int32
Transact-SQL 批命令或存储过程内包含错误的行号。

行的编号从 1 开始。如果该值为 0，则此行号不适用。 行的编号从 1 开始。如果该值为 0，则此行号不适用。

有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.Message 属性

SqlError
.
.
::
.
Message 属性
SqlError 类

获取对错误进行描述的文本。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Message As String
    Get
public string Message { get; }
public:
property String^ Message {
    String^ get ();
}
member Message : string

属性值

类型： System String
对错误进行描述的文本。
有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.Number 属性

SqlError
.
.
::
.
Number 属性
SqlError 类

获取一个标识错误类型的数字。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Number As Integer
    Get
public int Number { get; }
public:
property int Number {
    int get ();
}
member Number : int

属性值

类型： System Int32
标识错误类型的数字。

该数字与 master.dbo.sysmessages 表中的项对应。

有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.Procedure 属性

SqlError
.
.
::
.
Procedure 属性
SqlError 类

获取生成错误的存储过程或远程过程调用 (RPC) 的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Procedure As String
    Get
public string Procedure { get; }
public:
property String^ Procedure {
    String^ get ();
}
member Procedure : string

属性值

类型： System String
存储过程或 RPC 的名称。
有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.Server 属性

SqlError
.
.
::
.
Server 属性
SqlError 类

获取生成错误的 SQL Server 实例的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Server As String
    Get
public string Server { get; }
public:
property String^ Server {
    String^ get ();
}
member Server : string

属性值

类型： System String
SQL Server 实例的名称。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.Source 属性

SqlError
.
.
::
.
Source 属性
SqlError 类

获取生成错误的提供程序的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Source As String
    Get
public string Source { get; }
public:
property String^ Source {
    String^ get ();
}
member Source : string

属性值

类型： System String
生成错误的提供程序的名称。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlError ..::.State 属性

SqlError
.
.
::
.
State 属性
SqlError 类

从 SQL Server 中获取一个数值错误代码，它表示错误、警告或“未找到数据”消息。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property State As Byte
    Get
public byte State { get; }
public:
property unsigned char State {
    unsigned char get ();
}
member State : byte

属性值

类型： System Byte
表示错误代码的数字。

使用 State 属性可从 SQL Server 获取一个数值错误代码，表示错误、警告或“未找到数据”消息。

有关由 SQL Server 生成的错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine(("Index #" & i & ControlChars.NewLine & _
            "Source: " & exception.Errors(i).Source & ControlChars.NewLine & _
            "Number: " & exception.Errors(i).Number.ToString() & ControlChars.NewLine & _
            "State: " & exception.Errors(i).State.ToString() & ControlChars.NewLine & _
            "Class: " & exception.Errors(i).Class.ToString() & ControlChars.NewLine & _
            "Server: " & exception.Errors(i).Server & ControlChars.NewLine & _
            "Message: " & exception.Errors(i).Message & ControlChars.NewLine & _
            "Procedure: " & exception.Errors(i).Procedure & ControlChars.NewLine & _
            "LineNumber: " & exception.Errors(i).LineNumber.ToString()))
    Next i
    Console.ReadLine()
End Sub

        public void DisplaySqlErrors(SqlException exception)
        {
            for (int i = 0; i < exception.Errors.Count; i++)
            {
                Console.WriteLine("Index #" + i + "\n" +
                    "Source: " + exception.Errors[i].Source + "\n" +
                    "Number: " + exception.Errors[i].Number.ToString() + "\n" +
                    "State: " + exception.Errors[i].State.ToString() + "\n" +
                    "Class: " + exception.Errors[i].Class.ToString() + "\n" +
                    "Server: " + exception.Errors[i].Server + "\n" +
                    "Message: " + exception.Errors[i].Message + "\n" +
                    "Procedure: " + exception.Errors[i].Procedure + "\n" +
                    "LineNumber: " + exception.Errors[i].LineNumber.ToString());
            }
            Console.ReadLine();
        }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlError 类
SqlError 成员
System.Data.SqlClient 命名空间


SqlErrorCollection 类

SqlErrorCollection 类
成员

收集 SQL Server .NET Framework 数据提供程序生成的所有错误。无法继承此类。 收集 SQL Server .NET Framework 数据提供程序生成的所有错误。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SerializableAttribute> _
<ListBindableAttribute(False)> _
Public NotInheritable Class SqlErrorCollection _
    Implements ICollection, IEnumerable
[SerializableAttribute]
[ListBindableAttribute(false)]
public sealed class SqlErrorCollection : ICollection,
    IEnumerable
[SerializableAttribute]
[ListBindableAttribute(false)]
public ref class SqlErrorCollection sealed : ICollection,
    IEnumerable
[<SealedAttribute>]
[<SerializableAttribute>]
[<ListBindableAttribute(false)>]
type SqlErrorCollection =
    class
        interface ICollection
        interface IEnumerable
    end

此类由 SqlException 创建，用来收集 SqlError 类的实例。SqlErrorCollection 类始终包含至少一个 SqlError 类的实例。 此类由 SqlException 创建，用来收集 SqlError 类的实例。SqlErrorCollection 类始终包含至少一个 SqlError 类的实例。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            DisplaySqlErrors(ex)
        End Try
    End Using
End Sub

Private Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine("Index #" & i & ControlChars.NewLine & _
            "Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
    Next i
    Console.ReadLine()
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}

System.Data.SqlClient System.Data.SqlClient..::.SqlErrorCollectionSqlErrorCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 成员
System.Data.SqlClient 命名空间
SqlError
SqlException


SqlErrorCollection 成员

SqlErrorCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlErrorCollection 类

收集 SQL Server .NET Framework 数据提供程序生成的所有错误。无法继承此类。 收集 SQL Server .NET Framework 数据提供程序生成的所有错误。无法继承此类。

SqlErrorCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlErrorCollection 类
System.Data.SqlClient 命名空间


SqlErrorCollection 方法

SqlErrorCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlErrorCollection 类

SqlErrorCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlErrorCollection 类
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.CopyTo 方法

SqlErrorCollection
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlErrorCollection 类

复制 SqlErrorCollection 集合的元素。

名称 说明
页首

参考

SqlErrorCollection 类
SqlErrorCollection 成员
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.CopyTo 方法 (Array, Int32)

SqlErrorCollection
.
.
::
.
CopyTo 方法 (Array, Int32)
SqlErrorCollection 类

将 SqlErrorCollection 集合的元素复制到 Array 中，从指定索引开始。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
) sealed
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
向其中复制元素的 Array。
index
类型： System Int32
从该处开始复制到 array 参数中的索引。

实现

异常 | 条件
ArgumentException | index 与 SqlErrorCollection 集合中的元素数之和大于 Array 的 Length。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 对于 array 无效。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
CopyTo 重载
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.CopyTo 方法 ( array<SqlError >[]()[], Int32)

SqlErrorCollection
.
.
::
.
CopyTo 方法 (
array<
SqlError
>
[]
()
[]
, Int32)
SqlErrorCollection 类

将 SqlErrorCollection 集合的元素复制到 SqlErrorCollection 中，从指定索引开始。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub CopyTo ( _
    array As SqlError(), _
    index As Integer _
)
public void CopyTo(
    SqlError[] array,
    int index
)
public:
void CopyTo(
    array<SqlError^>^ array,
    int index
)
member CopyTo :
        array:SqlError[] *
        index:int -> unit

参数

array
类型：
array<
System.Data.SqlClient SqlError
>
[]
()
[]

向其中复制元素的 SqlErrorCollection。
index
类型： System Int32
从该处开始复制到 array 参数中的索引。
异常 | 条件
ArgumentException | index 与 SqlErrorCollection 集合中的元素数之和大于 SqlErrorCollection 的长度。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 对于 array 无效。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
CopyTo 重载
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.GetEnumerator 方法

SqlErrorCollection
.
.
::
.
GetEnumerator 方法
SqlErrorCollection 类

返回循环访问 SqlErrorCollection 的枚举数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function GetEnumerator As IEnumerator
public IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() sealed
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
用于 SqlErrorCollection 的 IEnumerator。

实现

枚举数可用于读取集合中的数据，但不能用于修改基础集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
System.Data.SqlClient 命名空间


SqlErrorCollection 属性

SqlErrorCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlErrorCollection 类

SqlErrorCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlErrorCollection 类
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.Count 属性

SqlErrorCollection
.
.
::
.
Count 属性
SqlErrorCollection 类

获取集合中错误的数目。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Count As Integer
    Get
public int Count { get; }
public:
virtual property int Count {
    int get () sealed;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中错误的总数。

实现

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            DisplaySqlErrors(ex)
        End Try
    End Using
End Sub

Private Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine("Index #" & i & ControlChars.NewLine & _
            "Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
    Next i
    Console.ReadLine()
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.ICollection ..::.IsSynchronized 属性

SqlErrorCollection
.
.
::
.
ICollection
.
.
::
.
IsSynchronized 属性
SqlErrorCollection 类

有关此成员的说明，请参见 IsSynchronized。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private ReadOnly Property IsSynchronized As Boolean
    Implements ICollection.IsSynchronized
    Get
bool ICollection.IsSynchronized { get; }
private:
virtual property bool IsSynchronized {
    bool get () sealed = ICollection::IsSynchronized::get;
}
private abstract IsSynchronized : bool
private override IsSynchronized : bool

属性值

类型： System Boolean
如果对 ICollection 的访问是同步的（线程安全），则为 true；否则为 false。

实现

此成员是显式接口成员的实现。它只能在 SqlErrorCollection 实例被强制转换为 ICollection 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlErrorCollection 实例被强制转换为 ICollection 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.ICollection ..::.SyncRoot 属性

SqlErrorCollection
.
.
::
.
ICollection
.
.
::
.
SyncRoot 属性
SqlErrorCollection 类

有关此成员的说明，请参见 SyncRoot。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private ReadOnly Property SyncRoot As Object
    Implements ICollection.SyncRoot
    Get
Object ICollection.SyncRoot { get; }
private:
virtual property Object^ SyncRoot {
    Object^ get () sealed = ICollection::SyncRoot::get;
}
private abstract SyncRoot : Object
private override SyncRoot : Object

属性值

类型： System Object
可用于同步对 ICollection 的访问的对象。

实现

此成员是显式接口成员的实现。它只能在 SqlErrorCollection 实例被强制转换为 ICollection 接口时使用。 此成员是显式接口成员的实现。它只能在 SqlErrorCollection 实例被强制转换为 ICollection 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
System.Data.SqlClient 命名空间


SqlErrorCollection ..::.Item 属性

SqlErrorCollection
.
.
::
.
Item 属性
SqlErrorCollection 类

获取位于指定索引处的错误。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Item ( _
    index As Integer _
) As SqlError
    Get
public SqlError this[
    int index
] { get; }
public:
property SqlError^ Item[int index] {
    SqlError^ get (int index);
}
member Item : SqlError

参数

index
类型： System Int32
要检索的错误的从零开始的索引。

属性值

类型： System.Data.SqlClient SqlError
一个 SqlError，包含指定索引位置的错误。
异常 | 条件
IndexOutOfRangeException | 索引参数超出数组界限。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            DisplaySqlErrors(ex)
        End Try
    End Using
End Sub

Private Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine("Index #" & i & ControlChars.NewLine & _
            "Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
    Next i
    Console.ReadLine()
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlErrorCollection 类
SqlErrorCollection 成员
System.Data.SqlClient 命名空间
Count


SqlException 类

SqlException 类
成员

当 SQL Server 返回警告或错误时引发的异常。无法继承此类。 当 SQL Server 返回警告或错误时引发的异常。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SerializableAttribute> _
Public NotInheritable Class SqlException _
    Inherits DbException
[SerializableAttribute]
public sealed class SqlException : DbException
[SerializableAttribute]
public ref class SqlException sealed : public DbException
[<SealedAttribute>]
[<SerializableAttribute>]
type SqlException =
    class
        inherit DbException
    end

每当 SQL Server .NET Framework 数据提供程序遇到服务器生成的错误时，都将创建此类。（客户端错误作为标准的公共语言运行库异常引发。）SqlException 始终至少包含一个 SqlError 实例。 每当 SQL Server .NET Framework 数据提供程序遇到服务器生成的错误时，都将创建此类。（客户端错误作为标准的公共语言运行库异常引发。）SqlException 始终至少包含一个 SqlError 实例。

严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。

当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。 当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。 当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。 当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。

有关 SQL Server 所发送的警告和信息性消息的信息，请参见“SQL Server 联机丛书”中的“疑难解答”一节。SqlException 类映射到 SQL Server 严重级别。 有关 SQL Server 所发送的警告和信息性消息的信息，请参见“SQL Server 联机丛书”中的“疑难解答”一节。SqlException 类映射到 SQL Server 严重级别。

下面的示例生成 SqlException，然后显示异常。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlExceptionSqlException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 成员
System.Data.SqlClient 命名空间
SqlError
SqlErrorCollection


SqlException 成员

SqlException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlException 类

当 SQL Server 返回警告或错误时引发的异常。无法继承此类。 当 SQL Server 返回警告或错误时引发的异常。无法继承此类。

SqlException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlException 类
System.Data.SqlClient 命名空间


SqlException 方法

SqlException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlException 类

SqlException 类型公开以下成员。

名称 说明
页首

参考

SqlException 类
System.Data.SqlClient 命名空间


SqlException ..::.GetObjectData 方法

SqlException
.
.
::
.
GetObjectData 方法
SqlException 类

使用有关异常的信息设置 SerializationInfo。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.SerializationFormatter)> _
Public Overrides Sub GetObjectData ( _
    si As SerializationInfo, _
    context As StreamingContext _
)
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
public override void GetObjectData(
    SerializationInfo si,
    StreamingContext context
)
[SecurityPermissionAttribute(SecurityAction::LinkDemand, Flags = SecurityPermissionFlag::SerializationFormatter)]
public:
virtual void GetObjectData(
    SerializationInfo^ si,
    StreamingContext context
) override
[<SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)>]
abstract GetObjectData :
        si:SerializationInfo *
        context:StreamingContext -> unit
[<SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)>]
override GetObjectData :
        si:SerializationInfo *
        context:StreamingContext -> unit

参数

si
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

实现

异常 | 条件
ArgumentNullException | si 参数是 null 引用（在 Visual Basic 中为 Nothing）。

GetObjectData 用针对于序列化的所有异常对象数据设置 SerializationInfo。反序列化期间，从通过流传输的 SerializationInfo 重建异常。 GetObjectData 用针对于序列化的所有异常对象数据设置 SerializationInfo。反序列化期间，从通过流传输的 SerializationInfo 重建异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间


SqlException 属性

SqlException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlException 类

SqlException 类型公开以下成员。

名称 说明
页首

参考

SqlException 类
System.Data.SqlClient 命名空间


SqlException ..::.Class 属性

SqlException
.
.
::
.
Class 属性
SqlException 类

获取从 SQL Server .NET Framework 数据提供程序返回的错误的严重级别。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Class As Byte
    Get
public byte Class { get; }
public:
property unsigned char Class {
    unsigned char get ();
}
member Class : byte

属性值

类型： System Byte
一个 1 至 25 的值，它指示错误的严重级别。

严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。 严重级别小于等于 10 的消息是信息性消息，它们指示由用户输入的信息中的错误所导致的问题。严重级别 11 至 16 的消息是由用户生成的，可以由用户更正。严重级别为 17 到 25 的消息指示存在软件或硬件错误。当发生严重级别为 17、18 或 19 的错误时，虽然可能无法执行特定语句，但仍可以继续工作。

当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。 当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。 当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。 当严重级别为 19 或以下时，SqlConnection 将保持打开状态。当严重级别大于等于 20 时，服务器通常会关闭 SqlConnection。但是，用户可以重新打开连接并继续。最后两种情况下，执行该命令的方法将生成 SqlException。

有关 SQL Server 所发送的警告和信息性消息的信息，请参见 SQL Server 文档的“疑难解答”一节。

它是 Errors 属性中第一个 SqlError 的 Class 属性的包装。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
Number
Source
State
Server
Procedure
LineNumber


SqlException ..::.Errors 属性

SqlException
.
.
::
.
Errors 属性
SqlException 类

获取由一个或多个 SqlError 对象组成的集合，这些对象提供有关 SQL Server .NET Framework 数据提供程序所生成的异常的详细信息。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Errors As SqlErrorCollection
    Get
public SqlErrorCollection Errors { get; }
public:
property SqlErrorCollection^ Errors {
    SqlErrorCollection^ get ();
}
member Errors : SqlErrorCollection

属性值

类型： System.Data.SqlClient SqlErrorCollection
SqlError 类的收集的实例。

SqlErrorCollection 类始终包含至少一个 SqlError 类的实例。

这是 SqlErrorCollection 的包装。有关 SQL Server 引擎错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。 这是 SqlErrorCollection 的包装。有关 SQL Server 引擎错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            DisplaySqlErrors(ex)
        End Try
    End Using
End Sub

Private Sub DisplaySqlErrors(ByVal exception As SqlException)
    Dim i As Integer

    For i = 0 To exception.Errors.Count - 1
        Console.WriteLine("Index #" & i & ControlChars.NewLine & _
            "Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
    Next i
    Console.ReadLine()
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
SqlErrorCollection
SqlError


SqlException ..::.LineNumber 属性

SqlException
.
.
::
.
LineNumber 属性
SqlException 类

获取生成错误的 Transact-SQL 批命令或存储过程内的行号。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property LineNumber As Integer
    Get
public int LineNumber { get; }
public:
property int LineNumber {
    int get ();
}
member LineNumber : int

属性值

类型： System Int32
生成错误的 Transact-SQL 批命令或存储过程内的行号。

行的编号从 1 开始；如果返回 0，则此行号不适用。

它是 Errors 属性中第一个 SqlError 的 LineNumber 属性的包装。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
Number
Source
State
Class
Server
Procedure


SqlException ..::.Number 属性

SqlException
.
.
::
.
Number 属性
SqlException 类

获取一个标识错误类型的数字。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Number As Integer
    Get
public int Number { get; }
public:
property int Number {
    int get ();
}
member Number : int

属性值

类型： System Int32
标识错误类型的数字。

该数字与 master.dbo.sysmessages 表中的项对应。

它是 Errors 属性中第一个 SqlError 的 Number 属性的包装。有关 SQL Server 引擎错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。 它是 Errors 属性中第一个 SqlError 的 Number 属性的包装。有关 SQL Server 引擎错误的更多信息，请参见 SQL Server Books Online（《SQL Server 联机丛书》）。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
State
Class
Source
Server
Procedure
LineNumber


SqlException ..::.Procedure 属性

SqlException
.
.
::
.
Procedure 属性
SqlException 类

获取生成错误的存储过程或远程过程调用 (RPC) 的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Procedure As String
    Get
public string Procedure { get; }
public:
property String^ Procedure {
    String^ get ();
}
member Procedure : string

属性值

类型： System String
存储过程或 RPC 的名称。

它是 Errors 属性中第一个 SqlError 的 Procedure 属性的包装。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
Number
State
Class
Server
Source
LineNumber


SqlException ..::.Server 属性

SqlException
.
.
::
.
Server 属性
SqlException 类

获取正在运行生成错误的 SQL Server 实例的计算机的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Server As String
    Get
public string Server { get; }
public:
property String^ Server {
    String^ get ();
}
member Server : string

属性值

类型： System String
运行 SQL Server 实例的计算机的名称。

它是 Errors 属性中第一个 SqlError 的 Server 属性的包装。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
Number
State
Source
Class
Procedure
LineNumber


SqlException ..::.Source 属性

SqlException
.
.
::
.
Source 属性
SqlException 类

获取生成错误的提供程序的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Source As String
    Get
public override string Source { get; }
public:
virtual property String^ Source {
    String^ get () override;
}
abstract Source : string
override Source : string

属性值

类型： System String
生成错误的提供程序的名称。

实现

它是 Errors 属性中第一个 SqlError 的 Source 属性的包装。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
Number
State
Class
Server
Procedure
LineNumber


SqlException ..::.State 属性

SqlException
.
.
::
.
State 属性
SqlException 类

从 SQL Server 中获取一个数值错误代码，它表示错误、警告或“未找到数据”消息。有关如何将这些值解码的更多信息，请参见“SQL Server 联机丛书”。 从 SQL Server 中获取一个数值错误代码，它表示错误、警告或“未找到数据”消息。有关如何将这些值解码的更多信息，请参见“SQL Server 联机丛书”。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property State As Byte
    Get
public byte State { get; }
public:
property unsigned char State {
    unsigned char get ();
}
member State : byte

属性值

类型： System Byte
表示错误代码的数字。

它是 Errors 属性中第一个 SqlError 的 State 属性的包装。

下面的示例显示 SqlErrorCollection 集合中的每个 SqlError。

Public Sub ShowSqlException(ByVal connectionString As String)
    Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
    Dim errorMessages As New StringBuilder()

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)

        Try
            command.Connection.Open()
            command.ExecuteNonQuery()

        Catch ex As SqlException
            Dim i As Integer
            For i = 0 To ex.Errors.Count - 1
                errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
                    & "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
                    & "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
                    & "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
                    & "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
            Next i
            Console.WriteLine(errorMessages.ToString())
        End Try
    End Using
End Sub

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlException 类
SqlException 成员
System.Data.SqlClient 命名空间
Number
Class
Source
Server
Procedure
LineNumber


SqlException 事件

SqlException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlException 类

SqlException 类型公开以下成员。

名称 说明
页首

参考

SqlException 类
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs 类

SqlInfoMessageEventArgs 类
成员

为 InfoMessage 事件提供数据。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlInfoMessageEventArgs _
    Inherits EventArgs
public sealed class SqlInfoMessageEventArgs : EventArgs
public ref class SqlInfoMessageEventArgs sealed : public EventArgs
[<SealedAttribute>]
type SqlInfoMessageEventArgs =
    class
        inherit EventArgs
    end

InfoMessage 事件包含一个 SqlErrorCollection 集合，该集合包含从服务器发送来的警告。

当发生严重程度等于或小于 10 的 SQL Server 消息时，会生成一个 InfoMessage 事件。

System.Data.SqlClient System.Data.SqlClient..::.SqlInfoMessageEventArgsSqlInfoMessageEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlInfoMessageEventArgs 成员
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs 成员

SqlInfoMessageEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlInfoMessageEventArgs 类

为 InfoMessage 事件提供数据。

SqlInfoMessageEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlInfoMessageEventArgs 类
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs 方法

SqlInfoMessageEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlInfoMessageEventArgs 类

SqlInfoMessageEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlInfoMessageEventArgs 类
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs ..::.ToString 方法

SqlInfoMessageEventArgs
.
.
::
.
ToString 方法
SqlInfoMessageEventArgs 类

检索 InfoMessage 事件的字符串表示形式。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
表示 InfoMessage 事件的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlInfoMessageEventArgs 类
SqlInfoMessageEventArgs 成员
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs 属性

SqlInfoMessageEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlInfoMessageEventArgs 类

SqlInfoMessageEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlInfoMessageEventArgs 类
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs ..::.Errors 属性

SqlInfoMessageEventArgs
.
.
::
.
Errors 属性
SqlInfoMessageEventArgs 类

获取从服务器发送来的警告的集合。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Errors As SqlErrorCollection
    Get
public SqlErrorCollection Errors { get; }
public:
property SqlErrorCollection^ Errors {
    SqlErrorCollection^ get ();
}
member Errors : SqlErrorCollection

属性值

类型： System.Data.SqlClient SqlErrorCollection
从服务器发送来的警告的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlInfoMessageEventArgs 类
SqlInfoMessageEventArgs 成员
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs ..::.Message 属性

SqlInfoMessageEventArgs
.
.
::
.
Message 属性
SqlInfoMessageEventArgs 类

获取从数据库发送的全文本错误。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Message As String
    Get
public string Message { get; }
public:
property String^ Message {
    String^ get ();
}
member Message : string

属性值

类型： System String
错误的完整文本。

这是 Errors 集合中第一个 SqlError 的 Message 属性的包装。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlInfoMessageEventArgs 类
SqlInfoMessageEventArgs 成员
System.Data.SqlClient 命名空间


SqlInfoMessageEventArgs ..::.Source 属性

SqlInfoMessageEventArgs
.
.
::
.
Source 属性
SqlInfoMessageEventArgs 类

获取生成错误的对象的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Source As String
    Get
public string Source { get; }
public:
property String^ Source {
    String^ get ();
}
member Source : string

属性值

类型： System String
生成错误的对象的名称。

这是 Errors 集合中第一个 SqlError 的 Source 属性的包装。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlInfoMessageEventArgs 类
SqlInfoMessageEventArgs 成员
System.Data.SqlClient 命名空间


SqlInfoMessageEventHandler 委托

SqlInfoMessageEventHandler 委托

表示将要处理 SqlConnection 的 InfoMessage 事件的方法。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Delegate Sub SqlInfoMessageEventHandler ( _
    sender As Object, _
    e As SqlInfoMessageEventArgs _
)
public delegate void SqlInfoMessageEventHandler(
    Object sender,
    SqlInfoMessageEventArgs e
)
public delegate void SqlInfoMessageEventHandler(
    Object^ sender,
    SqlInfoMessageEventArgs^ e
)
type SqlInfoMessageEventHandler =
    delegate of
        sender:Object *
        e:SqlInfoMessageEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.Data.SqlClient SqlInfoMessageEventArgs
包含事件数据的 SqlInfoMessageEventArgs 对象。

当创建 SqlInfoMessageEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlInfoMessageEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlInfoMessageEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlInfoMessageEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlNotificationEventArgs 类

SqlNotificationEventArgs 类
成员

表示传递给通知事件处理程序的参数集。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Class SqlNotificationEventArgs _
    Inherits EventArgs
public class SqlNotificationEventArgs : EventArgs
public ref class SqlNotificationEventArgs : public EventArgs
type SqlNotificationEventArgs =
    class
        inherit EventArgs
    end

System.Data.SqlClient System.Data.SqlClient..::.SqlNotificationEventArgsSqlNotificationEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationEventArgs 成员
System.Data.SqlClient 命名空间


SqlNotificationEventArgs 成员

SqlNotificationEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationEventArgs 类

表示传递给通知事件处理程序的参数集。

SqlNotificationEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlNotificationEventArgs 类
System.Data.SqlClient 命名空间


SqlNotificationEventArgs 构造函数

SqlNotificationEventArgs 构造函数
SqlNotificationEventArgs 类

创建 SqlNotificationEventArgs 对象的一个新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    type As SqlNotificationType, _
    info As SqlNotificationInfo, _
    source As SqlNotificationSource _
)
public SqlNotificationEventArgs(
    SqlNotificationType type,
    SqlNotificationInfo info,
    SqlNotificationSource source
)
public:
SqlNotificationEventArgs(
    SqlNotificationType type,
    SqlNotificationInfo info,
    SqlNotificationSource source
)
new :
        type:SqlNotificationType *
        info:SqlNotificationInfo *
        source:SqlNotificationSource -> SqlNotificationEventArgs

参数

type
类型： System.Data.SqlClient SqlNotificationType
SqlNotificationType 值，指示此通知是由于实际更改生成的还是通过订阅生成的。
info
类型： System.Data.SqlClient SqlNotificationInfo
指示通知事件的原因的 SqlNotificationInfo 值。发生的原因可能是：实际更改了存储区中的数据，或者通知变为无效（例如，它已超时）。 指示通知事件的原因的 SqlNotificationInfo 值。发生的原因可能是：实际更改了存储区中的数据，或者通知变为无效（例如，它已超时）。
source
类型： System.Data.SqlClient SqlNotificationSource
SqlNotificationSource 值，指示生成通知的源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationEventArgs 类
SqlNotificationEventArgs 成员
System.Data.SqlClient 命名空间


SqlNotificationEventArgs 方法

SqlNotificationEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationEventArgs 类

SqlNotificationEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlNotificationEventArgs 类
System.Data.SqlClient 命名空间


SqlNotificationEventArgs 属性

SqlNotificationEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlNotificationEventArgs 类

SqlNotificationEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlNotificationEventArgs 类
System.Data.SqlClient 命名空间


SqlNotificationEventArgs ..::.Info 属性

SqlNotificationEventArgs
.
.
::
.
Info 属性
SqlNotificationEventArgs 类

获取一个指示通知事件的原因的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Info As SqlNotificationInfo
    Get
public SqlNotificationInfo Info { get; }
public:
property SqlNotificationInfo Info {
    SqlNotificationInfo get ();
}
member Info : SqlNotificationInfo

属性值

类型： System.Data.SqlClient SqlNotificationInfo
SqlNotificationInfo。

发生的原因可能是：实际更改了存储区中的数据，或者通知不再有效（例如，它已超时）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationEventArgs 类
SqlNotificationEventArgs 成员
System.Data.SqlClient 命名空间


SqlNotificationEventArgs ..::.Source 属性

SqlNotificationEventArgs
.
.
::
.
Source 属性
SqlNotificationEventArgs 类

获取一个指示生成通知的源的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Source As SqlNotificationSource
    Get
public SqlNotificationSource Source { get; }
public:
property SqlNotificationSource Source {
    SqlNotificationSource get ();
}
member Source : SqlNotificationSource

属性值

类型： System.Data.SqlClient SqlNotificationSource
SqlNotificationSource。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationEventArgs 类
SqlNotificationEventArgs 成员
System.Data.SqlClient 命名空间


SqlNotificationEventArgs ..::.Type 属性

SqlNotificationEventArgs
.
.
::
.
Type 属性
SqlNotificationEventArgs 类

获取一个值，该值指示此通知是由于实际更改生成的还是通过订阅生成的。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Type As SqlNotificationType
    Get
public SqlNotificationType Type { get; }
public:
property SqlNotificationType Type {
    SqlNotificationType get ();
}
member Type : SqlNotificationType

属性值

类型： System.Data.SqlClient SqlNotificationType
SqlNotificationType。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlNotificationEventArgs 类
SqlNotificationEventArgs 成员
System.Data.SqlClient 命名空间


SqlNotificationInfo 枚举

SqlNotificationInfo 枚举

此枚举提供有关不同通知的其他信息，这些信息可由依赖项事件处理程序接收。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Enumeration SqlNotificationInfo
public enum SqlNotificationInfo
public enum class SqlNotificationInfo
type SqlNotificationInfo
成员名称 | 说明
Truncate | 一个或多个表已截断。
Insert | 数据已由 INSERT 语句更改。
Update | 数据已由 UPDATE 语句更改。
Delete | 数据已由 DELETE 语句更改。
Drop | 与已丢弃的查询相关的基础对象。
Alter | 与已修改的查询相关的基础服务器对象。
Restart | 服务器已重新启动（重新启动期间发送通知）。
Error | 发生内部服务器错误。
Query | 不能通知或已提供的 SELECT 语句。
Invalid | 提供了无法通知的语句（例如，UPDATE 语句）。
Options | 订阅时没有正确设置 SET 选项。
Isolation | 在无效的隔离模式下执行该语句（例如，快照）。
Expired | SqlDependency 对象已过期。
Resource | 因服务器资源压力而激发。
PreviousFire | 上一语句导致在当前事务下激发了查询通知。
TemplateLimit | 订阅查询导致某一目标表上的模板数量超过允许的最大限制。
Merge | 用于查明触发查询通知的服务器端原因。
Unknown | 在客户端无法识别出服务器所发送的信息选项时使用。
AlreadyChanged | SqlDependency 对象已激发，无法向该对象添加新命令。

SqlNotificationInfo 枚举由 SqlNotificationEventArgs 类的实例引用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlNotificationSource 枚举

SqlNotificationSource 枚举

指示依赖项事件处理程序所接收的通知的源。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Enumeration SqlNotificationSource
public enum SqlNotificationSource
public enum class SqlNotificationSource
type SqlNotificationSource
成员名称 | 说明
Data | 数据已更改；例如，发生了插入、更新、删除或截断操作。
Timeout | 订阅超时已过期。
Object | 某数据库对象已更改；例如，与查询相关的某基础对象已被删除或修改。
Database | 数据库状态已更改；例如，与查询相关的数据库已被删除或分离。
System | 发生了系统相关的事件。例如，存在内部错误、服务器被重新启动或资源压力导致失效。 发生了系统相关的事件。例如，存在内部错误、服务器被重新启动或资源压力导致失效。
Statement | Transact-SQL 语句对通知无效；例如，未能通知 SELECT 语句或执行了非 SELECT 语句。
Environment | 运行时环境与通知不兼容；例如，隔离级别设置为快照，或一个或多个 SET 选项不兼容。
Execution | 执行的过程中发生运行时错误。
Owner | 仅限内部；不应在代码中使用。
Unknown | 当客户端无法识别服务器发送的源选项时使用。
Client | 发生了客户端启动的通知（如由于发生客户端超时，或尝试向已激发的依赖项添加命令）。

SqlNotificationSource 枚举由 SqlNotificationEventArgs 类的实例引用。

仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。 仅对满足一系列特定要求的 SELECT 语句支持查询通知。下表提供指向“SQL Server 联机丛书”中的 Service Broker 和“查询通知”文档的链接。

SQL Server 2005 联机丛书 | SQL Server 2008 联机丛书
创建用于通知的查询 | 创建用于通知的查询
有关 Service Broker 的安全注意事项 | 安全和保护 (Service Broker)
有关通知服务的安全注意事项 | 查询通知权限
有关 Service Broker 的国际化注意事项 | 解决方案设计注意事项 (Service Broker)
Service Broker 开发人员信息中心 | 开发人员指南 (Service Broker)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlNotificationType 枚举

SqlNotificationType 枚举

描述 OnChangeEventHandler 事件处理程序可通过 SqlNotificationEventArgs 参数接收的不同通知类型。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Enumeration SqlNotificationType
public enum SqlNotificationType
public enum class SqlNotificationType
type SqlNotificationType
成员名称 | 说明
Change | 被监视的服务器中的数据已更改。使用 SqlNotificationInfo 项确定更改的详细信息。 被监视的服务器中的数据已更改。使用 SqlNotificationInfo 项确定更改的详细信息。
Subscribe | 创建通知订阅时发生错误。使用 SqlNotificationEventArgs 对象的 SqlNotificationInfo 项来确定发生错误的原因。 创建通知订阅时发生错误。使用 SqlNotificationEventArgs 对象的 SqlNotificationInfo 项来确定发生错误的原因。
Unknown | 当客户端未识别由服务器发送的类型选项时使用。

SqlNotificationType 枚举由 SqlNotificationEventArgs 类的实例引用。在 SqlDependency 类中激发通知事件时，将提供此信息。 SqlNotificationType 枚举由 SqlNotificationEventArgs 类的实例引用。在 SqlDependency 类中激发通知事件时，将提供此信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlParameter 类

SqlParameter 类
成员

表示 SqlCommand 的参数，也可以是它到 DataSet 列的映射。此类不能被继承。 表示 SqlCommand 的参数，也可以是它到 DataSet 列的映射。此类不能被继承。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlParameter _
    Inherits DbParameter _
    Implements IDbDataParameter, IDataParameter, ICloneable
public sealed class SqlParameter : DbParameter,
    IDbDataParameter, IDataParameter, ICloneable
public ref class SqlParameter sealed : public DbParameter,
    IDbDataParameter, IDataParameter, ICloneable
[<SealedAttribute>]
type SqlParameter =
    class
        inherit DbParameter
        interface IDbDataParameter
        interface IDataParameter
        interface ICloneable
    end

参数名称不区分大小写。

有关如何使用参数的更多信息及附加代码示例，请参见命令和参数 (ADO.NET)。

下面的示例通过 SqlDataAdapter 中的 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此示例假定已经使用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。有关使用参数的更多信息及其他示例，请参见在 ADO.NET 中检索和修改数据和配置参数和参数数据类型 (ADO.NET)。 下面的示例通过 SqlDataAdapter 中的 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此示例假定已经使用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。有关使用参数的更多信息及其他示例，请参见在 ADO.NET 中检索和修改数据和配置参数和参数数据类型 (ADO.NET)。 下面的示例通过 SqlDataAdapter 中的 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此示例假定已经使用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。有关使用参数的更多信息及其他示例，请参见在 ADO.NET 中检索和修改数据和配置参数和参数数据类型 (ADO.NET)。 下面的示例通过 SqlDataAdapter 中的 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于从数据源中选择数据并将数据放在 DataSet 中。此示例假定已经使用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。有关使用参数的更多信息及其他示例，请参见在 ADO.NET 中检索和修改数据和配置参数和参数数据类型 (ADO.NET)。

Public Sub AddSqlParameters()
    ' ...
    ' create categoriesDataSet and categoriesAdapter
    ' ...
    categoriesAdapter.SelectCommand.Parameters.Add( _
        "@CategoryName", SqlDbType.VarChar, 80).Value = "toasters"
    categoriesAdapter.SelectCommand.Parameters.Add( _
        "@SerialNum", SqlDbType.Int).Value = 239

    categoriesAdapter.Fill(categoriesDataSet)
End Sub

public void AddSqlParameters()
{
// ...
// create categoriesDataSet and categoriesAdapter
// ...

  categoriesAdapter.SelectCommand.Parameters.Add(
    "@CategoryName", SqlDbType.VarChar, 80).Value = "toasters";
  categoriesAdapter.SelectCommand.Parameters.Add(
    "@SerialNum", SqlDbType.Int).Value = 239;
  categoriesAdapter.Fill(categoriesDataSet);

}

System.Data.SqlClient System.Data.SqlClient..::.SqlParameterSqlParameter
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 成员
System.Data.SqlClient 命名空间
SqlParameterCollection
SqlCommand

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 成员

SqlParameter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameter 类

表示 SqlCommand 的参数，也可以是它到 DataSet 列的映射。此类不能被继承。 表示 SqlCommand 的参数，也可以是它到 DataSet 列的映射。此类不能被继承。

SqlParameter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlParameter 类
System.Data.SqlClient 命名空间


SqlParameter 构造函数

SqlParameter 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameter 类

初始化 SqlParameter 类的新实例。

名称 说明
页首

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间


SqlParameter 构造函数

SqlParameter 构造函数
SqlParameter 类

初始化 SqlParameter 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New
public SqlParameter()
public:
SqlParameter()
new : unit -> SqlParameter

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand)

    Dim parameter As New SqlParameter()
    With parameter
        .ParameterName = "@Description"
        .IsNullable = True
        .SqlDbType = SqlDbType.VarChar
        .Direction = ParameterDirection.Output
        .Size = 88
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command)
{
    SqlParameter parameter = new SqlParameter();
    parameter.ParameterName = "@Description";
    parameter.IsNullable = true;
    parameter.SqlDbType = SqlDbType.VarChar;
    parameter.Direction = ParameterDirection.Output;
    parameter.Size = 88;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 构造函数 (String, SqlDbType)

SqlParameter 构造函数 (String, SqlDbType)
SqlParameter 类

用参数名称和数据类型初始化 SqlParameter 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    parameterName As String, _
    dbType As SqlDbType _
)
public SqlParameter(
    string parameterName,
    SqlDbType dbType
)
public:
SqlParameter(
    String^ parameterName,
    SqlDbType dbType
)
new :
        parameterName:string *
        dbType:SqlDbType -> SqlParameter

参数

parameterName
类型： System String
要映射的参数的名称。
dbType
类型： System.Data SqlDbType
SqlDbType 值之一。
异常 | 条件
ArgumentException | dbType 参数中提供的值为无效的后端数据类型。

从 dbType 参数的值可推断出数据类型（并在适当的情况下推断出 Size 和 Precision）。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand, _
    ByVal paramValue As String)

    Dim parameter As New SqlParameter("@Description", _
        SqlDbType.VarChar)
    With parameter
        .IsNullable = True
        .Direction = ParameterDirection.Output
        .Size = 88
        .Value = paramValue
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command, string paramValue)
{
    SqlParameter parameter = new SqlParameter("@Description", SqlDbType.VarChar);
    parameter.IsNullable = true;
    parameter.Direction = ParameterDirection.Output;
    parameter.Size = 88;
    parameter.Value = paramValue;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 构造函数 (String, Object)

SqlParameter 构造函数 (String, Object)
SqlParameter 类

用参数名称和新 SqlParameter 的一个值初始化 SqlParameter 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    parameterName As String, _
    value As Object _
)
public SqlParameter(
    string parameterName,
    Object value
)
public:
SqlParameter(
    String^ parameterName,
    Object^ value
)
new :
        parameterName:string *
        value:Object -> SqlParameter

参数

parameterName
类型： System String
要映射的参数的名称。
value
类型： System Object
一个 Object，它是 SqlParameter 的值。

当在 value 参数中指定 Object 时，SqlDbType 将从 Object 的 .NET Framework 类型推断出。

请小心使用 SqlParameter 构造函数的这个重载来指定整数参数值。因为此重载接受 Object 类型的 value，所以当此值为零时，必须将整数值转换为 Object 类型，如下面的 C# 示例所示。 请小心使用 SqlParameter 构造函数的这个重载来指定整数参数值。因为此重载接受 Object 类型的 value，所以当此值为零时，必须将整数值转换为 Object 类型，如下面的 C# 示例所示。

Parameter = new SqlParameter("@pname", Convert.ToInt32(0));

如果不执行该转换，则编译器将认为您尝试调用 SqlParameter（string、SqlDbType）构造函数重载。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand)

    Dim parameter As New SqlParameter("@Description", _
        SqlDbType.VarChar, 88, "Description")
    With parameter
        .IsNullable = True
        .Direction = ParameterDirection.Output
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command)
{
    SqlParameter parameter = new SqlParameter("@Description",
        SqlDbType.VarChar, 88, "Description");
    parameter.IsNullable = true;
    parameter.Direction = ParameterDirection.Output;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 构造函数 (String, SqlDbType, Int32)

SqlParameter 构造函数 (String, SqlDbType, Int32)
SqlParameter 类

用参数名称、SqlDbType 和大小初始化 SqlParameter 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    parameterName As String, _
    dbType As SqlDbType, _
    size As Integer _
)
public SqlParameter(
    string parameterName,
    SqlDbType dbType,
    int size
)
public:
SqlParameter(
    String^ parameterName,
    SqlDbType dbType,
    int size
)
new :
        parameterName:string *
        dbType:SqlDbType *
        size:int -> SqlParameter

参数

parameterName
类型： System String
要映射的参数的名称。
dbType
类型： System.Data SqlDbType
SqlDbType 值之一。
size
类型： System Int32
参数的长度。
异常 | 条件
ArgumentException | dbType 参数中提供的值为无效的后端数据类型。

如果未在 size 参数中显式设置 Size，则从 dbType 参数的值推断出该大小。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand, _
    ByVal paramValue As String)

    Dim parameter As New SqlParameter("@Description", _
        SqlDbType.VarChar, 88)
    With parameter
        .IsNullable = True
        .Direction = ParameterDirection.Output
        .Value = paramValue
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command,
    string paramValue)
{
    SqlParameter parameter = new SqlParameter("@Description",
        SqlDbType.VarChar, 88);
    parameter.IsNullable = true;
    parameter.Direction = ParameterDirection.Output;
    parameter.Value = paramValue;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 构造函数 (String, SqlDbType, Int32, String)

SqlParameter 构造函数 (String, SqlDbType, Int32, String)
SqlParameter 类

用参数名称、SqlDbType、大小和源列名称初始化 SqlParameter 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    parameterName As String, _
    dbType As SqlDbType, _
    size As Integer, _
    sourceColumn As String _
)
public SqlParameter(
    string parameterName,
    SqlDbType dbType,
    int size,
    string sourceColumn
)
public:
SqlParameter(
    String^ parameterName,
    SqlDbType dbType,
    int size,
    String^ sourceColumn
)
new :
        parameterName:string *
        dbType:SqlDbType *
        size:int *
        sourceColumn:string -> SqlParameter

参数

parameterName
类型： System String
要映射的参数的名称。
dbType
类型： System.Data SqlDbType
SqlDbType 值之一。
size
类型： System Int32
参数的长度。
sourceColumn
类型： System String
源列的名称。
异常 | 条件
ArgumentException | dbType 参数中提供的值为无效的后端数据类型。

如果未在 size 参数中显式设置 Size，则从 dbType 参数的值推断出该大小。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand)

    Dim parameter As New SqlParameter("@Description", _
        SqlDbType.VarChar, 88, "Description")
    With parameter
        .IsNullable = True
        .Direction = ParameterDirection.Output
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command)
{
    SqlParameter parameter = new SqlParameter("@Description",
        SqlDbType.VarChar, 88, "Description");
    parameter.IsNullable = true;
    parameter.Direction = ParameterDirection.Output;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 构造函数 (String, SqlDbType, Int32, ParameterDirection, Boolean, Byte, Byte, String, DataRowVersion, Object)

SqlParameter 构造函数 (String, SqlDbType, Int32, ParameterDirection, Boolean, Byte, Byte, String, DataRowVersion, Object)
SqlParameter 类

用参数名称、参数的类型、参数的大小、ParameterDirection、参数的精度、参数的小数位数、源列、要使用的 DataRowVersion 和参数的值初始化 SqlParameter 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    parameterName As String, _
    dbType As SqlDbType, _
    size As Integer, _
    direction As ParameterDirection, _
    isNullable As Boolean, _
    precision As Byte, _
    scale As Byte, _
    sourceColumn As String, _
    sourceVersion As DataRowVersion, _
    value As Object _
)
public SqlParameter(
    string parameterName,
    SqlDbType dbType,
    int size,
    ParameterDirection direction,
    bool isNullable,
    byte precision,
    byte scale,
    string sourceColumn,
    DataRowVersion sourceVersion,
    Object value
)
public:
SqlParameter(
    String^ parameterName,
    SqlDbType dbType,
    int size,
    ParameterDirection direction,
    bool isNullable,
    unsigned char precision,
    unsigned char scale,
    String^ sourceColumn,
    DataRowVersion sourceVersion,
    Object^ value
)
new :
        parameterName:string *
        dbType:SqlDbType *
        size:int *
        direction:ParameterDirection *
        isNullable:bool *
        precision:byte *
        scale:byte *
        sourceColumn:string *
        sourceVersion:DataRowVersion *
        value:Object -> SqlParameter

参数

parameterName
类型： System String
要映射的参数的名称。
dbType
类型： System.Data SqlDbType
SqlDbType 值之一。
size
类型： System Int32
参数的长度。
direction
类型： System.Data ParameterDirection
ParameterDirection 值之一。
isNullable
类型： System Boolean
如果字段的值可为 null，则为 true；否则为 false。
precision
类型： System Byte
要将 Value 解析为的小数点左右两侧的总位数。
scale
类型： System Byte
要将 Value 解析为的总小数位数。
sourceColumn
类型： System String
源列的名称。
sourceVersion
类型： System.Data DataRowVersion
DataRowVersion 值之一。
value
类型： System Object
一个 Object，它是 SqlParameter 的值。
异常 | 条件
ArgumentException | dbType 参数中提供的值为无效的后端数据类型。

如果未在 size 和 precision 参数中显式设置 Size 和 Precision，则从 dbType 参数的值推断出它们。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand)

    Dim parameter As New SqlParameter("@Description", _
        SqlDbType.VarChar, 11, ParameterDirection.Input, _
        True, 0, 0, "Description", DataRowVersion.Current, _
        "garden hose")
    parameter.IsNullable = True

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command)
{
    SqlParameter parameter = new SqlParameter("@Description",
        SqlDbType.VarChar, 11, ParameterDirection.Input,
        true, 0, 0, "Description", DataRowVersion.Current,
        "garden hose");
    parameter.IsNullable = true;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 构造函数 (String, SqlDbType, Int32, ParameterDirection, Byte, Byte, String, DataRowVersion, Boolean, Object, String, String, String)

SqlParameter 构造函数 (String, SqlDbType, Int32, ParameterDirection, Byte, Byte, String, DataRowVersion, Boolean, Object, String, String, String)
SqlParameter 类

初始化 SqlParameter 类的一个新实例，该类使用参数名、参数的类型、参数的长度、方向、精度、小数位数、源列名称、DataRowVersion 值之一、用于源列映射的布尔值、SqlParameter 的值、此 XML 实例的架构集合所在的数据库的名称、此 XML 实例的架构集合所在的关系架构以及此参数的架构集合的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    parameterName As String, _
    dbType As SqlDbType, _
    size As Integer, _
    direction As ParameterDirection, _
    precision As Byte, _
    scale As Byte, _
    sourceColumn As String, _
    sourceVersion As DataRowVersion, _
    sourceColumnNullMapping As Boolean, _
    value As Object, _
    xmlSchemaCollectionDatabase As String, _
    xmlSchemaCollectionOwningSchema As String, _
    xmlSchemaCollectionName As String _
)
public SqlParameter(
    string parameterName,
    SqlDbType dbType,
    int size,
    ParameterDirection direction,
    byte precision,
    byte scale,
    string sourceColumn,
    DataRowVersion sourceVersion,
    bool sourceColumnNullMapping,
    Object value,
    string xmlSchemaCollectionDatabase,
    string xmlSchemaCollectionOwningSchema,
    string xmlSchemaCollectionName
)
public:
SqlParameter(
    String^ parameterName,
    SqlDbType dbType,
    int size,
    ParameterDirection direction,
    unsigned char precision,
    unsigned char scale,
    String^ sourceColumn,
    DataRowVersion sourceVersion,
    bool sourceColumnNullMapping,
    Object^ value,
    String^ xmlSchemaCollectionDatabase,
    String^ xmlSchemaCollectionOwningSchema,
    String^ xmlSchemaCollectionName
)
new :
        parameterName:string *
        dbType:SqlDbType *
        size:int *
        direction:ParameterDirection *
        precision:byte *
        scale:byte *
        sourceColumn:string *
        sourceVersion:DataRowVersion *
        sourceColumnNullMapping:bool *
        value:Object *
        xmlSchemaCollectionDatabase:string *
        xmlSchemaCollectionOwningSchema:string *
        xmlSchemaCollectionName:string -> SqlParameter

参数

parameterName
类型： System String
要映射的参数的名称。
dbType
类型： System.Data SqlDbType
SqlDbType 值之一。
size
类型： System Int32
参数的长度。
direction
类型： System.Data ParameterDirection
ParameterDirection 值之一。
precision
类型： System Byte
要将 Value 解析为的小数点左右两侧的总位数。
scale
类型： System Byte
要将 Value 解析为的总小数位数。
sourceColumn
类型： System String
源列的名称。
sourceVersion
类型： System.Data DataRowVersion
DataRowVersion 值之一。
sourceColumnNullMapping
类型： System Boolean
如果源列可以为 null，则为 true；如果不可以为 null，则为 false。
value
类型： System Object
一个 Object，它是 SqlParameter 的值。
xmlSchemaCollectionDatabase
类型： System String
此 XML 实例的架构集合所在的数据库的名称。
xmlSchemaCollectionOwningSchema
类型： System String
包含此 XML 实例的架构集合的关系架构。
xmlSchemaCollectionName
类型： System String
此参数的架构集合的名称。

如果未在 size 和 precision 参数中显式设置 Size 和 Precision，则从 dbType 参数的值推断出它们。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
SqlParameter 重载
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 方法

SqlParameter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameter 类

SqlParameter 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlParameter 类
System.Data.SqlClient 命名空间


SqlParameter ..::.ICloneable ..::.Clone 方法

SqlParameter
.
.
::
.
ICloneable
.
.
::
.
Clone 方法
SqlParameter 类

有关此成员的说明，请参见 Clone。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Private Function Clone As Object Implements ICloneable.Clone
Object ICloneable.Clone()
private:
virtual Object^ Clone() sealed = ICloneable::Clone
private abstract Clone : unit -> Object
private override Clone : unit -> Object

返回值

类型： System Object
作为此实例副本的新 Object。

实现

此成员是显式的接口成员实现。它只能在 SqlParameter 实例被强制转换为 ICloneable 接口时使用。 此成员是显式的接口成员实现。它只能在 SqlParameter 实例被强制转换为 ICloneable 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间


SqlParameter ..::.MemberwiseClone 方法

SqlParameter
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameter 类

名称 说明
页首

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间


SqlParameter ..::.ResetDbType 方法

SqlParameter
.
.
::
.
ResetDbType 方法
SqlParameter 类

重置与此 SqlParameter 关联的类型。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub ResetDbType
public override void ResetDbType()
public:
virtual void ResetDbType() override
abstract ResetDbType : unit -> unit
override ResetDbType : unit -> unit

在执行包含参数值的命令时，代码可以显式设置参数的类型，或者参数可以从参数值推断出自己的类型。调用此方法将重置参数，以便再次通过参数所传递的值来推断其类型。调用此方法会同时影响 SqlParameter 的 DbType 和 SqlDbType 属性。 在执行包含参数值的命令时，代码可以显式设置参数的类型，或者参数可以从参数值推断出自己的类型。调用此方法将重置参数，以便再次通过参数所传递的值来推断其类型。调用此方法会同时影响 SqlParameter 的 DbType 和 SqlDbType 属性。 在执行包含参数值的命令时，代码可以显式设置参数的类型，或者参数可以从参数值推断出自己的类型。调用此方法将重置参数，以便再次通过参数所传递的值来推断其类型。调用此方法会同时影响 SqlParameter 的 DbType 和 SqlDbType 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.ResetSqlDbType 方法

SqlParameter
.
.
::
.
ResetSqlDbType 方法
SqlParameter 类

重置与此 SqlParameter 关联的类型。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub ResetSqlDbType
public void ResetSqlDbType()
public:
void ResetSqlDbType()
member ResetSqlDbType : unit -> unit

在执行包含参数值的命令时，代码可以显式设置参数的类型，或者参数可以从参数值推断出自己的类型。调用此方法将重置参数，以便再次通过参数所传递的值来推断其类型。调用此方法会同时影响 SqlParameter 的 DbType 和 SqlDbType 属性。 在执行包含参数值的命令时，代码可以显式设置参数的类型，或者参数可以从参数值推断出自己的类型。调用此方法将重置参数，以便再次通过参数所传递的值来推断其类型。调用此方法会同时影响 SqlParameter 的 DbType 和 SqlDbType 属性。 在执行包含参数值的命令时，代码可以显式设置参数的类型，或者参数可以从参数值推断出自己的类型。调用此方法将重置参数，以便再次通过参数所传递的值来推断其类型。调用此方法会同时影响 SqlParameter 的 DbType 和 SqlDbType 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.ToString 方法

SqlParameter
.
.
::
.
ToString 方法
SqlParameter 类

获取一个包含 ParameterName 的字符串。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
一个包含 ParameterName 的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter 属性

SqlParameter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameter 类

SqlParameter 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlParameter 类
System.Data.SqlClient 命名空间


SqlParameter ..::.CompareInfo 属性

SqlParameter
.
.
::
.
CompareInfo 属性
SqlParameter 类

获取或设置 CompareInfo 对象，该对象定义应如何为此参数执行字符串比较。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property CompareInfo As SqlCompareOptions
    Get
    Set
[BrowsableAttribute(false)]
public SqlCompareOptions CompareInfo { get; set; }
[BrowsableAttribute(false)]
public:
property SqlCompareOptions CompareInfo {
    SqlCompareOptions get ();
    void set (SqlCompareOptions value);
}
[<BrowsableAttribute(false)>]
member CompareInfo : SqlCompareOptions with get, set

属性值

类型： System.Data.SqlTypes SqlCompareOptions
一个 CompareInfo 对象，该对象为此参数定义字符串比较。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间


SqlParameter ..::.DbType 属性

SqlParameter
.
.
::
.
DbType 属性
SqlParameter 类

获取或设置参数的 SqlDbType。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property DbType As DbType
    Get
    Set
public override DbType DbType { get; set; }
public:
virtual property DbType DbType {
    DbType get () override;
    void set (DbType value) override;
}
abstract DbType : DbType with get, set
override DbType : DbType with get, set

属性值

类型： System.Data DbType
SqlDbType 值之一。默认值为 NVarChar。 SqlDbType 值之一。默认值为 NVarChar。

实现

SqlDbType 和 DbType 是链接的。因此，设置 DbType 会将 SqlDbType 更改为支持 SqlDbType。 SqlDbType 和 DbType 是链接的。因此，设置 DbType 会将 SqlDbType 更改为支持 SqlDbType。

有关受支持的数据类型的列表，请参见适当的 SqlDbType 成员。有关更多信息，请参见 DataAdapter 参数 (ADO.NET)。 有关受支持的数据类型的列表，请参见适当的 SqlDbType 成员。有关更多信息，请参见 DataAdapter 参数 (ADO.NET)。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand, _
    ByVal paramValue As String)

    Dim parameter As New SqlParameter( _
        "@Description", SqlDbType.NVarChar, 16)
    parameter.Value = paramValue
    parameter.IsNullable = True
    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command,
    string paramValue)
{
    SqlParameter parameter = new SqlParameter(
        "@Description", SqlDbType.VarChar);
    parameter.Value = paramValue;
    parameter.IsNullable = true;
    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.Direction 属性

SqlParameter
.
.
::
.
Direction 属性
SqlParameter 类

获取或设置一个值，该值指示参数是只可输入、只可输出、双向还是存储过程返回值参数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property Direction As ParameterDirection
    Get
    Set
public override ParameterDirection Direction { get; set; }
public:
virtual property ParameterDirection Direction {
    ParameterDirection get () override;
    void set (ParameterDirection value) override;
}
abstract Direction : ParameterDirection with get, set
override Direction : ParameterDirection with get, set

属性值

类型： System.Data ParameterDirection
ParameterDirection 值之一。默认为 Input。 ParameterDirection 值之一。默认为 Input。

实现

异常 | 条件
ArgumentException | 该属性未设置为有效的 ParameterDirection 值之一。

如果 ParameterDirection 是输出，而执行的关联 SqlCommand 不返回值，则 SqlParameter 包含空值。

只有关闭 SqlDataReader 后，才能访问通过调用 ExecuteReader 返回的 Output、InputOut 和 ReturnValue 参数。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

命令和参数 (ADO.NET)

DataAdapter 参数 (ADO.NET)

SQL Server 和 ADO.NET

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间


SqlParameter ..::.IsNullable 属性

SqlParameter
.
.
::
.
IsNullable 属性
SqlParameter 类

获取或设置一个值，该值指示参数是否接受空值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property IsNullable As Boolean
    Get
    Set
public override bool IsNullable { get; set; }
public:
virtual property bool IsNullable {
    bool get () override;
    void set (bool value) override;
}
abstract IsNullable : bool with get, set
override IsNullable : bool with get, set

属性值

类型： System Boolean
如果接受 null 值，则为 true；否则为 false。默认值为 false。 如果接受 null 值，则为 true；否则为 false。默认值为 false。

实现

使用 DBNull 类来进行处理空值。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterNullable()
    Dim parameter As New SqlParameter("Description", SqlDbType.VarChar, 88)
    parameter.IsNullable = True
    parameter.Direction = ParameterDirection.Output
End Sub

static void CreateSqlParameterNullable()
{
    SqlParameter parameter = new SqlParameter("Description", SqlDbType.VarChar, 88);
    parameter.IsNullable = true;
    parameter.Direction = ParameterDirection.Output;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.LocaleId 属性

SqlParameter
.
.
::
.
LocaleId 属性
SqlParameter 类

获取或设置可确定特定区域的约定和语言的区域设置标识符。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property LocaleId As Integer
    Get
    Set
[BrowsableAttribute(false)]
public int LocaleId { get; set; }
[BrowsableAttribute(false)]
public:
property int LocaleId {
    int get ();
    void set (int value);
}
[<BrowsableAttribute(false)>]
member LocaleId : int with get, set

属性值

类型： System Int32
返回与参数关联的区域设置标识符。

区域设置标识用于特定地理区域的约定和语言。用来编码特定字符串的代码页（字符集）基于字符串使用的区域设置或产生该字符串的环境。此属性设置（对于输入参数）或获取（对于输出参数）要在与服务器交换数据时附加到字符串中的区域设置。此属性通常与 CompareInfo 属性一起使用。 区域设置标识用于特定地理区域的约定和语言。用来编码特定字符串的代码页（字符集）基于字符串使用的区域设置或产生该字符串的环境。此属性设置（对于输入参数）或获取（对于输出参数）要在与服务器交换数据时附加到字符串中的区域设置。此属性通常与 CompareInfo 属性一起使用。 区域设置标识用于特定地理区域的约定和语言。用来编码特定字符串的代码页（字符集）基于字符串使用的区域设置或产生该字符串的环境。此属性设置（对于输入参数）或获取（对于输出参数）要在与服务器交换数据时附加到字符串中的区域设置。此属性通常与 CompareInfo 属性一起使用。 区域设置标识用于特定地理区域的约定和语言。用来编码特定字符串的代码页（字符集）基于字符串使用的区域设置或产生该字符串的环境。此属性设置（对于输入参数）或获取（对于输出参数）要在与服务器交换数据时附加到字符串中的区域设置。此属性通常与 CompareInfo 属性一起使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.Offset 属性

SqlParameter
.
.
::
.
Offset 属性
SqlParameter 类

获取或设置对 Value 属性的偏移量。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property Offset As Integer
    Get
    Set
[BrowsableAttribute(false)]
public int Offset { get; set; }
[BrowsableAttribute(false)]
public:
property int Offset {
    int get ();
    void set (int value);
}
[<BrowsableAttribute(false)>]
member Offset : int with get, set

属性值

类型： System Int32
对 Value 的偏移量。默认值为 0。 对 Value 的偏移量。默认值为 0。

Offset 属性用于客户端二进制和字符串数据分块。例如，为了将 10MB 的文本插入到服务器上的某一列中，用户可能会执行 10 次 1MB 块的参数化插入，在每次迭代中以 1MB 的大小移动 Offset 的值。 Offset 属性用于客户端二进制和字符串数据分块。例如，为了将 10MB 的文本插入到服务器上的某一列中，用户可能会执行 10 次 1MB 块的参数化插入，在每次迭代中以 1MB 的大小移动 Offset 的值。

Offset 指定二进制类型的字节数和字符串的字符数。字符串的计数不包括终止字符。 Offset 指定二进制类型的字节数和字符串的字符数。字符串的计数不包括终止字符。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterOffset()
    Dim parameter As New SqlParameter("pDName", SqlDbType.VarChar)
    parameter.IsNullable = True
    parameter.Offset = 3
End Sub

static void CreateSqlParameterOffset()
{
    SqlParameter parameter = new SqlParameter("pDName", SqlDbType.VarChar);
    parameter.IsNullable = true;
    parameter.Offset = 3;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.ParameterName 属性

SqlParameter
.
.
::
.
ParameterName 属性
SqlParameter 类

获取或设置 SqlParameter 的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property ParameterName As String
    Get
    Set
public override string ParameterName { get; set; }
public:
virtual property String^ ParameterName {
    String^ get () override;
    void set (String^ value) override;
}
abstract ParameterName : string with get, set
override ParameterName : string with get, set

属性值

类型： System String
SqlParameter 的名称。默认值为空字符串。 SqlParameter 的名称。默认值为空字符串。

实现

ParameterName 以“@参数名”格式来指定。在执行依赖于参数的 SqlCommand 之前必须设置 ParameterName。 ParameterName 以“@参数名”格式来指定。在执行依赖于参数的 SqlCommand 之前必须设置 ParameterName。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand)

    Dim parameter As New SqlParameter()
    With parameter
        .ParameterName = "@Description"
        .IsNullable = True
        .DbType = DbType.String
        .Direction = ParameterDirection.Output
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command)
{
    SqlParameter parameter = new SqlParameter();
    parameter.ParameterName = "@Description";
    parameter.IsNullable = true;
    parameter.DbType = DbType.String;
    parameter.Direction = ParameterDirection.Output;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.Precision 属性

SqlParameter
.
.
::
.
Precision 属性
SqlParameter 类

获取或设置用来表示 Value 属性的最大位数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Precision As Byte
    Get
    Set
public byte Precision { get; set; }
public:
virtual property unsigned char Precision {
    unsigned char get () sealed;
    void set (unsigned char value) sealed;
}
abstract Precision : byte with get, set
override Precision : byte with get, set

属性值

类型： System Byte
用于表示 Value 属性的最大位数。默认值为 0。这指示数据提供程序设置 Value 的精度。 用于表示 Value 属性的最大位数。默认值为 0。这指示数据提供程序设置 Value 的精度。 用于表示 Value 属性的最大位数。默认值为 0。这指示数据提供程序设置 Value 的精度。

实现

Precision 属性由 SqlDbType 为 Decimal 的参数使用。

不需要为输入参数指定 Precision 和 Scale 属性的值，因为可以从参数值推断它们的值。输出参数以及在您需要指定参数的完整元数据而不指示值时，需要 Precision 和 Scale，例如指定一个具有特定精度和小数位数的空值。 不需要为输入参数指定 Precision 和 Scale 属性的值，因为可以从参数值推断它们的值。输出参数以及在您需要指定参数的完整元数据而不指示值时，需要 Precision 和 Scale，例如指定一个具有特定精度和小数位数的空值。

说明 说明

不支持使用此属性将数据强制传递到数据库。若要在将数据传递到数据库之前对数据进行舍入、截断或者强制，请在为参数的 Value 属性赋值之前使用属于 System 命名空间的 Math 类。 不支持使用此属性将数据强制传递到数据库。若要在将数据传递到数据库之前对数据进行舍入、截断或者强制，请在为参数的 Value 属性赋值之前使用属于 System 命名空间的 Math 类。
说明 说明

随 .NET Framework 1.0 版一起提供的 Microsoft .NET Framework 数据提供程序不验证 Decimal 参数值的 Precision 和 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 Scale。当您使用 .NET Framework 1.1 版或更高版本时，如果用无效的 Precision 设置 Decimal 参数值，则会引发异常。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 Microsoft .NET Framework 数据提供程序不验证 Decimal 参数值的 Precision 和 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 Scale。当您使用 .NET Framework 1.1 版或更高版本时，如果用无效的 Precision 设置 Decimal 参数值，则会引发异常。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 Microsoft .NET Framework 数据提供程序不验证 Decimal 参数值的 Precision 和 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 Scale。当您使用 .NET Framework 1.1 版或更高版本时，如果用无效的 Precision 设置 Decimal 参数值，则会引发异常。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 Microsoft .NET Framework 数据提供程序不验证 Decimal 参数值的 Precision 和 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 Scale。当您使用 .NET Framework 1.1 版或更高版本时，如果用无效的 Precision 设置 Decimal 参数值，则会引发异常。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 Microsoft .NET Framework 数据提供程序不验证 Decimal 参数值的 Precision 和 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 Scale。当您使用 .NET Framework 1.1 版或更高版本时，如果用无效的 Precision 设置 Decimal 参数值，则会引发异常。超过 Decimal 参数范围的 Scale 值仍将被截断。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub AddSqlParameter(ByVal command As SqlCommand)

    Dim parameter As New SqlParameter("@Price", SqlDbType.Decimal)
    With parameter
        .Value = 3.1416
        .Precision = 8
        .Scale = 4
    End With

    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command)
{
    SqlParameter parameter = new SqlParameter("@Price", SqlDbType.Decimal);
    parameter.Value = 3.1416;
    parameter.Precision = 8;
    parameter.Scale = 4;

    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.Scale 属性

SqlParameter
.
.
::
.
Scale 属性
SqlParameter 类

获取或设置 Value 解析为的小数位数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Scale As Byte
    Get
    Set
public byte Scale { get; set; }
public:
virtual property unsigned char Scale {
    unsigned char get () sealed;
    void set (unsigned char value) sealed;
}
abstract Scale : byte with get, set
override Scale : byte with get, set

属性值

类型： System Byte
要将 Value 解析为的小数位数。默认值为 0。 要将 Value 解析为的小数位数。默认值为 0。

实现

Scale 属性由 SqlDbType 为 Decimal 的参数使用。

警告说明 警告

如果未显式指定 Scale 属性并且服务器上的数据不适合小数位数 0（默认情况），则可能会截断数据。

不需要为输入参数指定 Precision 和 Scale 属性的值，因为可以从参数值推断它们的值。输出参数以及在您需要指定参数的完整元数据而不指示值时，需要 Precision 和 Scale，例如指定一个具有特定精度和小数位数的空值。 不需要为输入参数指定 Precision 和 Scale 属性的值，因为可以从参数值推断它们的值。输出参数以及在您需要指定参数的完整元数据而不指示值时，需要 Precision 和 Scale，例如指定一个具有特定精度和小数位数的空值。

说明 说明

不支持使用此属性将数据强制传递到数据库。若要在将数据传递到数据库之前对数据进行舍入、截断或者强制，请在为参数的 Value 属性赋值之前使用属于 System 命名空间的 Math 类。 不支持使用此属性将数据强制传递到数据库。若要在将数据传递到数据库之前对数据进行舍入、截断或者强制，请在为参数的 Value 属性赋值之前使用属于 System 命名空间的 Math 类。
说明 说明

随 .NET Framework 1.0 版一起提供的 .NET Framework 数据提供程序不会验证 Decimal 参数值的 Precision 或 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 SqlParameter。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 .NET Framework 数据提供程序不会验证 Decimal 参数值的 Precision 或 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 SqlParameter。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 .NET Framework 数据提供程序不会验证 Decimal 参数值的 Precision 或 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 SqlParameter。超过 Decimal 参数范围的 Scale 值仍将被截断。 随 .NET Framework 1.0 版一起提供的 .NET Framework 数据提供程序不会验证 Decimal 参数值的 Precision 或 Scale。这会导致在数据源处插入截断数据。如果您使用的是 .NET Framework 1.0 版，请在设置参数值之前验证 Decimal 值的 Precision 和 SqlParameter。超过 Decimal 参数范围的 Scale 值仍将被截断。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterPrecisionScale()
    Dim parameter As New SqlParameter("Price", SqlDbType.Decimal)
    parameter.Value = 3.1416
    parameter.Precision = 8
    parameter.Scale = 4
End Sub

static void CreateSqlParameterPrecisionScale()
{
    SqlParameter parameter = new SqlParameter("Price", SqlDbType.Decimal);
    parameter.Value = 3.1416;
    parameter.Precision = 8;
    parameter.Scale = 4;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.Size 属性

SqlParameter
.
.
::
.
Size 属性
SqlParameter 类

获取或设置列中数据的最大大小（以字节为单位）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property Size As Integer
    Get
    Set
public override int Size { get; set; }
public:
virtual property int Size {
    int get () override;
    void set (int value) override;
}
abstract Size : int with get, set
override Size : int with get, set

属性值

类型： System Int32
列中数据的最大大小（以字节为单位）。默认值是从参数值推导出的。 列中数据的最大大小（以字节为单位）。默认值是从参数值推导出的。

实现

返回值不受此属性的影响；从存储过程的返回参数始终是固定大小的整数。

对于具有可变长度类型（例如 nvarchar）的输出参数，参数的大小定义持有输出参数缓冲区的大小。输出参数可以截短为 Size 指定的大小。对于字符类型，与 Size 一起指定的大小是字符形式。 对于具有可变长度类型（例如 nvarchar）的输出参数，参数的大小定义持有输出参数缓冲区的大小。输出参数可以截短为 Size 指定的大小。对于字符类型，与 Size 一起指定的大小是字符形式。 对于具有可变长度类型（例如 nvarchar）的输出参数，参数的大小定义持有输出参数缓冲区的大小。输出参数可以截短为 Size 指定的大小。对于字符类型，与 Size 一起指定的大小是字符形式。

Size 属性用于二进制和字符串类型。对于 SqlType.String 类型的参数，Size 是指 Unicode 字符的长度。对于 SqlType.Xml 类型的参数，将忽略 Size。 Size 属性用于二进制和字符串类型。对于 SqlType.String 类型的参数，Size 是指 Unicode 字符的长度。对于 SqlType.Xml 类型的参数，将忽略 Size。 Size 属性用于二进制和字符串类型。对于 SqlType.String 类型的参数，Size 是指 Unicode 字符的长度。对于 SqlType.Xml 类型的参数，将忽略 Size。

对于非字符串数据类型和 ANSI 字符串数据，Size 属性是指字节数。对于 Unicode 字符串数据，Size 指的是字符数。字符串的计数不包括终止字符。 对于非字符串数据类型和 ANSI 字符串数据，Size 属性是指字节数。对于 Unicode 字符串数据，Size 指的是字符数。字符串的计数不包括终止字符。 对于非字符串数据类型和 ANSI 字符串数据，Size 属性是指字节数。对于 Unicode 字符串数据，Size 指的是字符数。字符串的计数不包括终止字符。

对于可变长度数据类型，Size 描述传输给服务器的最大数据量。例如，对于一个 Unicode 字符串值，可以用 Size 将发送到服务器的数据量限制为前一百个字符。 对于可变长度数据类型，Size 描述传输给服务器的最大数据量。例如，对于一个 Unicode 字符串值，可以用 Size 将发送到服务器的数据量限制为前一百个字符。

如果未显式设置，则从指定参数值的实际大小推断出该大小。

如果参数值的小数部分大于该大小，则该值将被截断以与该大小相匹配。

对于固定长度数据类型，忽略 Size 的值。它可以被检索来提供信息，并返回在向服务器传输参数值时提供程序所使用的最大字节数。 对于固定长度数据类型，忽略 Size 的值。它可以被检索来提供信息，并返回在向服务器传输参数值时提供程序所使用的最大字节数。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterSize()
    Dim description As String = "12 foot scarf - multiple colors, one previous owner"
    Dim parameter As New SqlParameter("Description", SqlDbType.VarChar)
    parameter.Direction = ParameterDirection.Output
    parameter.Size = description.Length
    parameter.Value = description
End Sub

static void CreateSqlParameterSize()
{
    string description = "12 foot scarf - multiple colors, one previous owner";
    SqlParameter parameter = new SqlParameter("Description", SqlDbType.VarChar);
    parameter.Direction = ParameterDirection.Output;
    parameter.Size = description.Length;
    parameter.Value = description;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.SourceColumn 属性

SqlParameter
.
.
::
.
SourceColumn 属性
SqlParameter 类

获取或设置源列的名称，该源列映射到 DataSet 并用于加载或返回 Value

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property SourceColumn As String
    Get
    Set
public override string SourceColumn { get; set; }
public:
virtual property String^ SourceColumn {
    String^ get () override;
    void set (String^ value) override;
}
abstract SourceColumn : string with get, set
override SourceColumn : string with get, set

属性值

类型： System String
映射到 DataSet 的源列的名称。默认值为空字符串。 映射到 DataSet 的源列的名称。默认值为空字符串。

实现

当 SourceColumn 设置为空字符串以外的任何其他值时，将从名为 SourceColumn 的列中检索该参数值。如果 Direction 设置为 Input，则从 DataSet 中获取该值。如果 Direction 设置为 Output，则从数据源中获取该值。InputOutput 的 Direction 为两者的组合。 当 SourceColumn 设置为空字符串以外的任何其他值时，将从名为 SourceColumn 的列中检索该参数值。如果 Direction 设置为 Input，则从 DataSet 中获取该值。如果 Direction 设置为 Output，则从数据源中获取该值。InputOutput 的 Direction 为两者的组合。 当 SourceColumn 设置为空字符串以外的任何其他值时，将从名为 SourceColumn 的列中检索该参数值。如果 Direction 设置为 Input，则从 DataSet 中获取该值。如果 Direction 设置为 Output，则从数据源中获取该值。InputOutput 的 Direction 为两者的组合。 当 SourceColumn 设置为空字符串以外的任何其他值时，将从名为 SourceColumn 的列中检索该参数值。如果 Direction 设置为 Input，则从 DataSet 中获取该值。如果 Direction 设置为 Output，则从数据源中获取该值。InputOutput 的 Direction 为两者的组合。

有关如何使用 SourceColumn 属性的更多信息，请参见 DataAdapter 参数 (ADO.NET) 和使用 DataAdapter 更新数据源 (ADO.NET)。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterSourceColumn()
    Dim parameter As New SqlParameter("Description", SqlDbType.VarChar, 88)
    parameter.SourceColumn = "Description"
End Sub

static void CreateSqlParameterSourceColumn()
{
    SqlParameter parameter = new SqlParameter("Description", SqlDbType.VarChar, 88);
    parameter.SourceColumn = "Description";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.SourceColumnNullMapping 属性

SqlParameter
.
.
::
.
SourceColumnNullMapping 属性
SqlParameter 类

设置或获取一个值，该值指示源列是否可以为 null。这样 SqlCommandBuilder 便能够为可以为 null 的列正确生成 Update 语句。 设置或获取一个值，该值指示源列是否可以为 null。这样 SqlCommandBuilder 便能够为可以为 null 的列正确生成 Update 语句。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property SourceColumnNullMapping As Boolean
    Get
    Set
public override bool SourceColumnNullMapping { get; set; }
public:
virtual property bool SourceColumnNullMapping {
    bool get () override;
    void set (bool value) override;
}
abstract SourceColumnNullMapping : bool with get, set
override SourceColumnNullMapping : bool with get, set

属性值

类型： System Boolean
如果源列可以为 null，则为 true；如果不可以为 null，则为 false。

SourceColumnNullMapping 由 SqlCommandBuilder 用来在处理可为 null 的列时正确生成更新命令。通常，SourceColumnNullMapping 仅限于开发人员自 SqlCommandBuilder 继承时使用。 SourceColumnNullMapping 由 SqlCommandBuilder 用来在处理可为 null 的列时正确生成更新命令。通常，SourceColumnNullMapping 仅限于开发人员自 SqlCommandBuilder 继承时使用。

DbCommandBuilder 使用此属性确定源列是否可为 null。如果可为 null，则将此属性设置为 true；如果不可为 null，则设置为 false。SqlCommandBuilder 在生成其 Update 语句时，会检查每个参数的 SourceColumnNullMapping。如果该属性为 true，SqlCommandBuilder 将生成 WHERE 子句，如下所示（在此查询表达式中，“FieldName”表示字段的名称）： DbCommandBuilder 使用此属性确定源列是否可为 null。如果可为 null，则将此属性设置为 true；如果不可为 null，则设置为 false。SqlCommandBuilder 在生成其 Update 语句时，会检查每个参数的 SourceColumnNullMapping。如果该属性为 true，SqlCommandBuilder 将生成 WHERE 子句，如下所示（在此查询表达式中，“FieldName”表示字段的名称）： DbCommandBuilder 使用此属性确定源列是否可为 null。如果可为 null，则将此属性设置为 true；如果不可为 null，则设置为 false。SqlCommandBuilder 在生成其 Update 语句时，会检查每个参数的 SourceColumnNullMapping。如果该属性为 true，SqlCommandBuilder 将生成 WHERE 子句，如下所示（在此查询表达式中，“FieldName”表示字段的名称）：

((@IsNull_FieldName = 1 AND FieldName IS NULL) OR
  (FieldName = @Original_FieldName))

如果该字段的 SourceColumnNullMapping 为 false，SqlCommandBuilder 将生成以下 WHERE 子句：

FieldName = @OriginalFieldName

此外，如果源字段含空值，则 @IsNull_FieldName 包含 1；如果不含空值，则包含 0。此机制可以优化 SQL Server 的性能，并提供可以在多个提供程序之间工作的通用代码。 此外，如果源字段含空值，则 @IsNull_FieldName 包含 1；如果不含空值，则包含 0。此机制可以优化 SQL Server 的性能，并提供可以在多个提供程序之间工作的通用代码。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.SourceVersion 属性

SqlParameter
.
.
::
.
SourceVersion 属性
SqlParameter 类

获取或设置在加载 Value 时要使用的 DataRowVersion。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Property SourceVersion As DataRowVersion
    Get
    Set
public override DataRowVersion SourceVersion { get; set; }
public:
virtual property DataRowVersion SourceVersion {
    DataRowVersion get () override;
    void set (DataRowVersion value) override;
}
abstract SourceVersion : DataRowVersion with get, set
override SourceVersion : DataRowVersion with get, set

属性值

类型： System.Data DataRowVersion
DataRowVersion 值之一。默认值为 Current。 DataRowVersion 值之一。默认值为 Current。

实现

在更新过程中，SqlDataAdapter.UpdateCommand 使用此属性来确定参数值使用的是原始值还是当前值。这样可以更新主键。该属性设置为 DataRow.Item 属性使用的 DataRow 的版本，或设置为 DataRow 对象的 DataRow.GetChildRows 方法之一。 在更新过程中，SqlDataAdapter.UpdateCommand 使用此属性来确定参数值使用的是原始值还是当前值。这样可以更新主键。该属性设置为 DataRow.Item 属性使用的 DataRow 的版本，或设置为 DataRow 对象的 DataRow.GetChildRows 方法之一。 在更新过程中，SqlDataAdapter.UpdateCommand 使用此属性来确定参数值使用的是原始值还是当前值。这样可以更新主键。该属性设置为 DataRow.Item 属性使用的 DataRow 的版本，或设置为 DataRow 对象的 DataRow.GetChildRows 方法之一。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterSourceVersion()
    Dim parameter As New SqlParameter("Description", SqlDbType.VarChar, 88)
    parameter.SourceColumn = "Description"
    parameter.SourceVersion = DataRowVersion.Current
End Sub

static void CreateSqlParameterSourceVersion()
{
    SqlParameter parameter = new SqlParameter("Description", SqlDbType.VarChar, 88);
    parameter.SourceColumn = "Description";
    parameter.SourceVersion = DataRowVersion.Current;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.SqlDbType 属性

SqlParameter
.
.
::
.
SqlDbType 属性
SqlParameter 类

获取或设置参数的 SqlDbType。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<DbProviderSpecificTypePropertyAttribute(True)> _
Public Property SqlDbType As SqlDbType
    Get
    Set
[DbProviderSpecificTypePropertyAttribute(true)]
public SqlDbType SqlDbType { get; set; }
[DbProviderSpecificTypePropertyAttribute(true)]
public:
property SqlDbType SqlDbType {
    SqlDbType get ();
    void set (SqlDbType value);
}
[<DbProviderSpecificTypePropertyAttribute(true)>]
member SqlDbType : SqlDbType with get, set

属性值

类型： System.Data SqlDbType
SqlDbType 值之一。默认值为 NVarChar。 SqlDbType 值之一。默认值为 NVarChar。

SqlDbType 和 DbType 是链接的。因此，设置 DbType 会将 SqlDbType 更改为支持 SqlDbType。 SqlDbType 和 DbType 是链接的。因此，设置 DbType 会将 SqlDbType 更改为支持 SqlDbType。

有关受支持的数据类型的列表，请参见适当的 SqlDbType 成员。有关更多信息，请参见 DataAdapter 参数 (ADO.NET)。 有关受支持的数据类型的列表，请参见适当的 SqlDbType 成员。有关更多信息，请参见 DataAdapter 参数 (ADO.NET)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.SqlValue 属性

SqlParameter
.
.
::
.
SqlValue 属性
SqlParameter 类

获取作为 SQL 类型的参数的值，或设置该值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property SqlValue As Object
    Get
    Set
[BrowsableAttribute(false)]
public Object SqlValue { get; set; }
[BrowsableAttribute(false)]
public:
property Object^ SqlValue {
    Object^ get ();
    void set (Object^ value);
}
[<BrowsableAttribute(false)>]
member SqlValue : Object with get, set

属性值

类型： System Object
一个 Object，它是使用 SQL 类型的参数的值。默认值为 null。 一个 Object，它是使用 SQL 类型的参数的值。默认值为 null。

对于输入参数，该值绑定到向服务器发送的 SqlCommand。对于输出参数和返回值参数，将在 SqlDataReader 关闭后 SqlCommand 完成时设置该值。 对于输入参数，该值绑定到向服务器发送的 SqlCommand。对于输出参数和返回值参数，将在 SqlDataReader 关闭后 SqlCommand 完成时设置该值。

在向服务器发送空参数值时，用户必须指定 DBNull，而不是 null。系统中的 null 值是没有值的空对象。DBNull 用于表示 null 值。 在向服务器发送空参数值时，用户必须指定 DBNull，而不是 null。系统中的 null 值是没有值的空对象。DBNull 用于表示 null 值。 在向服务器发送空参数值时，用户必须指定 DBNull，而不是 null。系统中的 null 值是没有值的空对象。DBNull 用于表示 null 值。

如果应用程序指定数据库类型，那么当提供程序将数据发送到服务器时，绑定值将转换为该类型。如果提供程序支持 IConvertible 接口，它会尝试转换任何类型的值。如果指定的类型与该值不兼容，则可能导致转换错误。 如果应用程序指定数据库类型，那么当提供程序将数据发送到服务器时，绑定值将转换为该类型。如果提供程序支持 IConvertible 接口，它会尝试转换任何类型的值。如果指定的类型与该值不兼容，则可能导致转换错误。 如果应用程序指定数据库类型，那么当提供程序将数据发送到服务器时，绑定值将转换为该类型。如果提供程序支持 IConvertible 接口，它会尝试转换任何类型的值。如果指定的类型与该值不兼容，则可能导致转换错误。

DbType 和 SqlDbType 属性可通过设置 Value 来推断。

Value 属性被 SqlDataAdapter.UpdateCommand 覆盖。

使用 Value 属性将参数值以公共语言运行时 (CLR) 类型返回。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.TypeName 属性

SqlParameter
.
.
::
.
TypeName 属性
SqlParameter 类

获取或设置表值参数的类型名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property TypeName As String
    Get
    Set
[BrowsableAttribute(false)]
public string TypeName { get; set; }
[BrowsableAttribute(false)]
public:
property String^ TypeName {
    String^ get ();
    void set (String^ value);
}
[<BrowsableAttribute(false)>]
member TypeName : string with get, set

属性值

类型： System String
指定表值参数的类型名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 2008 中的表值参数 (ADO.NET)
SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.UdtTypeName 属性

SqlParameter
.
.
::
.
UdtTypeName 属性
SqlParameter 类

获取或设置一个 string，它将用户定义的类型表示为参数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property UdtTypeName As String
    Get
    Set
[BrowsableAttribute(false)]
public string UdtTypeName { get; set; }
[BrowsableAttribute(false)]
public:
property String^ UdtTypeName {
    String^ get ();
    void set (String^ value);
}
[<BrowsableAttribute(false)>]
member UdtTypeName : string with get, set

属性值

类型： System String
一个 string，表示用户定义的类型的完全限定名。

此示例中的代码创建一个 SqlParameter 对象，以将数据插入到表中的用户定义的类型列中。UdtTypeName 指定 TestPoint 表中用户定义的类型列的完全限定名。 此示例中的代码创建一个 SqlParameter 对象，以将数据插入到表中的用户定义的类型列中。UdtTypeName 指定 TestPoint 表中用户定义的类型列的完全限定名。

Private Sub AddSqlParameter(ByVal command As SqlCommand, _
    ByVal udtName As String, ByVal paramValue As Point)

    Dim parameter As New SqlParameter("@Point", SqlDbType.Udt)
    With parameter
        .SqlDbType = SqlDbType.Udt
        .UdtTypeName = udtName
        .Value = paramValue
    End With
    command.Parameters.Add(parameter)
End Sub

private static void AddSqlParameter(SqlCommand command,
    string udtName, Point paramValue)
{
    SqlParameter parameter = new SqlParameter(
        "@Point", SqlDbType.Udt);
    parameter.SqlDbType = SqlDbType.Udt;
    parameter.UdtTypeName = udtName;
    parameter.Value = paramValue;
    command.Parameters.Add(parameter);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.Value 属性

SqlParameter
.
.
::
.
Value 属性
SqlParameter 类

获取或设置该参数的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<TypeConverterAttribute(GetType(StringConverter))> _
Public Overrides Property Value As Object
    Get
    Set
[TypeConverterAttribute(typeof(StringConverter))]
public override Object Value { get; set; }
[TypeConverterAttribute(typeof(StringConverter))]
public:
virtual property Object^ Value {
    Object^ get () override;
    void set (Object^ value) override;
}
[<TypeConverterAttribute(typeof(StringConverter))>]
abstract Value : Object with get, set
[<TypeConverterAttribute(typeof(StringConverter))>]
override Value : Object with get, set

属性值

类型： System Object
一个 Object，它是该参数的值。默认值为 null。 一个 Object，它是该参数的值。默认值为 null。

实现

对于输入参数，该值绑定到向服务器发送的 SqlCommand。对于输出参数和返回值参数，将在 SqlDataReader 关闭后 SqlCommand 完成时设置该值。 对于输入参数，该值绑定到向服务器发送的 SqlCommand。对于输出参数和返回值参数，将在 SqlDataReader 关闭后 SqlCommand 完成时设置该值。

在向服务器发送空参数值时，用户必须指定 DBNull，而不是 null。系统中的 null 值是没有值的空对象。DBNull 用于表示 null 值。 在向服务器发送空参数值时，用户必须指定 DBNull，而不是 null。系统中的 null 值是没有值的空对象。DBNull 用于表示 null 值。 在向服务器发送空参数值时，用户必须指定 DBNull，而不是 null。系统中的 null 值是没有值的空对象。DBNull 用于表示 null 值。

将非 Unicode XML 数据作为字符串传递时会引发异常。

如果应用程序指定数据库类型，那么当提供程序将数据发送到服务器时，绑定值将转换为该类型。如果提供程序支持 IConvertible 接口，它会尝试转换任何类型的值。如果指定的类型与该值不兼容，则可能导致转换错误。 如果应用程序指定数据库类型，那么当提供程序将数据发送到服务器时，绑定值将转换为该类型。如果提供程序支持 IConvertible 接口，它会尝试转换任何类型的值。如果指定的类型与该值不兼容，则可能导致转换错误。 如果应用程序指定数据库类型，那么当提供程序将数据发送到服务器时，绑定值将转换为该类型。如果提供程序支持 IConvertible 接口，它会尝试转换任何类型的值。如果指定的类型与该值不兼容，则可能导致转换错误。

DbType 和 SqlDbType 属性可通过设置 Value 来推断。

Value 属性被 SqlDataAdapter.UpdateCommand 覆盖。

下面的示例创建一个 SqlParameter 并设置它的一些属性。

Private Sub CreateSqlParameterVersion()
    Dim parameter As New SqlParameter("Description", SqlDbType.VarChar, 88)
    parameter.Value = "garden hose"
End Sub

static void CreateSqlParameterVersion()
{
    SqlParameter parameter = new SqlParameter("Description", SqlDbType.VarChar, 88);
    parameter.Value = "garden hose";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

SQL Server 数据类型和 ADO.NET
命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.XmlSchemaCollectionDatabase 属性

SqlParameter
.
.
::
.
XmlSchemaCollectionDatabase 属性
SqlParameter 类

获取此 XML 实例的架构集合所在的数据库的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property XmlSchemaCollectionDatabase As String
    Get
    Set
public string XmlSchemaCollectionDatabase { get; set; }
public:
property String^ XmlSchemaCollectionDatabase {
    String^ get ();
    void set (String^ value);
}
member XmlSchemaCollectionDatabase : string with get, set

属性值

类型： System String
此 XML 实例的架构集合所在的数据库的名称。

如果该集合是在当前数据库中定义的，则此值将为 null（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也将为 null，这时 XmlSchemaCollectionName 和 XmlSchemaCollectionOwningSchema 也将为 null。 如果该集合是在当前数据库中定义的，则此值将为 null（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也将为 null，这时 XmlSchemaCollectionName 和 XmlSchemaCollectionOwningSchema 也将为 null。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间


SqlParameter ..::.XmlSchemaCollectionName 属性

SqlParameter
.
.
::
.
XmlSchemaCollectionName 属性
SqlParameter 类

获取用于此 XML 实例的架构集合的名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property XmlSchemaCollectionName As String
    Get
    Set
public string XmlSchemaCollectionName { get; set; }
public:
property String^ XmlSchemaCollectionName {
    String^ get ();
    void set (String^ value);
}
member XmlSchemaCollectionName : string with get, set

属性值

类型： System String
用于此 XML 实例的架构集合的名称。

如果没有关联的架构集合，则此值为 null（在 Microsoft Visual Basic 中为 Nothing）。如果该值为 null，则 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionOwningSchema 也为 null。 如果没有关联的架构集合，则此值为 null（在 Microsoft Visual Basic 中为 Nothing）。如果该值为 null，则 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionOwningSchema 也为 null。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameter ..::.XmlSchemaCollectionOwningSchema 属性

SqlParameter
.
.
::
.
XmlSchemaCollectionOwningSchema 属性
SqlParameter 类

包含此 XML 实例的架构集合的关系架构。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property XmlSchemaCollectionOwningSchema As String
    Get
    Set
public string XmlSchemaCollectionOwningSchema { get; set; }
public:
property String^ XmlSchemaCollectionOwningSchema {
    String^ get ();
    void set (String^ value);
}
member XmlSchemaCollectionOwningSchema : string with get, set

属性值

类型： System String
一个 XmlSchemaCollectionOwningSchema。

如果该集合是在当前数据库中定义的，则此值将为 null（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也将为 null，这时 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 也将为 null。 如果该集合是在当前数据库中定义的，则此值将为 null（在 Visual Basic 中为 Nothing）。如果没有架构集合，则它也将为 null，这时 XmlSchemaCollectionDatabase 和 XmlSchemaCollectionName 也将为 null。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameter 类
SqlParameter 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection 类

SqlParameterCollection 类
成员

表示与 SqlCommand 相关联的参数的集合以及各个参数到 DataSet 中列的映射。无法继承此类。 表示与 SqlCommand 相关联的参数的集合以及各个参数到 DataSet 中列的映射。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<ListBindableAttribute(False)> _
Public NotInheritable Class SqlParameterCollection _
    Inherits DbParameterCollection
[ListBindableAttribute(false)]
public sealed class SqlParameterCollection : DbParameterCollection
[ListBindableAttribute(false)]
public ref class SqlParameterCollection sealed : public DbParameterCollection
[<SealedAttribute>]
[<ListBindableAttribute(false)>]
type SqlParameterCollection =
    class
        inherit DbParameterCollection
    end

如果命令中包含特殊 SQL 语句（而非存储过程名称），则集合中的参数数目必须等于命令文本内参数占位符的数目，否则 SQL Server 将引发错误。使用存储过程时，必须提供在存储过程中声明但没有默认值的所有参数。使用默认值声明的参数是可选的。这使您可以指定默认值以外的值。 如果命令中包含特殊 SQL 语句（而非存储过程名称），则集合中的参数数目必须等于命令文本内参数占位符的数目，否则 SQL Server 将引发错误。使用存储过程时，必须提供在存储过程中声明但没有默认值的所有参数。使用默认值声明的参数是可选的。这使您可以指定默认值以外的值。 如果命令中包含特殊 SQL 语句（而非存储过程名称），则集合中的参数数目必须等于命令文本内参数占位符的数目，否则 SQL Server 将引发错误。使用存储过程时，必须提供在存储过程中声明但没有默认值的所有参数。使用默认值声明的参数是可选的。这使您可以指定默认值以外的值。 如果命令中包含特殊 SQL 语句（而非存储过程名称），则集合中的参数数目必须等于命令文本内参数占位符的数目，否则 SQL Server 将引发错误。使用存储过程时，必须提供在存储过程中声明但没有默认值的所有参数。使用默认值声明的参数是可选的。这使您可以指定默认值以外的值。

有关如何使用参数的更多信息及附加代码示例，请参见命令和参数 (ADO.NET)。

下面的示例通过 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于选择数据源内的数据，以及填充 DataSet。此代码假定已经用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。 下面的示例通过 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于选择数据源内的数据，以及填充 DataSet。此代码假定已经用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。 下面的示例通过 SqlParameterCollection 集合创建 SqlParameter 的多个实例。这些参数用于选择数据源内的数据，以及填充 DataSet。此代码假定已经用适当的架构、命令和连接创建了 DataSet 和 SqlDataAdapter。

Public Sub AddSqlParameters()
    ' ...
    ' create categoriesDataSet and categoriesAdapter
    ' ...
    categoriesAdapter.SelectCommand.Parameters.Add( _
        "@CategoryName", SqlDbType.VarChar, 80).Value = "toasters"
    categoriesAdapter.SelectCommand.Parameters.Add( _
        "@SerialNum", SqlDbType.Int).Value = 239

    categoriesAdapter.Fill(categoriesDataSet)
End Sub

public void AddSqlParameters()
{
// ...
// create categoriesDataSet and categoriesAdapter
// ...

  categoriesAdapter.SelectCommand.Parameters.Add(
    "@CategoryName", SqlDbType.VarChar, 80).Value = "toasters";
  categoriesAdapter.SelectCommand.Parameters.Add(
    "@SerialNum", SqlDbType.Int).Value = 239;
  categoriesAdapter.Fill(categoriesDataSet);

}

System.Data.SqlClient System.Data.SqlClient..::.SqlParameterCollectionSqlParameterCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection 成员

SqlParameterCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

表示与 SqlCommand 相关联的参数的集合以及各个参数到 DataSet 中列的映射。无法继承此类。 表示与 SqlCommand 相关联的参数的集合以及各个参数到 DataSet 中列的映射。无法继承此类。

SqlParameterCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlParameterCollection 类
System.Data.SqlClient 命名空间


SqlParameterCollection 方法

SqlParameterCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

SqlParameterCollection 类型公开以下成员。

名称 说明
页首

参考

SqlParameterCollection 类
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Add 方法

SqlParameterCollection
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

向 SqlParameterCollection 添加 SqlParameter。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Add 方法 (Object)

SqlParameterCollection
.
.
::
.
Add 方法 (Object)
SqlParameterCollection 类

将指定的 SqlParameter 对象添加到 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function Add ( _
    value As Object _
) As Integer
public override int Add(
    Object value
)
public:
virtual int Add(
    Object^ value
) override
abstract Add :
        value:Object -> int
override Add :
        value:Object -> int

参数

value
类型： System Object
一个 Object。

返回值

类型： System Int32
新 SqlParameter 对象的索引。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Add 方法 (SqlParameter)

SqlParameterCollection
.
.
::
.
Add 方法 (SqlParameter)
SqlParameterCollection 类

将指定的 SqlParameter 对象添加到 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    value As SqlParameter _
) As SqlParameter
public SqlParameter Add(
    SqlParameter value
)
public:
SqlParameter^ Add(
    SqlParameter^ value
)
member Add :
        value:SqlParameter -> SqlParameter

参数

value
类型： System.Data.SqlClient SqlParameter
要添加到集合中的 SqlParameter。

返回值

类型： System.Data.SqlClient SqlParameter
新的 SqlParameter 对象。
异常 | 条件
ArgumentException | 在 value 参数中指定的 SqlParameter 已经添加到这个或其他 SqlParameterCollection 中。
InvalidCastException | 传递的参数不是 SqlParameter。
ArgumentNullException | value 参数为 null。
Public Sub AddSqlParameter(command As SqlCommand)
  command.Parameters.Add(New SqlParameter("Description", "Beverages"))
End Sub

public void AddSqlParameter(SqlCommand command)
{
    command.Parameters.Add(new SqlParameter("Description", "Beverages"));
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Add 方法 (String, SqlDbType)

SqlParameterCollection
.
.
::
.
Add 方法 (String, SqlDbType)
SqlParameterCollection 类

将 SqlParameter 添加到指定了参数名和数据类型的 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    parameterName As String, _
    sqlDbType As SqlDbType _
) As SqlParameter
public SqlParameter Add(
    string parameterName,
    SqlDbType sqlDbType
)
public:
SqlParameter^ Add(
    String^ parameterName,
    SqlDbType sqlDbType
)
member Add :
        parameterName:string *
        sqlDbType:SqlDbType -> SqlParameter

参数

parameterName
类型： System String
参数名。
sqlDbType
类型： System.Data SqlDbType
SqlDbType 值之一。

返回值

类型： System.Data.SqlClient SqlParameter
新的 SqlParameter 对象。
Public Sub AddSqlParameter(command As SqlCommand)
  Dim param As SqlParameter = command.Parameters.Add( _
      "@Description", SqlDbType.NVarChar)
  param.Size = 16
  param.Value = "Beverages"
End Sub

public void AddSqlParameter(SqlCommand command)
{
    SqlParameter param = command.Parameters.Add(
        "@Description", SqlDbType.NVarChar);
    param.Size = 16;
    param.Value = "Beverages";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Add 方法 (String, Object)

SqlParameterCollection
.
.
::
.
Add 方法 (String, Object)
SqlParameterCollection 类

注意：此 API 现在已过时。

将指定的 SqlParameter 对象添加到 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<ObsoleteAttribute("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202",  _
    False)> _
Public Function Add ( _
    parameterName As String, _
    value As Object _
) As SqlParameter
[ObsoleteAttribute("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202",
    false)]
public SqlParameter Add(
    string parameterName,
    Object value
)
[ObsoleteAttribute(L"Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202",
    false)]
public:
SqlParameter^ Add(
    String^ parameterName,
    Object^ value
)
[<ObsoleteAttribute("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202",
    false)>]
member Add :
        parameterName:string *
        value:Object -> SqlParameter

参数

parameterName
类型： System String
要添加到集合的 SqlParameter 的名称。
value
类型： System Object
Object。

返回值

类型： System.Data.SqlClient SqlParameter
新的 SqlParameter 对象。
使用 SqlParameterCollection.Add 方法的重载来指定整数参数值时，请务必谨慎。因为此重载接受 Object 类型的 value，所以当此值为零时，必须将整数值转换为 Object 类型，如下面的 C# 示例所示。 使用 SqlParameterCollection.Add 方法的重载来指定整数参数值时，请务必谨慎。因为此重载接受 Object 类型的 value，所以当此值为零时，必须将整数值转换为 Object 类型，如下面的 C# 示例所示。
新的 SqlParameter 对象。使用 SqlParameterCollection.Add 方法的重载来指定整数参数值时，请务必谨慎。因为此重载接受 Object 类型的 value，所以当此值为零时，必须将整数值转换为 Object 类型，如下面的 C# 示例所示。parameters.Add("@pname", Convert.ToInt32(0));如果不执行此转换，编译器将假定您正尝试调用 SqlParameterCollection.Add (string，SqlDbType) 重载。 如果不执行此转换，编译器将假定您正尝试调用 SqlParameterCollection.Add (string，SqlDbType) 重载。
异常 | 条件
ArgumentException | 在 value 参数中指定的 SqlParameter 已经添加到这个或其他 SqlParameterCollection 中。
ArgumentNullException | value 参数为 null。
Public Sub AddSqlParameter(command As SqlCommand)
  Dim param As SqlParameter = New SqlParameter( _
      "@Description", SqlDbType.NVarChar, 16)
  param.Value = "Beverages"
  command.Parameters.Add(param)
End Sub

public void AddSqlParameter(SqlCommand command)
{
    SqlParameter param = new SqlParameter(
        "@Description", SqlDbType.NVarChar, 16);
    param.Value = "Beverages";
    command.Parameters.Add(param);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Add 重载
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Add 方法 (String, SqlDbType, Int32)

SqlParameterCollection
.
.
::
.
Add 方法 (String, SqlDbType, Int32)
SqlParameterCollection 类

将 SqlParameter 添加到 SqlParameterCollection 中（给定了指定的参数名、SqlDbType 和大小）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    parameterName As String, _
    sqlDbType As SqlDbType, _
    size As Integer _
) As SqlParameter
public SqlParameter Add(
    string parameterName,
    SqlDbType sqlDbType,
    int size
)
public:
SqlParameter^ Add(
    String^ parameterName,
    SqlDbType sqlDbType,
    int size
)
member Add :
        parameterName:string *
        sqlDbType:SqlDbType *
        size:int -> SqlParameter

参数

parameterName
类型： System String
参数名。
sqlDbType
类型： System.Data SqlDbType
要添加到集合中的 SqlParameter 的 SqlDbType。
size
类型： System Int32
Int32 的大小。

返回值

类型： System.Data.SqlClient SqlParameter
新的 SqlParameter 对象。

此重载在添加可变长度数据类型（如 varchar 或 binary）的参数时很有用。

Public Sub AddSqlParameter(command As SqlCommand)
  Dim param As SqlParameter = New SqlParameter( _
      "@Description", SqlDbType.NVarChar, 16)
  param.Value = "Beverages"
  command.Parameters.Add(param)
End Sub

public void AddSqlParameter(SqlCommand command)
{
    SqlParameter param = new SqlParameter(
        "@Description", SqlDbType.NVarChar, 16);
    param.Value = "Beverages";
    command.Parameters.Add(param);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Add 方法 (String, SqlDbType, Int32, String)

SqlParameterCollection
.
.
::
.
Add 方法 (String, SqlDbType, Int32, String)
SqlParameterCollection 类

将 SqlParameter 及其参数名、数据类型和列宽添加到 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Add ( _
    parameterName As String, _
    sqlDbType As SqlDbType, _
    size As Integer, _
    sourceColumn As String _
) As SqlParameter
public SqlParameter Add(
    string parameterName,
    SqlDbType sqlDbType,
    int size,
    string sourceColumn
)
public:
SqlParameter^ Add(
    String^ parameterName,
    SqlDbType sqlDbType,
    int size,
    String^ sourceColumn
)
member Add :
        parameterName:string *
        sqlDbType:SqlDbType *
        size:int *
        sourceColumn:string -> SqlParameter

参数

parameterName
类型： System String
参数名。
sqlDbType
类型： System.Data SqlDbType
SqlDbType 值之一。
size
类型： System Int32
列长。
sourceColumn
类型： System String
源列的名称。

返回值

类型： System.Data.SqlClient SqlParameter
新的 SqlParameter 对象。
Public Sub AddSqlParameter(command As SqlCommand)
  Dim param As SqlParameter = command.Parameters.Add("@Description", SqlDbType.NVarChar, 16)
  param.Value = "Beverages"
End Sub

public void AddSqlParameter(SqlCommand command)
{
    SqlParameter param = command.Parameters.Add("@Description", SqlDbType.NVarChar, 16);
    param.Value = "Beverages";
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Add 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.AddRange 方法

SqlParameterCollection
.
.
::
.
AddRange 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

将元素添加到 SqlParameterCollection 的末尾。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.AddRange 方法 (Array)

SqlParameterCollection
.
.
::
.
AddRange 方法 (Array)
SqlParameterCollection 类

向 SqlParameterCollection 的末尾添加值数组。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub AddRange ( _
    values As Array _
)
public override void AddRange(
    Array values
)
public:
virtual void AddRange(
    Array^ values
) override
abstract AddRange :
        values:Array -> unit
override AddRange :
        values:Array -> unit

参数

values
类型： System Array
要添加的 Array 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
AddRange 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.AddRange 方法 ( array<SqlParameter >[]()[])

SqlParameterCollection
.
.
::
.
AddRange 方法 (
array<
SqlParameter
>
[]
()
[]
)
SqlParameterCollection 类

向 SqlParameterCollection 的末尾添加 SqlParameter 值的数组。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub AddRange ( _
    values As SqlParameter() _
)
public void AddRange(
    SqlParameter[] values
)
public:
void AddRange(
    array<SqlParameter^>^ values
)
member AddRange :
        values:SqlParameter[] -> unit

参数

values
类型：
array<
System.Data.SqlClient SqlParameter
>
[]
()
[]

要添加的 SqlParameter 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
AddRange 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.AddWithValue 方法

SqlParameterCollection
.
.
::
.
AddWithValue 方法
SqlParameterCollection 类

向 SqlParameterCollection 的末尾添加值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function AddWithValue ( _
    parameterName As String, _
    value As Object _
) As SqlParameter
public SqlParameter AddWithValue(
    string parameterName,
    Object value
)
public:
SqlParameter^ AddWithValue(
    String^ parameterName,
    Object^ value
)
member AddWithValue :
        parameterName:string *
        value:Object -> SqlParameter

参数

parameterName
类型： System String
参数名。
value
类型： System Object
要添加的值。

返回值

类型： System.Data.SqlClient SqlParameter
一个 SqlParameter 对象。

AddWithValue 可替换采用 String 和 Object 的 SqlParameterCollection.Add 方法。重载接受字符串和对象的 Add 已被否决，因为接受 String 和 SqlDbType 枚举值的 SqlParameterCollection.Add 重载可能存在多义性（如：传递的字符串带有一个整数，则整数既可以解释为参数值，也可以解释为相应的 SqlDbType 值）。需要通过指定名称和值来添加参数时，请使用 AddWithValue。 AddWithValue 可替换采用 String 和 Object 的 SqlParameterCollection.Add 方法。重载接受字符串和对象的 Add 已被否决，因为接受 String 和 SqlDbType 枚举值的 SqlParameterCollection.Add 重载可能存在多义性（如：传递的字符串带有一个整数，则整数既可以解释为参数值，也可以解释为相应的 SqlDbType 值）。需要通过指定名称和值来添加参数时，请使用 AddWithValue。 AddWithValue 可替换采用 String 和 Object 的 SqlParameterCollection.Add 方法。重载接受字符串和对象的 Add 已被否决，因为接受 String 和 SqlDbType 枚举值的 SqlParameterCollection.Add 重载可能存在多义性（如：传递的字符串带有一个整数，则整数既可以解释为参数值，也可以解释为相应的 SqlDbType 值）。需要通过指定名称和值来添加参数时，请使用 AddWithValue。

对于 SqlDbTypeXml 枚举值，可以使用字符串、XML 值、XmlReader 派生类型实例或 SqlXml 对象。

下面的示例说明如何使用 AddWithValue 方法。

Private Sub UpdateDemographics(ByVal customerID As Integer, _
    ByVal demoXml As String, _
    ByVal connectionString As String)

    ' Update the demographics for a store, which is stored
    ' in an xml column.
    Dim commandText As String = _
     "UPDATE Sales.Store SET Demographics = @demographics " _
     & "WHERE CustomerID = @ID;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(commandText, connection)

        ' Add CustomerID parameter for WHERE clause.
        command.Parameters.Add("@ID", SqlDbType.Int)
        command.Parameters("@ID").Value = customerID

        ' Use AddWithValue to assign Demographics.
        ' SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml)

        Try
            connection.Open()
            Dim rowsAffected As Integer = command.ExecuteNonQuery()
            Console.WriteLine("RowsAffected: {0}", rowsAffected)

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Using
End Sub

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored
    // in an xml column.
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics.
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Clear 方法

SqlParameterCollection
.
.
::
.
Clear 方法
SqlParameterCollection 类

从 SqlParameterCollection 中移除所有 SqlParameter 对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Clear
public override void Clear()
public:
virtual void Clear() override
abstract Clear : unit -> unit
override Clear : unit -> unit

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Contains 方法

SqlParameterCollection
.
.
::
.
Contains 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

确定指定的对象是否在此 SqlParameterCollection 中。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Contains 方法 (Object)

SqlParameterCollection
.
.
::
.
Contains 方法 (Object)
SqlParameterCollection 类

确定指定的 Object 是否在此 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function Contains ( _
    value As Object _
) As Boolean
public override bool Contains(
    Object value
)
public:
virtual bool Contains(
    Object^ value
) override
abstract Contains :
        value:Object -> bool
override Contains :
        value:Object -> bool

参数

value
类型： System Object
Object 值。

返回值

类型： System Boolean
如果 SqlParameterCollection 包含该值，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Contains 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Contains 方法 (SqlParameter)

SqlParameterCollection
.
.
::
.
Contains 方法 (SqlParameter)
SqlParameterCollection 类

确定指定的 SqlParameter 是否在此 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function Contains ( _
    value As SqlParameter _
) As Boolean
public bool Contains(
    SqlParameter value
)
public:
bool Contains(
    SqlParameter^ value
)
member Contains :
        value:SqlParameter -> bool

参数

value
类型： System.Data.SqlClient SqlParameter
SqlParameter 值。

返回值

类型： System Boolean
如果 SqlParameterCollection 包含该值，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Contains 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Contains 方法 (String)

SqlParameterCollection
.
.
::
.
Contains 方法 (String)
SqlParameterCollection 类

确定指定的 String 是否在此 SqlParameterCollection 中。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function Contains ( _
    value As String _
) As Boolean
public override bool Contains(
    string value
)
public:
virtual bool Contains(
    String^ value
) override
abstract Contains :
        value:string -> bool
override Contains :
        value:string -> bool

参数

value
类型： System String
String 值。

返回值

类型： System Boolean
如果 SqlParameterCollection 包含该值，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Contains 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.CopyTo 方法

SqlParameterCollection
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

将当前 SqlParameterCollection 的所有元素复制到指定的对象。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.CopyTo 方法 (Array, Int32)

SqlParameterCollection
.
.
::
.
CopyTo 方法 (Array, Int32)
SqlParameterCollection 类

将当前 SqlParameterCollection 的所有元素复制到指定的一维 Array 中（从指定的目标 Array 索引开始）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public override void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
) override
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
一维 Array，它是从当前 SqlParameterCollection 复制的元素的目标位置。
index
类型： System Int32
一个 32 位整数，它表示 Array 中复制开始处的索引。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
CopyTo 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.CopyTo 方法 ( array<SqlParameter >[]()[], Int32)

SqlParameterCollection
.
.
::
.
CopyTo 方法 (
array<
SqlParameter
>
[]
()
[]
, Int32)
SqlParameterCollection 类

将当前 SqlParameterCollection 的所有元素复制到指定的 SqlParameterCollection，从指定的目标索引开始复制。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub CopyTo ( _
    array As SqlParameter(), _
    index As Integer _
)
public void CopyTo(
    SqlParameter[] array,
    int index
)
public:
void CopyTo(
    array<SqlParameter^>^ array,
    int index
)
member CopyTo :
        array:SqlParameter[] *
        index:int -> unit

参数

array
类型：
array<
System.Data.SqlClient SqlParameter
>
[]
()
[]

SqlParameterCollection，它是从当前 SqlParameterCollection 复制的元素的目标位置。
index
类型： System Int32
一个 32 位整数，它表示 SqlParameterCollection 中复制开始处的索引。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
CopyTo 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.GetEnumerator 方法

SqlParameterCollection
.
.
::
.
GetEnumerator 方法
SqlParameterCollection 类

返回循环访问 SqlParameterCollection 的枚举数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
用于 SqlParameterCollection 的 IEnumerator。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.GetParameter 方法

SqlParameterCollection
.
.
::
.
GetParameter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

获取具有指定属性值的 DbParameter。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.IndexOf 方法

SqlParameterCollection
.
.
::
.
IndexOf 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

获取指定的 SqlParameter 在集合中的位置。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.IndexOf 方法 (Object)

SqlParameterCollection
.
.
::
.
IndexOf 方法 (Object)
SqlParameterCollection 类

获取指定的 Object 在集合中的位置。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function IndexOf ( _
    value As Object _
) As Integer
public override int IndexOf(
    Object value
)
public:
virtual int IndexOf(
    Object^ value
) override
abstract IndexOf :
        value:Object -> int
override IndexOf :
        value:Object -> int

参数

value
类型： System Object
要查找的 Object。

返回值

类型： System Int32
指定的 Object（它是 SqlParameter）在集合中从零开始的位置。当 SqlParameterCollection 中不存在该对象时，返回 -1。 指定的 Object（它是 SqlParameter）在集合中从零开始的位置。当 SqlParameterCollection 中不存在该对象时，返回 -1。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
IndexOf 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.IndexOf 方法 (SqlParameter)

SqlParameterCollection
.
.
::
.
IndexOf 方法 (SqlParameter)
SqlParameterCollection 类

获取指定的 SqlParameter 在集合中的位置。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Function IndexOf ( _
    value As SqlParameter _
) As Integer
public int IndexOf(
    SqlParameter value
)
public:
int IndexOf(
    SqlParameter^ value
)
member IndexOf :
        value:SqlParameter -> int

参数

value
类型： System.Data.SqlClient SqlParameter
要查找的 SqlParameter。

返回值

类型： System Int32
指定的 SqlParameter（它是 SqlParameter）在集合中从零开始的位置。当 SqlParameterCollection 中不存在该对象时，返回 -1。 指定的 SqlParameter（它是 SqlParameter）在集合中从零开始的位置。当 SqlParameterCollection 中不存在该对象时，返回 -1。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
IndexOf 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.IndexOf 方法 (String)

SqlParameterCollection
.
.
::
.
IndexOf 方法 (String)
SqlParameterCollection 类

获取具有指定名称的指定 SqlParameter 的位置。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Function IndexOf ( _
    parameterName As String _
) As Integer
public override int IndexOf(
    string parameterName
)
public:
virtual int IndexOf(
    String^ parameterName
) override
abstract IndexOf :
        parameterName:string -> int
override IndexOf :
        parameterName:string -> int

参数

parameterName
类型： System String
要查找的 SqlParameter 的区分大小写的名称。

返回值

类型： System Int32
具有指定的区分大小写名称的指定 SqlParameter 从零开始的位置。当 SqlParameterCollection 中不存在该对象时，返回 -1。 具有指定的区分大小写名称的指定 SqlParameter 从零开始的位置。当 SqlParameterCollection 中不存在该对象时，返回 -1。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
IndexOf 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Insert 方法

SqlParameterCollection
.
.
::
.
Insert 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

将 SqlParameter 对象插入 SqlParameterCollection。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Insert 方法 (Int32, SqlParameter)

SqlParameterCollection
.
.
::
.
Insert 方法 (Int32, SqlParameter)
SqlParameterCollection 类

将 SqlParameter 对象插入 SqlParameterCollection 中的指定索引位置。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Insert ( _
    index As Integer, _
    value As SqlParameter _
)
public void Insert(
    int index,
    SqlParameter value
)
public:
void Insert(
    int index,
    SqlParameter^ value
)
member Insert :
        index:int *
        value:SqlParameter -> unit

参数

index
类型： System Int32
从零开始的索引，应在该位置插入 value。
value
类型： System.Data.SqlClient SqlParameter
要插入到 SqlParameterCollection 中的 SqlParameter 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Insert 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Insert 方法 (Int32, Object)

SqlParameterCollection
.
.
::
.
Insert 方法 (Int32, Object)
SqlParameterCollection 类

将 SqlParameterCollection 插入 Object 中的指定索引位置。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Insert ( _
    index As Integer, _
    value As Object _
)
public override void Insert(
    int index,
    Object value
)
public:
virtual void Insert(
    int index,
    Object^ value
) override
abstract Insert :
        index:int *
        value:Object -> unit
override Insert :
        index:int *
        value:Object -> unit

参数

index
类型： System Int32
从零开始的索引，应在该位置插入 value。
value
类型： System Object
要在 SqlParameterCollection 中插入的 Object。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Insert 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.MemberwiseClone 方法

SqlParameterCollection
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Remove 方法

SqlParameterCollection
.
.
::
.
Remove 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

从集合中移除指定的 SqlParameter。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Remove 方法 (Object)

SqlParameterCollection
.
.
::
.
Remove 方法 (Object)
SqlParameterCollection 类

从集合中移除指定的 SqlParameter。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Remove ( _
    value As Object _
)
public override void Remove(
    Object value
)
public:
virtual void Remove(
    Object^ value
) override
abstract Remove :
        value:Object -> unit
override Remove :
        value:Object -> unit

参数

value
类型： System Object
要从集合中移除的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Remove 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Remove 方法 (SqlParameter)

SqlParameterCollection
.
.
::
.
Remove 方法 (SqlParameter)
SqlParameterCollection 类

从集合中移除指定的 SqlParameter。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Remove ( _
    value As SqlParameter _
)
public void Remove(
    SqlParameter value
)
public:
void Remove(
    SqlParameter^ value
)
member Remove :
        value:SqlParameter -> unit

参数

value
类型： System.Data.SqlClient SqlParameter
要从集合中移除的 SqlParameter 对象。
异常 | 条件
InvalidCastException | 该参数不是 SqlParameter。
SystemException | 集合中不存在该参数。

下面的示例在 SqlParameterCollection 集合中搜索 SqlParameter 对象。如果该参数存在，此示例会将其移除。此示例假定已经使用 SqlCommand 创建了 SqlParameterCollection 集合。 下面的示例在 SqlParameterCollection 集合中搜索 SqlParameter 对象。如果该参数存在，此示例会将其移除。此示例假定已经使用 SqlCommand 创建了 SqlParameterCollection 集合。 下面的示例在 SqlParameterCollection 集合中搜索 SqlParameter 对象。如果该参数存在，此示例会将其移除。此示例假定已经使用 SqlCommand 创建了 SqlParameterCollection 集合。

Public Sub SearchSqlParams()
    ' ...
    ' create SqlCommand command and SqlParameter param
    ' ...
    If command.Parameters.Contains(param) Then
        command.Parameters.Remove(param)
    End If
End Sub 'SearchSqlParams

public void SearchSqlParams()
{
    // ...
    // create SqlCommand command and SqlParameter param
    // ...
    if (command.Parameters.Contains(param))
        command.Parameters.Remove(param);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Remove 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.RemoveAt 方法

SqlParameterCollection
.
.
::
.
RemoveAt 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

从 SqlParameterCollection 中的指定索引位置移除 SqlParameter 对象。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.RemoveAt 方法 (Int32)

SqlParameterCollection
.
.
::
.
RemoveAt 方法 (Int32)
SqlParameterCollection 类

从指定索引处的 SqlParameterCollection 中移除 SqlParameter。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub RemoveAt ( _
    index As Integer _
)
public override void RemoveAt(
    int index
)
public:
virtual void RemoveAt(
    int index
) override
abstract RemoveAt :
        index:int -> unit
override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要移除的 SqlParameter 对象的从零开始的索引。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
RemoveAt 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.RemoveAt 方法 (String)

SqlParameterCollection
.
.
::
.
RemoveAt 方法 (String)
SqlParameterCollection 类

从 SqlParameterCollection 中移除位于指定参数名称处的 SqlParameter。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub RemoveAt ( _
    parameterName As String _
)
public override void RemoveAt(
    string parameterName
)
public:
virtual void RemoveAt(
    String^ parameterName
) override
abstract RemoveAt :
        parameterName:string -> unit
override RemoveAt :
        parameterName:string -> unit

参数

parameterName
类型： System String
要移除的 SqlParameter 的名称。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
RemoveAt 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.SetParameter 方法

SqlParameterCollection
.
.
::
.
SetParameter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

将指定的参数设置为指定的值。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection 属性

SqlParameterCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

SqlParameterCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlParameterCollection 类
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Count 属性

SqlParameterCollection
.
.
::
.
Count 属性
SqlParameterCollection 类

返回一个整数，其中包含 SqlParameterCollection 中元素的数目。只读。 返回一个整数，其中包含 SqlParameterCollection 中元素的数目。只读。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
SqlParameterCollection 中以整数表示的元素的数目。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.IsFixedSize 属性

SqlParameterCollection
.
.
::
.
IsFixedSize 属性
SqlParameterCollection 类

获取一个值，该值指示 SqlParameterCollection 是否具有固定大小。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property IsFixedSize As Boolean
    Get
public override bool IsFixedSize { get; }
public:
virtual property bool IsFixedSize {
    bool get () override;
}
abstract IsFixedSize : bool
override IsFixedSize : bool

属性值

类型： System Boolean
如果 SqlParameterCollection 具有固定大小，则返回 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.IsReadOnly 属性

SqlParameterCollection
.
.
::
.
IsReadOnly 属性
SqlParameterCollection 类

获取一个值，该值指示 SqlParameterCollection 是否为只读。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property IsReadOnly As Boolean
    Get
public override bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get () override;
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
如果 SqlParameterCollection 为只读，则返回 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.IsSynchronized 属性

SqlParameterCollection
.
.
::
.
IsSynchronized 属性
SqlParameterCollection 类

获取一个值，该值指示 SqlParameterCollection 是否是同步的。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property IsSynchronized As Boolean
    Get
public override bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get () override;
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果 SqlParameterCollection 同步，则返回 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Item 属性

SqlParameterCollection
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlParameterCollection 类

获取具有指定特性的 SqlParameter。

名称 说明
页首

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间


SqlParameterCollection ..::.Item 属性 (Int32)

SqlParameterCollection
.
.
::
.
Item 属性 (Int32)
SqlParameterCollection 类

获取指定索引处的 SqlParameter。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property Item ( _
    index As Integer _
) As SqlParameter
    Get
    Set
[BrowsableAttribute(false)]
public SqlParameter this[
    int index
] { get; set; }
[BrowsableAttribute(false)]
public:
property SqlParameter^ Item[int index] {
    SqlParameter^ get (int index);
    void set (int index, SqlParameter^ value);
}
[<BrowsableAttribute(false)>]
member Item : SqlParameter with get, set

参数

index
类型： System Int32
要检索的参数的从零开始的索引。

属性值

类型： System.Data.SqlClient SqlParameter
指定索引处的 SqlParameter。
异常 | 条件
IndexOutOfRangeException | 指定的索引不存在。

下面的示例演示了如何创建 SqlParameter 对象以向存储过程提供输入参数，该存储过程在输出参数中返回结果。该代码循环访问 SqlParameterCollection 中的项，并在控制台窗口中显示某些参数属性。此示例假定 SQL Server 2005 实例中的 AdventureWorks 示例数据库具有有效的连接字符串。 下面的示例演示了如何创建 SqlParameter 对象以向存储过程提供输入参数，该存储过程在输出参数中返回结果。该代码循环访问 SqlParameterCollection 中的项，并在控制台窗口中显示某些参数属性。此示例假定 SQL Server 2005 实例中的 AdventureWorks 示例数据库具有有效的连接字符串。 下面的示例演示了如何创建 SqlParameter 对象以向存储过程提供输入参数，该存储过程在输出参数中返回结果。该代码循环访问 SqlParameterCollection 中的项，并在控制台窗口中显示某些参数属性。此示例假定 SQL Server 2005 实例中的 AdventureWorks 示例数据库具有有效的连接字符串。

static private string CreateSqlParameters(int documentID)
{
    // Assumes GetConnectionString returns a valid connection string to the
    // AdventureWorks sample database on an instance of SQL Server 2005.
    using (SqlConnection connection =
               new SqlConnection(GetConnectionString()))
    {
        connection.Open();
        SqlCommand command = connection.CreateCommand();
        try
        {
            // Setup the command to execute the stored procedure.
            command.CommandText = "GetDocumentSummary";
            command.CommandType = CommandType.StoredProcedure;

            // Create the input parameter for the DocumentID.
            SqlParameter paramID =
                new SqlParameter("@DocumentID", SqlDbType.Int);
            paramID.Value = documentID;
            command.Parameters.Add(paramID);

            // Create the output parameter to retrieve the summary.
            SqlParameter paramSummary =
                new SqlParameter("@DocumentSummary", SqlDbType.NVarChar, -1);
            paramSummary.Direction = ParameterDirection.Output;
            command.Parameters.Add(paramSummary);

            // List the parameters and some of properties.
            SqlParameterCollection paramCollection = command.Parameters;
            string parameterList = "";
            for (int i = 0; i < paramCollection.Count; i++)
            {
                parameterList += String.Format("  {0}, {1}, {2}\n",
                    paramCollection[i], paramCollection[i].DbType,
                    paramCollection[i].Direction);
            }
            Console.WriteLine("Parameter Collection:\n" + parameterList);

            // Execute the stored procedure; retrieve
            // and display the output parameter value.
            command.ExecuteNonQuery();
            Console.WriteLine((String)(paramSummary.Value));
            return (String)(paramSummary.Value);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return null;
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Item 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.Item 属性 (String)

SqlParameterCollection
.
.
::
.
Item 属性 (String)
SqlParameterCollection 类

获取具有指定名称的 SqlParameter。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
<BrowsableAttribute(False)> _
Public Property Item ( _
    parameterName As String _
) As SqlParameter
    Get
    Set
[BrowsableAttribute(false)]
public SqlParameter this[
    string parameterName
] { get; set; }
[BrowsableAttribute(false)]
public:
property SqlParameter^ Item[String^ parameterName] {
    SqlParameter^ get (String^ parameterName);
    void set (String^ parameterName, SqlParameter^ value);
}
[<BrowsableAttribute(false)>]
member Item : SqlParameter with get, set

参数

parameterName
类型： System String
要检索的参数的名称。

属性值

类型： System.Data.SqlClient SqlParameter
具有指定名称的 SqlParameter。
异常 | 条件
IndexOutOfRangeException | 指定的 parameterName 无效。

parameterName 用于在基础 SqlParameterCollection 中查找索引值。如果 parameterName 无效，则将引发 IndexOutOfRangeException。 parameterName 用于在基础 SqlParameterCollection 中查找索引值。如果 parameterName 无效，则将引发 IndexOutOfRangeException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
Item 重载
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlParameterCollection ..::.SyncRoot 属性

SqlParameterCollection
.
.
::
.
SyncRoot 属性
SqlParameterCollection 类

获取可用于同步 SqlParameterCollection 访问的对象。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property SyncRoot As Object
    Get
public override Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () override;
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步对 SqlParameterCollection 的访问的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlParameterCollection 类
SqlParameterCollection 成员
System.Data.SqlClient 命名空间

其他资源

命令和参数 (ADO.NET)
DataAdapter 参数 (ADO.NET)
SQL Server 和 ADO.NET


SqlRowsCopiedEventArgs 类

SqlRowsCopiedEventArgs 类
成员

表示传递给 SqlRowsCopiedEventHandler 的参数集。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Class SqlRowsCopiedEventArgs _
    Inherits EventArgs
public class SqlRowsCopiedEventArgs : EventArgs
public ref class SqlRowsCopiedEventArgs : public EventArgs
type SqlRowsCopiedEventArgs =
    class
        inherit EventArgs
    end

System.Data.SqlClient System.Data.SqlClient..::.SqlRowsCopiedEventArgsSqlRowsCopiedEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowsCopiedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowsCopiedEventArgs 成员

SqlRowsCopiedEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowsCopiedEventArgs 类

表示传递给 SqlRowsCopiedEventHandler 的参数集。

SqlRowsCopiedEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlRowsCopiedEventArgs 类
System.Data.SqlClient 命名空间


SqlRowsCopiedEventArgs 构造函数

SqlRowsCopiedEventArgs 构造函数
SqlRowsCopiedEventArgs 类

创建 SqlRowsCopiedEventArgs 对象的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    rowsCopied As Long _
)
public SqlRowsCopiedEventArgs(
    long rowsCopied
)
public:
SqlRowsCopiedEventArgs(
    long long rowsCopied
)
new :
        rowsCopied:int64 -> SqlRowsCopiedEventArgs

参数

rowsCopied
类型： System Int64
一个 Int64，指示在当前的批量复制操作过程中复制的行数。

每当调用任一 SqlBulkCopy.WriteToServer 方法时，rowsCopied 参数中的值都会重置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowsCopiedEventArgs 类
SqlRowsCopiedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowsCopiedEventArgs 方法

SqlRowsCopiedEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowsCopiedEventArgs 类

SqlRowsCopiedEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlRowsCopiedEventArgs 类
System.Data.SqlClient 命名空间


SqlRowsCopiedEventArgs 属性

SqlRowsCopiedEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowsCopiedEventArgs 类

SqlRowsCopiedEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlRowsCopiedEventArgs 类
System.Data.SqlClient 命名空间


SqlRowsCopiedEventArgs ..::.Abort 属性

SqlRowsCopiedEventArgs
.
.
::
.
Abort 属性
SqlRowsCopiedEventArgs 类

获取或设置指示是否应中止批量复制操作的值。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Abort As Boolean
    Get
    Set
public bool Abort { get; set; }
public:
property bool Abort {
    bool get ();
    void set (bool value);
}
member Abort : bool with get, set

属性值

类型： System Boolean
如果应中止批量复制操作，则为 true；否则为 false。

使用 Abort 属性可以取消批量复制操作。将 Abort 设置为 true 会使批量复制操作中止。 使用 Abort 属性可以取消批量复制操作。将 Abort 设置为 true 会使批量复制操作中止。

如果从 SqlRowsCopied 调用 Close 方法，将生成异常，并且 SqlBulkCopy 对象状态不改变。

如果应用程序在 SqlCommand 构造函数中专门创建了一个 SqlTransaction 对象，则不会回滚事务。应用程序负责确定是否需要回滚操作，如果需要，则必须调用 SqlTransaction..::.Rollback 方法。如果应用程序没有创建事务，则将自动回滚对应于当前批处理的内部事务。但是，批量复制操作中与先前批处理有关的更改则被保留，因为与这些更改有关的事务已经提交。 如果应用程序在 SqlCommand 构造函数中专门创建了一个 SqlTransaction 对象，则不会回滚事务。应用程序负责确定是否需要回滚操作，如果需要，则必须调用 SqlTransaction..::.Rollback 方法。如果应用程序没有创建事务，则将自动回滚对应于当前批处理的内部事务。但是，批量复制操作中与先前批处理有关的更改则被保留，因为与这些更改有关的事务已经提交。 如果应用程序在 SqlCommand 构造函数中专门创建了一个 SqlTransaction 对象，则不会回滚事务。应用程序负责确定是否需要回滚操作，如果需要，则必须调用 SqlTransaction..::.Rollback 方法。如果应用程序没有创建事务，则将自动回滚对应于当前批处理的内部事务。但是，批量复制操作中与先前批处理有关的更改则被保留，因为与这些更改有关的事务已经提交。 如果应用程序在 SqlCommand 构造函数中专门创建了一个 SqlTransaction 对象，则不会回滚事务。应用程序负责确定是否需要回滚操作，如果需要，则必须调用 SqlTransaction..::.Rollback 方法。如果应用程序没有创建事务，则将自动回滚对应于当前批处理的内部事务。但是，批量复制操作中与先前批处理有关的更改则被保留，因为与这些更改有关的事务已经提交。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowsCopiedEventArgs 类
SqlRowsCopiedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowsCopiedEventArgs ..::.RowsCopied 属性

SqlRowsCopiedEventArgs
.
.
::
.
RowsCopied 属性
SqlRowsCopiedEventArgs 类

获取一个值，该值返回在当前批量复制操作期间复制的行数。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property RowsCopied As Long
    Get
public long RowsCopied { get; }
public:
property long long RowsCopied {
    long long get ();
}
member RowsCopied : int64

属性值

类型： System Int64
int，返回复制的行数。

每当调用任一 SqlBulkCopy.WriteToServer 方法时，RowsCopied 属性中的值都会重置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowsCopiedEventArgs 类
SqlRowsCopiedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowsCopiedEventHandler 委托

SqlRowsCopiedEventHandler 委托

表示处理 SqlBulkCopy 的 SqlRowsCopied 事件的方法。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Delegate Sub SqlRowsCopiedEventHandler ( _
    sender As Object, _
    e As SqlRowsCopiedEventArgs _
)
public delegate void SqlRowsCopiedEventHandler(
    Object sender,
    SqlRowsCopiedEventArgs e
)
public delegate void SqlRowsCopiedEventHandler(
    Object^ sender,
    SqlRowsCopiedEventArgs^ e
)
type SqlRowsCopiedEventHandler =
    delegate of
        sender:Object *
        e:SqlRowsCopiedEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.Data.SqlClient SqlRowsCopiedEventArgs
包含事件数据的 SqlRowsCopiedEventArgs 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlRowUpdatedEventArgs 类

SqlRowUpdatedEventArgs 类
成员

为 RowUpdated 事件提供数据。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlRowUpdatedEventArgs _
    Inherits RowUpdatedEventArgs
public sealed class SqlRowUpdatedEventArgs : RowUpdatedEventArgs
public ref class SqlRowUpdatedEventArgs sealed : public RowUpdatedEventArgs
[<SealedAttribute>]
type SqlRowUpdatedEventArgs =
    class
        inherit RowUpdatedEventArgs
    end

对行的 Update 完成时引发 RowUpdated 事件。

当使用 Update 时，每个更新的数据行都发生两个事件。执行顺序如下： 当使用 Update 时，每个更新的数据行都发生两个事件。执行顺序如下：

  1. 将 DataRow 中的值移至参数值。

  2. 引发 OnRowUpdating。

  3. 执行命令。

  4. 如果该命令设置为 FirstReturnedRecord，返回的第一项结果将放置在 DataRow 中。

  5. 如果存在输出参数，它们将被放在 DataRow 中。

  6. 引发 OnRowUpdated。

  7. 调用 AcceptChanges。

下面的示例显示如何使用 RowUpdating 和 RowUpdated 事件。

RowUpdating 事件返回下面的输出：

Event Arguments: (command=System.Data.SqlClient.SqlCommand commandType=2 status=0)

RowUpdated 事件返回下面的输出：

Event Arguments: (command=System.Data.SqlClient.SqlCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)

    ' handler for RowUpdating event
    Private Shared Sub OnRowUpdating(sender As Object, e As SqlRowUpdatingEventArgs)
        PrintEventArgs(e)
    End Sub

    ' handler for RowUpdated event
    Private Shared Sub OnRowUpdated(sender As Object, e As SqlRowUpdatedEventArgs)
        PrintEventArgs(e)
    End Sub

    'Entry point which delegates to C-style main Private Function
    Public Overloads Shared Sub Main()
        System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs())
    End Sub

    Overloads Public Shared Function Main(args() As String) As Integer
        Const connectionString As String = _
            "Integrated Security=SSPI;database=Northwind;server=MSSQL1"
        Const queryString As String = "SELECT * FROMProducts"

        ' create DataAdapter
        Dim adapter As New SqlDataAdapter(queryString, connectionString)
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter)

        ' Create and fill DataSet (select only first 5 rows)
        Dim dataSet As New DataSet()
        adapter.Fill(dataSet, 0, 5, "Table")

        ' Modify DataSet
        Dim table As DataTable = dataSet.Tables("Table")
        table.Rows(0)(1) = "new product"

        ' add handlers
        AddHandler adapter.RowUpdating, AddressOf OnRowUpdating
        AddHandler adapter.RowUpdated, AddressOf OnRowUpdated

        ' update, this operation fires two events
        '(RowUpdating/RowUpdated) per changed row
        adapter.Update(dataSet, "Table")

        ' remove handlers
        RemoveHandler adapter.RowUpdating, AddressOf OnRowUpdating
        RemoveHandler adapter.RowUpdated, AddressOf OnRowUpdated
        Return 0
    End Function

    Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatingEventArgs)
        Console.WriteLine("OnRowUpdating")
        Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
           " commandType=" & args.StatementType & " status=" & args.Status & ")")
    End Sub

    Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatedEventArgs)
        Console.WriteLine("OnRowUpdated")
        Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
           " commandType=" & args.StatementType & " recordsAffected=" & _
           args.RecordsAffected & " status=" & args.Status & ")")
    End Sub
End Class

// handler for RowUpdating event
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
    PrintEventArgs(e);
}

// handler for RowUpdated event
private static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
    PrintEventArgs(e);
}

public static int Main()
{
    const string connectionString =
              "Integrated Security=SSPI;database=Northwind;server=MSSQL1";
    const string queryString = "SELECT * FROMProducts";

    // create DataAdapter
    SqlDataAdapter adapter = new SqlDataAdapter(queryString, connectionString);
    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

    // Create and fill DataSet (select only first 5 rows)
    DataSet dataSet = new DataSet();
    adapter.Fill(dataSet, 0, 5, "Table");

    // Modify DataSet
    DataTable table = dataSet.Tables["Table"];
    table.Rows[0][1] = "new product";

    // add handlers
    adapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
    adapter.RowUpdated += new SqlRowUpdatedEventHandler( OnRowUpdated );

    // update, this operation fires two events
    // (RowUpdating/RowUpdated) per changed row
    adapter.Update(dataSet, "Table");

    // remove handlers
    adapter.RowUpdating -= new SqlRowUpdatingEventHandler( OnRowUpdating );
    adapter.RowUpdated -= new SqlRowUpdatedEventHandler( OnRowUpdated );
    return 0;
}

private static void PrintEventArgs(SqlRowUpdatingEventArgs args)
{
    Console.WriteLine("OnRowUpdating");
    Console.WriteLine("  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " status=" + args.Status + ")");
}

private static void PrintEventArgs(SqlRowUpdatedEventArgs args)
{
    Console.WriteLine("OnRowUpdated");
    Console.WriteLine( "  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " recordsAffected=" + args.RecordsAffected +
        " status=" + args.Status + ")");
}

System.Data.SqlClient System.Data.SqlClient..::.SqlRowUpdatedEventArgsSqlRowUpdatedEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowUpdatedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowUpdatedEventArgs 成员

SqlRowUpdatedEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatedEventArgs 类

为 RowUpdated 事件提供数据。

SqlRowUpdatedEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlRowUpdatedEventArgs 类
System.Data.SqlClient 命名空间


SqlRowUpdatedEventArgs 构造函数

SqlRowUpdatedEventArgs 构造函数
SqlRowUpdatedEventArgs 类

初始化 SqlRowUpdatedEventArgs 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    row As DataRow, _
    command As IDbCommand, _
    statementType As StatementType, _
    tableMapping As DataTableMapping _
)
public SqlRowUpdatedEventArgs(
    DataRow row,
    IDbCommand command,
    StatementType statementType,
    DataTableMapping tableMapping
)
public:
SqlRowUpdatedEventArgs(
    DataRow^ row,
    IDbCommand^ command,
    StatementType statementType,
    DataTableMapping^ tableMapping
)
new :
        row:DataRow *
        command:IDbCommand *
        statementType:StatementType *
        tableMapping:DataTableMapping -> SqlRowUpdatedEventArgs

参数

row
类型： System.Data DataRow
通过 Update 发送的 DataRow。
command
类型： System.Data IDbCommand
当调用 Update 时执行的 IDbCommand。
statementType
类型： System.Data StatementType
StatementType 值之一，该值指定所执行的查询的类型。
tableMapping
类型： System.Data.Common DataTableMapping
通过 Update 发送的 DataTableMapping。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowUpdatedEventArgs 类
SqlRowUpdatedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowUpdatedEventArgs 方法

SqlRowUpdatedEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatedEventArgs 类

SqlRowUpdatedEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlRowUpdatedEventArgs 类
System.Data.SqlClient 命名空间


SqlRowUpdatedEventArgs ..::.CopyToRows 方法

SqlRowUpdatedEventArgs
.
.
::
.
CopyToRows 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatedEventArgs 类

允许您访问在批处理更新操作期间已处理的行。

名称 说明
页首

有关更多信息，请参见 Handling Batch Update-related Events and Errors。

参考

SqlRowUpdatedEventArgs 类
SqlRowUpdatedEventArgs 成员
System.Data.SqlClient 命名空间

其他资源

在 DataTable 中处理数据


SqlRowUpdatedEventArgs 属性

SqlRowUpdatedEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatedEventArgs 类

SqlRowUpdatedEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlRowUpdatedEventArgs 类
System.Data.SqlClient 命名空间


SqlRowUpdatedEventArgs ..::.Command 属性

SqlRowUpdatedEventArgs
.
.
::
.
Command 属性
SqlRowUpdatedEventArgs 类

获取或设置当调用 Update 时执行的 SqlCommand。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Command As SqlCommand
    Get
public SqlCommand Command { get; }
public:
property SqlCommand^ Command {
    SqlCommand^ get ();
}
member Command : SqlCommand

属性值

类型： System.Data.SqlClient SqlCommand
当调用 Update 时执行的 SqlCommand。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowUpdatedEventArgs 类
SqlRowUpdatedEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowUpdatedEventHandler 委托

SqlRowUpdatedEventHandler 委托

表示将要处理 SqlDataAdapter 的 RowUpdated 事件的方法。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Delegate Sub SqlRowUpdatedEventHandler ( _
    sender As Object, _
    e As SqlRowUpdatedEventArgs _
)
public delegate void SqlRowUpdatedEventHandler(
    Object sender,
    SqlRowUpdatedEventArgs e
)
public delegate void SqlRowUpdatedEventHandler(
    Object^ sender,
    SqlRowUpdatedEventArgs^ e
)
type SqlRowUpdatedEventHandler =
    delegate of
        sender:Object *
        e:SqlRowUpdatedEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.Data.SqlClient SqlRowUpdatedEventArgs
包含事件数据的 SqlRowUpdatedEventArgs。

处理程序不需要执行任何操作，您的代码应避免产生异常或允许异常传播到调用方法。忽略到达调用方的任何异常。 处理程序不需要执行任何操作，您的代码应避免产生异常或允许异常传播到调用方法。忽略到达调用方的任何异常。

当创建 SqlRowUpdatedEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlRowUpdatedEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlRowUpdatedEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlRowUpdatedEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlRowUpdatingEventArgs 类

SqlRowUpdatingEventArgs 类
成员

为 RowUpdating 事件提供数据。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlRowUpdatingEventArgs _
    Inherits RowUpdatingEventArgs
public sealed class SqlRowUpdatingEventArgs : RowUpdatingEventArgs
public ref class SqlRowUpdatingEventArgs sealed : public RowUpdatingEventArgs
[<SealedAttribute>]
type SqlRowUpdatingEventArgs =
    class
        inherit RowUpdatingEventArgs
    end

在对行 Update 之前引发 RowUpdating 事件。

当使用 Update 时，每个更新的数据行都发生两个事件。执行顺序如下： 当使用 Update 时，每个更新的数据行都发生两个事件。执行顺序如下：

  1. 将 DataRow 中的值移至参数值。

  2. 引发 OnRowUpdating。

  3. 执行命令。

  4. 如果该命令设置为 FirstReturnedRecord，返回的第一项结果将放置在 DataRow 中。

  5. 如果存在输出参数，它们将被放在 DataRow 中。

  6. 引发 OnRowUpdated。

  7. 调用 AcceptChanges。

下面的示例显示如何使用 RowUpdating 和 RowUpdated 事件。

RowUpdating 事件返回下面的输出：

event args: (command=System.Data.SqlClient.SQLCommand commandType=2 status=0)

RowUpdated 事件返回下面的输出：

event args: (command=System.Data.SqlClient.SQLCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)

'Handler for RowUpdating event.
Private Shared Sub OnRowUpdating(sender As Object, e As SqlRowUpdatingEventArgs)
    PrintEventArgs(e)
End Sub

'Handler for RowUpdated event.
Private Shared Sub OnRowUpdated(sender As Object, e As SqlRowUpdatedEventArgs)
    PrintEventArgs(e)
End Sub

'Entry point which delegates to C-style main Private Function.
Public Overloads Shared Sub Main()
    System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs())
End Sub

Overloads Public Shared Function Main(args() As String) As Integer
    Const CONNECTION_STRING As String = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"
    Const SELECT_ALL As String = "select * from Products"

    'Create DataAdapter.
    Dim rAdapter As New SqlDataAdapter(SELECT_ALL, CONNECTION_STRING)

    'Create and fill DataSet (Select only first 5 rows.).
    Dim rDataSet As New DataSet()
    rAdapter.Fill(rDataSet, 0, 5, "Table")

    'Modify DataSet.
    Dim rTable As DataTable = rDataSet.Tables("Table")
    rTable.Rows(0)(1) = "new product"

    'Add handlers.
    AddHandler rAdapter.RowUpdating, AddressOf OnRowUpdating
    AddHandler rAdapter.RowUpdated, AddressOf OnRowUpdated

    'Update--this operation fires two events (RowUpdating and RowUpdated) for each changed row.
    rAdapter.Update(rDataSet, "Table")

    'Remove handlers.
    RemoveHandler rAdapter.RowUpdating, AddressOf OnRowUpdating
    RemoveHandler rAdapter.RowUpdated, AddressOf OnRowUpdated
    Return 0
End Function

Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatingEventArgs)
    Console.WriteLine("OnRowUpdating")
    Console.WriteLine("  event args: (" & _
                    " command=" & _
                    args.Command.CommandText & _
                    " commandType=" & _
                    args.StatementType & _
                    " status=" & _
                    args.Status & _
                    ")")
End Sub

Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatedEventArgs)
    Console.WriteLine("OnRowUpdated")
    Console.WriteLine("  event args: (" & _
                    " command=" & _
                    args.Command.CommandText & _
                    " commandType=" & _
                    args.StatementType & _
                    " recordsAffected=" & _
                    args.RecordsAffected & _
                    " status=" & _
                    args.Status & _
                    ")")
End Sub

// handler for RowUpdating event
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
    PrintEventArgs(e);
}

//Handler for RowUpdated event.
private static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
    PrintEventArgs(e);
}

public static int Main()
{
    const string CONNECTION_STRING = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer";
    const string SELECT_ALL = "select * from Products";

    //Create DataAdapter.
    SqlDataAdapter rAdapter    = new SqlDataAdapter(SELECT_ALL, CONNECTION_STRING);

    //Create and fill DataSet (Select only first 5 rows.).
    DataSet rDataSet = new DataSet();
    rAdapter.Fill(rDataSet, 0, 5, "Table");

    //Modify DataSet.
    DataTable rTable = rDataSet.Tables["Table"];
    rTable.Rows[0][1] = "new product";

    //Add handlers.
    rAdapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
    rAdapter.RowUpdated += new SqlRowUpdatedEventHandler( OnRowUpdated );

    //Update--this operation fires two events (RowUpdating and RowUpdated) for each changed row.
    rAdapter.Update(rDataSet, "Table");

    //Remove handlers.
    rAdapter.RowUpdating -= new SqlRowUpdatingEventHandler( OnRowUpdating );
    rAdapter.RowUpdated -= new SqlRowUpdatedEventHandler( OnRowUpdated );
    return 0;
}

private static void PrintEventArgs(SqlRowUpdatingEventArgs args)
{
    Console.WriteLine("OnRowUpdating");
    Console.WriteLine("  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " status=" + args.Status + ")");
}

private static void PrintEventArgs(SqlRowUpdatedEventArgs args)
{
    Console.WriteLine("OnRowUpdated");
    Console.WriteLine("  event args: ("+
        " command=" + args.Command +
        " commandType=" + args.StatementType +
        " recordsAffected=" + args.RecordsAffected +
        " status=" + args.Status + ")");
}

System.Data.SqlClient System.Data.SqlClient..::.SqlRowUpdatingEventArgsSqlRowUpdatingEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowUpdatingEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowUpdatingEventArgs 成员

SqlRowUpdatingEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatingEventArgs 类

为 RowUpdating 事件提供数据。

SqlRowUpdatingEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlRowUpdatingEventArgs 类
System.Data.SqlClient 命名空间


SqlRowUpdatingEventArgs 构造函数

SqlRowUpdatingEventArgs 构造函数
SqlRowUpdatingEventArgs 类

初始化 SqlRowUpdatingEventArgs 类的新实例。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub New ( _
    row As DataRow, _
    command As IDbCommand, _
    statementType As StatementType, _
    tableMapping As DataTableMapping _
)
public SqlRowUpdatingEventArgs(
    DataRow row,
    IDbCommand command,
    StatementType statementType,
    DataTableMapping tableMapping
)
public:
SqlRowUpdatingEventArgs(
    DataRow^ row,
    IDbCommand^ command,
    StatementType statementType,
    DataTableMapping^ tableMapping
)
new :
        row:DataRow *
        command:IDbCommand *
        statementType:StatementType *
        tableMapping:DataTableMapping -> SqlRowUpdatingEventArgs

参数

row
类型： System.Data DataRow
要进行 Update 的 DataRow。
command
类型： System.Data IDbCommand
要在 Update 过程中执行的 IDbCommand。
statementType
类型： System.Data StatementType
StatementType 值之一，该值指定所执行的查询的类型。
tableMapping
类型： System.Data.Common DataTableMapping
通过 Update 发送的 DataTableMapping。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowUpdatingEventArgs 类
SqlRowUpdatingEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowUpdatingEventArgs 方法

SqlRowUpdatingEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatingEventArgs 类

SqlRowUpdatingEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlRowUpdatingEventArgs 类
System.Data.SqlClient 命名空间


SqlRowUpdatingEventArgs 属性

SqlRowUpdatingEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlRowUpdatingEventArgs 类

SqlRowUpdatingEventArgs 类型公开以下成员。

名称 说明
页首

参考

SqlRowUpdatingEventArgs 类
System.Data.SqlClient 命名空间


SqlRowUpdatingEventArgs ..::.Command 属性

SqlRowUpdatingEventArgs
.
.
::
.
Command 属性
SqlRowUpdatingEventArgs 类

获取或设置进行 Update 时执行的 SqlCommand。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Property Command As SqlCommand
    Get
    Set
public SqlCommand Command { get; set; }
public:
property SqlCommand^ Command {
    SqlCommand^ get ();
    void set (SqlCommand^ value);
}
member Command : SqlCommand with get, set

属性值

类型： System.Data.SqlClient SqlCommand
进行 Update 时要执行的 SqlCommand。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlRowUpdatingEventArgs 类
SqlRowUpdatingEventArgs 成员
System.Data.SqlClient 命名空间


SqlRowUpdatingEventHandler 委托

SqlRowUpdatingEventHandler 委托

表示将要处理 SqlDataAdapter 的 RowUpdating 事件的方法。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Delegate Sub SqlRowUpdatingEventHandler ( _
    sender As Object, _
    e As SqlRowUpdatingEventArgs _
)
public delegate void SqlRowUpdatingEventHandler(
    Object sender,
    SqlRowUpdatingEventArgs e
)
public delegate void SqlRowUpdatingEventHandler(
    Object^ sender,
    SqlRowUpdatingEventArgs^ e
)
type SqlRowUpdatingEventHandler =
    delegate of
        sender:Object *
        e:SqlRowUpdatingEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.Data.SqlClient SqlRowUpdatingEventArgs
包含事件数据的 SqlRowUpdatingEventArgs。

处理程序不需要执行任何操作，您的代码应避免产生异常或允许异常传播到调用方法。忽略到达调用方的任何异常。 处理程序不需要执行任何操作，您的代码应避免产生异常或允许异常传播到调用方法。忽略到达调用方的任何异常。

处理程序可能使用 SqlRowUpdatingEventArgs 来影响更新的处理。例如，处理程序可能会选择跳过对当前行的更新或跳过对所有剩余行的更新。请注意，这些行按照它们从数据源接收的顺序来进行更新。 处理程序可能使用 SqlRowUpdatingEventArgs 来影响更新的处理。例如，处理程序可能会选择跳过对当前行的更新或跳过对所有剩余行的更新。请注意，这些行按照它们从数据源接收的顺序来进行更新。 处理程序可能使用 SqlRowUpdatingEventArgs 来影响更新的处理。例如，处理程序可能会选择跳过对当前行的更新或跳过对所有剩余行的更新。请注意，这些行按照它们从数据源接收的顺序来进行更新。

当创建 SqlRowUpdatingEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlRowUpdatingEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlRowUpdatingEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlRowUpdatingEventArgs 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.Data.SqlClient 命名空间


SqlTransaction 类

SqlTransaction 类
成员

表示要在 SQL Server 数据库中处理的 Transact-SQL 事务。无法继承此类。 表示要在 SQL Server 数据库中处理的 Transact-SQL 事务。无法继承此类。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public NotInheritable Class SqlTransaction _
    Inherits DbTransaction
public sealed class SqlTransaction : DbTransaction
public ref class SqlTransaction sealed : public DbTransaction
[<SealedAttribute>]
type SqlTransaction =
    class
        inherit DbTransaction
    end

应用程序通过在 SqlConnection 对象上调用 BeginTransaction 来创建 SqlTransaction 对象。对 SqlTransaction 对象执行与该事务关联的所有后续操作（例如提交或中止该事务）。 应用程序通过在 SqlConnection 对象上调用 BeginTransaction 来创建 SqlTransaction 对象。对 SqlTransaction 对象执行与该事务关联的所有后续操作（例如提交或中止该事务）。

说明 说明

在提交或回滚 SqlTransaction 时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Commit 和 Rollback 都会生成 InvalidOperationException。 在提交或回滚 SqlTransaction 时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Commit 和 Rollback 都会生成 InvalidOperationException。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction("SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

System.Data.SqlClient System.Data.SqlClient..::.SqlTransactionSqlTransaction
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 成员
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


SqlTransaction 成员

SqlTransaction 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlTransaction 类

表示要在 SQL Server 数据库中处理的 Transact-SQL 事务。无法继承此类。 表示要在 SQL Server 数据库中处理的 Transact-SQL 事务。无法继承此类。

SqlTransaction 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SqlTransaction 类
System.Data.SqlClient 命名空间


SqlTransaction 方法

SqlTransaction 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlTransaction 类

SqlTransaction 类型公开以下成员。

名称 说明
页首

参考

SqlTransaction 类
System.Data.SqlClient 命名空间


SqlTransaction ..::.Commit 方法

SqlTransaction
.
.
::
.
Commit 方法
SqlTransaction 类

提交数据库事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Commit
public override void Commit()
public:
virtual void Commit() override
abstract Commit : unit -> unit
override Commit : unit -> unit

实现

异常 | 条件
Exception | 尝试提交事务时出错。
InvalidOperationException | 事务已提交或回滚。 - 或 - 连接已断开。

Commit 方法等效于 Transact-SQL COMMIT TRANSACTION 语句。事务一旦提交就不能回滚，因为所有修改都已永久成为数据库的一部分。有关更多信息，请参见“SQL Server 联机丛书”。 Commit 方法等效于 Transact-SQL COMMIT TRANSACTION 语句。事务一旦提交就不能回滚，因为所有修改都已永久成为数据库的一部分。有关更多信息，请参见“SQL Server 联机丛书”。 Commit 方法等效于 Transact-SQL COMMIT TRANSACTION 语句。事务一旦提交就不能回滚，因为所有修改都已永久成为数据库的一部分。有关更多信息，请参见“SQL Server 联机丛书”。

说明 说明

在提交或回滚 SqlTransaction 时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Commit 和 Rollback 都会生成 InvalidOperationException。 在提交或回滚 SqlTransaction 时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Commit 和 Rollback 都会生成 InvalidOperationException。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 Commit、BeginTransaction 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 Commit、BeginTransaction 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 Commit、BeginTransaction 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 Commit、BeginTransaction 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction("SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


SqlTransaction ..::.Dispose 方法

SqlTransaction
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlTransaction 类

释放由 DbTransaction 占用的非托管资源，还可以另外再释放托管资源。

名称 说明
页首

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间

其他资源

事务和并发 (ADO.NET)


SqlTransaction ..::.MemberwiseClone 方法

SqlTransaction
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlTransaction 类

名称 说明
页首

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间


SqlTransaction ..::.Rollback 方法

SqlTransaction
.
.
::
.
Rollback 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlTransaction 类

从挂起状态回滚事务。

名称 说明
页首

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间


SqlTransaction ..::.Rollback 方法

SqlTransaction
.
.
::
.
Rollback 方法
SqlTransaction 类

从挂起状态回滚事务。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides Sub Rollback
public override void Rollback()
public:
virtual void Rollback() override
abstract Rollback : unit -> unit
override Rollback : unit -> unit

实现

异常 | 条件
Exception | 尝试提交事务时出错。
InvalidOperationException | 事务已提交或回滚。 - 或 - 连接已断开。

Rollback 方法等效于 Transact-SQL ROLLBACK TRANSACTION 语句。有关更多信息，请参见“SQL Server 联机丛书”。 Rollback 方法等效于 Transact-SQL ROLLBACK TRANSACTION 语句。有关更多信息，请参见“SQL Server 联机丛书”。

只能从挂起状态（在调用 BeginTransaction 之后，但在调用 Commit 之前）回滚事务。如果事务在调用 Commit 之前被释放或调用了 Rollback，事务就会进行回滚。 只能从挂起状态（在调用 BeginTransaction 之后，但在调用 Commit 之前）回滚事务。如果事务在调用 Commit 之前被释放或调用了 Rollback，事务就会进行回滚。

说明 说明

在回滚事务时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Rollback 会生成 InvalidOperationException。 在回滚事务时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Rollback 会生成 InvalidOperationException。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction("SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 类
SqlTransaction 成员
Rollback 重载
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


SqlTransaction ..::.Rollback 方法 (String)

SqlTransaction
.
.
::
.
Rollback 方法 (String)
SqlTransaction 类

从挂起状态回滚事务，并指定事务或保存点名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Rollback ( _
    transactionName As String _
)
public void Rollback(
    string transactionName
)
public:
void Rollback(
    String^ transactionName
)
member Rollback :
        transactionName:string -> unit

参数

transactionName
类型： System String
要回滚的事务的名称，或要回滚到的保存点的名称。
异常 | 条件
ArgumentException | 未指定事务名称。
InvalidOperationException | 事务已提交或回滚。 - 或 - 连接已断开。

Rollback 方法等效于 Transact-SQL ROLLBACK TRANSACTION 语句。有关更多信息，请参见《SQL Server 联机丛书》中的“显式事务”和“事务保存点”。 Rollback 方法等效于 Transact-SQL ROLLBACK TRANSACTION 语句。有关更多信息，请参见《SQL Server 联机丛书》中的“显式事务”和“事务保存点”。

只能从挂起状态（在调用 BeginTransaction 之后，但在调用 Commit 之前）回滚事务。如果在调用 Commit 之前事务已被释放或调用了 Rollback，事务就会进行回滚。 只能从挂起状态（在调用 BeginTransaction 之后，但在调用 Commit 之前）回滚事务。如果在调用 Commit 之前事务已被释放或调用了 Rollback，事务就会进行回滚。

说明 说明

在回滚事务时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Rollback 会生成 InvalidOperationException。 在回滚事务时，应始终使用 Try/Catch 进行异常处理。如果连接终止或事务已在服务器上回滚，则 Rollback 会生成 InvalidOperationException。

有关 SQL Server 事务的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Explicit Transactions”（显式事务）和“Coding Efficient Transactions”（对有效事务进行编码）。

下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。 下面的示例创建一个 SqlConnection 和一个 SqlTransaction。此示例还演示如何使用 BeginTransaction、Commit 和 Rollback 等方法。出现任何错误时事务都会回滚。Try/Catch 错误处理用于处理尝试提交或回滚事务时的所有错误。

Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As SqlCommand = connection.CreateCommand()
        Dim transaction As SqlTransaction

        ' Start a local transaction
        transaction = connection.BeginTransaction("SampleTransaction")

        ' Must assign both transaction object and connection
        ' to Command object for a pending local transaction.
        command.Connection = connection
        command.Transaction = transaction

        Try
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
            command.ExecuteNonQuery()
            command.CommandText = _
              "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"

            command.ExecuteNonQuery()

            ' Attempt to commit the transaction.
            transaction.Commit()
            Console.WriteLine("Both records are written to database.")

        Catch ex As Exception
            Console.WriteLine("Exception Type: {0}", ex.GetType())
            Console.WriteLine("  Message: {0}", ex.Message)

            ' Attempt to roll back the transaction.
            Try
                transaction.Rollback()

            Catch ex2 As Exception
                ' This catch block will handle any errors that may have occurred
                ' on the server that would cause the rollback to fail, such as
                ' a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
                Console.WriteLine("  Message: {0}", ex2.Message)
            End Try
        End Try
    End Using
End Sub

private static void ExecuteSqlTransaction(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 类
SqlTransaction 成员
Rollback 重载
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


SqlTransaction ..::.Save 方法

SqlTransaction
.
.
::
.
Save 方法
SqlTransaction 类

在事务中创建保存点（它可用于回滚事务的一部分），并指定保存点名称。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Sub Save ( _
    savePointName As String _
)
public void Save(
    string savePointName
)
public:
void Save(
    String^ savePointName
)
member Save :
        savePointName:string -> unit

参数

savePointName
类型： System String
保存点的名称。
异常 | 条件
Exception | 尝试提交事务时出错。
InvalidOperationException | 事务已提交或回滚。 - 或 - 连接已断开。

Save 方法等效于 Transact-SQL SAVE TRANSACTION 语句。

savePoint 参数中使用的值可以与 BeginTransaction 方法的某些实现的 transactionName 参数中所使用的值相同。

保存点提供了回滚部分事务的机制。使用 Save 方法创建一个保存点，然后调用 Rollback 方法以回滚到保存点，而不是回滚到事务的起点。 保存点提供了回滚部分事务的机制。使用 Save 方法创建一个保存点，然后调用 Rollback 方法以回滚到保存点，而不是回滚到事务的起点。

有关使用保存点的更多信息，请参见《SQL Server 2000 联机丛书》中的“事务保存点”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


SqlTransaction 属性

SqlTransaction 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SqlTransaction 类

SqlTransaction 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SqlTransaction 类
System.Data.SqlClient 命名空间


SqlTransaction ..::.Connection 属性

SqlTransaction
.
.
::
.
Connection 属性
SqlTransaction 类

获取与该事务关联的 SqlConnection 对象，或者如果该事务不再有效，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public ReadOnly Property Connection As SqlConnection
    Get
public SqlConnection Connection { get; }
public:
property SqlConnection^ Connection {
    SqlConnection^ get ();
}
member Connection : SqlConnection

属性值

类型： System.Data.SqlClient SqlConnection
与该事务关联的 SqlConnection 对象。

一个应用程序可以有多个数据库连接，每个连接都有零或多个事务。此属性使您能够确定与 BeginTransaction 所创建的特定事务关联的连接对象。 一个应用程序可以有多个数据库连接，每个连接都有零或多个事务。此属性使您能够确定与 BeginTransaction 所创建的特定事务关联的连接对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


SqlTransaction ..::.IsolationLevel 属性

SqlTransaction
.
.
::
.
IsolationLevel 属性
SqlTransaction 类

指定该事务的 IsolationLevel。

命名空间： System.Data.SqlClient
程序集： System.Data（在 System.Data.dll 中）
Public Overrides ReadOnly Property IsolationLevel As IsolationLevel
    Get
public override IsolationLevel IsolationLevel { get; }
public:
virtual property IsolationLevel IsolationLevel {
    IsolationLevel get () override;
}
abstract IsolationLevel : IsolationLevel
override IsolationLevel : IsolationLevel

属性值

类型： System.Data IsolationLevel
该事务的 IsolationLevel。默认为 ReadCommitted。 该事务的 IsolationLevel。默认为 ReadCommitted。

实现

不支持并行事务。因此，IsolationLevel 应用于整个事务。 不支持并行事务。因此，IsolationLevel 应用于整个事务。

有关 SQL Server 隔离级别的更多信息，请参见 SQL Server 2005 Books Online（《SQL Server 2005 联机丛书》）中的“Isolation Levels in the Database Engine”（数据库引擎中的隔离级别）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

SqlTransaction 类
SqlTransaction 成员
System.Data.SqlClient 命名空间

其他资源

本地事务 (ADO.NET)


System.IO 命名空间

System.IO 命名空间

System.IO 命名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型。

 | 类 | 说明
公共类 | BinaryReader | 用特定的编码将基元数据类型读作二进制值。
公共类 | BinaryWriter | 以二进制形式将基元类型写入流，并支持用特定的编码写入字符串。
公共类 | BufferedStream | 给另一流上的读写操作添加一个缓冲层。无法继承此类。 给另一流上的读写操作添加一个缓冲层。无法继承此类。
公共类 | Directory | 公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。 公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。
公共类 | DirectoryInfo | 公开用于创建、移动和枚举目录和子目录的实例方法。此类不能被继承。 公开用于创建、移动和枚举目录和子目录的实例方法。此类不能被继承。
公共类 | DirectoryNotFoundException | 当找不到文件或目录的一部分时所引发的异常。
公共类 | DriveInfo | 提供对有关驱动器的信息的访问。
公共类 | DriveNotFoundException | 当尝试访问的驱动器或共享不可用时引发的异常。
公共类 | EndOfStreamException | 读操作尝试超出流的末尾时引发的异常。
公共类 | ErrorEventArgs | 为 Error 事件提供数据。
公共类 | File | 提供用于创建、复制、删除、移动和打开文件的静态方法，并协助创建 FileStream 对象。
公共类 | FileFormatException | 应该符合一定文件格式规范的输入文件或数据流的格式不正确时引发的异常。
公共类 | FileInfo | 提供创建、复制、删除、移动和打开文件的实例方法，并且帮助创建 FileStream 对象。此类不能被继承。 提供创建、复制、删除、移动和打开文件的实例方法，并且帮助创建 FileStream 对象。此类不能被继承。
公共类 | FileLoadException | 当找到托管程序集却不能加载它时引发的异常。
公共类 | FileNotFoundException | 尝试访问磁盘上不存在的文件失败时引发的异常。
公共类 | FileStream | 公开以文件为主的 Stream，既支持同步读写操作，也支持异步读写操作。
公共类 | FileSystemEventArgs | 提供目录事件的数据：Changed、Created、Deleted。
公共类 | FileSystemInfo | 为 FileInfo 和 DirectoryInfo 对象提供基类。
公共类 | FileSystemWatcher | 侦听文件系统更改通知，并在目录或目录中的文件发生更改时引发事件。
公共类 | InternalBufferOverflowException | 内部缓冲区溢出时引发的异常。
公共类 | InvalidDataException | 在数据流的格式无效时引发的异常。
公共类 | IODescriptionAttribute | 设置可视化设计器在引用事件、扩展程序或属性时可显示的说明。
公共类 | IOException | 发生 I/O 错误时引发的异常。
公共类 | MemoryStream | 创建其支持存储区为内存的流。
公共类 | Path | 对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。 对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。
公共类 | PathTooLongException | 当路径名或文件名长度超过系统定义的最大长度时引发的异常。
公共类 | PipeException | 当命名管道内出现错误时引发。
公共类 | RenamedEventArgs | 为 Renamed 事件提供数据。
公共类 | Stream | 提供字节序列的一般视图。
公共类 | StreamReader | 实现一个 TextReader，使其以一种特定的编码从字节流中读取字符。
公共类 | StreamWriter | 实现一个 TextWriter，使其以一种特定的编码向流中写入字符。
公共类 | StringReader | 实现从字符串进行读取的 TextReader。
公共类 | StringWriter | 实现一个用于将信息写入字符串的 TextWriter。该信息存储在基础 StringBuilder 中。 实现一个用于将信息写入字符串的 TextWriter。该信息存储在基础 StringBuilder 中。
公共类 | TextReader | 表示可读取连续字符系列的读取器。
公共类 | TextWriter | 表示可以编写一个有序字符系列的编写器。该类为抽象类。 表示可以编写一个有序字符系列的编写器。该类为抽象类。
公共类 | UnmanagedMemoryAccessor | 提供从托管代码随机访问非托管内存块的能力。
公共类 | UnmanagedMemoryStream | 提供从托管代码访问非托管内存块的能力。
 | 结构 | 说明
公共结构 | WaitForChangedResult | 包含关于所发生更改的信息。
 | 委托 | 说明
公共委托 | ErrorEventHandler | 表示将处理 FileSystemWatcher 对象的 Error 事件的方法。
公共委托 | FileSystemEventHandler | 表示将处理 FileSystemWatcher 类的 Changed、Created 或 Deleted 事件的方法。
公共委托 | RenamedEventHandler | 表示将处理 FileSystemWatcher 类的 Renamed 事件的方法。
 | 枚举 | 说明
公共枚举 | DriveType | 定义驱动器类型常数，包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。
公共枚举 | FileAccess | 定义用于控制对文件的读访问、写访问或读/写访问的常数。
公共枚举 | FileAttributes | 提供文件和目录的特性。
公共枚举 | FileMode | 指定操作系统打开文件的方式。
公共枚举 | FileOptions | 表示用于创建 FileStream 对象的附加选项。
公共枚举 | FileShare | 包含用于控制其他 FileStream 对象对同一文件可以具有的访问类型的常数。
公共枚举 | HandleInheritability | 指定基础句柄是否已由子进程继承。
公共枚举 | NotifyFilters | 指定要在文件或文件夹中监视的更改。
公共枚举 | SearchOption | 指定是搜索当前目录，还是搜索当前目录及其所有子目录。
公共枚举 | SeekOrigin | 提供表示流中的参考点以供进行查找的字段。
公共枚举 | WatcherChangeTypes | 可能会发生的文件或目录更改。


BinaryReader 类

BinaryReader 类
成员

用特定的编码将基元数据类型读作二进制值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(True)> _
Public Class BinaryReader _
    Implements IDisposable
[ComVisibleAttribute(true)]
public class BinaryReader : IDisposable
[ComVisibleAttribute(true)]
public ref class BinaryReader : IDisposable
[<ComVisibleAttribute(true)>]
type BinaryReader =
    class
        interface IDisposable
    end

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例阐释了如何在文件中存储应用程序设置以及如何检索这些设置。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Security.Permissions

' Store and retrieve application settings.
Public Class AppSettings

    Const fileName As String = "AppSettings#@@#.dat"
    Dim aspRatio As Single
    Dim lkupDir As String
    Dim saveTime As Integer
    Dim statusBar As Boolean

    Sub New()

        ' Create default application settings.
        aspRatio   = 1.3333
        lkupDir     = "C:\AppDirectory"
        saveTime  = 30
        statusBar = False

        If File.Exists(fileName) Then
            Dim binReader As New BinaryReader( _
                File.Open(fileName, FileMode.Open))
            Try

                ' If the file is not empty,
                ' read the application settings.
                ' First read 4 bytes into a buffer to
                ' determine if the file is empty.
                Dim testArray As Byte() = {0,0,0,0}
                Dim count As Integer = binReader.Read(testArray, 0, 3)

                If count <> 0 Then

                    ' Reset the position in the stream to zero.
                    binReader.BaseStream.Seek(0, SeekOrigin.Begin)

                    aspRatio   = binReader.ReadSingle()
                    lkupDir     = binReader.ReadString()
                    saveTime  = binReader.ReadInt32()
                    statusBar = binReader.ReadBoolean()
                    Return
                End If

            ' If the end of the stream is reached before reading
            ' the four data values, ignore the error and use the
            ' default settings for the remaining values.
            Catch ex As EndOfStreamException
                Console.WriteLine("{0} caught and ignored. " & _
                    "Using default values.", ex.GetType().Name)
            Finally
                binReader.Close()
            End Try
        End If

    End Sub

    ' Create a file and store the application settings.
    Sub Close()
        Dim binWriter As New BinaryWriter( _
            File.Open(fileName, FileMode.Create))
        Try
            binWriter.Write(aspRatio)
            binWriter.Write(lkupDir)
            binWriter.Write(saveTime)
            binWriter.Write(statusBar)
        Finally
            binWriter.Close()
        End Try
    End Sub

    Property AspectRatio As Single
        Get
            Return aspRatio
        End Get
        Set
            aspRatio = Value
        End Set
    End Property

    Property LookupDir As String
        Get
            Return lkupDir
        End Get
        Set
            lkupDir = Value
        End Set
    End Property

    Property AutoSaveTime As Integer
        Get
            Return saveTime
        End Get
        Set
            saveTime = Value
        End Set
    End Property

    Property ShowStatusBar As Boolean
        Get
            Return statusBar
        End Get
        Set
            statusBar = Value
        End Set
    End Property

End Class

Public Class Test
    Shared Sub Main()
        ' Load application settings.
        Dim appSettings As New AppSettings()
        Console.WriteLine("App settings:" & vbcrLf & "Aspect " & _
            "Ratio: {0}, Lookup directory: {1}," & vbcrLf & "Auto " & _
            "save time: {2} minutes, Show status bar: {3}" & vbCrLf, _
            New Object(3){appSettings.AspectRatio.ToString(), _
            appSettings.LookupDir, _
            appSettings.AutoSaveTime.ToString(), _
            appSettings.ShowStatusBar.ToString()})

        ' Change the settings.
        appSettings.AspectRatio   = 1.250
        appSettings.LookupDir     = "C:\Temp"
        appSettings.AutoSaveTime  = 10
        appSettings.ShowStatusBar = True

        ' Save the new settings.
        appSettings.Close()

    End Sub
End Class

using System;
using System.IO;
using System.Security.Permissions;

// Store and retrieve application settings.
class AppSettings
{
    const string fileName = "AppSettings#@@#.dat";
    float  aspectRatio;
    string lookupDir;
    int    autoSaveTime;
    bool   showStatusBar;

    public AppSettings()
    {
        // Create default application settings.
        aspectRatio   = 1.3333F;
        lookupDir     = @"C:\AppDirectory";
        autoSaveTime  = 30;
        showStatusBar = false;

        if(File.Exists(fileName))
        {
            BinaryReader binReader =
                new BinaryReader(File.Open(fileName, FileMode.Open));
            try
            {
                // If the file is not empty,
                // read the application settings.
                // First read 4 bytes into a buffer to
                // determine if the file is empty.
                byte[] testArray = new byte[3];
                int count = binReader.Read(testArray, 0, 3);

                if (count != 0)
                {
                    // Reset the position in the stream to zero.
                    binReader.BaseStream.Seek(0, SeekOrigin.Begin);

                    aspectRatio   = binReader.ReadSingle();
                    lookupDir     = binReader.ReadString();
                    autoSaveTime  = binReader.ReadInt32();
                    showStatusBar = binReader.ReadBoolean();
                }
            }

            // If the end of the stream is reached before reading
            // the four data values, ignore the error and use the
            // default settings for the remaining values.
            catch(EndOfStreamException e)
            {
                Console.WriteLine("{0} caught and ignored. " +
                    "Using default values.", e.GetType().Name);
            }
            finally
            {
                binReader.Close();
            }
        }

    }

    // Create a file and store the application settings.
    public void Close()
    {
        using(BinaryWriter binWriter =
            new BinaryWriter(File.Open(fileName, FileMode.Create)))
        {
            binWriter.Write(aspectRatio);
            binWriter.Write(lookupDir);
            binWriter.Write(autoSaveTime);
            binWriter.Write(showStatusBar);
        }
    }

    public float AspectRatio
    {
        get{ return aspectRatio; }
        set{ aspectRatio = value; }
    }

    public string LookupDir
    {
        get{ return lookupDir; }
        set{ lookupDir = value; }
    }

    public int AutoSaveTime
    {
        get{ return autoSaveTime; }
        set{ autoSaveTime = value; }
    }

    public bool ShowStatusBar
    {
        get{ return showStatusBar; }
        set{ showStatusBar = value; }
    }
}

class Test
{
    static void Main()
    {
        // Load application settings.
        AppSettings appSettings = new AppSettings();
        Console.WriteLine("App settings:\nAspect Ratio: {0}, " +
            "Lookup directory: {1},\nAuto save time: {2} minutes, " +
            "Show status bar: {3}\n",
            new Object[4]{appSettings.AspectRatio.ToString(),
            appSettings.LookupDir, appSettings.AutoSaveTime.ToString(),
            appSettings.ShowStatusBar.ToString()});

        // Change the settings.
        appSettings.AspectRatio   = 1.250F;
        appSettings.LookupDir     = @"C:\Temp";
        appSettings.AutoSaveTime  = 10;
        appSettings.ShowStatusBar = true;

        // Save the new settings.
        appSettings.Close();
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::Permissions;

// Store and retrieve application settings.
ref class AppSettings
{
private:
   static String^ fileName =  "AppSettings#@@#.dat";
   float aspectRatio;
   String^ lookupDir;
   int autoSaveTime;
   Boolean showStatusBar;

public:

   property float AspectRatio
   {
      float get()
      {
         return aspectRatio;
      }

      void set( float value )
      {
         aspectRatio = value;
      }

   }

   property String^ LookupDir
   {
      String^ get()
      {
         return lookupDir;
      }

      void set( String^ value )
      {
         lookupDir = value;
      }

   }

   property int AutoSaveTime
   {
      int get()
      {
         return autoSaveTime;
      }

      void set( int value )
      {
         autoSaveTime = value;
      }

   }

   property Boolean ShowStatusBar
   {
      Boolean get()
      {
         return showStatusBar;
      }

      void set( Boolean value )
      {
         showStatusBar = value;
      }

   }
   AppSettings()
   {

      // Create default application settings.
      aspectRatio = 1.3333F;
      lookupDir =  "C:\\AppDirectory";
      autoSaveTime = 30;
      showStatusBar = false;
      if ( File::Exists( fileName ) )
      {

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

      }
   }

   // Create a file and store the application settings.
   void Close()
   {

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

   }

};

int main()
{

   // Load application settings.
   AppSettings^ appSettings = gcnew AppSettings;
   array<Object^>^someObject = {appSettings->AspectRatio.ToString(),appSettings->LookupDir,appSettings->AutoSaveTime.ToString(),appSettings->ShowStatusBar.ToString()};
   Console::WriteLine( "App settings:\nAspect Ratio: {0}, "
   "Lookup directory: {1},\nAuto save time: {2} minutes, "
   "Show status bar: {3}\n", someObject );

   // Change the settings.
   appSettings->AspectRatio = 1.250F;
   appSettings->LookupDir =  "C:\\Temp";
   appSettings->AutoSaveTime = 10;
   appSettings->ShowStatusBar = true;

   // Save the new settings.
   appSettings->Close();
}

System.IO System.IO..::.BinaryReaderBinaryReader
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


BinaryReader 成员

BinaryReader 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryReader 类

用特定的编码将基元数据类型读作二进制值。

BinaryReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

BinaryReader 类
System.IO 命名空间


BinaryReader 构造函数

BinaryReader 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryReader 类

初始化 BinaryReader 类的新实例。

名称 说明
页首

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间


BinaryReader 构造函数 (Stream)

BinaryReader 构造函数 (Stream)
BinaryReader 类

基于所提供的流，用 UTF8Encoding 初始化 BinaryReader 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    input As Stream _
)
public BinaryReader(
    Stream input
)
public:
BinaryReader(
    Stream^ input
)
new :
        input:Stream -> BinaryReader

参数

input
类型： System.IO Stream
流。
异常 | 条件
ArgumentException | 此流不支持读取，它为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或已关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryReader 类提供的更大示例。

Dim binReader As New BinaryReader( _
    File.Open(fileName, FileMode.Open))
Try

    ' If the file is not empty,
    ' read the application settings.
    ' First read 4 bytes into a buffer to
    ' determine if the file is empty.
    Dim testArray As Byte() = {0,0,0,0}
    Dim count As Integer = binReader.Read(testArray, 0, 3)

    If count <> 0 Then

        ' Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin)

        aspRatio   = binReader.ReadSingle()
        lkupDir     = binReader.ReadString()
        saveTime  = binReader.ReadInt32()
        statusBar = binReader.ReadBoolean()
        Return
    End If

' If the end of the stream is reached before reading
' the four data values, ignore the error and use the
' default settings for the remaining values.
Catch ex As EndOfStreamException
    Console.WriteLine("{0} caught and ignored. " & _
        "Using default values.", ex.GetType().Name)
Finally
    binReader.Close()
End Try

BinaryReader binReader =
    new BinaryReader(File.Open(fileName, FileMode.Open));
try
{
    // If the file is not empty,
    // read the application settings.
    // First read 4 bytes into a buffer to
    // determine if the file is empty.
    byte[] testArray = new byte[3];
    int count = binReader.Read(testArray, 0, 3);

    if (count != 0)
    {
        // Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin);

        aspectRatio   = binReader.ReadSingle();
        lookupDir     = binReader.ReadString();
        autoSaveTime  = binReader.ReadInt32();
        showStatusBar = binReader.ReadBoolean();
    }
}

// If the end of the stream is reached before reading
// the four data values, ignore the error and use the
// default settings for the remaining values.
catch(EndOfStreamException e)
{
    Console.WriteLine("{0} caught and ignored. " +
        "Using default values.", e.GetType().Name);
}
finally
{
    binReader.Close();
}

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
BinaryReader 重载
System.IO 命名空间
UTF8Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader 构造函数 (Stream, Encoding)

BinaryReader 构造函数 (Stream, Encoding)
BinaryReader 类

基于所提供的流和特定的字符编码，初始化 BinaryReader 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    input As Stream, _
    encoding As Encoding _
)
public BinaryReader(
    Stream input,
    Encoding encoding
)
public:
BinaryReader(
    Stream^ input,
    Encoding^ encoding
)
new :
        input:Stream *
        encoding:Encoding -> BinaryReader

参数

input
类型： System.IO Stream
所提供的流。
encoding
类型： System.Text Encoding
字符编码。
异常 | 条件
ArgumentException | 此流不支持读取，它为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或已关闭。
ArgumentNullException | encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
BinaryReader 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader 方法

BinaryReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryReader 类

BinaryReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

BinaryReader 类
System.IO 命名空间


BinaryReader ..::.Close 方法

BinaryReader
.
.
::
.
Close 方法
BinaryReader 类

关闭当前阅读器及基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Close
public virtual void Close()
public:
virtual void Close()
abstract Close : unit -> unit
override Close : unit -> unit

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

此代码示例摘自一个为 BinaryReader 类提供的更大示例。

Dim binReader As New BinaryReader( _
    File.Open(fileName, FileMode.Open))
Try

    ' If the file is not empty,
    ' read the application settings.
    ' First read 4 bytes into a buffer to
    ' determine if the file is empty.
    Dim testArray As Byte() = {0,0,0,0}
    Dim count As Integer = binReader.Read(testArray, 0, 3)

    If count <> 0 Then

        ' Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin)

        aspRatio   = binReader.ReadSingle()
        lkupDir     = binReader.ReadString()
        saveTime  = binReader.ReadInt32()
        statusBar = binReader.ReadBoolean()
        Return
    End If

' If the end of the stream is reached before reading
' the four data values, ignore the error and use the
' default settings for the remaining values.
Catch ex As EndOfStreamException
    Console.WriteLine("{0} caught and ignored. " & _
        "Using default values.", ex.GetType().Name)
Finally
    binReader.Close()
End Try

BinaryReader binReader =
    new BinaryReader(File.Open(fileName, FileMode.Open));
try
{
    // If the file is not empty,
    // read the application settings.
    // First read 4 bytes into a buffer to
    // determine if the file is empty.
    byte[] testArray = new byte[3];
    int count = binReader.Read(testArray, 0, 3);

    if (count != 0)
    {
        // Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin);

        aspectRatio   = binReader.ReadSingle();
        lookupDir     = binReader.ReadString();
        autoSaveTime  = binReader.ReadInt32();
        showStatusBar = binReader.ReadBoolean();
    }
}

// If the end of the stream is reached before reading
// the four data values, ignore the error and use the
// default settings for the remaining values.
catch(EndOfStreamException e)
{
    Console.WriteLine("{0} caught and ignored. " +
        "Using default values.", e.GetType().Name);
}
finally
{
    binReader.Close();
}

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.Dispose 方法

BinaryReader
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryReader 类

释放由 BinaryReader 类占用的资源。

名称 说明
页首

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间


BinaryReader ..::.Dispose 方法

BinaryReader
.
.
::
.
Dispose 方法
BinaryReader 类

释放由 BinaryReader 类的当前实例占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

使用完 BinaryReader 后调用 Dispose。Dispose 方法使 BinaryReader 处于不可用状态。调用 Dispose 后，必须释放对 BinaryReader 的所有引用，这样垃圾回收器才能回收 BinaryReader 占用的内存。 使用完 BinaryReader 后调用 Dispose。Dispose 方法使 BinaryReader 处于不可用状态。调用 Dispose 后，必须释放对 BinaryReader 的所有引用，这样垃圾回收器才能回收 BinaryReader 占用的内存。 使用完 BinaryReader 后调用 Dispose。Dispose 方法使 BinaryReader 处于不可用状态。调用 Dispose 后，必须释放对 BinaryReader 的所有引用，这样垃圾回收器才能回收 BinaryReader 占用的内存。

有关更多信息，请参见清理非托管资源和 实现 Dispose 方法。

说明 说明

释放对 BinaryReader 的最后一个引用之前，始终应先调用 Dispose。否则，在垃圾回收器调用 BinaryReader 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。 释放对 BinaryReader 的最后一个引用之前，始终应先调用 Dispose。否则，在垃圾回收器调用 BinaryReader 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

BinaryReader 类
BinaryReader 成员
Dispose 重载
System.IO 命名空间


BinaryReader ..::.Dispose 方法 (Boolean)

BinaryReader
.
.
::
.
Dispose 方法 (Boolean)
BinaryReader 类

释放由 BinaryReader 类占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true，则释放托管资源和非托管资源；为 false，则仅释放非托管资源。

此方法由 Dispose 和 Finalize 调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。 此方法由 Dispose 和 Finalize 调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。 此方法由 Dispose 和 Finalize 调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。

disposing 参数为 true 时，此方法释放此 BinaryReader 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 BinaryReader 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

BinaryReader..::.Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。 BinaryReader..::.Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。 BinaryReader..::.Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。

有关 IDisposable..::.Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.FillBuffer 方法

BinaryReader
.
.
::
.
FillBuffer 方法
BinaryReader 类

用从流中读取的指定字节数填充内部缓冲区。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub FillBuffer ( _
    numBytes As Integer _
)
protected virtual void FillBuffer(
    int numBytes
)
protected:
virtual void FillBuffer(
    int numBytes
)
abstract FillBuffer :
        numBytes:int -> unit
override FillBuffer :
        numBytes:int -> unit

参数

numBytes
类型： System Int32
要读取的字节数。
异常 | 条件
EndOfStreamException | 在可以读取 numBytes 之前到达了流的末尾。
IOException | 发生 I/O 错误。
ArgumentOutOfRangeException | 请求的 numBytes 大于内部缓冲区大小。

内部缓冲区大小是 16 与 GetMaxByteCount 为指定编码返回的值之间的较大值。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.IDisposable ..::.Dispose 方法

BinaryReader
.
.
::
.
IDisposable
.
.
::
.
Dispose 方法
BinaryReader 类

释放由 BinaryReader 占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Private Sub Dispose Implements IDisposable.Dispose
void IDisposable.Dispose()
private:
virtual void Dispose() sealed = IDisposable::Dispose
private abstract Dispose : unit -> unit
private override Dispose : unit -> unit

实现

此成员是显式的接口成员实现。只能在 BinaryReader 实例强制转换为 IDisposable 接口时使用它。 此成员是显式的接口成员实现。只能在 BinaryReader 实例强制转换为 IDisposable 接口时使用它。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：3.5、3.0、2.0、1.1、1.0

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间


BinaryReader ..::.PeekChar 方法

BinaryReader
.
.
::
.
PeekChar 方法
BinaryReader 类

返回下一个可用的字符，并且不提升字节或字符的位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function PeekChar As Integer
public virtual int PeekChar()
public:
virtual int PeekChar()
abstract PeekChar : unit -> int
override PeekChar : unit -> int

返回值

类型： System Int32
下一个可用的字符，或者，如果没有可用字符或者流不支持查找时为 -1。
异常 | 条件
IOException | 发生 I/O 错误。
ArgumentException | 当前字符无法通过使用为该流选择的 Encoding 解码到内部字符缓冲区中。

如果代理项字符可出现在使用 ReadChars 方法的流中，则将该流设置回原始位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.Read 方法

BinaryReader
.
.
::
.
Read 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryReader 类

从基础流中读取字节，并将流的当前位置前移。

名称 说明
页首

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间


BinaryReader ..::.Read 方法

BinaryReader
.
.
::
.
Read 方法
BinaryReader 类

从基础流中读取字符，并根据所使用的 Encoding 和从流中读取的特定字符，提升流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Read As Integer
public virtual int Read()
public:
virtual int Read()
abstract Read : unit -> int
override Read : unit -> int

返回值

类型： System Int32
输入流中的下一个字符，如果当前无可用字符则为 -1。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryReader 在读取失败后不还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。 下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。 下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。 下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer = 0
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        For i = 0 To invalidPathChars.Length - 1
            binWriter.Write(invalidPathChars(i))
        Next i

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim memoryData( _
            CInt(memStream.Length - memStream.Position) - 1) As Char
        For i = 0 To memoryData.Length - 1
            memoryData(i) = Convert.ToChar(binReader.Read())
        Next i
        Console.WriteLine(memoryData)

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        for(i = 0; i < invalidPathChars.Length; i++)
        {
            binWriter.Write(invalidPathChars[i]);
        }

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        char[] memoryData =
            new char[memStream.Length - memStream.Position];
        for(i = 0; i < memoryData.Length; i++)
        {
            memoryData[i] = Convert.ToChar(binReader.Read());
        }
        Console.WriteLine(memoryData);
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   for ( i = 0; i < invalidPathChars->Length; i++ )
   {
      binWriter->Write( invalidPathChars[ i ] );

   }

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   array<Char>^memoryData = gcnew array<Char>(memStream->Length - memStream->Position);
   for ( i = 0; i < memoryData->Length; i++ )
   {
      memoryData[ i ] = Convert::ToChar( binReader->Read() );

   }
   Console::WriteLine( memoryData );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
Read 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.Read 方法 ( array<Byte >[]()[], Int32, Int32)

BinaryReader
.
.
::
.
Read 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
BinaryReader 类

从字节数组中的指定点开始，从流中读取指定的字节数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Read ( _
    buffer As Byte(), _
    index As Integer, _
    count As Integer _
) As Integer
public virtual int Read(
    byte[] buffer,
    int index,
    int count
)
public:
virtual int Read(
    array<unsigned char>^ buffer,
    int index,
    int count
)
abstract Read :
        buffer:byte[] *
        index:int *
        count:int -> int
override Read :
        buffer:byte[] *
        index:int *
        count:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

要读入数据的缓冲区。
index
类型： System Int32
缓冲区中的起始点，在该处开始读入缓冲区。
count
类型： System Int32
要读取的字节数。

返回值

类型： System Int32
读入 buffer 的字节数。如果可用的字节没有请求的那么多，此数可能小于所请求的字节数；如果到达了流的末尾，此数可能为零。 读入 buffer 的字节数。如果可用的字节没有请求的那么多，此数可能小于所请求的字节数；如果到达了流的末尾，此数可能为零。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。 - 或 - 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取操作失败后不会还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明如何通过将内存用作备份存储区来写入二进制数据。然后，该示例向控制台显示一条消息，指示数据是否已正确写入。 下面的示例说明如何通过将内存用作备份存储区来写入二进制数据。然后，该示例向控制台显示一条消息，指示数据是否已正确写入。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Byte
        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())

        ' Write the data to the stream.
        Console.WriteLine("Writing the data.")
        binWriter.Write(dataArray, 0, dataArray.Length)

        ' Create the reader using the stream from the writer.
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        ' Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0

        ' Read and verify the data.
        Dim verifyArray(upperBound) As Byte
        If binReader.Read(verifyArray, 0, dataArray.Length) _
            <> dataArray.Length Then

            Console.WriteLine("Error writing the data.")
            Return
        End If
        For i As Integer =  0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i
        Console.WriteLine("The data was written and verified.")

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        byte[] dataArray = new byte[arrayLength];
        new Random().NextBytes(dataArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());

        // Write the data to the stream.
        Console.WriteLine("Writing the data.");
        binWriter.Write(dataArray, 0, arrayLength);

        // Create the reader using the stream from the writer.
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        // Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0;

        // Read and verify the data.
        byte[] verifyArray = new byte[arrayLength];
        if(binReader.Read(verifyArray, 0, arrayLength) != arrayLength)
        {
            Console.WriteLine("Error writing the data.");
            return;
        }
        for(int i = 0; i < arrayLength; i++)
        {
            if(verifyArray[i] != dataArray[i])
            {
                Console.WriteLine("Error writing the data.");
                return;
            }
        }
        Console.WriteLine("The data was written and verified.");
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<Byte>^dataArray = gcnew array<Byte>(arrayLength);
   (gcnew Random)->NextBytes( dataArray );
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );

   // Write the data to the stream.
   Console::WriteLine( "Writing the data." );
   binWriter->Write( dataArray, 0, arrayLength );

   // Create the reader using the stream from the writer.
   BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read and verify the data.
   array<Byte>^verifyArray = gcnew array<Byte>(arrayLength);
   if ( binReader->Read( verifyArray, 0, arrayLength ) != arrayLength )
   {
      Console::WriteLine( "Error writing the data." );
      return  -1;
   }

   for ( int i = 0; i < arrayLength; i++ )
   {
      if ( verifyArray[ i ] != dataArray[ i ] )
      {
         Console::WriteLine( "Error writing the data." );
         return  -1;
      }

   }
   Console::WriteLine( "The data was written and verified." );
}

此示例读取一个文件的内容，并以 16 列格式显示每个字节的数字值。当 Read 方法返回零字节时，检测到正在读取的文件的末尾。 此示例读取一个文件的内容，并以 16 列格式显示每个字节的数字值。当 Read 方法返回零字节时，检测到正在读取的文件的末尾。

Imports System
Imports System.IO
Imports System.Text

Public Class DumpFileSample
    Private Shared ReadOnly CHUNK_SIZE As Integer = 1024
    Public Shared Sub Main(args() As String)
        Try
            Dim fs As FileStream
            If args.Length > 0 Then
                fs = New FileStream(args(0), FileMode.Open, FileAccess.Read)
            Else
                Throw New ArgumentException()
            End If
            ' use one byte per character encoding for reading dump data
            Dim br As New BinaryReader(fs, New ASCIIEncoding())
            Dim chunk() As Byte

            ' read file chunks until end of file
            Do
                chunk = br.ReadBytes(CHUNK_SIZE)
                ' chunk.Length will be 0 if end of file is reached.
                If chunk.Length > 0
                    DumpBytes(chunk, chunk.Length)
                End If
            Loop While chunk.Length > 0
            fs.Close()
        Catch
            Console.WriteLine("Cannot find or read file to dump.")
        End Try
    End Sub

    Public Shared Sub DumpBytes(bdata() As Byte, len As Integer)
        Dim i As Integer
        Dim j As Integer = 0
        Dim dchar As Char
        ' 3 * 16 chars for hex display, 16 chars for text and 8 chars
        ' for the 'gutter' int the middle.
        Dim dumptext As New StringBuilder("        ", 16 * 4 + 8)
        For i = 0 to len -1
            dumptext.Insert(j * 3, String.Format("{0:X2} ", CType(bdata(i), Integer)))
            dchar = Convert.ToChar(bdata(i))
            ' replace 'non-printable' chars with a '.'.
            If Char.IsWhiteSpace(dchar) Or Char.IsControl(dchar) Then
                dchar = "."
            End If
            dumptext.Append(dchar)
            j += 1
            If j = 16 Then
                Console.WriteLine(dumptext)
                dumptext.Length = 0
                dumptext.Append("        ")
                j = 0
            End If
        Next i
        ' display the remaining line
        If j > 0 Then
            ' add blank hex spots to align the 'gutter'.
            For i = j To 15
                dumptext.Insert(j * 3, "   ")
            Next i
            Console.WriteLine(dumptext)
        End If
    End Sub
End Class

Imports System
Imports System.IO
Imports System.Text

Public Class DumpFileSample
    Private Shared ReadOnly CHUNK_SIZE As Integer = 1024
    Public Shared Sub Main(args() As String)
        Try
            Dim fs As FileStream
            If args.Length > 0 Then
                fs = New FileStream(args(0), FileMode.Open, FileAccess.Read)
            Else
                Throw New ArgumentException()
            End If
            ' use one byte per character encoding for reading dump data
            Dim br As New BinaryReader(fs, New ASCIIEncoding())
            Dim chunk(CHUNK_SIZE) As Byte
            Dim chunksize as Integer

            ' read file chunks until end of file
            Do
                chunksize = br.Read(chunk, 0, CHUNK_SIZE)
                ' chunksize will be 0 if end of file is reached.
                If chunksize > 0
                    DumpBytes(chunk, chunksize)
                End If
            Loop While chunksize > 0
            fs.Close()
        Catch
            Console.WriteLine("Cannot find or read file to dump.")
        End Try
    End Sub

    Public Shared Sub DumpBytes(bdata() As Byte, len As Integer)
        Dim i As Integer
        Dim j As Integer = 0
        Dim dchar As Char
        ' 3 * 16 chars for hex display, 16 chars for text and 8 chars
        ' for the 'gutter' int the middle.
        Dim dumptext As New StringBuilder("        ", 16 * 4 + 8)
        For i = 0 to len -1
            dumptext.Insert(j * 3, String.Format("{0:X2} ", CType(bdata(i), Integer)))
            dchar = Convert.ToChar(bdata(i))
            ' replace 'non-printable' chars with a '.'.
            If Char.IsWhiteSpace(dchar) Or Char.IsControl(dchar) Then
                dchar = "."
            End If
            dumptext.Append(dchar)
            j += 1
            If j = 16 Then
                Console.WriteLine(dumptext)
                dumptext.Length = 0
                dumptext.Append("        ")
                j = 0
            End If
        Next i
        ' display the remaining line
        If j > 0 Then
            ' add blank hex spots to align the 'gutter'.
            For i = j To 15
                dumptext.Insert(j * 3, "   ")
            Next i
            Console.WriteLine(dumptext)
        End If
    End Sub
End Class

using System;
using System.IO;
using System.Text;

public class DumpFileSample
{
    private static readonly int CHUNK_SIZE = 1024;
    public static void Main(String[] args)
    {
        try
        {
            FileStream fs;
            if (args.Length > 0)
            {
                fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
            }
            else
            {
                throw new ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader br = new BinaryReader(fs, new ASCIIEncoding());
            byte[] chunk;

            // read file chunks until end of file
            do
            {
                // chunk.Length will be 0 if end of file is reached.
                chunk = br.ReadBytes(CHUNK_SIZE);
                if (chunk.Length > 0)
                {
                    DumpBytes(chunk, chunk.Length);
                }
            }
            while (chunk.Length > 0);
            fs.Close();
        }
        catch
        {
            Console.WriteLine("Cannot find or read file to dump.");
        }
    }

    public static void DumpBytes(byte[] bdata, int len)
    {
        int i;
        int j = 0;
        char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder dumptext = new StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext.Insert(j * 3, String.Format("{0:X2} ", (int)bdata[i]));
            dchar = (char)bdata[i];
            //' replace 'non-printable' chars with a '.'.
            if ( Char.IsWhiteSpace(dchar) || Char.IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext.Append(dchar);
            j++;
            if (j == 16)
            {
                Console.WriteLine(dumptext);
                dumptext.Length = 0;
                dumptext.Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext.Insert(j * 3, "   ");
            }
            Console.WriteLine(dumptext);
        }
    }
}

using System;
using System.IO;
using System.Text;

public class DumpFileSample
{
    private static readonly int CHUNK_SIZE = 1024;
    public static void Main(String[] args)
    {
        try
        {
            FileStream fs;
            if (args.Length > 0)
            {
                fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
            }
            else
            {
                throw new ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader br = new BinaryReader(fs, new ASCIIEncoding());
            byte[] chunk = new byte[CHUNK_SIZE];
            int chunksize;

            // read file chunks until end of file
            do
            {
                // chunksize will be 0 if end of file is reached.
                chunksize = br.Read(chunk, 0, CHUNK_SIZE);
                if (chunksize > 0)
                {
                    DumpBytes(chunk, chunksize);
                }
            }
            while (chunksize > 0);
            fs.Close();
        }
        catch
        {
            Console.WriteLine("Cannot find or read file to dump.");
        }
    }

    public static void DumpBytes(byte[] bdata, int len)
    {
        int i;
        int j = 0;
        char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder dumptext = new StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext.Insert(j * 3, String.Format("{0:X2} ", (int)bdata[i]));
            dchar = (char)bdata[i];
            //' replace 'non-printable' chars with a '.'.
            if ( Char.IsWhiteSpace(dchar) || Char.IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext.Append(dchar);
            j++;
            if (j == 16)
            {
                Console.WriteLine(dumptext);
                dumptext.Length = 0;
                dumptext.Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext.Insert(j * 3, "   ");
            }
            Console.WriteLine(dumptext);
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class DumpFileSample
{
private:
    static const int CHUNK_SIZE = 1024;

public:
    static void Main(array<String^>^ args)
    {
        try
        {
            FileStream^ fs;
            if (args->Length > 1)
            {
                fs = gcnew FileStream(args[1], FileMode::Open, FileAccess::Read);
            }
            else
            {
                throw gcnew ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader^ br = gcnew BinaryReader(fs, gcnew ASCIIEncoding());
            array<Byte>^ chunk;

            // read file chunks until end of file
            do
            {
                chunk = br->ReadBytes(CHUNK_SIZE);
                // chunk.Length will be 0 if end of file is reached.
                if (chunk->Length > 0)
                {
                    DumpBytes(chunk, chunk->Length);
                }
            }
            while (chunk->Length > 0);
            fs->Close();
        }
        catch (...)
        {
            Console::WriteLine("Cannot find or read file to dump.");
        }
    }

    static void DumpBytes(array<Byte>^ bdata, int len)
    {
        int i;
        int j = 0;
        Char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder^ dumptext = gcnew StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext->Insert(j * 3, String::Format("{0:X2} ", (int)bdata[i]));
            dchar = (Char)bdata[i];
            // replace 'non-printable' chars with a '.'.
            if ( Char::IsWhiteSpace(dchar) || Char::IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext->Append(dchar);
            j++;
            if (j == 16)
            {
                Console::WriteLine(dumptext);
                dumptext->Length = 0;
                dumptext->Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext->Insert(j * 3, "   ");
            }
            Console::WriteLine(dumptext);
        }
    }
};

int main()
{
    DumpFileSample::Main(Environment::GetCommandLineArgs());
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class DumpFileSample
{
private:
    static const int CHUNK_SIZE = 1024;

public:
    static void Main(array<String^>^ args)
    {
        try
        {
            FileStream^ fs;
            if (args->Length > 1)
            {
                fs = gcnew FileStream(args[1], FileMode::Open, FileAccess::Read);
            }
            else
            {
                throw gcnew ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader^ br = gcnew BinaryReader(fs, gcnew ASCIIEncoding());
            array<Byte>^ chunk = gcnew array<Byte>(CHUNK_SIZE);
            int chunksize;

            // read file chunks until end of file
            do
            {
                chunksize = br->Read(chunk, 0, CHUNK_SIZE);
                // chunksize will be 0 if end of file is reached.
                if (chunksize > 0)
                {
                    DumpBytes(chunk, chunksize);
                }
            }
            while (chunksize > 0);
            fs->Close();
        }
        catch (...)
        {
            Console::WriteLine("Cannot find or read file to dump.");
        }
    }

    static void DumpBytes(array<Byte>^ bdata, int len)
    {
        int i;
        int j = 0;
        Char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder^ dumptext = gcnew StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext->Insert(j * 3, String::Format("{0:X2} ", (int)bdata[i]));
            dchar = (Char)bdata[i];
            // replace 'non-printable' chars with a '.'.
            if ( Char::IsWhiteSpace(dchar) || Char::IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext->Append(dchar);
            j++;
            if (j == 16)
            {
                Console::WriteLine(dumptext);
                dumptext->Length = 0;
                dumptext->Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext->Insert(j * 3, "   ");
            }
            Console::WriteLine(dumptext);
        }
    }
};

int main()
{
    DumpFileSample::Main(Environment::GetCommandLineArgs());
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.Read 方法 ( array<Char >[]()[], Int32, Int32)

BinaryReader
.
.
::
.
Read 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
BinaryReader 类

从字符数组中的指定点开始，从流中读取指定的字符数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Read ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
) As Integer
public virtual int Read(
    char[] buffer,
    int index,
    int count
)
public:
virtual int Read(
    array<wchar_t>^ buffer,
    int index,
    int count
)
abstract Read :
        buffer:char[] *
        index:int *
        count:int -> int
override Read :
        buffer:char[] *
        index:int *
        count:int -> int

参数

buffer
类型：
array<
System Char
>
[]
()
[]

要读入数据的缓冲区。
index
类型： System Int32
缓冲区中的起始点，在该处开始读入缓冲区。
count
类型： System Int32
要读取的字符数。

返回值

类型： System Int32
读入缓冲区的总字符数。如果当前可用的字节没有请求的那么多，此数可能小于所请求的字符数；如果到达了流的末尾，此数可能为零。 读入缓冲区的总字符数。如果当前可用的字节没有请求的那么多，此数可能小于所请求的字符数；如果到达了流的末尾，此数可能为零。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。 - 或 - 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取操作失败后不会还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。 下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。 下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。 下面的示例说明如何通过将内存用作备份存储区来读取和写入数据。此示例向控制台显示无效的文件路径字符的列表。尽管代码会尝试显示所有无效文件路径字符的列表，但并不是所有的字符都位于可显示的字符集中。因为无效字符的列表可随系统的不同而改变，所以此代码的输出也可能不同。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars, 0, _
            Path.InvalidPathChars.Length)

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim upperBound As Integer = _
            CInt(memStream.Length - memStream.Position) - 1
        Dim memoryData(upperBound) As Char
        binReader.Read(memoryData, 0, upperBound)
        Console.WriteLine(memoryData)

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        int arraySize = (int)(memStream.Length - memStream.Position);
        char[] memoryData = new char[arraySize];
        binReader.Read(memoryData, 0, arraySize);
        Console.WriteLine(memoryData);
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   binWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   int arraySize = (int)(memStream->Length - memStream->Position);
   array<Char>^memoryData = gcnew array<Char>(arraySize);
   binReader->Read( memoryData, 0, arraySize );
   Console::WriteLine( memoryData );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.Read7BitEncodedInt 方法

BinaryReader
.
.
::
.
Read7BitEncodedInt 方法
BinaryReader 类

以压缩格式读入 32 位整数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Friend Function Read7BitEncodedInt As Integer
protected internal int Read7BitEncodedInt()
protected public:
int Read7BitEncodedInt()
member Read7BitEncodedInt : unit -> int

返回值

类型： System Int32
压缩格式的 32 位整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。
FormatException | 此流已损坏。

BinaryReader 在读取失败后不还原文件位置。

如果整数将占 7 位，则该整数仅占用一个字节的空间。该整数应该已通过 BinaryWriter..::.Write7BitEncodedInt 写出。 如果整数将占 7 位，则该整数仅占用一个字节的空间。该整数应该已通过 BinaryWriter..::.Write7BitEncodedInt 写出。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadBoolean 方法

BinaryReader
.
.
::
.
ReadBoolean 方法
BinaryReader 类

从当前流中读取 Boolean 值，并使该流的当前位置提升 1 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadBoolean As Boolean
public virtual bool ReadBoolean()
public:
virtual bool ReadBoolean()
abstract ReadBoolean : unit -> bool
override ReadBoolean : unit -> bool

返回值

类型： System Boolean
如果字节为非零则为 true，否则为 false。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryReader 类提供的更大示例。

Dim binReader As New BinaryReader( _
    File.Open(fileName, FileMode.Open))
Try

    ' If the file is not empty,
    ' read the application settings.
    ' First read 4 bytes into a buffer to
    ' determine if the file is empty.
    Dim testArray As Byte() = {0,0,0,0}
    Dim count As Integer = binReader.Read(testArray, 0, 3)

    If count <> 0 Then

        ' Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin)

        aspRatio   = binReader.ReadSingle()
        lkupDir     = binReader.ReadString()
        saveTime  = binReader.ReadInt32()
        statusBar = binReader.ReadBoolean()
        Return
    End If

' If the end of the stream is reached before reading
' the four data values, ignore the error and use the
' default settings for the remaining values.
Catch ex As EndOfStreamException
    Console.WriteLine("{0} caught and ignored. " & _
        "Using default values.", ex.GetType().Name)
Finally
    binReader.Close()
End Try

BinaryReader binReader =
    new BinaryReader(File.Open(fileName, FileMode.Open));
try
{
    // If the file is not empty,
    // read the application settings.
    // First read 4 bytes into a buffer to
    // determine if the file is empty.
    byte[] testArray = new byte[3];
    int count = binReader.Read(testArray, 0, 3);

    if (count != 0)
    {
        // Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin);

        aspectRatio   = binReader.ReadSingle();
        lookupDir     = binReader.ReadString();
        autoSaveTime  = binReader.ReadInt32();
        showStatusBar = binReader.ReadBoolean();
    }
}

// If the end of the stream is reached before reading
// the four data values, ignore the error and use the
// default settings for the remaining values.
catch(EndOfStreamException e)
{
    Console.WriteLine("{0} caught and ignored. " +
        "Using default values.", e.GetType().Name);
}
finally
{
    binReader.Close();
}

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadByte 方法

BinaryReader
.
.
::
.
ReadByte 方法
BinaryReader 类

从当前流中读取下一个字节，并使流的当前位置提升 1 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadByte As Byte
public virtual byte ReadByte()
public:
virtual unsigned char ReadByte()
abstract ReadByte : unit -> byte
override ReadByte : unit -> byte

返回值

类型： System Byte
从当前流中读取的下一个字节。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

因为存在数据格式设置冲突，所以不建议对以下编码方式使用此方法：

  • UTF-7

  • ISO-2022-JP

  • ISCII

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来写入二进制数据，然后验证数据是否被正确写入。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer = 0

        ' Create random data to write to the stream.
        Dim writeArray(1000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(writeArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        Try

            ' Write the data to the stream.
            Console.WriteLine("Writing the data.")
            For i = 0 To writeArray.Length - 1
                binWriter.Write(writeArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data from the stream.
            For i = 0 To writeArray.Length - 1
                If binReader.ReadByte() <> writeArray(i) Then
                    Console.WriteLine("Error writing the data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written and verified.")

        ' Catch the EndOfStreamException and write an error message.
        Catch ex As EndOfStreamException
            Console.WriteLine("Error writing the data: {0}", _
                ex.GetType().Name)
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;

        // Create random data to write to the stream.
        byte[] writeArray = new byte[1000];
        new Random().NextBytes(writeArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        try
        {
            // Write the data to the stream.
            Console.WriteLine("Writing the data.");
            for(i = 0; i < writeArray.Length; i++)
            {
                binWriter.Write(writeArray[i]);
            }

            // Set the stream position to the beginning of the stream.
            binReader.BaseStream.Position = 0;

            // Read and verify the data from the stream.
            for(i = 0; i < writeArray.Length; i++)
            {
                if(binReader.ReadByte() != writeArray[i])
                {
                    Console.WriteLine("Error writing the data.");
                    return;
                }
            }
            Console.WriteLine("The data was written and verified.");
        }

        // Catch the EndOfStreamException and write an error message.
        catch(EndOfStreamException e)
        {
            Console.WriteLine("Error writing the data.\n{0}",
                e.GetType().Name);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i = 0;

   // Create random data to write to the stream.
   array<Byte>^writeArray = gcnew array<Byte>(1000);
   (gcnew Random)->NextBytes( writeArray );
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );
   try
   {

      // Write the data to the stream.
      Console::WriteLine( "Writing the data." );
      for ( i = 0; i < writeArray->Length; i++ )
      {
         binWriter->Write( writeArray[ i ] );

      }

      // Set the stream position to the beginning of the stream.
      binReader->BaseStream->Position = 0;

      // Read and verify the data from the stream.
      for ( i = 0; i < writeArray->Length; i++ )
      {
         if ( binReader->ReadByte() != writeArray[ i ] )
         {
            Console::WriteLine( "Error writing the data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written and verified." );
   }
   // Catch the EndOfStreamException and write an error message.
   catch ( EndOfStreamException^ e )
   {
      Console::WriteLine( "Error writing the data.\n{0}", e->GetType()->Name );
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadBytes 方法

BinaryReader
.
.
::
.
ReadBytes 方法
BinaryReader 类

从当前流中读取指定的字节数以写入字节数组中，并将当前位置前移相应的字节数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadBytes ( _
    count As Integer _
) As Byte()
public virtual byte[] ReadBytes(
    int count
)
public:
virtual array<unsigned char>^ ReadBytes(
    int count
)
abstract ReadBytes :
        count:int -> byte[]
override ReadBytes :
        count:int -> byte[]

参数

count
类型： System Int32
要读取的字节数。

返回值

类型：
array<
System Byte
>
[]
()
[]

包含从基础流中读取的数据的字节数组。如果到达了流的末尾，则该字节数组可能小于所请求的字节数。 包含从基础流中读取的数据的字节数组。如果到达了流的末尾，则该字节数组可能小于所请求的字节数。
异常 | 条件
ArgumentException | 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。
ArgumentOutOfRangeException | count 为负数。

BinaryReader 在读取操作失败后不会还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来写入二进制数据，然后验证数据是否被正确写入。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Byte
        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())

        ' Write the data to the stream.
        Console.WriteLine("Writing the data.")
        binWriter.Write(dataArray)

        ' Create the reader using the stream from the writer.
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        ' Set the stream position to the beginning of the stream.
        binReader.BaseStream.Position = 0

        ' Read and verify the data.
        Dim verifyArray() As Byte = _
            binReader.ReadBytes(dataArray.Length)
        If verifyArray.Length <> dataArray.Length Then
            Console.WriteLine("Error writing the data.")
            Return
        End If
        For i As Integer = 0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i
        Console.WriteLine("The data was written and verified.")

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        byte[] dataArray = new byte[arrayLength];
        new Random().NextBytes(dataArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());

        // Write the data to the stream.
        Console.WriteLine("Writing the data.");
        binWriter.Write(dataArray);

        // Create the reader using the stream from the writer.
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        // Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0;

        // Read and verify the data.
        byte[] verifyArray = binReader.ReadBytes(arrayLength);
        if(verifyArray.Length != arrayLength)
        {
            Console.WriteLine("Error writing the data.");
            return;
        }
        for(int i = 0; i < arrayLength; i++)
        {
            if(verifyArray[i] != dataArray[i])
            {
                Console.WriteLine("Error writing the data.");
                return;
            }
        }
        Console.WriteLine("The data was written and verified.");
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<Byte>^dataArray = gcnew array<Byte>(arrayLength);
   (gcnew Random)->NextBytes( dataArray );
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );

   // Write the data to the stream.
   Console::WriteLine(  "Writing the data." );
   binWriter->Write( dataArray );

   // Create the reader using the stream from the writer.
   BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

   // Set the stream position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read and verify the data.
   array<Byte>^verifyArray = binReader->ReadBytes( arrayLength );
   if ( verifyArray->Length != arrayLength )
   {
      Console::WriteLine( "Error writing the data." );
      return  -1;
   }

   for ( int i = 0; i < arrayLength; i++ )
   {
      if ( verifyArray[ i ] != dataArray[ i ] )
      {
         Console::WriteLine( "Error writing the data." );
         return  -1;
      }

   }
   Console::WriteLine( "The data was written and verified." );
}

此示例读取一个文件的内容，并将其以转储文本的形式显示在控制台中。当从 ReadBytes 返回的 Byte 数组的长度为零时，检测到正在读取的文件的末尾。 此示例读取一个文件的内容，并将其以转储文本的形式显示在控制台中。当从 ReadBytes 返回的 Byte 数组的长度为零时，检测到正在读取的文件的末尾。

Imports System
Imports System.IO
Imports System.Text

Public Class DumpFileSample
    Private Shared ReadOnly CHUNK_SIZE As Integer = 1024
    Public Shared Sub Main(args() As String)
        Try
            Dim fs As FileStream
            If args.Length > 0 Then
                fs = New FileStream(args(0), FileMode.Open, FileAccess.Read)
            Else
                Throw New ArgumentException()
            End If
            ' use one byte per character encoding for reading dump data
            Dim br As New BinaryReader(fs, New ASCIIEncoding())
            Dim chunk() As Byte

            ' read file chunks until end of file
            Do
                chunk = br.ReadBytes(CHUNK_SIZE)
                ' chunk.Length will be 0 if end of file is reached.
                If chunk.Length > 0
                    DumpBytes(chunk, chunk.Length)
                End If
            Loop While chunk.Length > 0
            fs.Close()
        Catch
            Console.WriteLine("Cannot find or read file to dump.")
        End Try
    End Sub

    Public Shared Sub DumpBytes(bdata() As Byte, len As Integer)
        Dim i As Integer
        Dim j As Integer = 0
        Dim dchar As Char
        ' 3 * 16 chars for hex display, 16 chars for text and 8 chars
        ' for the 'gutter' int the middle.
        Dim dumptext As New StringBuilder("        ", 16 * 4 + 8)
        For i = 0 to len -1
            dumptext.Insert(j * 3, String.Format("{0:X2} ", CType(bdata(i), Integer)))
            dchar = Convert.ToChar(bdata(i))
            ' replace 'non-printable' chars with a '.'.
            If Char.IsWhiteSpace(dchar) Or Char.IsControl(dchar) Then
                dchar = "."
            End If
            dumptext.Append(dchar)
            j += 1
            If j = 16 Then
                Console.WriteLine(dumptext)
                dumptext.Length = 0
                dumptext.Append("        ")
                j = 0
            End If
        Next i
        ' display the remaining line
        If j > 0 Then
            ' add blank hex spots to align the 'gutter'.
            For i = j To 15
                dumptext.Insert(j * 3, "   ")
            Next i
            Console.WriteLine(dumptext)
        End If
    End Sub
End Class

Imports System
Imports System.IO
Imports System.Text

Public Class DumpFileSample
    Private Shared ReadOnly CHUNK_SIZE As Integer = 1024
    Public Shared Sub Main(args() As String)
        Try
            Dim fs As FileStream
            If args.Length > 0 Then
                fs = New FileStream(args(0), FileMode.Open, FileAccess.Read)
            Else
                Throw New ArgumentException()
            End If
            ' use one byte per character encoding for reading dump data
            Dim br As New BinaryReader(fs, New ASCIIEncoding())
            Dim chunk(CHUNK_SIZE) As Byte
            Dim chunksize as Integer

            ' read file chunks until end of file
            Do
                chunksize = br.Read(chunk, 0, CHUNK_SIZE)
                ' chunksize will be 0 if end of file is reached.
                If chunksize > 0
                    DumpBytes(chunk, chunksize)
                End If
            Loop While chunksize > 0
            fs.Close()
        Catch
            Console.WriteLine("Cannot find or read file to dump.")
        End Try
    End Sub

    Public Shared Sub DumpBytes(bdata() As Byte, len As Integer)
        Dim i As Integer
        Dim j As Integer = 0
        Dim dchar As Char
        ' 3 * 16 chars for hex display, 16 chars for text and 8 chars
        ' for the 'gutter' int the middle.
        Dim dumptext As New StringBuilder("        ", 16 * 4 + 8)
        For i = 0 to len -1
            dumptext.Insert(j * 3, String.Format("{0:X2} ", CType(bdata(i), Integer)))
            dchar = Convert.ToChar(bdata(i))
            ' replace 'non-printable' chars with a '.'.
            If Char.IsWhiteSpace(dchar) Or Char.IsControl(dchar) Then
                dchar = "."
            End If
            dumptext.Append(dchar)
            j += 1
            If j = 16 Then
                Console.WriteLine(dumptext)
                dumptext.Length = 0
                dumptext.Append("        ")
                j = 0
            End If
        Next i
        ' display the remaining line
        If j > 0 Then
            ' add blank hex spots to align the 'gutter'.
            For i = j To 15
                dumptext.Insert(j * 3, "   ")
            Next i
            Console.WriteLine(dumptext)
        End If
    End Sub
End Class

using System;
using System.IO;
using System.Text;

public class DumpFileSample
{
    private static readonly int CHUNK_SIZE = 1024;
    public static void Main(String[] args)
    {
        try
        {
            FileStream fs;
            if (args.Length > 0)
            {
                fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
            }
            else
            {
                throw new ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader br = new BinaryReader(fs, new ASCIIEncoding());
            byte[] chunk;

            // read file chunks until end of file
            do
            {
                // chunk.Length will be 0 if end of file is reached.
                chunk = br.ReadBytes(CHUNK_SIZE);
                if (chunk.Length > 0)
                {
                    DumpBytes(chunk, chunk.Length);
                }
            }
            while (chunk.Length > 0);
            fs.Close();
        }
        catch
        {
            Console.WriteLine("Cannot find or read file to dump.");
        }
    }

    public static void DumpBytes(byte[] bdata, int len)
    {
        int i;
        int j = 0;
        char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder dumptext = new StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext.Insert(j * 3, String.Format("{0:X2} ", (int)bdata[i]));
            dchar = (char)bdata[i];
            //' replace 'non-printable' chars with a '.'.
            if ( Char.IsWhiteSpace(dchar) || Char.IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext.Append(dchar);
            j++;
            if (j == 16)
            {
                Console.WriteLine(dumptext);
                dumptext.Length = 0;
                dumptext.Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext.Insert(j * 3, "   ");
            }
            Console.WriteLine(dumptext);
        }
    }
}

using System;
using System.IO;
using System.Text;

public class DumpFileSample
{
    private static readonly int CHUNK_SIZE = 1024;
    public static void Main(String[] args)
    {
        try
        {
            FileStream fs;
            if (args.Length > 0)
            {
                fs = new FileStream(args[0], FileMode.Open, FileAccess.Read);
            }
            else
            {
                throw new ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader br = new BinaryReader(fs, new ASCIIEncoding());
            byte[] chunk = new byte[CHUNK_SIZE];
            int chunksize;

            // read file chunks until end of file
            do
            {
                // chunksize will be 0 if end of file is reached.
                chunksize = br.Read(chunk, 0, CHUNK_SIZE);
                if (chunksize > 0)
                {
                    DumpBytes(chunk, chunksize);
                }
            }
            while (chunksize > 0);
            fs.Close();
        }
        catch
        {
            Console.WriteLine("Cannot find or read file to dump.");
        }
    }

    public static void DumpBytes(byte[] bdata, int len)
    {
        int i;
        int j = 0;
        char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder dumptext = new StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext.Insert(j * 3, String.Format("{0:X2} ", (int)bdata[i]));
            dchar = (char)bdata[i];
            //' replace 'non-printable' chars with a '.'.
            if ( Char.IsWhiteSpace(dchar) || Char.IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext.Append(dchar);
            j++;
            if (j == 16)
            {
                Console.WriteLine(dumptext);
                dumptext.Length = 0;
                dumptext.Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext.Insert(j * 3, "   ");
            }
            Console.WriteLine(dumptext);
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class DumpFileSample
{
private:
    static const int CHUNK_SIZE = 1024;

public:
    static void Main(array<String^>^ args)
    {
        try
        {
            FileStream^ fs;
            if (args->Length > 1)
            {
                fs = gcnew FileStream(args[1], FileMode::Open, FileAccess::Read);
            }
            else
            {
                throw gcnew ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader^ br = gcnew BinaryReader(fs, gcnew ASCIIEncoding());
            array<Byte>^ chunk;

            // read file chunks until end of file
            do
            {
                chunk = br->ReadBytes(CHUNK_SIZE);
                // chunk.Length will be 0 if end of file is reached.
                if (chunk->Length > 0)
                {
                    DumpBytes(chunk, chunk->Length);
                }
            }
            while (chunk->Length > 0);
            fs->Close();
        }
        catch (...)
        {
            Console::WriteLine("Cannot find or read file to dump.");
        }
    }

    static void DumpBytes(array<Byte>^ bdata, int len)
    {
        int i;
        int j = 0;
        Char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder^ dumptext = gcnew StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext->Insert(j * 3, String::Format("{0:X2} ", (int)bdata[i]));
            dchar = (Char)bdata[i];
            // replace 'non-printable' chars with a '.'.
            if ( Char::IsWhiteSpace(dchar) || Char::IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext->Append(dchar);
            j++;
            if (j == 16)
            {
                Console::WriteLine(dumptext);
                dumptext->Length = 0;
                dumptext->Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext->Insert(j * 3, "   ");
            }
            Console::WriteLine(dumptext);
        }
    }
};

int main()
{
    DumpFileSample::Main(Environment::GetCommandLineArgs());
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class DumpFileSample
{
private:
    static const int CHUNK_SIZE = 1024;

public:
    static void Main(array<String^>^ args)
    {
        try
        {
            FileStream^ fs;
            if (args->Length > 1)
            {
                fs = gcnew FileStream(args[1], FileMode::Open, FileAccess::Read);
            }
            else
            {
                throw gcnew ArgumentException();
            }
            // use one byte per character encoding for reading dump data
            BinaryReader^ br = gcnew BinaryReader(fs, gcnew ASCIIEncoding());
            array<Byte>^ chunk = gcnew array<Byte>(CHUNK_SIZE);
            int chunksize;

            // read file chunks until end of file
            do
            {
                chunksize = br->Read(chunk, 0, CHUNK_SIZE);
                // chunksize will be 0 if end of file is reached.
                if (chunksize > 0)
                {
                    DumpBytes(chunk, chunksize);
                }
            }
            while (chunksize > 0);
            fs->Close();
        }
        catch (...)
        {
            Console::WriteLine("Cannot find or read file to dump.");
        }
    }

    static void DumpBytes(array<Byte>^ bdata, int len)
    {
        int i;
        int j = 0;
        Char dchar;
        // 3 * 16 chars for hex display, 16 chars for text and 8 chars
        // for the 'gutter' int the middle.
        StringBuilder^ dumptext = gcnew StringBuilder("        ", 16 * 4 + 8);
        for (i = 0; i < len; i++)
        {
            dumptext->Insert(j * 3, String::Format("{0:X2} ", (int)bdata[i]));
            dchar = (Char)bdata[i];
            // replace 'non-printable' chars with a '.'.
            if ( Char::IsWhiteSpace(dchar) || Char::IsControl(dchar))
            {
                dchar = '.';
            }
            dumptext->Append(dchar);
            j++;
            if (j == 16)
            {
                Console::WriteLine(dumptext);
                dumptext->Length = 0;
                dumptext->Append("        ");
                j = 0;
            }
        }
        // display the remaining line
        if (j > 0)
        {
            for (i = j; i < 16; i++)
            {
                dumptext->Insert(j * 3, "   ");
            }
            Console::WriteLine(dumptext);
        }
    }
};

int main()
{
    DumpFileSample::Main(Environment::GetCommandLineArgs());
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadChar 方法

BinaryReader
.
.
::
.
ReadChar 方法
BinaryReader 类

从当前流中读取下一个字符，并根据所使用的 Encoding 和从流中读取的特定字符，提升流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadChar As Char
public virtual char ReadChar()
public:
virtual wchar_t ReadChar()
abstract ReadChar : unit -> char
override ReadChar : unit -> char

返回值

类型： System Char
从当前流中读取的字符。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。
ArgumentException | 读取了一个代理项字符。

如果 ReadChar 方法尝试读取流中的代理项字符，则会引发异常，并且流中的位置会向前移动。如果流是可查找的，则位置会恢复为调用 ReadChar 前的原始位置；但是，如果流是不可查找的，则不会更正位置。如果预期流中包含代理项字符，请改用 ReadChars 方法。 如果 ReadChar 方法尝试读取流中的代理项字符，则会引发异常，并且流中的位置会向前移动。如果流是可查找的，则位置会恢复为调用 ReadChar 前的原始位置；但是，如果流是不可查找的，则不会更正位置。如果预期流中包含代理项字符，请改用 ReadChars 方法。 如果 ReadChar 方法尝试读取流中的代理项字符，则会引发异常，并且流中的位置会向前移动。如果流是可查找的，则位置会恢复为调用 ReadChar 前的原始位置；但是，如果流是不可查找的，则不会更正位置。如果预期流中包含代理项字符，请改用 ReadChars 方法。

因为存在数据格式设置冲突，所以不建议对以下编码方式使用此方法：

  • UTF-7

  • ISO-2022-JP

  • ISCII

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来读取和写入数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer = 0
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        For i = 0 To invalidPathChars.Length - 1
            binWriter.Write(invalidPathChars(i))
        Next i

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim memoryData( _
            CInt(memStream.Length - memStream.Position) - 1) As Char
        For i = 0 To memoryData.Length - 1
            memoryData(i) = binReader.ReadChar()
        Next i
        Console.WriteLine(memoryData)

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        for(i = 0; i < invalidPathChars.Length; i++)
        {
            binWriter.Write(invalidPathChars[i]);
        }

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        char[] memoryData =
            new char[memStream.Length - memStream.Position];
        for(i = 0; i < memoryData.Length; i++)
        {
            memoryData[i] = binReader.ReadChar();
        }
        Console.WriteLine(memoryData);
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   for ( i = 0; i < invalidPathChars->Length; i++ )
   {
      binWriter->Write( invalidPathChars[ i ] );

   }

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   array<Char>^memoryData = gcnew array<Char>(memStream->Length - memStream->Position);
   for ( i = 0; i < memoryData->Length; i++ )
   {
      memoryData[ i ] = binReader->ReadChar();

   }
   Console::WriteLine( memoryData );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadChars 方法

BinaryReader
.
.
::
.
ReadChars 方法
BinaryReader 类

从当前流中读取指定的字符数，并以字符数组的形式返回数据，然后根据所使用的 Encoding 和从流中读取的特定字符，将当前位置前移。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadChars ( _
    count As Integer _
) As Char()
public virtual char[] ReadChars(
    int count
)
public:
virtual array<wchar_t>^ ReadChars(
    int count
)
abstract ReadChars :
        count:int -> char[]
override ReadChars :
        count:int -> char[]

参数

count
类型： System Int32
要读取的字符数。

返回值

类型：
array<
System Char
>
[]
()
[]

包含从基础流中读取的数据的字节数组。如果到达了流的末尾，则该字符数组可能小于所请求的字符数。 包含从基础流中读取的数据的字节数组。如果到达了流的末尾，则该字符数组可能小于所请求的字符数。
异常 | 条件
ArgumentException | 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。 要读取的解码字符数大于 count。如果 Unicode 解码器返回回退字符或代理项对，则可能发生此情况。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。
ArgumentOutOfRangeException | count 为负数。

BinaryReader 在读取失败后不还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来读取和写入数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars)

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Console.WriteLine(binReader.ReadChars( _
            CInt(memStream.Length - memStream.Position)))

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(Path.InvalidPathChars);

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        Console.WriteLine(binReader.ReadChars(
            (int)(memStream.Length - memStream.Position)));
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   binWriter->Write( Path::InvalidPathChars );

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   Console::WriteLine( binReader->ReadChars( (int)(memStream->Length - memStream->Position) ) );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadDecimal 方法

BinaryReader
.
.
::
.
ReadDecimal 方法
BinaryReader 类

从当前流中读取十进制数值，并将该流的当前位置提升十六个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadDecimal As Decimal
public virtual decimal ReadDecimal()
public:
virtual Decimal ReadDecimal()
abstract ReadDecimal : unit -> decimal
override ReadDecimal : unit -> decimal

返回值

类型： System Decimal
从当前流中读取的十进制数值。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadDouble 方法

BinaryReader
.
.
::
.
ReadDouble 方法
BinaryReader 类

从当前流中读取 8 字节浮点值，并使流的当前位置提升 8 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadDouble As Double
public virtual double ReadDouble()
public:
virtual double ReadDouble()
abstract ReadDouble : unit -> float
override ReadDouble : unit -> float

返回值

类型： System Double
从当前流中读取的 8 字节浮点值。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。 下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")

            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<double>^dataArray = gcnew array<double>(arrayLength);
   Random^ randomGenerator = gcnew Random;
   for ( i = 0; i < arrayLength; i++ )
   {
      dataArray[ i ] = 100.1 * randomGenerator->NextDouble();

   }
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   try
   {

      // Write data to the stream.
      Console::WriteLine( "Writing data to the stream." );
      i = 0;
      for ( i = 0; i < arrayLength; i++ )
      {
         binWriter->Write( dataArray[ i ] );

      }

      // Create a reader using the stream from the writer.
      BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

      // Return to the beginning of the stream.
      binReader->BaseStream->Position = 0;
      try
      {

         // Read and verify the data.
         i = 0;
         Console::WriteLine( "Verifying the written data." );
         for ( i = 0; i < arrayLength; i++ )
         {
            if ( binReader->ReadDouble() != dataArray[ i ] )
            {
               Console::WriteLine( "Error writing data." );
               break;
            }

         }
         Console::WriteLine( "The data was written and verified." );
      }
      catch ( EndOfStreamException^ e )
      {
         Console::WriteLine( "Error writing data: {0}.", e->GetType()->Name );
      }

   }
   finally
   {
      binWriter->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadInt16 方法

BinaryReader
.
.
::
.
ReadInt16 方法
BinaryReader 类

从当前流中读取 2 字节带符号整数，并使流的当前位置提升 2 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadInt16 As Short
public virtual short ReadInt16()
public:
virtual short ReadInt16()
abstract ReadInt16 : unit -> int16
override ReadInt16 : unit -> int16

返回值

类型： System Int16
从当前流中读取的 2 字节带符号整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadInt32 方法

BinaryReader
.
.
::
.
ReadInt32 方法
BinaryReader 类

从当前流中读取 4 字节带符号整数，并使流的当前位置提升 4 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadInt32 As Integer
public virtual int ReadInt32()
public:
virtual int ReadInt32()
abstract ReadInt32 : unit -> int
override ReadInt32 : unit -> int

返回值

类型： System Int32
从当前流中读取的 4 字节带符号整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryReader 类提供的更大示例。

Dim binReader As New BinaryReader( _
    File.Open(fileName, FileMode.Open))
Try

    ' If the file is not empty,
    ' read the application settings.
    ' First read 4 bytes into a buffer to
    ' determine if the file is empty.
    Dim testArray As Byte() = {0,0,0,0}
    Dim count As Integer = binReader.Read(testArray, 0, 3)

    If count <> 0 Then

        ' Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin)

        aspRatio   = binReader.ReadSingle()
        lkupDir     = binReader.ReadString()
        saveTime  = binReader.ReadInt32()
        statusBar = binReader.ReadBoolean()
        Return
    End If

' If the end of the stream is reached before reading
' the four data values, ignore the error and use the
' default settings for the remaining values.
Catch ex As EndOfStreamException
    Console.WriteLine("{0} caught and ignored. " & _
        "Using default values.", ex.GetType().Name)
Finally
    binReader.Close()
End Try

BinaryReader binReader =
    new BinaryReader(File.Open(fileName, FileMode.Open));
try
{
    // If the file is not empty,
    // read the application settings.
    // First read 4 bytes into a buffer to
    // determine if the file is empty.
    byte[] testArray = new byte[3];
    int count = binReader.Read(testArray, 0, 3);

    if (count != 0)
    {
        // Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin);

        aspectRatio   = binReader.ReadSingle();
        lookupDir     = binReader.ReadString();
        autoSaveTime  = binReader.ReadInt32();
        showStatusBar = binReader.ReadBoolean();
    }
}

// If the end of the stream is reached before reading
// the four data values, ignore the error and use the
// default settings for the remaining values.
catch(EndOfStreamException e)
{
    Console.WriteLine("{0} caught and ignored. " +
        "Using default values.", e.GetType().Name);
}
finally
{
    binReader.Close();
}

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadInt64 方法

BinaryReader
.
.
::
.
ReadInt64 方法
BinaryReader 类

从当前流中读取 8 字节带符号整数，并使流的当前位置向前移动 8 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadInt64 As Long
public virtual long ReadInt64()
public:
virtual long long ReadInt64()
abstract ReadInt64 : unit -> int64
override ReadInt64 : unit -> int64

返回值

类型： System Int64
从当前流中读取的 8 字节带符号整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadSByte 方法

BinaryReader
.
.
::
.
ReadSByte 方法
BinaryReader 类

从此流中读取一个有符号字节，并使流的当前位置提升 1 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Function ReadSByte As SByte
[CLSCompliantAttribute(false)]
public virtual sbyte ReadSByte()
[CLSCompliantAttribute(false)]
public:
virtual signed char ReadSByte()
[<CLSCompliantAttribute(false)>]
abstract ReadSByte : unit -> sbyte
[<CLSCompliantAttribute(false)>]
override ReadSByte : unit -> sbyte

返回值

类型： System SByte
从当前流中读取的一个有符号字节。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadSingle 方法

BinaryReader
.
.
::
.
ReadSingle 方法
BinaryReader 类

从当前流中读取 4 字节浮点值，并使流的当前位置提升 4 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadSingle As Single
public virtual float ReadSingle()
public:
virtual float ReadSingle()
abstract ReadSingle : unit -> float32
override ReadSingle : unit -> float32

返回值

类型： System Single
从当前流中读取的 4 字节浮点值。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryReader 类提供的更大示例。

Dim binReader As New BinaryReader( _
    File.Open(fileName, FileMode.Open))
Try

    ' If the file is not empty,
    ' read the application settings.
    ' First read 4 bytes into a buffer to
    ' determine if the file is empty.
    Dim testArray As Byte() = {0,0,0,0}
    Dim count As Integer = binReader.Read(testArray, 0, 3)

    If count <> 0 Then

        ' Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin)

        aspRatio   = binReader.ReadSingle()
        lkupDir     = binReader.ReadString()
        saveTime  = binReader.ReadInt32()
        statusBar = binReader.ReadBoolean()
        Return
    End If

' If the end of the stream is reached before reading
' the four data values, ignore the error and use the
' default settings for the remaining values.
Catch ex As EndOfStreamException
    Console.WriteLine("{0} caught and ignored. " & _
        "Using default values.", ex.GetType().Name)
Finally
    binReader.Close()
End Try

BinaryReader binReader =
    new BinaryReader(File.Open(fileName, FileMode.Open));
try
{
    // If the file is not empty,
    // read the application settings.
    // First read 4 bytes into a buffer to
    // determine if the file is empty.
    byte[] testArray = new byte[3];
    int count = binReader.Read(testArray, 0, 3);

    if (count != 0)
    {
        // Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin);

        aspectRatio   = binReader.ReadSingle();
        lookupDir     = binReader.ReadString();
        autoSaveTime  = binReader.ReadInt32();
        showStatusBar = binReader.ReadBoolean();
    }
}

// If the end of the stream is reached before reading
// the four data values, ignore the error and use the
// default settings for the remaining values.
catch(EndOfStreamException e)
{
    Console.WriteLine("{0} caught and ignored. " +
        "Using default values.", e.GetType().Name);
}
finally
{
    binReader.Close();
}

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadString 方法

BinaryReader
.
.
::
.
ReadString 方法
BinaryReader 类

从当前流中读取一个字符串。字符串有长度前缀，一次 7 位地被编码为整数。 从当前流中读取一个字符串。字符串有长度前缀，一次 7 位地被编码为整数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadString As String
public virtual string ReadString()
public:
virtual String^ ReadString()
abstract ReadString : unit -> string
override ReadString : unit -> string

返回值

类型： System String
正被读取的字符串。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryReader 类提供的更大示例。

Dim binReader As New BinaryReader( _
    File.Open(fileName, FileMode.Open))
Try

    ' If the file is not empty,
    ' read the application settings.
    ' First read 4 bytes into a buffer to
    ' determine if the file is empty.
    Dim testArray As Byte() = {0,0,0,0}
    Dim count As Integer = binReader.Read(testArray, 0, 3)

    If count <> 0 Then

        ' Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin)

        aspRatio   = binReader.ReadSingle()
        lkupDir     = binReader.ReadString()
        saveTime  = binReader.ReadInt32()
        statusBar = binReader.ReadBoolean()
        Return
    End If

' If the end of the stream is reached before reading
' the four data values, ignore the error and use the
' default settings for the remaining values.
Catch ex As EndOfStreamException
    Console.WriteLine("{0} caught and ignored. " & _
        "Using default values.", ex.GetType().Name)
Finally
    binReader.Close()
End Try

BinaryReader binReader =
    new BinaryReader(File.Open(fileName, FileMode.Open));
try
{
    // If the file is not empty,
    // read the application settings.
    // First read 4 bytes into a buffer to
    // determine if the file is empty.
    byte[] testArray = new byte[3];
    int count = binReader.Read(testArray, 0, 3);

    if (count != 0)
    {
        // Reset the position in the stream to zero.
        binReader.BaseStream.Seek(0, SeekOrigin.Begin);

        aspectRatio   = binReader.ReadSingle();
        lookupDir     = binReader.ReadString();
        autoSaveTime  = binReader.ReadInt32();
        showStatusBar = binReader.ReadBoolean();
    }
}

// If the end of the stream is reached before reading
// the four data values, ignore the error and use the
// default settings for the remaining values.
catch(EndOfStreamException e)
{
    Console.WriteLine("{0} caught and ignored. " +
        "Using default values.", e.GetType().Name);
}
finally
{
    binReader.Close();
}

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadUInt16 方法

BinaryReader
.
.
::
.
ReadUInt16 方法
BinaryReader 类

使用 Little-Endian 编码从当前流中读取 2 字节无符号整数，并将流的位置提升 2 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Function ReadUInt16 As UShort
[CLSCompliantAttribute(false)]
public virtual ushort ReadUInt16()
[CLSCompliantAttribute(false)]
public:
virtual unsigned short ReadUInt16()
[<CLSCompliantAttribute(false)>]
abstract ReadUInt16 : unit -> uint16
[<CLSCompliantAttribute(false)>]
override ReadUInt16 : unit -> uint16

返回值

类型： System UInt16
从该流中读取的 2 字节无符号整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadUInt32 方法

BinaryReader
.
.
::
.
ReadUInt32 方法
BinaryReader 类

从当前流中读取 4 字节无符号整数并使流的当前位置提升 4 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Function ReadUInt32 As UInteger
[CLSCompliantAttribute(false)]
public virtual uint ReadUInt32()
[CLSCompliantAttribute(false)]
public:
virtual unsigned int ReadUInt32()
[<CLSCompliantAttribute(false)>]
abstract ReadUInt32 : unit -> uint32
[<CLSCompliantAttribute(false)>]
override ReadUInt32 : unit -> uint32

返回值

类型： System UInt32
从该流中读取的 4 字节无符号整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader ..::.ReadUInt64 方法

BinaryReader
.
.
::
.
ReadUInt64 方法
BinaryReader 类

从当前流中读取 8 字节无符号整数并使流的当前位置提升 8 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Function ReadUInt64 As ULong
[CLSCompliantAttribute(false)]
public virtual ulong ReadUInt64()
[CLSCompliantAttribute(false)]
public:
virtual unsigned long long ReadUInt64()
[<CLSCompliantAttribute(false)>]
abstract ReadUInt64 : unit -> uint64
[<CLSCompliantAttribute(false)>]
override ReadUInt64 : unit -> uint64

返回值

类型： System UInt64
从该流中读取的 8 字节无符号整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryReader 在读取失败后不还原文件位置。

BinaryReader 以 Little-Endian 格式读取此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryReader 属性

BinaryReader 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryReader 类

BinaryReader 类型公开以下成员。

名称 说明
页首

参考

BinaryReader 类
System.IO 命名空间


BinaryReader ..::.BaseStream 属性

BinaryReader
.
.
::
.
BaseStream 属性
BinaryReader 类

公开对 BinaryReader 的基础流的访问。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property BaseStream As Stream
    Get
public virtual Stream BaseStream { get; }
public:
virtual property Stream^ BaseStream {
    Stream^ get ();
}
abstract BaseStream : Stream
override BaseStream : Stream

属性值

类型： System.IO Stream
同 BinaryReader 关联的基础流。
警告说明 警告

如果在读取或使用 BinaryReader 时使用基础流，则可能导致数据丢失和损坏。例如，相同的字节可能会被读取多次，可能会跳过某些字节，或者字符的读取可能变得不可预知。 如果在读取或使用 BinaryReader 时使用基础流，则可能导致数据丢失和损坏。例如，相同的字节可能会被读取多次，可能会跳过某些字节，或者字符的读取可能变得不可预知。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。 下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")

            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<double>^dataArray = gcnew array<double>(arrayLength);
   Random^ randomGenerator = gcnew Random;
   for ( i = 0; i < arrayLength; i++ )
   {
      dataArray[ i ] = 100.1 * randomGenerator->NextDouble();

   }
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   try
   {

      // Write data to the stream.
      Console::WriteLine( "Writing data to the stream." );
      i = 0;
      for ( i = 0; i < arrayLength; i++ )
      {
         binWriter->Write( dataArray[ i ] );

      }

      // Create a reader using the stream from the writer.
      BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

      // Return to the beginning of the stream.
      binReader->BaseStream->Position = 0;
      try
      {

         // Read and verify the data.
         i = 0;
         Console::WriteLine( "Verifying the written data." );
         for ( i = 0; i < arrayLength; i++ )
         {
            if ( binReader->ReadDouble() != dataArray[ i ] )
            {
               Console::WriteLine( "Error writing data." );
               break;
            }

         }
         Console::WriteLine( "The data was written and verified." );
      }
      catch ( EndOfStreamException^ e )
      {
         Console::WriteLine( "Error writing data: {0}.", e->GetType()->Name );
      }

   }
   finally
   {
      binWriter->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryReader 类
BinaryReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter 类

BinaryWriter 类
成员

以二进制形式将基元类型写入流，并支持用特定的编码写入字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class BinaryWriter _
    Implements IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class BinaryWriter : IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class BinaryWriter : IDisposable
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type BinaryWriter =
    class
        interface IDisposable
    end

派生类可重写该类的方法，以提供唯一的字符编码。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例阐释了如何在文件中存储应用程序设置以及如何检索这些设置。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Security.Permissions

' Store and retrieve application settings.
Public Class AppSettings

    Const fileName As String = "AppSettings#@@#.dat"
    Dim aspRatio As Single
    Dim lkupDir As String
    Dim saveTime As Integer
    Dim statusBar As Boolean

    Sub New()

        ' Create default application settings.
        aspRatio   = 1.3333
        lkupDir     = "C:\AppDirectory"
        saveTime  = 30
        statusBar = False

        If File.Exists(fileName) Then
            Dim binReader As New BinaryReader( _
                File.Open(fileName, FileMode.Open))
            Try

                ' If the file is not empty,
                ' read the application settings.
                ' First read 4 bytes into a buffer to
                ' determine if the file is empty.
                Dim testArray As Byte() = {0,0,0,0}
                Dim count As Integer = binReader.Read(testArray, 0, 3)

                If count <> 0 Then

                    ' Reset the position in the stream to zero.
                    binReader.BaseStream.Seek(0, SeekOrigin.Begin)

                    aspRatio   = binReader.ReadSingle()
                    lkupDir     = binReader.ReadString()
                    saveTime  = binReader.ReadInt32()
                    statusBar = binReader.ReadBoolean()
                    Return
                End If

            ' If the end of the stream is reached before reading
            ' the four data values, ignore the error and use the
            ' default settings for the remaining values.
            Catch ex As EndOfStreamException
                Console.WriteLine("{0} caught and ignored. " & _
                    "Using default values.", ex.GetType().Name)
            Finally
                binReader.Close()
            End Try
        End If

    End Sub

    ' Create a file and store the application settings.
    Sub Close()
        Dim binWriter As New BinaryWriter( _
            File.Open(fileName, FileMode.Create))
        Try
            binWriter.Write(aspRatio)
            binWriter.Write(lkupDir)
            binWriter.Write(saveTime)
            binWriter.Write(statusBar)
        Finally
            binWriter.Close()
        End Try
    End Sub

    Property AspectRatio As Single
        Get
            Return aspRatio
        End Get
        Set
            aspRatio = Value
        End Set
    End Property

    Property LookupDir As String
        Get
            Return lkupDir
        End Get
        Set
            lkupDir = Value
        End Set
    End Property

    Property AutoSaveTime As Integer
        Get
            Return saveTime
        End Get
        Set
            saveTime = Value
        End Set
    End Property

    Property ShowStatusBar As Boolean
        Get
            Return statusBar
        End Get
        Set
            statusBar = Value
        End Set
    End Property

End Class

Public Class Test
    Shared Sub Main()
        ' Load application settings.
        Dim appSettings As New AppSettings()
        Console.WriteLine("App settings:" & vbcrLf & "Aspect " & _
            "Ratio: {0}, Lookup directory: {1}," & vbcrLf & "Auto " & _
            "save time: {2} minutes, Show status bar: {3}" & vbCrLf, _
            New Object(3){appSettings.AspectRatio.ToString(), _
            appSettings.LookupDir, _
            appSettings.AutoSaveTime.ToString(), _
            appSettings.ShowStatusBar.ToString()})

        ' Change the settings.
        appSettings.AspectRatio   = 1.250
        appSettings.LookupDir     = "C:\Temp"
        appSettings.AutoSaveTime  = 10
        appSettings.ShowStatusBar = True

        ' Save the new settings.
        appSettings.Close()

    End Sub
End Class

using System;
using System.IO;
using System.Security.Permissions;

// Store and retrieve application settings.
class AppSettings
{
    const string fileName = "AppSettings#@@#.dat";
    float  aspectRatio;
    string lookupDir;
    int    autoSaveTime;
    bool   showStatusBar;

    public AppSettings()
    {
        // Create default application settings.
        aspectRatio   = 1.3333F;
        lookupDir     = @"C:\AppDirectory";
        autoSaveTime  = 30;
        showStatusBar = false;

        if(File.Exists(fileName))
        {
            BinaryReader binReader =
                new BinaryReader(File.Open(fileName, FileMode.Open));
            try
            {
                // If the file is not empty,
                // read the application settings.
                // First read 4 bytes into a buffer to
                // determine if the file is empty.
                byte[] testArray = new byte[3];
                int count = binReader.Read(testArray, 0, 3);

                if (count != 0)
                {
                    // Reset the position in the stream to zero.
                    binReader.BaseStream.Seek(0, SeekOrigin.Begin);

                    aspectRatio   = binReader.ReadSingle();
                    lookupDir     = binReader.ReadString();
                    autoSaveTime  = binReader.ReadInt32();
                    showStatusBar = binReader.ReadBoolean();
                }
            }

            // If the end of the stream is reached before reading
            // the four data values, ignore the error and use the
            // default settings for the remaining values.
            catch(EndOfStreamException e)
            {
                Console.WriteLine("{0} caught and ignored. " +
                    "Using default values.", e.GetType().Name);
            }
            finally
            {
                binReader.Close();
            }
        }

    }

    // Create a file and store the application settings.
    public void Close()
    {
        using(BinaryWriter binWriter =
            new BinaryWriter(File.Open(fileName, FileMode.Create)))
        {
            binWriter.Write(aspectRatio);
            binWriter.Write(lookupDir);
            binWriter.Write(autoSaveTime);
            binWriter.Write(showStatusBar);
        }
    }

    public float AspectRatio
    {
        get{ return aspectRatio; }
        set{ aspectRatio = value; }
    }

    public string LookupDir
    {
        get{ return lookupDir; }
        set{ lookupDir = value; }
    }

    public int AutoSaveTime
    {
        get{ return autoSaveTime; }
        set{ autoSaveTime = value; }
    }

    public bool ShowStatusBar
    {
        get{ return showStatusBar; }
        set{ showStatusBar = value; }
    }
}

class Test
{
    static void Main()
    {
        // Load application settings.
        AppSettings appSettings = new AppSettings();
        Console.WriteLine("App settings:\nAspect Ratio: {0}, " +
            "Lookup directory: {1},\nAuto save time: {2} minutes, " +
            "Show status bar: {3}\n",
            new Object[4]{appSettings.AspectRatio.ToString(),
            appSettings.LookupDir, appSettings.AutoSaveTime.ToString(),
            appSettings.ShowStatusBar.ToString()});

        // Change the settings.
        appSettings.AspectRatio   = 1.250F;
        appSettings.LookupDir     = @"C:\Temp";
        appSettings.AutoSaveTime  = 10;
        appSettings.ShowStatusBar = true;

        // Save the new settings.
        appSettings.Close();
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::Permissions;

// Store and retrieve application settings.
ref class AppSettings
{
private:
   static String^ fileName =  "AppSettings#@@#.dat";
   float aspectRatio;
   String^ lookupDir;
   int autoSaveTime;
   Boolean showStatusBar;

public:

   property float AspectRatio
   {
      float get()
      {
         return aspectRatio;
      }

      void set( float value )
      {
         aspectRatio = value;
      }

   }

   property String^ LookupDir
   {
      String^ get()
      {
         return lookupDir;
      }

      void set( String^ value )
      {
         lookupDir = value;
      }

   }

   property int AutoSaveTime
   {
      int get()
      {
         return autoSaveTime;
      }

      void set( int value )
      {
         autoSaveTime = value;
      }

   }

   property Boolean ShowStatusBar
   {
      Boolean get()
      {
         return showStatusBar;
      }

      void set( Boolean value )
      {
         showStatusBar = value;
      }

   }
   AppSettings()
   {

      // Create default application settings.
      aspectRatio = 1.3333F;
      lookupDir =  "C:\\AppDirectory";
      autoSaveTime = 30;
      showStatusBar = false;
      if ( File::Exists( fileName ) )
      {

         BinaryReader^ binReader = gcnew BinaryReader( File::Open( fileName, FileMode::Open ) );
         try
         {

            // If the file is not empty,
            // read the application settings.
            // First read 4 bytes into a buffer to
            // determine if the file is empty.
            array<Byte>^testArray = gcnew array<Byte>(3);
            int count = binReader->Read(testArray, 0, 3);
            if ( count != -1 )
            {

               // Reset the position in the stream to zero.
               binReader->BaseStream->Seek(0, SeekOrigin::Begin);

               aspectRatio = binReader->ReadSingle();
               lookupDir = binReader->ReadString();
               autoSaveTime = binReader->ReadInt32();
               showStatusBar = binReader->ReadBoolean();
               return;
            }
         }
         // If the end of the stream is reached before reading
         // the four data values, ignore the error and use the
         // default settings for the remaining values.
         catch ( EndOfStreamException^ e )
         {
            Console::WriteLine( "{0} caught and ignored. "
            "Using default values.", e->GetType()->Name );
         }
         finally
         {
            binReader->Close();
         }

      }
   }

   // Create a file and store the application settings.
   void Close()
   {

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

   }

};

int main()
{

   // Load application settings.
   AppSettings^ appSettings = gcnew AppSettings;
   array<Object^>^someObject = {appSettings->AspectRatio.ToString(),appSettings->LookupDir,appSettings->AutoSaveTime.ToString(),appSettings->ShowStatusBar.ToString()};
   Console::WriteLine( "App settings:\nAspect Ratio: {0}, "
   "Lookup directory: {1},\nAuto save time: {2} minutes, "
   "Show status bar: {3}\n", someObject );

   // Change the settings.
   appSettings->AspectRatio = 1.250F;
   appSettings->LookupDir =  "C:\\Temp";
   appSettings->AutoSaveTime = 10;
   appSettings->ShowStatusBar = true;

   // Save the new settings.
   appSettings->Close();
}

System.IO System.IO..::.BinaryWriterBinaryWriter
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 成员
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


BinaryWriter 成员

BinaryWriter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

以二进制形式将基元类型写入流，并支持用特定的编码写入字符串。

BinaryWriter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

BinaryWriter 类
System.IO 命名空间


BinaryWriter 构造函数

BinaryWriter 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

初始化向流中写入的 BinaryWriter 类的新实例。

名称 说明
页首

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间


BinaryWriter 构造函数

BinaryWriter 构造函数
BinaryWriter 类

初始化向流中写入的 BinaryWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected BinaryWriter()
protected:
BinaryWriter()
new : unit -> BinaryWriter

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
BinaryWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter 构造函数 (Stream)

BinaryWriter 构造函数 (Stream)
BinaryWriter 类

基于所提供的流，用 UTF-8 作为字符串编码来初始化 BinaryWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    output As Stream _
)
public BinaryWriter(
    Stream output
)
public:
BinaryWriter(
    Stream^ output
)
new :
        output:Stream -> BinaryWriter

参数

output
类型： System.IO Stream
输出流。
异常 | 条件
ArgumentException | 该流不支持写入，或者该流已关闭。
ArgumentNullException | output 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryWriter 类提供的更大示例。

Dim binWriter As New BinaryWriter( _
    File.Open(fileName, FileMode.Create))
Try
    binWriter.Write(aspRatio)
    binWriter.Write(lkupDir)
    binWriter.Write(saveTime)
    binWriter.Write(statusBar)
Finally
    binWriter.Close()
End Try

using(BinaryWriter binWriter =
    new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
    binWriter.Write(aspectRatio);
    binWriter.Write(lookupDir);
    binWriter.Write(autoSaveTime);
    binWriter.Write(showStatusBar);
}

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
BinaryWriter 重载
System.IO 命名空间
UTF8

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter 构造函数 (Stream, Encoding)

BinaryWriter 构造函数 (Stream, Encoding)
BinaryWriter 类

基于所提供的流和特定的字符编码，初始化 BinaryWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    output As Stream, _
    encoding As Encoding _
)
public BinaryWriter(
    Stream output,
    Encoding encoding
)
public:
BinaryWriter(
    Stream^ output,
    Encoding^ encoding
)
new :
        output:Stream *
        encoding:Encoding -> BinaryWriter

参数

output
类型： System.IO Stream
所提供的流。
encoding
类型： System.Text Encoding
字符编码。
异常 | 条件
ArgumentException | 该流不支持写入，或者该流已关闭。
ArgumentNullException | output 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
BinaryWriter 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter 字段

BinaryWriter 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

BinaryWriter 类型公开以下成员。

名称 说明
页首

参考

BinaryWriter 类
System.IO 命名空间


BinaryWriter ..::.Null 字段

BinaryWriter
.
.
::
.
Null 字段
BinaryWriter 类

指定无后备存储区的 BinaryWriter。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly Null As BinaryWriter
public static readonly BinaryWriter Null
public:
static initonly BinaryWriter^ Null
static val Null: BinaryWriter

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.OutStream 字段

BinaryWriter
.
.
::
.
OutStream 字段
BinaryWriter 类

持有基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected OutStream As Stream
protected Stream OutStream
protected:
Stream^ OutStream
val mutable OutStream: Stream

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter 方法

BinaryWriter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

BinaryWriter 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

BinaryWriter 类
System.IO 命名空间


BinaryWriter ..::.Close 方法

BinaryWriter
.
.
::
.
Close 方法
BinaryWriter 类

关闭当前的 BinaryWriter 和基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Close
public virtual void Close()
public:
virtual void Close()
abstract Close : unit -> unit
override Close : unit -> unit

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

此代码示例摘自一个为 BinaryWriter 类提供的更大示例。

Dim binWriter As New BinaryWriter( _
    File.Open(fileName, FileMode.Create))
Try
    binWriter.Write(aspRatio)
    binWriter.Write(lkupDir)
    binWriter.Write(saveTime)
    binWriter.Write(statusBar)
Finally
    binWriter.Close()
End Try

using(BinaryWriter binWriter =
    new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
    binWriter.Write(aspectRatio);
    binWriter.Write(lookupDir);
    binWriter.Write(autoSaveTime);
    binWriter.Write(showStatusBar);
}

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Dispose 方法

BinaryWriter
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

释放由 BinaryWriter 占用的资源。

名称 说明
页首

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间


BinaryWriter ..::.Dispose 方法

BinaryWriter
.
.
::
.
Dispose 方法
BinaryWriter 类

释放由 BinaryWriter 类的当前实例占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

BinaryWriter 类
BinaryWriter 成员
Dispose 重载
System.IO 命名空间


BinaryWriter ..::.Dispose 方法 (Boolean)

BinaryWriter
.
.
::
.
Dispose 方法 (Boolean)
BinaryWriter 类

释放由 BinaryWriter 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Flush 方法

BinaryWriter
.
.
::
.
Flush 方法
BinaryWriter 类

清理当前编写器的所有缓冲区，使所有缓冲数据写入基础设备。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Flush
public virtual void Flush()
public:
virtual void Flush()
abstract Flush : unit -> unit
override Flush : unit -> unit

所有的派生类都应重写 Flush，以确保将所有的缓冲数据发送到流。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.IDisposable ..::.Dispose 方法

BinaryWriter
.
.
::
.
IDisposable
.
.
::
.
Dispose 方法
BinaryWriter 类

执行与释放或重置非托管资源相关的应用程序定义的任务。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Private Sub Dispose Implements IDisposable.Dispose
void IDisposable.Dispose()
private:
virtual void Dispose() sealed = IDisposable::Dispose
private abstract Dispose : unit -> unit
private override Dispose : unit -> unit

实现

此成员是显式的接口成员实现。只能在 BinaryWriter 实例强制转换为 IDisposable 接口时使用它。 此成员是显式的接口成员实现。只能在 BinaryWriter 实例强制转换为 IDisposable 接口时使用它。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：3.5、3.0、2.0、1.1、1.0

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间


BinaryWriter ..::.Seek 方法

BinaryWriter
.
.
::
.
Seek 方法
BinaryWriter 类

设置当前流中的位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Seek ( _
    offset As Integer, _
    origin As SeekOrigin _
) As Long
public virtual long Seek(
    int offset,
    SeekOrigin origin
)
public:
virtual long long Seek(
    int offset,
    SeekOrigin origin
)
abstract Seek :
        offset:int *
        origin:SeekOrigin -> int64
override Seek :
        offset:int *
        origin:SeekOrigin -> int64

参数

offset
类型： System Int32
相对于 origin 的字节偏移量。
origin
类型： System.IO SeekOrigin
SeekOrigin 的一个字段，指示获取新位置所依据的参考点。

返回值

类型： System Int64
包含当前流的位置。
异常 | 条件
IOException | 文件指针被移到无效位置。
ArgumentException | SeekOrigin 值无效。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将一系列字节值写入文件。该示例使用 Seek 移动到文件中的各个位置，然后通过使用 Write 方法写入标记字节。 下面的示例将一系列字节值写入文件。该示例使用 Seek 移动到文件中的各个位置，然后通过使用 Write 方法写入标记字节。

Imports System
Imports System.IO
Imports System.Text

Public Class BinReadWrite
    Public Shared Sub Main()
        Dim testfile As String = "C:\testfile.bin"

        ' create a test file using BinaryWriter
        Dim fs As FileStream = File.Create(testfile)
        Dim utf8 As New UTF8Encoding()

        Dim bw As New BinaryWriter(fs, utf8)
        ' write a series of bytes to the file, each time incrementing
        ' the value from 0 - 127
        Dim pos As Integer

        For pos = 0 to 127
            bw.Write(CType(pos, Byte))
        Next pos

        ' reset the stream position for the next write pass
        bw.Seek(0, SeekOrigin.Begin)
        ' write marks in file with the value of 255 going forward
        For pos = 0 To 119 Step 8
            bw.Seek(7, SeekOrigin.Current)
            bw.Write(CType(255, Byte))
        Next pos

        ' reset the stream position for the next write pass
        bw.Seek(0, SeekOrigin.End)
        ' write marks in file with the value of 254 going backward
        For pos = 128 To 7 Step -6
            bw.Seek(-6, SeekOrigin.Current)
            bw.Write(CType(254, Byte))
            bw.Seek(-1, SeekOrigin.Current)
        Next pos

        ' now dump the contents of the file using the original file stream
        fs.Seek(0, SeekOrigin.Begin)
        Console.WriteLine("Length: {0:d}", fs.Length)
        Dim rawbytes(fs.Length) As Byte
        fs.Read(rawbytes, 0, fs.Length)
        Console.WriteLine("Length: {0:d}", rawbytes.Length)

        Dim i As Integer = 0
        For Each b As Byte In rawbytes
             Select b
                 Case 254
                     Console.Write("-%- ")

                 Case 255
                     Console.Write("-*- ")

                 Case Else
                     Console.Write("{0:d3} ", b)
             End Select
             i = i + 1
             If i = 16 Then
                 Console.WriteLine()
                 i = 0
             End If
        Next b
        fs.Close()
    End Sub
End Class

' The output from the program is this:
'
' 000 001 -%- 003 004 005 006 -*- -%- 009 010 011 012 013 -%- -*-
' 016 017 018 019 -%- 021 022 -*- 024 025 -%- 027 028 029 030 -*-
' -%- 033 034 035 036 037 -%- -*- 040 041 042 043 -%- 045 046 -*-
' 048 049 -%- 051 052 053 054 -*- -%- 057 058 059 060 061 -%- -*-
' 064 065 066 067 -%- 069 070 -*- 072 073 -%- 075 076 077 078 -*-
' -%- 081 082 083 084 085 -%- -*- 088 089 090 091 -%- 093 094 -*-
' 096 097 -%- 099 100 101 102 -*- -%- 105 106 107 108 109 -%- -*-
' 112 113 114 115 -%- 117 118 -*- 120 121 -%- 123 124 125 126 127

using System;
using System.IO;
using System.Text;

public class BinReadWrite
{
    public static void Main()
    {
        string testfile = @"C:\testfile.bin";

        // create a test file using BinaryWriter
        FileStream fs = File.Create(testfile);
        UTF8Encoding utf8 = new UTF8Encoding();

        BinaryWriter bw = new BinaryWriter(fs, utf8);
        // write a series of bytes to the file, each time incrementing
        // the value from 0 - 127
        int pos;

        for (pos = 0; pos < 128; pos++)
        {
            bw.Write((byte)pos);
        }

        // reset the stream position for the next write pass
        bw.Seek(0, SeekOrigin.Begin);
        // write marks in file with the value of 255 going forward
        for (pos = 0; pos < 120; pos += 8)
        {
            bw.Seek(7, SeekOrigin.Current);
            bw.Write((byte)255);
        }

        // reset the stream position for the next write pass
        bw.Seek(0, SeekOrigin.End);
        // write marks in file with the value of 254 going backward
        for (pos = 128; pos > 6; pos -= 6)
        {
            bw.Seek(-6, SeekOrigin.Current);
            bw.Write((byte)254);
            bw.Seek(-1, SeekOrigin.Current);
        }

        // now dump the contents of the file using the original file stream
        fs.Seek(0, SeekOrigin.Begin);
        byte[] rawbytes = new byte[fs.Length];
        fs.Read(rawbytes, 0, (int)fs.Length);

        int i = 0;
        foreach (byte b in rawbytes)
        {
             switch (b)
             {
                 case 254:
                 {
                     Console.Write("-%- ");
                 }
                 break;

                 case 255:
                 {
                     Console.Write("-*- ");
                 }
                 break;

                 default:
                 {
                     Console.Write("{0:d3} ", b);
                 }
                 break;
             }
             i++;
             if (i == 16)
             {
                 Console.WriteLine();
                 i = 0;
             }
        }
        fs.Close();
    }
}

//The output from the program is this:
//
// 000 001 -%- 003 004 005 006 -*- -%- 009 010 011 012 013 -%- -*-
// 016 017 018 019 -%- 021 022 -*- 024 025 -%- 027 028 029 030 -*-
// -%- 033 034 035 036 037 -%- -*- 040 041 042 043 -%- 045 046 -*-
// 048 049 -%- 051 052 053 054 -*- -%- 057 058 059 060 061 -%- -*-
// 064 065 066 067 -%- 069 070 -*- 072 073 -%- 075 076 077 078 -*-
// -%- 081 082 083 084 085 -%- -*- 088 089 090 091 -%- 093 094 -*-
// 096 097 -%- 099 100 101 102 -*- -%- 105 106 107 108 109 -%- -*-
// 112 113 114 115 -%- 117 118 -*- 120 121 -%- 123 124 125 126 127

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class BinReadWrite
{
public:
    static void Main()
    {
        String^ testfile = "C:\\testfile.bin";

        // create a test file using BinaryWriter
        FileStream^ fs = File::Create(testfile);
        UTF8Encoding^ utf8 = gcnew UTF8Encoding();

        BinaryWriter^ bw = gcnew BinaryWriter(fs, utf8);
        // write a series of bytes to the file, each time incrementing
        // the value from 0 - 127
        int pos;

        for (pos = 0; pos < 128; pos++)
        {
            bw->Write((Byte)pos);
        }

        // reset the stream position for the next write pass
        bw->Seek(0, SeekOrigin::Begin);
        // write marks in file with the value of 255 going forward
        for (pos = 0; pos < 120; pos += 8)
        {
            bw->Seek(7, SeekOrigin::Current);
            bw->Write((Byte)255);
        }

        // reset the stream position for the next write pass
        bw->Seek(0, SeekOrigin::End);
        // write marks in file with the value of 254 going backward
        for (pos = 128; pos > 6; pos -= 6)
        {
            bw->Seek(-6, SeekOrigin::Current);
            bw->Write((Byte)254);
            bw->Seek(-1, SeekOrigin::Current);
        }

        // now dump the contents of the file using the original file stream
        fs->Seek(0, SeekOrigin::Begin);
        array<Byte>^ rawbytes = gcnew array<Byte>(fs->Length);
        fs->Read(rawbytes, 0, (int)fs->Length);

        int i = 0;
        for each (Byte b in rawbytes)
        {
             switch (b)
             {
                 case 254:
                 {
                     Console::Write("-%- ");
                 }
                 break;

                 case 255:
                 {
                     Console::Write("-*- ");
                 }
                 break;

                 default:
                 {
                     Console::Write("{0:d3} ", b);
                 }
                 break;
             }
             i++;
             if (i == 16)
             {
                 Console::WriteLine();
                 i = 0;
             }
        }
        fs->Close();
    }
};

int main()
{
    BinReadWrite::Main();
}

//The output from the program is this:
//
// 000 001 -%- 003 004 005 006 -*- -%- 009 010 011 012 013 -%- -*-
// 016 017 018 019 -%- 021 022 -*- 024 025 -%- 027 028 029 030 -*-
// -%- 033 034 035 036 037 -%- -*- 040 041 042 043 -%- 045 046 -*-
// 048 049 -%- 051 052 053 054 -*- -%- 057 058 059 060 061 -%- -*-
// 064 065 066 067 -%- 069 070 -*- 072 073 -%- 075 076 077 078 -*-
// -%- 081 082 083 084 085 -%- -*- 088 089 090 091 -%- 093 094 -*-
// 096 097 -%- 099 100 101 102 -*- -%- 105 106 107 108 109 -%- -*-
// 112 113 114 115 -%- 117 118 -*- 120 121 -%- 123 124 125 126 127

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法

BinaryWriter
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

将值写入当前流。

名称 说明
页首

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间


BinaryWriter ..::.Write 方法 (Boolean)

BinaryWriter
.
.
::
.
Write 方法 (Boolean)
BinaryWriter 类

将单字节 Boolean 值写入当前流，其中 0 表示 false，1 表示 true。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Boolean _
)
public virtual void Write(
    bool value
)
public:
virtual void Write(
    bool value
)
abstract Write :
        value:bool -> unit
override Write :
        value:bool -> unit

参数

value
类型： System Boolean
要写入的 Boolean 值（0 或 1）。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryWriter 类提供的更大示例。

Dim binWriter As New BinaryWriter( _
    File.Open(fileName, FileMode.Create))
Try
    binWriter.Write(aspRatio)
    binWriter.Write(lkupDir)
    binWriter.Write(saveTime)
    binWriter.Write(statusBar)
Finally
    binWriter.Close()
End Try

using(BinaryWriter binWriter =
    new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
    binWriter.Write(aspectRatio);
    binWriter.Write(lookupDir);
    binWriter.Write(autoSaveTime);
    binWriter.Write(showStatusBar);
}

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Byte)

BinaryWriter
.
.
::
.
Write 方法 (Byte)
BinaryWriter 类

将一个无符号字节写入当前流，并将流的位置提升 1 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Byte _
)
public virtual void Write(
    byte value
)
public:
virtual void Write(
    unsigned char value
)
abstract Write :
        value:byte -> unit
override Write :
        value:byte -> unit

参数

value
类型： System Byte
要写入的无符号字节。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

因为存在数据格式设置冲突，所以不建议对以下编码方式使用此方法：

  • UTF-7

  • ISO-2022-JP

  • ISCII

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来写入二进制数据，然后验证数据是否被正确写入。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer = 0

        ' Create random data to write to the stream.
        Dim writeArray(1000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(writeArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        Try

            ' Write the data to the stream.
            Console.WriteLine("Writing the data.")
            For i = 0 To writeArray.Length - 1
                binWriter.Write(writeArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data from the stream.
            For i = 0 To writeArray.Length - 1
                If binReader.ReadByte() <> writeArray(i) Then
                    Console.WriteLine("Error writing the data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written and verified.")

        ' Catch the EndOfStreamException and write an error message.
        Catch ex As EndOfStreamException
            Console.WriteLine("Error writing the data: {0}", _
                ex.GetType().Name)
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;

        // Create random data to write to the stream.
        byte[] writeArray = new byte[1000];
        new Random().NextBytes(writeArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        try
        {
            // Write the data to the stream.
            Console.WriteLine("Writing the data.");
            for(i = 0; i < writeArray.Length; i++)
            {
                binWriter.Write(writeArray[i]);
            }

            // Set the stream position to the beginning of the stream.
            binReader.BaseStream.Position = 0;

            // Read and verify the data from the stream.
            for(i = 0; i < writeArray.Length; i++)
            {
                if(binReader.ReadByte() != writeArray[i])
                {
                    Console.WriteLine("Error writing the data.");
                    return;
                }
            }
            Console.WriteLine("The data was written and verified.");
        }

        // Catch the EndOfStreamException and write an error message.
        catch(EndOfStreamException e)
        {
            Console.WriteLine("Error writing the data.\n{0}",
                e.GetType().Name);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i = 0;

   // Create random data to write to the stream.
   array<Byte>^writeArray = gcnew array<Byte>(1000);
   (gcnew Random)->NextBytes( writeArray );
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );
   try
   {

      // Write the data to the stream.
      Console::WriteLine( "Writing the data." );
      for ( i = 0; i < writeArray->Length; i++ )
      {
         binWriter->Write( writeArray[ i ] );

      }

      // Set the stream position to the beginning of the stream.
      binReader->BaseStream->Position = 0;

      // Read and verify the data from the stream.
      for ( i = 0; i < writeArray->Length; i++ )
      {
         if ( binReader->ReadByte() != writeArray[ i ] )
         {
            Console::WriteLine( "Error writing the data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written and verified." );
   }
   // Catch the EndOfStreamException and write an error message.
   catch ( EndOfStreamException^ e )
   {
      Console::WriteLine( "Error writing the data.\n{0}", e->GetType()->Name );
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 ( array<Byte >[]()[])

BinaryWriter
.
.
::
.
Write 方法 (
array<
Byte
>
[]
()
[]
)
BinaryWriter 类

将字节数组写入基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    buffer As Byte() _
)
public virtual void Write(
    byte[] buffer
)
public:
virtual void Write(
    array<unsigned char>^ buffer
)
abstract Write :
        buffer:byte[] -> unit
override Write :
        buffer:byte[] -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

包含要写入的数据的字节数组。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来写入二进制数据，然后验证数据是否被正确写入。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Byte
        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())

        ' Write the data to the stream.
        Console.WriteLine("Writing the data.")
        binWriter.Write(dataArray)

        ' Create the reader using the stream from the writer.
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        ' Set the stream position to the beginning of the stream.
        binReader.BaseStream.Position = 0

        ' Read and verify the data.
        Dim verifyArray() As Byte = _
            binReader.ReadBytes(dataArray.Length)
        If verifyArray.Length <> dataArray.Length Then
            Console.WriteLine("Error writing the data.")
            Return
        End If
        For i As Integer = 0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i
        Console.WriteLine("The data was written and verified.")

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        byte[] dataArray = new byte[arrayLength];
        new Random().NextBytes(dataArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());

        // Write the data to the stream.
        Console.WriteLine("Writing the data.");
        binWriter.Write(dataArray);

        // Create the reader using the stream from the writer.
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        // Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0;

        // Read and verify the data.
        byte[] verifyArray = binReader.ReadBytes(arrayLength);
        if(verifyArray.Length != arrayLength)
        {
            Console.WriteLine("Error writing the data.");
            return;
        }
        for(int i = 0; i < arrayLength; i++)
        {
            if(verifyArray[i] != dataArray[i])
            {
                Console.WriteLine("Error writing the data.");
                return;
            }
        }
        Console.WriteLine("The data was written and verified.");
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<Byte>^dataArray = gcnew array<Byte>(arrayLength);
   (gcnew Random)->NextBytes( dataArray );
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );

   // Write the data to the stream.
   Console::WriteLine(  "Writing the data." );
   binWriter->Write( dataArray );

   // Create the reader using the stream from the writer.
   BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

   // Set the stream position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read and verify the data.
   array<Byte>^verifyArray = binReader->ReadBytes( arrayLength );
   if ( verifyArray->Length != arrayLength )
   {
      Console::WriteLine( "Error writing the data." );
      return  -1;
   }

   for ( int i = 0; i < arrayLength; i++ )
   {
      if ( verifyArray[ i ] != dataArray[ i ] )
      {
         Console::WriteLine( "Error writing the data." );
         return  -1;
      }

   }
   Console::WriteLine( "The data was written and verified." );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Char)

BinaryWriter
.
.
::
.
Write 方法 (Char)
BinaryWriter 类

将 Unicode 字符写入当前流，并根据所使用的 Encoding 和向流中写入的特定字符，提升流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    ch As Char _
)
public virtual void Write(
    char ch
)
public:
virtual void Write(
    wchar_t ch
)
abstract Write :
        ch:char -> unit
override Write :
        ch:char -> unit

参数

ch
类型： System Char
要写入的非代理项 Unicode 字符。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。
ArgumentException | ch 是单一代理项字符。

因为存在数据格式设置冲突，所以不建议对以下编码方式使用此方法：

  • UTF-7

  • ISO-2022-JP

  • ISCII

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Unicode 代理项字符必须在同一调用中成对写出，而不是单独写出。如果您需要在应用程序中支持代理项对，请考虑使用字符数组和 Write 方法重载。 Unicode 代理项字符必须在同一调用中成对写出，而不是单独写出。如果您需要在应用程序中支持代理项对，请考虑使用字符数组和 Write 方法重载。

下面的代码示例说明如何通过将内存用作备份来读取和写入数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer = 0
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        For i = 0 To invalidPathChars.Length - 1
            binWriter.Write(invalidPathChars(i))
        Next i

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim memoryData( _
            CInt(memStream.Length - memStream.Position) - 1) As Char
        For i = 0 To memoryData.Length - 1
            memoryData(i) = binReader.ReadChar()
        Next i
        Console.WriteLine(memoryData)

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        for(i = 0; i < invalidPathChars.Length; i++)
        {
            binWriter.Write(invalidPathChars[i]);
        }

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        char[] memoryData =
            new char[memStream.Length - memStream.Position];
        for(i = 0; i < memoryData.Length; i++)
        {
            memoryData[i] = binReader.ReadChar();
        }
        Console.WriteLine(memoryData);
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   for ( i = 0; i < invalidPathChars->Length; i++ )
   {
      binWriter->Write( invalidPathChars[ i ] );

   }

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   array<Char>^memoryData = gcnew array<Char>(memStream->Length - memStream->Position);
   for ( i = 0; i < memoryData->Length; i++ )
   {
      memoryData[ i ] = binReader->ReadChar();

   }
   Console::WriteLine( memoryData );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 ( array<Char >[]()[])

BinaryWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
)
BinaryWriter 类

将字符数组写入当前流，并根据所使用的 Encoding 和向流中写入的特定字符，提升流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    chars As Char() _
)
public virtual void Write(
    char[] chars
)
public:
virtual void Write(
    array<wchar_t>^ chars
)
abstract Write :
        chars:char[] -> unit
override Write :
        chars:char[] -> unit

参数

chars
类型：
array<
System Char
>
[]
()
[]

包含要写入的数据的字符数组。
异常 | 条件
ArgumentNullException | chars 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | 流已关闭。
IOException | 发生 I/O 错误。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件的特性。 | File GetAttributes
设置文件的特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

下面的代码示例说明如何通过将内存用作备份来读取和写入数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars)

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Console.WriteLine(binReader.ReadChars( _
            CInt(memStream.Length - memStream.Position)))

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(Path.InvalidPathChars);

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        Console.WriteLine(binReader.ReadChars(
            (int)(memStream.Length - memStream.Position)));
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   binWriter->Write( Path::InvalidPathChars );

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   Console::WriteLine( binReader->ReadChars( (int)(memStream->Length - memStream->Position) ) );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Decimal)

BinaryWriter
.
.
::
.
Write 方法 (Decimal)
BinaryWriter 类

将一个十进制值写入当前流，并将流位置提升十六个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Decimal _
)
public virtual void Write(
    decimal value
)
public:
virtual void Write(
    Decimal value
)
abstract Write :
        value:decimal -> unit
override Write :
        value:decimal -> unit

参数

value
类型： System Decimal
要写入的十进制值。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件的特性。 | File GetAttributes
设置文件的特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Double)

BinaryWriter
.
.
::
.
Write 方法 (Double)
BinaryWriter 类

将 8 字节浮点值写入当前流，并将流的位置提升 8 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Double _
)
public virtual void Write(
    double value
)
public:
virtual void Write(
    double value
)
abstract Write :
        value:float -> unit
override Write :
        value:float -> unit

参数

value
类型： System Double
要写入的 8 字节浮点值。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。 下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")

            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<double>^dataArray = gcnew array<double>(arrayLength);
   Random^ randomGenerator = gcnew Random;
   for ( i = 0; i < arrayLength; i++ )
   {
      dataArray[ i ] = 100.1 * randomGenerator->NextDouble();

   }
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   try
   {

      // Write data to the stream.
      Console::WriteLine( "Writing data to the stream." );
      i = 0;
      for ( i = 0; i < arrayLength; i++ )
      {
         binWriter->Write( dataArray[ i ] );

      }

      // Create a reader using the stream from the writer.
      BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

      // Return to the beginning of the stream.
      binReader->BaseStream->Position = 0;
      try
      {

         // Read and verify the data.
         i = 0;
         Console::WriteLine( "Verifying the written data." );
         for ( i = 0; i < arrayLength; i++ )
         {
            if ( binReader->ReadDouble() != dataArray[ i ] )
            {
               Console::WriteLine( "Error writing data." );
               break;
            }

         }
         Console::WriteLine( "The data was written and verified." );
      }
      catch ( EndOfStreamException^ e )
      {
         Console::WriteLine( "Error writing data: {0}.", e->GetType()->Name );
      }

   }
   finally
   {
      binWriter->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Int16)

BinaryWriter
.
.
::
.
Write 方法 (Int16)
BinaryWriter 类

将 2 字节带符号整数写入当前流，并将流的位置提升 2 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Short _
)
public virtual void Write(
    short value
)
public:
virtual void Write(
    short value
)
abstract Write :
        value:int16 -> unit
override Write :
        value:int16 -> unit

参数

value
类型： System Int16
要写入的 2 字节带符号整数。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件的特性。 | File GetAttributes
设置文件的特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Int32)

BinaryWriter
.
.
::
.
Write 方法 (Int32)
BinaryWriter 类

将 4 字节带符号整数写入当前流，并将流的位置提升 4 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Integer _
)
public virtual void Write(
    int value
)
public:
virtual void Write(
    int value
)
abstract Write :
        value:int -> unit
override Write :
        value:int -> unit

参数

value
类型： System Int32
要写入的 4 字节带符号整数。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryWriter 类提供的更大示例。

Dim binWriter As New BinaryWriter( _
    File.Open(fileName, FileMode.Create))
Try
    binWriter.Write(aspRatio)
    binWriter.Write(lkupDir)
    binWriter.Write(saveTime)
    binWriter.Write(statusBar)
Finally
    binWriter.Close()
End Try

using(BinaryWriter binWriter =
    new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
    binWriter.Write(aspectRatio);
    binWriter.Write(lookupDir);
    binWriter.Write(autoSaveTime);
    binWriter.Write(showStatusBar);
}

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Int64)

BinaryWriter
.
.
::
.
Write 方法 (Int64)
BinaryWriter 类

将 8 字节带符号整数写入当前流，并将流的位置提升 8 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Long _
)
public virtual void Write(
    long value
)
public:
virtual void Write(
    long long value
)
abstract Write :
        value:int64 -> unit
override Write :
        value:int64 -> unit

参数

value
类型： System Int64
要写入的 8 字节带符号整数。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (SByte)

BinaryWriter
.
.
::
.
Write 方法 (SByte)
BinaryWriter 类

将一个有符号字节写入当前流，并将流的位置提升 1 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub Write ( _
    value As SByte _
)
[CLSCompliantAttribute(false)]
public virtual void Write(
    sbyte value
)
[CLSCompliantAttribute(false)]
public:
virtual void Write(
    signed char value
)
[<CLSCompliantAttribute(false)>]
abstract Write :
        value:sbyte -> unit
[<CLSCompliantAttribute(false)>]
override Write :
        value:sbyte -> unit

参数

value
类型： System SByte
要写入的有符号字节。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (Single)

BinaryWriter
.
.
::
.
Write 方法 (Single)
BinaryWriter 类

将 4 字节浮点值写入当前流，并将流的位置提升 4 个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Single _
)
public virtual void Write(
    float value
)
public:
virtual void Write(
    float value
)
abstract Write :
        value:float32 -> unit
override Write :
        value:float32 -> unit

参数

value
类型： System Single
要写入的 4 字节浮点值。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例摘自一个为 BinaryWriter 类提供的更大示例。

Dim binWriter As New BinaryWriter( _
    File.Open(fileName, FileMode.Create))
Try
    binWriter.Write(aspRatio)
    binWriter.Write(lkupDir)
    binWriter.Write(saveTime)
    binWriter.Write(statusBar)
Finally
    binWriter.Close()
End Try

using(BinaryWriter binWriter =
    new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
    binWriter.Write(aspectRatio);
    binWriter.Write(lookupDir);
    binWriter.Write(autoSaveTime);
    binWriter.Write(showStatusBar);
}

      BinaryWriter^ binWriter = gcnew BinaryWriter( File::Open( fileName, FileMode::Create ) );
      try
      {
         binWriter->Write( aspectRatio );
         binWriter->Write( lookupDir );
         binWriter->Write( autoSaveTime );
         binWriter->Write( showStatusBar );
      }
      finally
      {
         binWriter->Close();
      }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (String)

BinaryWriter
.
.
::
.
Write 方法 (String)
BinaryWriter 类

将有长度前缀的字符串按 BinaryWriter 的当前编码写入此流，并根据所使用的编码和写入流的特定字符，提升流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As String _
)
public virtual void Write(
    string value
)
public:
virtual void Write(
    String^ value
)
abstract Write :
        value:string -> unit
override Write :
        value:string -> unit

参数

value
类型： System String
要写入的值。
异常 | 条件
IOException | 发生 I/O 错误。
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | 流已关闭。

带长度前缀的字符串通过在字符串前面放置一个包含该字符串长度的字节或单词，来表示该字符串的长度。此方法首先将字符串的长度作为 UTF-7 编码的无符号整数写入，然后再将这些字符通过使用 BinaryWriter 实例的当前编码写入流中。 带长度前缀的字符串通过在字符串前面放置一个包含该字符串长度的字节或单词，来表示该字符串的长度。此方法首先将字符串的长度作为 UTF-7 编码的无符号整数写入，然后再将这些字符通过使用 BinaryWriter 实例的当前编码写入流中。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此示例演示如何 Write在编写字符串时添加长度前缀。按原始的字节序列第一次读取字符串数据，并且计算它的长度。接下来，BinaryReader 直接读取字符串。将显示这两个字符串检索的输出。 此示例演示如何 Write在编写字符串时添加长度前缀。按原始的字节序列第一次读取字符串数据，并且计算它的长度。接下来，BinaryReader 直接读取字符串。将显示这两个字符串检索的输出。 此示例演示如何 Write在编写字符串时添加长度前缀。按原始的字节序列第一次读取字符串数据，并且计算它的长度。接下来，BinaryReader 直接读取字符串。将显示这两个字符串检索的输出。 此示例演示如何 Write在编写字符串时添加长度前缀。按原始的字节序列第一次读取字符串数据，并且计算它的长度。接下来，BinaryReader 直接读取字符串。将显示这两个字符串检索的输出。

Imports System
Imports System.IO
Imports System.Text

Public Class BinReadWrite
    Public Shared Sub Main()
        Dim testfile As String = "C:\testfile.bin"

        ' create a test file using BinaryWriter
        Dim fs As FileStream = File.Create(testfile)
        Dim utf8 As New UTF8Encoding()

        Dim bw As New BinaryWriter(fs, utf8)
        Dim bstring As String

        bstring  = "This is line #1 of text written as a binary stream." + vbNewLine
        bstring = bstring + "This is line #2 of text written as a binary stream." + vbNewLine
        bstring = bstring + "This is line #3 of text written as a binary stream." + vbNewLine
        bw.Write(bstring)

        ' reset the stream position for reading
        fs.Seek(0, SeekOrigin.Begin)

        ' Read the string as raw bytes using FileStream...
        ' The first series of bytes is the UTF7 encoded length of the
        ' string. In this case, however, it is just the first two bytes.
        Dim len As Integer = fs.ReadByte() And 127
        len = len + fs.ReadByte() * 128
        ' read the string as bytes of length = len
        Dim rawbytes(len) As Byte
        fs.Read(rawbytes, 0, len)

        ' display the string
        Console.WriteLine("Read from FileStream:   " + vbNewLine + utf8.GetString(rawbytes))
        Console.WriteLine()

        ' Now, read the string using BinaryReader

        ' reset the stream position for reading again
        fs.Seek(0, SeekOrigin.Begin)

        Dim br As New BinaryReader(fs, utf8)
        ' ReadString will read the length prefix and return the string.
        bstring = br.ReadString()
        Console.WriteLine("Read from BinaryReader: "+ vbNewLine + bstring)
        fs.Close()
    End Sub
End Class

' The output from the program is this:
'
' Read from FileStream:
' This is line #1 of text written as a binary stream.
' This is line #2 of text written as a binary stream.
' This is line #3 of text written as a binary stream.
'
' Read from BinaryReader:
' This is line #1 of text written as a binary stream.
' This is line #2 of text written as a binary stream.
' This is line #3 of text written as a binary stream.

using System;
using System.IO;
using System.Text;

public class BinReadWrite
{
    public static void Main()
    {
        string testfile = @"C:\testfile.bin";

        // create a test file using BinaryWriter
        FileStream fs = File.Create(testfile);
        UTF8Encoding utf8 = new UTF8Encoding();

        BinaryWriter bw = new BinaryWriter(fs, utf8);
        string bstring;

        bstring  = "This is line #1 of text written as a binary stream.\r\n";
        bstring += "This is line #2 of text written as a binary stream.\r\n";
        bstring += "This is line #3 of text written as a binary stream.";
        bw.Write(bstring);

        // reset the stream position for reading
        fs.Seek(0, SeekOrigin.Begin);

        // Read the string as raw bytes using FileStream...
        // The first series of bytes is the UTF7 encoded length of the
        // string. In this case, however, it is just the first two bytes.
        int len = fs.ReadByte() & 0x7f;
        len += fs.ReadByte() * 0x80;
        // read the string as bytes of length = len
        byte[] rawbytes = new byte[len];
        fs.Read(rawbytes, 0, len);

        // display the string
        Console.WriteLine("Read from FileStream:   \n" + utf8.GetString(rawbytes));
        Console.WriteLine();

        // Now, read the string using BinaryReader

        // reset the stream position for reading again
        fs.Seek(0, SeekOrigin.Begin);

        BinaryReader br = new BinaryReader(fs, utf8);
        // ReadString will read the length prefix and return the string.
        bstring = br.ReadString();
        Console.WriteLine("Read from BinaryReader: \n" + bstring);
        fs.Close();
    }
}

//The output from the program is this:
//
// Read from FileStream:
// This is line #1 of text written as a binary stream.
// This is line #2 of text written as a binary stream.
// This is line #3 of text written as a binary stream.
//
// Read from BinaryReader:
// This is line #1 of text written as a binary stream.
// This is line #2 of text written as a binary stream.
// This is line #3 of text written as a binary stream.

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class BinReadWrite
{
public:
    static void Main()
    {
        String^ testfile = "C:\\testfile.bin";

        // create a test file using BinaryWriter
        FileStream^ fs = File::Create(testfile);
        UTF8Encoding^ utf8 = gcnew UTF8Encoding();

        BinaryWriter^ bw = gcnew BinaryWriter(fs, utf8);
        String^ bstring;

        bstring  = "This is line #1 of text written as a binary stream.\r\n";
        bstring += "This is line #2 of text written as a binary stream.\r\n";
        bstring += "This is line #3 of text written as a binary stream.";
        bw->Write(bstring);

        // reset the stream position for reading
        fs->Seek(0, SeekOrigin::Begin);

        // Read the string as raw bytes using FileStream...
        // The first series of bytes is the UTF7 encoded length of the
        // string. In this case, however, it is just the first two bytes.
        int len = fs->ReadByte() & 0x7f;
        len += fs->ReadByte() * 0x80;
        // read the string as bytes of length = len
        array<Byte>^ rawbytes = gcnew array<Byte>(len);
        fs->Read(rawbytes, 0, len);

        // display the string
        Console::WriteLine("Read from FileStream:   \n" + utf8->GetString(rawbytes));
        Console::WriteLine();

        // Now, read the string using BinaryReader

        // reset the stream position for reading again
        fs->Seek(0, SeekOrigin::Begin);

        BinaryReader^ br = gcnew BinaryReader(fs, utf8);
        // ReadString will read the length prefix and return the string.
        bstring = br->ReadString();
        Console::WriteLine("Read from BinaryReader: \n" + bstring);
        fs->Close();
    }
};

int main()
{
    BinReadWrite::Main();
}

//The output from the program is this:
//
// Read from FileStream:
// This is line #1 of text written as a binary stream.
// This is line #2 of text written as a binary stream.
// This is line #3 of text written as a binary stream.
//
// Read from BinaryReader:
// This is line #1 of text written as a binary stream.
// This is line #2 of text written as a binary stream.
// This is line #3 of text written as a binary stream.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (UInt16)

BinaryWriter
.
.
::
.
Write 方法 (UInt16)
BinaryWriter 类

将 2 字节无符号整数写入当前流，并将流的位置提升 2 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub Write ( _
    value As UShort _
)
[CLSCompliantAttribute(false)]
public virtual void Write(
    ushort value
)
[CLSCompliantAttribute(false)]
public:
virtual void Write(
    unsigned short value
)
[<CLSCompliantAttribute(false)>]
abstract Write :
        value:uint16 -> unit
[<CLSCompliantAttribute(false)>]
override Write :
        value:uint16 -> unit

参数

value
类型： System UInt16
要写入的 2 字节无符号整数。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (UInt32)

BinaryWriter
.
.
::
.
Write 方法 (UInt32)
BinaryWriter 类

将 4 字节无符号整数写入当前流，并将流的位置提升 4 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub Write ( _
    value As UInteger _
)
[CLSCompliantAttribute(false)]
public virtual void Write(
    uint value
)
[CLSCompliantAttribute(false)]
public:
virtual void Write(
    unsigned int value
)
[<CLSCompliantAttribute(false)>]
abstract Write :
        value:uint32 -> unit
[<CLSCompliantAttribute(false)>]
override Write :
        value:uint32 -> unit

参数

value
类型： System UInt32
要写入的 4 字节无符号整数。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 (UInt64)

BinaryWriter
.
.
::
.
Write 方法 (UInt64)
BinaryWriter 类

将 8 字节无符号整数写入当前流，并将流的位置提升 8 个字节。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub Write ( _
    value As ULong _
)
[CLSCompliantAttribute(false)]
public virtual void Write(
    ulong value
)
[CLSCompliantAttribute(false)]
public:
virtual void Write(
    unsigned long long value
)
[<CLSCompliantAttribute(false)>]
abstract Write :
        value:uint64 -> unit
[<CLSCompliantAttribute(false)>]
override Write :
        value:uint64 -> unit

参数

value
类型： System UInt64
要写入的 8 字节无符号整数。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

BinaryWriter 以小结尾格式存储此数据类型。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 ( array<Byte >[]()[], Int32, Int32)

BinaryWriter
.
.
::
.
Write 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
BinaryWriter 类

将字节数组部分写入当前流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    buffer As Byte(), _
    index As Integer, _
    count As Integer _
)
public virtual void Write(
    byte[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<unsigned char>^ buffer,
    int index,
    int count
)
abstract Write :
        buffer:byte[] *
        index:int *
        count:int -> unit
override Write :
        buffer:byte[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

包含要写入的数据的字节数组。
index
类型： System Int32
buffer 中开始写入的起始点。
count
类型： System Int32
要写入的字节数。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来写入二进制数据，然后验证数据是否被正确写入。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Byte
        Dim randomGenerator As New Random
        randomGenerator.NextBytes(dataArray)

        Dim binWriter As New BinaryWriter(New MemoryStream())

        ' Write the data to the stream.
        Console.WriteLine("Writing the data.")
        binWriter.Write(dataArray, 0, dataArray.Length)

        ' Create the reader using the stream from the writer.
        Dim binReader As New BinaryReader(binWriter.BaseStream)

        ' Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0

        ' Read and verify the data.
        Dim verifyArray(upperBound) As Byte
        If binReader.Read(verifyArray, 0, dataArray.Length) _
            <> dataArray.Length Then

            Console.WriteLine("Error writing the data.")
            Return
        End If
        For i As Integer =  0 To upperBound
            If verifyArray(i) <> dataArray(i) Then
                Console.WriteLine("Error writing the data.")
                Return
            End If
        Next i
        Console.WriteLine("The data was written and verified.")

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        byte[] dataArray = new byte[arrayLength];
        new Random().NextBytes(dataArray);

        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());

        // Write the data to the stream.
        Console.WriteLine("Writing the data.");
        binWriter.Write(dataArray, 0, arrayLength);

        // Create the reader using the stream from the writer.
        BinaryReader binReader =
            new BinaryReader(binWriter.BaseStream);

        // Set Position to the beginning of the stream.
        binReader.BaseStream.Position = 0;

        // Read and verify the data.
        byte[] verifyArray = new byte[arrayLength];
        if(binReader.Read(verifyArray, 0, arrayLength) != arrayLength)
        {
            Console.WriteLine("Error writing the data.");
            return;
        }
        for(int i = 0; i < arrayLength; i++)
        {
            if(verifyArray[i] != dataArray[i])
            {
                Console.WriteLine("Error writing the data.");
                return;
            }
        }
        Console.WriteLine("The data was written and verified.");
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<Byte>^dataArray = gcnew array<Byte>(arrayLength);
   (gcnew Random)->NextBytes( dataArray );
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );

   // Write the data to the stream.
   Console::WriteLine( "Writing the data." );
   binWriter->Write( dataArray, 0, arrayLength );

   // Create the reader using the stream from the writer.
   BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read and verify the data.
   array<Byte>^verifyArray = gcnew array<Byte>(arrayLength);
   if ( binReader->Read( verifyArray, 0, arrayLength ) != arrayLength )
   {
      Console::WriteLine( "Error writing the data." );
      return  -1;
   }

   for ( int i = 0; i < arrayLength; i++ )
   {
      if ( verifyArray[ i ] != dataArray[ i ] )
      {
         Console::WriteLine( "Error writing the data." );
         return  -1;
      }

   }
   Console::WriteLine( "The data was written and verified." );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

BinaryWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
BinaryWriter 类

将字符数组部分写入当前流，并根据所使用的 Encoding（可能还根据向流中写入的特定字符），提升流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    chars As Char(), _
    index As Integer, _
    count As Integer _
)
public virtual void Write(
    char[] chars,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ chars,
    int index,
    int count
)
abstract Write :
        chars:char[] *
        index:int *
        count:int -> unit
override Write :
        chars:char[] *
        index:int *
        count:int -> unit

参数

chars
类型：
array<
System Char
>
[]
()
[]

包含要写入的数据的字符数组。
index
类型： System Int32
buffer 中开始写入的起始点。
count
类型： System Int32
要写入的字符数。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentNullException | chars 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
IOException | 发生 I/O 错误。
ObjectDisposedException | 流已关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过将内存用作备份来读取和写入数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        binWriter.Write(Path.InvalidPathChars, 0, _
            Path.InvalidPathChars.Length)

        ' Create the reader using the same MemoryStream
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim upperBound As Integer = _
            CInt(memStream.Length - memStream.Position) - 1
        Dim memoryData(upperBound) As Char
        binReader.Read(memoryData, 0, upperBound)
        Console.WriteLine(memoryData)

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        int arraySize = (int)(memStream.Length - memStream.Position);
        char[] memoryData = new char[arraySize];
        binReader.Read(memoryData, 0, arraySize);
        Console.WriteLine(memoryData);
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew BinaryWriter( memStream );

   // Write to memory.
   binWriter->Write( "Invalid file path characters are: " );
   binWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );

   // Create the reader using the same MemoryStream
   // as used with the writer.
   BinaryReader^ binReader = gcnew BinaryReader( memStream );

   // Set Position to the beginning of the stream.
   binReader->BaseStream->Position = 0;

   // Read the data from memory and write it to the console.
   Console::Write( binReader->ReadString() );
   int arraySize = (int)(memStream->Length - memStream->Position);
   array<Char>^memoryData = gcnew array<Char>(arraySize);
   binReader->Read( memoryData, 0, arraySize );
   Console::WriteLine( memoryData );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
Write 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BinaryWriter ..::.Write7BitEncodedInt 方法

BinaryWriter
.
.
::
.
Write7BitEncodedInt 方法
BinaryWriter 类

以压缩格式写出 32 位整数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub Write7BitEncodedInt ( _
    value As Integer _
)
protected void Write7BitEncodedInt(
    int value
)
protected:
void Write7BitEncodedInt(
    int value
)
member Write7BitEncodedInt :
        value:int -> unit

参数

value
类型： System Int32
要写出的 32 位整数。
异常 | 条件
EndOfStreamException | 已到达流的末尾。
ObjectDisposedException | 流已关闭。
IOException | 流已关闭。

value 参数的整数一次写出 7 位，从 7 个最低有效位开始。字节的高位指示在该位之后是否有更多要写出的字节。 value 参数的整数一次写出 7 位，从 7 个最低有效位开始。字节的高位指示在该位之后是否有更多要写出的字节。

如果 value 将占 7 位，则它仅占用一个字节的空间。如果 value 不占 7 位，则高位将设置在第一个字节上并被写出。然后，value 被移动 7 位并写出下一个字节。此过程重复进行，直到写出全部整数。 如果 value 将占 7 位，则它仅占用一个字节的空间。如果 value 不占 7 位，则高位将设置在第一个字节上并被写出。然后，value 被移动 7 位并写出下一个字节。此过程重复进行，直到写出全部整数。 如果 value 将占 7 位，则它仅占用一个字节的空间。如果 value 不占 7 位，则高位将设置在第一个字节上并被写出。然后，value 被移动 7 位并写出下一个字节。此过程重复进行，直到写出全部整数。 如果 value 将占 7 位，则它仅占用一个字节的空间。如果 value 不占 7 位，则高位将设置在第一个字节上并被写出。然后，value 被移动 7 位并写出下一个字节。此过程重复进行，直到写出全部整数。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间


BinaryWriter 属性

BinaryWriter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BinaryWriter 类

BinaryWriter 类型公开以下成员。

名称 说明
页首

参考

BinaryWriter 类
System.IO 命名空间


BinaryWriter ..::.BaseStream 属性

BinaryWriter
.
.
::
.
BaseStream 属性
BinaryWriter 类

获取 BinaryWriter 的基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property BaseStream As Stream
    Get
public virtual Stream BaseStream { get; }
public:
virtual property Stream^ BaseStream {
    Stream^ get ();
}
abstract BaseStream : Stream
override BaseStream : Stream

属性值

类型： System.IO Stream
同 BinaryWriter 关联的基础流。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。 下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。MemoryStream 只能读写 Byte 数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")

            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<double>^dataArray = gcnew array<double>(arrayLength);
   Random^ randomGenerator = gcnew Random;
   for ( i = 0; i < arrayLength; i++ )
   {
      dataArray[ i ] = 100.1 * randomGenerator->NextDouble();

   }
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   try
   {

      // Write data to the stream.
      Console::WriteLine( "Writing data to the stream." );
      i = 0;
      for ( i = 0; i < arrayLength; i++ )
      {
         binWriter->Write( dataArray[ i ] );

      }

      // Create a reader using the stream from the writer.
      BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

      // Return to the beginning of the stream.
      binReader->BaseStream->Position = 0;
      try
      {

         // Read and verify the data.
         i = 0;
         Console::WriteLine( "Verifying the written data." );
         for ( i = 0; i < arrayLength; i++ )
         {
            if ( binReader->ReadDouble() != dataArray[ i ] )
            {
               Console::WriteLine( "Error writing data." );
               break;
            }

         }
         Console::WriteLine( "The data was written and verified." );
      }
      catch ( EndOfStreamException^ e )
      {
         Console::WriteLine( "Error writing data: {0}.", e->GetType()->Name );
      }

   }
   finally
   {
      binWriter->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

BinaryWriter 类
BinaryWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream 类

BufferedStream 类
成员

给另一流上的读写操作添加一个缓冲层。无法继承此类。 给另一流上的读写操作添加一个缓冲层。无法继承此类。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(True)> _
Public NotInheritable Class BufferedStream _
    Inherits Stream
[ComVisibleAttribute(true)]
public sealed class BufferedStream : Stream
[ComVisibleAttribute(true)]
public ref class BufferedStream sealed : public Stream
[<SealedAttribute>]
[<ComVisibleAttribute(true)>]
type BufferedStream =
    class
        inherit Stream
    end

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

缓冲区是内存中的字节块，用于缓存数据，从而减少对操作系统的调用次数。缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入，但不能同时进行这两种操作。BufferedStream 的 Read 和 Write 方法自动维护缓冲区。 缓冲区是内存中的字节块，用于缓存数据，从而减少对操作系统的调用次数。缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入，但不能同时进行这两种操作。BufferedStream 的 Read 和 Write 方法自动维护缓冲区。 缓冲区是内存中的字节块，用于缓存数据，从而减少对操作系统的调用次数。缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入，但不能同时进行这两种操作。BufferedStream 的 Read 和 Write 方法自动维护缓冲区。 缓冲区是内存中的字节块，用于缓存数据，从而减少对操作系统的调用次数。缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入，但不能同时进行这两种操作。BufferedStream 的 Read 和 Write 方法自动维护缓冲区。

BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。 BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。 BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。 BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。 BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。 BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。 BufferedStream 可写在某些类型的流周围。它提供从基础数据源或储存库读取字节以及将字节写入基础数据源或储存库的实现。使用 BinaryReader 和 BinaryWriter 读取和写入其他数据类型。BufferedStream 用于在不需要缓冲区时防止缓冲区降低输入和输出速度。如果您读取和写入的大小始终大于内部缓冲区的大小，那么 BufferedStream 可能甚至无法分配内部缓冲区。BufferedStream 也在共享缓冲区中缓冲读取和写入。假设您几乎始终执行一系列读取或写入操作，而很少在读取和写入之间切换。

下面的代码示例说明如何在 NetworkStream 类之上使用 BufferedStream 类，以提高某些 I/O 操作的性能。启动客户端之前，先在远程计算机上启动服务器。启动客户端时，将远程计算机名指定为一个命令行参数。改变 dataArraySize 和 streamBufferSize 常数，以查看它们对性能的影响。 下面的代码示例说明如何在 NetworkStream 类之上使用 BufferedStream 类，以提高某些 I/O 操作的性能。启动客户端之前，先在远程计算机上启动服务器。启动客户端时，将远程计算机名指定为一个命令行参数。改变 dataArraySize 和 streamBufferSize 常数，以查看它们对性能的影响。 下面的代码示例说明如何在 NetworkStream 类之上使用 BufferedStream 类，以提高某些 I/O 操作的性能。启动客户端之前，先在远程计算机上启动服务器。启动客户端时，将远程计算机名指定为一个命令行参数。改变 dataArraySize 和 streamBufferSize 常数，以查看它们对性能的影响。 下面的代码示例说明如何在 NetworkStream 类之上使用 BufferedStream 类，以提高某些 I/O 操作的性能。启动客户端之前，先在远程计算机上启动服务器。启动客户端时，将远程计算机名指定为一个命令行参数。改变 dataArraySize 和 streamBufferSize 常数，以查看它们对性能的影响。

' Compile using /r:System.dll.
Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Globalization
Imports System.Net
Imports System.Net.Sockets

Public Class Client

    Const dataArraySize As Integer    =   100
    Const streamBufferSize As Integer =  1000
    Const numberOfLoops As Integer    = 10000

    Shared Sub Main(args As String())

        ' Check that an argument was specified when the
        ' program was invoked.
        If args.Length = 0 Then
            Console.WriteLine("Error: The name of the host " & _
                "computer must be specified when the program " & _
                "is invoked.")
            Return
        End If

        Dim remoteName As String = args(0)

        ' Create the underlying socket and connect to the server.
        Dim clientSocket As New Socket(AddressFamily.InterNetwork, _
            SocketType.Stream, ProtocolType.Tcp)

        clientSocket.Connect(New IPEndPoint( _
            Dns.Resolve(remoteName).AddressList(0), 1800))

        Console.WriteLine("Client is connected." & vbCrLf)

        ' Create a NetworkStream that owns clientSocket and then
        ' create a BufferedStream on top of the NetworkStream.
        Dim netStream As New NetworkStream(clientSocket, True)
        Dim bufStream As New _
            BufferedStream(netStream, streamBufferSize)

        Try
            ' Check whether the underlying stream supports seeking.
            If bufStream.CanSeek Then
                Console.WriteLine("NetworkStream supports" & _
                    "seeking." & vbCrLf)
            Else
                Console.WriteLine("NetworkStream does not " & _
                    "support seeking." & vbCrLf)
            End If

            ' Send and receive data.
            If bufStream.CanWrite Then
                SendData(netStream, bufStream)
            End If
            If bufStream.CanRead Then
                ReceiveData(netStream, bufStream)
            End If
        Finally

            ' When bufStream is closed, netStream is in turn
            ' closed, which in turn shuts down the connection
            ' and closes clientSocket.
            Console.WriteLine(vbCrLf & "Shutting down the connection.")
            bufStream.Close()
        End Try
    End Sub

    Shared Sub SendData(netStream As Stream, bufStream As Stream)

        Dim startTime As DateTime
        Dim networkTime As Double, bufferedTime As Double

        ' Create random data to send to the server.
        Dim dataToSend(dataArraySize - 1) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(dataToSend)

        ' Send the data using the NetworkStream.
        Console.WriteLine("Sending data using NetworkStream.")
        startTime = DateTime.Now
        For i As Integer = 1 To numberOfLoops
            netStream.Write(dataToSend, 0, dataToSend.Length)
        Next i
        networkTime = DateTime.Now.Subtract(startTime).TotalSeconds
        Console.WriteLine("{0} bytes sent in {1} seconds." & vbCrLf, _
            numberOfLoops * dataToSend.Length, _
            networkTime.ToString("F1"))

        ' Send the data using the BufferedStream.
        Console.WriteLine("Sending data using BufferedStream.")
        startTime = DateTime.Now
        For i As Integer = 1 To numberOfLoops
            bufStream.Write(dataToSend, 0, dataToSend.Length)
        Next i

        bufStream.Flush()
        bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
        Console.WriteLine("{0} bytes sent In {1} seconds." & vbCrLf, _
            numberOfLoops * dataToSend.Length, _
            bufferedTime.ToString("F1"))

        ' Print the ratio of write times.
        Console.Write("Sending data using the buffered " & _
            "network stream was {0}", _
            (networkTime/bufferedTime).ToString("P0"))
        If bufferedTime < networkTime Then
            Console.Write(" faster")
        Else
            Console.Write(" slower")
        End If
        Console.WriteLine(" than using the network stream alone.")
    End Sub

    Shared Sub ReceiveData(netStream As Stream, bufStream As Stream)

        Dim startTime As DateTime
        Dim networkTime As Double, bufferedTime As Double = 0

        Dim bytesReceived As Integer = 0
        Dim receivedData(dataArraySize - 1) As Byte

        ' Receive data using the NetworkStream.
        Console.WriteLine("Receiving data using NetworkStream.")
        startTime = DateTime.Now
        While bytesReceived < numberOfLoops * receivedData.Length
            bytesReceived += netStream.Read( _
                receivedData, 0, receivedData.Length)
        End While
        networkTime = DateTime.Now.Subtract(startTime).TotalSeconds
        Console.WriteLine("{0} bytes received in {1} " & _
            "seconds." & vbCrLf, _
            bytesReceived.ToString(), _
            networkTime.ToString("F1"))

        ' Receive data using the BufferedStream.
        Console.WriteLine("Receiving data using BufferedStream.")
        bytesReceived = 0
        startTime = DateTime.Now

        Dim numBytesToRead As Integer = receivedData.Length
        Dim n As Integer
        Do While numBytesToRead > 0

            'Read my return anything from 0 to numBytesToRead
            n = bufStream.Read(receivedData, 0, receivedData.Length)
            'The end of the file is reached.
            If n = 0 Then
                Exit Do
            End If

            bytesReceived += n
            numBytesToRead -= n
        Loop

        bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
        Console.WriteLine("{0} bytes received in {1} " & _
            "seconds." & vbCrLf, _
            bytesReceived.ToString(), _
            bufferedTime.ToString("F1"))

        ' Print the ratio of read times.
        Console.Write("Receiving data using the buffered " & _
            "network stream was {0}", _
            (networkTime/bufferedTime).ToString("P0"))
        If bufferedTime < networkTime Then
            Console.Write(" faster")
        Else
            Console.Write(" slower")
        End If
        Console.WriteLine(" than using the network stream alone.")
    End Sub
End Class

using System;
using System.IO;
using System.Globalization;
using System.Net;
using System.Net.Sockets;

public class Client
{
    const int dataArraySize    =   100;
    const int streamBufferSize =  1000;
    const int numberOfLoops    = 10000;

    static void Main(string[] args)
    {
        // Check that an argument was specified when the
        // program was invoked.
        if(args.Length == 0)
        {
            Console.WriteLine("Error: The name of the host computer" +
                " must be specified when the program is invoked.");
            return;
        }

        string remoteName = args[0];

        // Create the underlying socket and connect to the server.
        Socket clientSocket = new Socket(AddressFamily.InterNetwork,
            SocketType.Stream, ProtocolType.Tcp);

        clientSocket.Connect(new IPEndPoint(
            Dns.Resolve(remoteName).AddressList[0], 1800));

        Console.WriteLine("Client is connected.\n");

        // Create a NetworkStream that owns clientSocket and
        // then create a BufferedStream on top of the NetworkStream.
        // Both streams are disposed when execution exits the
        // using statement.
        using(Stream
            netStream = new NetworkStream(clientSocket, true),
            bufStream =
                  new BufferedStream(netStream, streamBufferSize))
        {
            // Check whether the underlying stream supports seeking.
            Console.WriteLine("NetworkStream {0} seeking.\n",
                bufStream.CanSeek ? "supports" : "does not support");

            // Send and receive data.
            if(bufStream.CanWrite)
            {
                SendData(netStream, bufStream);
            }
            if(bufStream.CanRead)
            {
                ReceiveData(netStream, bufStream);
            }

            // When bufStream is closed, netStream is in turn
            // closed, which in turn shuts down the connection
            // and closes clientSocket.
            Console.WriteLine("\nShutting down the connection.");
            bufStream.Close();
        }
    }

    static void SendData(Stream netStream, Stream bufStream)
    {
        DateTime startTime;
        double networkTime, bufferedTime;

        // Create random data to send to the server.
        byte[] dataToSend = new byte[dataArraySize];
        new Random().NextBytes(dataToSend);

        // Send the data using the NetworkStream.
        Console.WriteLine("Sending data using NetworkStream.");
        startTime = DateTime.Now;
        for(int i = 0; i < numberOfLoops; i++)
        {
            netStream.Write(dataToSend, 0, dataToSend.Length);
        }
        networkTime = (DateTime.Now - startTime).TotalSeconds;
        Console.WriteLine("{0} bytes sent in {1} seconds.\n",
            numberOfLoops * dataToSend.Length,
            networkTime.ToString("F1"));

        // Send the data using the BufferedStream.
        Console.WriteLine("Sending data using BufferedStream.");
        startTime = DateTime.Now;
        for(int i = 0; i < numberOfLoops; i++)
        {
            bufStream.Write(dataToSend, 0, dataToSend.Length);
        }
        bufStream.Flush();
        bufferedTime = (DateTime.Now - startTime).TotalSeconds;
        Console.WriteLine("{0} bytes sent in {1} seconds.\n",
            numberOfLoops * dataToSend.Length,
            bufferedTime.ToString("F1"));

        // Print the ratio of write times.
        Console.WriteLine("Sending data using the buffered " +
            "network stream was {0} {1} than using the network " +
            "stream alone.\n",
            (networkTime/bufferedTime).ToString("P0"),
            bufferedTime < networkTime ? "faster" : "slower");
    }

    static void ReceiveData(Stream netStream, Stream bufStream)
    {
        DateTime startTime;
        double networkTime, bufferedTime = 0;
        int bytesReceived = 0;
        byte[] receivedData = new byte[dataArraySize];

        // Receive data using the NetworkStream.
        Console.WriteLine("Receiving data using NetworkStream.");
        startTime = DateTime.Now;
        while(bytesReceived < numberOfLoops * receivedData.Length)
        {
            bytesReceived += netStream.Read(
                receivedData, 0, receivedData.Length);
        }
        networkTime = (DateTime.Now - startTime).TotalSeconds;
        Console.WriteLine("{0} bytes received in {1} seconds.\n",
            bytesReceived.ToString(),
            networkTime.ToString("F1"));

        // Receive data using the BufferedStream.
        Console.WriteLine("Receiving data using BufferedStream.");
        bytesReceived = 0;
        startTime = DateTime.Now;

        int numBytesToRead = receivedData.Length;

        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to numBytesToRead.
            int n = bufStream.Read(receivedData,0, receivedData.Length);
            // The end of the file is reached.
            if (n == 0)
                break;
            bytesReceived += n;
            numBytesToRead -= n;
        }

        bufferedTime = (DateTime.Now - startTime).TotalSeconds;
        Console.WriteLine("{0} bytes received in {1} seconds.\n",
            bytesReceived.ToString(),
            bufferedTime.ToString("F1"));

        // Print the ratio of read times.
        Console.WriteLine("Receiving data using the buffered network" +
            " stream was {0} {1} than using the network stream alone.",
            (networkTime/bufferedTime).ToString("P0"),
            bufferedTime < networkTime ? "faster" : "slower");
    }
}

#using <system.dll>

using namespace System;
using namespace System::IO;
using namespace System::Globalization;
using namespace System::Net;
using namespace System::Net::Sockets;
static const int streamBufferSize = 1000;
public ref class Client
{
private:
   literal int dataArraySize = 100;
   literal int numberOfLoops = 10000;
   Client(){}

public:
   static void ReceiveData( Stream^ netStream, Stream^ bufStream )
   {
      DateTime startTime;
      Double networkTime;
      Double bufferedTime = 0;
      int bytesReceived = 0;
      array<Byte>^receivedData = gcnew array<Byte>(dataArraySize);

      // Receive data using the NetworkStream.
      Console::WriteLine( "Receiving data using NetworkStream." );
      startTime = DateTime::Now;
      while ( bytesReceived < numberOfLoops * receivedData->Length )
      {
         bytesReceived += netStream->Read( receivedData, 0, receivedData->Length );
      }

      networkTime = (DateTime::Now - startTime).TotalSeconds;
      Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), networkTime.ToString(  "F1" ) );

      // Receive data using the BufferedStream.
      Console::WriteLine(  "Receiving data using BufferedStream." );
      bytesReceived = 0;
      startTime = DateTime::Now;
      while ( bytesReceived < numberOfLoops * receivedData->Length )
      {
         bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
      }

      bufferedTime = (DateTime::Now - startTime).TotalSeconds;
      Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString(  "F1" ) );

      // Print the ratio of read times.
      Console::WriteLine( "Receiving data using the buffered "
      "network stream was {0} {1} than using the network "
      "stream alone.", (networkTime / bufferedTime).ToString(  "P0" ), bufferedTime < networkTime ? (String^)"faster" : "slower" );
   }

   static void SendData( Stream^ netStream, Stream^ bufStream )
   {
      DateTime startTime;
      Double networkTime;
      Double bufferedTime;

      // Create random data to send to the server.
      array<Byte>^dataToSend = gcnew array<Byte>(dataArraySize);
      (gcnew Random)->NextBytes( dataToSend );

      // Send the data using the NetworkStream.
      Console::WriteLine( "Sending data using NetworkStream." );
      startTime = DateTime::Now;
      for ( int i = 0; i < numberOfLoops; i++ )
      {
         netStream->Write( dataToSend, 0, dataToSend->Length );

      }
      networkTime = (DateTime::Now - startTime).TotalSeconds;
      Console::WriteLine( "{0} bytes sent in {1} seconds.\n", (numberOfLoops * dataToSend->Length).ToString(), networkTime.ToString(  "F1" ) );

      // Send the data using the BufferedStream.
      Console::WriteLine( "Sending data using BufferedStream." );
      startTime = DateTime::Now;
      for ( int i = 0; i < numberOfLoops; i++ )
      {
         bufStream->Write( dataToSend, 0, dataToSend->Length );

      }
      bufStream->Flush();
      bufferedTime = (DateTime::Now - startTime).TotalSeconds;
      Console::WriteLine( "{0} bytes sent in {1} seconds.\n", (numberOfLoops * dataToSend->Length).ToString(), bufferedTime.ToString(  "F1" ) );

      // Print the ratio of write times.
      Console::WriteLine( "Sending data using the buffered "
      "network stream was {0} {1} than using the network "
      "stream alone.\n", (networkTime / bufferedTime).ToString(  "P0" ), bufferedTime < networkTime ? (String^)"faster" : "slower" );
   }

};

int main( int argc, char *argv[] )
{

   // Check that an argument was specified when the
   // program was invoked.
   if ( argc == 1 )
   {
      Console::WriteLine( "Error: The name of the host computer"
      " must be specified when the program is invoked." );
      return  -1;
   }

   String^ remoteName = gcnew String( argv[ 1 ] );

   // Create the underlying socket and connect to the server.
   Socket^ clientSocket = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   clientSocket->Connect( gcnew IPEndPoint( Dns::Resolve( remoteName )->AddressList[ 0 ],1800 ) );
   Console::WriteLine(  "Client is connected.\n" );

   // Create a NetworkStream that owns clientSocket and
   // then create a BufferedStream on top of the NetworkStream.
   NetworkStream^ netStream = gcnew NetworkStream( clientSocket,true );
   BufferedStream^ bufStream = gcnew BufferedStream( netStream,streamBufferSize );

   try
   {

      // Check whether the underlying stream supports seeking.
      Console::WriteLine( "NetworkStream {0} seeking.\n", bufStream->CanSeek ? (String^)"supports" : "does not support" );

      // Send and receive data.
      if ( bufStream->CanWrite )
      {
         Client::SendData( netStream, bufStream );
      }

      if ( bufStream->CanRead )
      {
         Client::ReceiveData( netStream, bufStream );
      }

   }
   finally
   {

      // When bufStream is closed, netStream is in turn closed,
      // which in turn shuts down the connection and closes
      // clientSocket.
      Console::WriteLine( "\nShutting down connection." );
      bufStream->Close();

   }

}

' Compile using /r:System.dll.
Imports Microsoft.VisualBasic
Imports System
Imports System.Net
Imports System.Net.Sockets

Public Class Server

    Shared Sub Main()

        ' This is a Windows Sockets 2 error code.
        Const WSAETIMEDOUT As Integer = 10060

        Dim serverSocket As Socket
        Dim bytesReceived As Integer
        Dim totalReceived As Integer = 0
        Dim receivedData(2000000-1) As Byte

        ' Create random data to send to the client.
        Dim dataToSend(2000000-1) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(dataToSend)

        Dim ipAddress As IPAddress = _
            Dns.Resolve(Dns.GetHostName()).AddressList(0)

        Dim ipEndpoint As New IPEndPoint(ipAddress, 1800)

        ' Create a socket and listen for incoming connections.
        Dim listenSocket As New Socket(AddressFamily.InterNetwork, _
            SocketType.Stream, ProtocolType.Tcp)

        Try
            listenSocket.Bind(ipEndpoint)
            listenSocket.Listen(1)

            ' Accept a connection and create a socket to handle it.
            serverSocket = listenSocket.Accept()
            Console.WriteLine("Server is connected." & vbCrLf)
        Finally
            listenSocket.Close()
        End Try

        Try
            ' Send data to the client.
            Console.Write("Sending data ... ")
            Dim bytesSent As Integer = serverSocket.Send( _
                dataToSend, 0, dataToSend.Length, SocketFlags.None)
            Console.WriteLine("{0} bytes sent." & vbCrLf, _
                bytesSent.ToString())

            ' Set the timeout for receiving data to 2 seconds.
            serverSocket.SetSocketOption(SocketOptionLevel.Socket, _
                SocketOptionName.ReceiveTimeout, 2000)

            ' Receive data from the client.
            Console.Write("Receiving data ... ")
            Try
                Do
                    bytesReceived = serverSocket.Receive( _
                        receivedData, 0, receivedData.Length, _
                        SocketFlags.None)
                    totalReceived += bytesReceived
                Loop While bytesReceived <> 0
            Catch e As SocketException
                If(e.ErrorCode = WSAETIMEDOUT)

                    ' Data was not received within the given time.
                    ' Assume that the transmission has ended.
                Else
                    Console.WriteLine("{0}: {1}" & vbCrLf, _
                        e.GetType().Name, e.Message)
                End If
            Finally
                Console.WriteLine("{0} bytes received." & vbCrLf, _
                    totalReceived.ToString())
            End Try
        Finally
            serverSocket.Shutdown(SocketShutdown.Both)
            Console.WriteLine("Connection shut down.")
            serverSocket.Close()
        End Try

    End Sub
End Class

using System;
using System.Net;
using System.Net.Sockets;

public class Server
{
    static void Main()
    {
        // This is a Windows Sockets 2 error code.
        const int WSAETIMEDOUT = 10060;

        Socket serverSocket;
        int bytesReceived, totalReceived = 0;
        byte[] receivedData = new byte[2000000];

        // Create random data to send to the client.
        byte[] dataToSend = new byte[2000000];
        new Random().NextBytes(dataToSend);

        IPAddress ipAddress =
            Dns.Resolve(Dns.GetHostName()).AddressList[0];

        IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, 1800);

        // Create a socket and listen for incoming connections.
        using(Socket listenSocket = new Socket(
            AddressFamily.InterNetwork, SocketType.Stream,
            ProtocolType.Tcp))
        {
            listenSocket.Bind(ipEndpoint);
            listenSocket.Listen(1);

            // Accept a connection and create a socket to handle it.
            serverSocket = listenSocket.Accept();
            Console.WriteLine("Server is connected.\n");
        }

        try
        {
            // Send data to the client.
            Console.Write("Sending data ... ");
            int bytesSent = serverSocket.Send(
                dataToSend, 0, dataToSend.Length, SocketFlags.None);
            Console.WriteLine("{0} bytes sent.\n",
                bytesSent.ToString());

            // Set the timeout for receiving data to 2 seconds.
            serverSocket.SetSocketOption(SocketOptionLevel.Socket,
                SocketOptionName.ReceiveTimeout, 2000);

            // Receive data from the client.
            Console.Write("Receiving data ... ");
            try
            {
                do
                {
                    bytesReceived = serverSocket.Receive(receivedData,
                        0, receivedData.Length, SocketFlags.None);
                    totalReceived += bytesReceived;
                }
                while(bytesReceived != 0);
            }
            catch(SocketException e)
            {
                if(e.ErrorCode == WSAETIMEDOUT)
                {
                    // Data was not received within the given time.
                    // Assume that the transmission has ended.
                }
                else
                {
                    Console.WriteLine("{0}: {1}\n",
                        e.GetType().Name, e.Message);
                }
            }
            finally
            {
                Console.WriteLine("{0} bytes received.\n",
                    totalReceived.ToString());
            }
        }
        finally
        {
            serverSocket.Shutdown(SocketShutdown.Both);
            Console.WriteLine("Connection shut down.");
            serverSocket.Close();
        }
    }
}

#using <system.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::Sockets;
int main()
{

   // This is a Windows Sockets 2 error code.
   const int WSAETIMEDOUT = 10060;
   Socket^ serverSocket;
   int bytesReceived;
   int totalReceived = 0;
   array<Byte>^receivedData = gcnew array<Byte>(2000000);

   // Create random data to send to the client.
   array<Byte>^dataToSend = gcnew array<Byte>(2000000);
   (gcnew Random)->NextBytes( dataToSend );
   IPAddress^ ipAddress = Dns::Resolve( Dns::GetHostName() )->AddressList[ 0 ];
   IPEndPoint^ ipEndpoint = gcnew IPEndPoint( ipAddress,1800 );

   // Create a socket and listen for incoming connections.
   Socket^ listenSocket = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   try
   {
      listenSocket->Bind( ipEndpoint );
      listenSocket->Listen( 1 );

      // Accept a connection and create a socket to handle it.
      serverSocket = listenSocket->Accept();
      Console::WriteLine( "Server is connected.\n" );
   }
   finally
   {
      listenSocket->Close();
   }

   try
   {

      // Send data to the client.
      Console::Write( "Sending data ... " );
      int bytesSent = serverSocket->Send( dataToSend, 0, dataToSend->Length, SocketFlags::None );
      Console::WriteLine( "{0} bytes sent.\n", bytesSent.ToString() );

      // Set the timeout for receiving data to 2 seconds.
      serverSocket->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::ReceiveTimeout, 2000 );

      // Receive data from the client.
      Console::Write( "Receiving data ... " );
      try
      {
         do
         {
            bytesReceived = serverSocket->Receive( receivedData, 0, receivedData->Length, SocketFlags::None );
            totalReceived += bytesReceived;
         }
         while ( bytesReceived != 0 );
      }
      catch ( SocketException^ e )
      {
         if ( e->ErrorCode == WSAETIMEDOUT )
         {

            // Data was not received within the given time.
            // Assume that the transmission has ended.
         }
         else
         {
            Console::WriteLine( "{0}: {1}\n", e->GetType()->Name, e->Message );
         }
      }
      finally
      {
         Console::WriteLine( "{0} bytes received.\n", totalReceived.ToString() );
      }

   }
   finally
   {
      serverSocket->Shutdown( SocketShutdown::Both );
      Console::WriteLine( "Connection shut down." );
      serverSocket->Close();
   }

}

System.IO System.IO..::.BufferedStreamBufferedStream
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 成员
System.IO 命名空间
FileStream
MemoryStream
Stream

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream 成员

BufferedStream 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

给另一流上的读写操作添加一个缓冲层。无法继承此类。 给另一流上的读写操作添加一个缓冲层。无法继承此类。

BufferedStream 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

BufferedStream 类
System.IO 命名空间


BufferedStream 构造函数

BufferedStream 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

初始化 BufferedStream 类的新实例。

名称 说明
页首

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间


BufferedStream 构造函数 (Stream)

BufferedStream 构造函数 (Stream)
BufferedStream 类

使用默认的缓冲区大小 4096 字节初始化 BufferedStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream _
)
public BufferedStream(
    Stream stream
)
public:
BufferedStream(
    Stream^ stream
)
new :
        stream:Stream -> BufferedStream

参数

stream
类型： System.IO Stream
当前流。
异常 | 条件
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

第一次使用此构造函数初始化 BufferedStream 对象时分配共享读/写缓冲区。如果所有的读和写都大于或等于 bufferSize，则不使用共享缓冲区。 第一次使用此构造函数初始化 BufferedStream 对象时分配共享读/写缓冲区。如果所有的读和写都大于或等于 bufferSize，则不使用共享缓冲区。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
BufferedStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream 构造函数 (Stream, Int32)

BufferedStream 构造函数 (Stream, Int32)
BufferedStream 类

使用指定的缓冲区大小初始化 BufferedStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    bufferSize As Integer _
)
public BufferedStream(
    Stream stream,
    int bufferSize
)
public:
BufferedStream(
    Stream^ stream,
    int bufferSize
)
new :
        stream:Stream *
        bufferSize:int -> BufferedStream

参数

stream
类型： System.IO Stream
当前流。
bufferSize
类型： System Int32
缓冲区大小，以字节为单位。
异常 | 条件
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | bufferSize 为负。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

第一次使用此构造函数初始化 BufferedStream 对象时分配共享读/写缓冲区。如果所有的读和写都大于或等于 bufferSize，则不使用共享缓冲区。 第一次使用此构造函数初始化 BufferedStream 对象时分配共享读/写缓冲区。如果所有的读和写都大于或等于 bufferSize，则不使用共享缓冲区。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

' Create a NetworkStream that owns clientSocket and then
' create a BufferedStream on top of the NetworkStream.
Dim netStream As New NetworkStream(clientSocket, True)
Dim bufStream As New _
    BufferedStream(netStream, streamBufferSize)

// Create a NetworkStream that owns clientSocket and
// then create a BufferedStream on top of the NetworkStream.
// Both streams are disposed when execution exits the
// using statement.
using(Stream
    netStream = new NetworkStream(clientSocket, true),
    bufStream =
          new BufferedStream(netStream, streamBufferSize))

// Create a NetworkStream that owns clientSocket and
// then create a BufferedStream on top of the NetworkStream.
NetworkStream^ netStream = gcnew NetworkStream( clientSocket,true );
BufferedStream^ bufStream = gcnew BufferedStream( netStream,streamBufferSize );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
BufferedStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream 方法

BufferedStream 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

BufferedStream 类型公开以下成员。

名称 说明
页首

参考

BufferedStream 类
System.IO 命名空间


BufferedStream ..::.CopyTo 方法

BufferedStream
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

将当前流的内容复制到另一个流中。

名称 说明
页首

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间


BufferedStream ..::.Dispose 方法

BufferedStream
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

释放由 Stream 对象占用的所有资源。

名称 说明
页首

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间


BufferedStream ..::.Flush 方法

BufferedStream
.
.
::
.
Flush 方法
BufferedStream 类

清除该流的所有缓冲区，使得所有缓冲的数据都被写入到基础设备。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit
异常 | 条件
IOException | 数据源或储存库未打开。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。

如果使用 BufferedStream 构造函数，则在创建 BufferedStream 对象时指定缓冲区大小，缓冲区中的内容达到缓冲区大小时将被刷新。例如，BufferedStream bs = new BufferedStream(bs, 5) 这段代码将在缓冲区内容达到 5 个字节时刷新内容。 如果使用 BufferedStream 构造函数，则在创建 BufferedStream 对象时指定缓冲区大小，缓冲区中的内容达到缓冲区大小时将被刷新。例如，BufferedStream bs = new BufferedStream(bs, 5) 这段代码将在缓冲区内容达到 5 个字节时刷新内容。

BufferedStream 的所有读和写方法都自动维护缓冲区，因此，当在读和写之间来回切换时，无需调用 Flush。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

' Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.")
startTime = DateTime.Now
For i As Integer = 1 To numberOfLoops
    bufStream.Write(dataToSend, 0, dataToSend.Length)
Next i

bufStream.Flush()
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes sent In {1} seconds." & vbCrLf, _
    numberOfLoops * dataToSend.Length, _
    bufferedTime.ToString("F1"))

// Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.");
startTime = DateTime.Now;
for(int i = 0; i < numberOfLoops; i++)
{
    bufStream.Write(dataToSend, 0, dataToSend.Length);
}
bufStream.Flush();
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes sent in {1} seconds.\n",
    numberOfLoops * dataToSend.Length,
    bufferedTime.ToString("F1"));

// Send the data using the BufferedStream.
Console::WriteLine( "Sending data using BufferedStream." );
startTime = DateTime::Now;
for ( int i = 0; i < numberOfLoops; i++ )
{
   bufStream->Write( dataToSend, 0, dataToSend->Length );

}
bufStream->Flush();
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes sent in {1} seconds.\n", (numberOfLoops * dataToSend->Length).ToString(), bufferedTime.ToString(  "F1" ) );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
Close

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.MemberwiseClone 方法

BufferedStream
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

名称 说明
页首

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间


BufferedStream ..::.Read 方法

BufferedStream
.
.
::
.
Read 方法
BufferedStream 类

将字节从当前缓冲流复制到数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read ( _
    <OutAttribute> array As Byte(), _
    offset As Integer, _
    count As Integer _
) As Integer
public override int Read(
    byte[] array,
    int offset,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<unsigned char>^ array,
    int offset,
    int count
) override
abstract Read :
        array:byte[] byref *
        offset:int *
        count:int -> int
override Read :
        array:byte[] byref *
        offset:int *
        count:int -> int

参数

array
类型：
array<
System Byte
>
[]
()
[]

将字节复制到的缓冲区。
offset
类型： System Int32
缓冲区中的字节偏移量，从此处开始读取字节。
count
类型： System Int32
要读取的字节数。

返回值

类型： System Int32
读入 array 中的总字节数。如果可用的字节没有所请求的那么多，总字节数可能小于请求的字节数；或者如果在可读取任何数据前就已到达流的末尾，则为零。 读入 array 中的总字节数。如果可用的字节没有所请求的那么多，总字节数可能小于请求的字节数；或者如果在可读取任何数据前就已到达流的末尾，则为零。
异常 | 条件
ArgumentException | array 的长度减去 offset 小于 count。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 count 为负。
IOException | 流未打开或为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 流不支持读取。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。

将 BinaryReader 用于读取基元数据类型。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now

Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0

    'Read my return anything from 0 to numBytesToRead
    n = bufStream.Read(receivedData, 0, receivedData.Length)
    'The end of the file is reached.
    If n = 0 Then
        Exit Do
    End If

    bytesReceived += n
    numBytesToRead -= n
Loop

bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
    "seconds." & vbCrLf, _
    bytesReceived.ToString(), _
    bufferedTime.ToString("F1"))

// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;

int numBytesToRead = receivedData.Length;

while (numBytesToRead > 0)
{
    // Read may return anything from 0 to numBytesToRead.
    int n = bufStream.Read(receivedData,0, receivedData.Length);
    // The end of the file is reached.
    if (n == 0)
        break;
    bytesReceived += n;
    numBytesToRead -= n;
}

bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    bytesReceived.ToString(),
    bufferedTime.ToString("F1"));

// Receive data using the BufferedStream.
Console::WriteLine(  "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
   bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}

bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString(  "F1" ) );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
BlockCopy
CanRead
Write

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.ReadByte 方法

BufferedStream
.
.
::
.
ReadByte 方法
BufferedStream 类

从基础流中读取一个字节，并返回转换为 int 的该字节；或者如果从流的末尾读取则返回 -1。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadByte As Integer
public override int ReadByte()
public:
virtual int ReadByte() override
abstract ReadByte : unit -> int
override ReadByte : unit -> int

返回值

类型： System Int32
转换为 int 的字节，或者如果从流的末尾读取则为 -1。
异常 | 条件
IOException | 发生 I/O 错误，如流被关闭。
NotSupportedException | 流不支持读取。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

对实现者的说明

Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.Seek 方法

BufferedStream
.
.
::
.
Seek 方法
BufferedStream 类

设置当前缓冲流中的位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Seek ( _
    offset As Long, _
    origin As SeekOrigin _
) As Long
public override long Seek(
    long offset,
    SeekOrigin origin
)
public:
virtual long long Seek(
    long long offset,
    SeekOrigin origin
) override
abstract Seek :
        offset:int64 *
        origin:SeekOrigin -> int64
override Seek :
        offset:int64 *
        origin:SeekOrigin -> int64

参数

offset
类型： System Int64
相对于 origin 的字节偏移量。
origin
类型： System.IO SeekOrigin
SeekOrigin 类型的值，指示用于获得新位置的参考点。

返回值

类型： System Int64
当前缓冲流中的新位置。
异常 | 条件
IOException | 流未打开或为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 流不支持查找。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

如果 offset 为负，则新位置位于 origin 指定的位置之前 offset 指定的字节数。如果 offset 为零，则新位置是 origin 指定的位置。如果 offset 为正，则新位置位于 origin 指定的位置之后 offset 指定的字节数。 如果 offset 为负，则新位置位于 origin 指定的位置之前 offset 指定的字节数。如果 offset 为零，则新位置是 origin 指定的位置。如果 offset 为正，则新位置位于 origin 指定的位置之后 offset 指定的字节数。 如果 offset 为负，则新位置位于 origin 指定的位置之前 offset 指定的字节数。如果 offset 为零，则新位置是 origin 指定的位置。如果 offset 为正，则新位置位于 origin 指定的位置之后 offset 指定的字节数。

支持搜索到超出流长度的任何位置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
SeekOrigin

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.SetLength 方法

BufferedStream
.
.
::
.
SetLength 方法
BufferedStream 类

设置缓冲流的长度。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub SetLength ( _
    value As Long _
)
public override void SetLength(
    long value
)
public:
virtual void SetLength(
    long long value
) override
abstract SetLength :
        value:int64 -> unit
override SetLength :
        value:int64 -> unit

参数

value
类型： System Int64
一个整数，指示当前缓冲流的所需长度（以字节为单位）。
异常 | 条件
ArgumentOutOfRangeException | value 为负。
IOException | 流未打开或为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 流不同时支持写入和查找。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

在设置基础数据源或储存库的长度之前对缓冲区进行刷新。如果指定值小于缓冲流的当前长度，则缓冲流被截断。如果指定值大于缓冲流的当前长度，则缓冲流被扩展。如果缓冲流被扩展，则缓冲流的新旧长度之间的内容是未定义的。 在设置基础数据源或储存库的长度之前对缓冲区进行刷新。如果指定值小于缓冲流的当前长度，则缓冲流被截断。如果指定值大于缓冲流的当前长度，则缓冲流被扩展。如果缓冲流被扩展，则缓冲流的新旧长度之间的内容是未定义的。 在设置基础数据源或储存库的长度之前对缓冲区进行刷新。如果指定值小于缓冲流的当前长度，则缓冲流被截断。如果指定值大于缓冲流的当前长度，则缓冲流被扩展。如果缓冲流被扩展，则缓冲流的新旧长度之间的内容是未定义的。 在设置基础数据源或储存库的长度之前对缓冲区进行刷新。如果指定值小于缓冲流的当前长度，则缓冲流被截断。如果指定值大于缓冲流的当前长度，则缓冲流被扩展。如果缓冲流被扩展，则缓冲流的新旧长度之间的内容是未定义的。

如果需要，SetLength 刷新任何缓冲写入。

为了使 SetLength 生效，流必须支持写入和搜索。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
Seek

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.Write 方法

BufferedStream
.
.
::
.
Write 方法
BufferedStream 类

将字节复制到缓冲流，并将缓冲流内的当前位置前进写入的字节数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    array As Byte(), _
    offset As Integer, _
    count As Integer _
)
public override void Write(
    byte[] array,
    int offset,
    int count
)
public:
virtual void Write(
    array<unsigned char>^ array,
    int offset,
    int count
) override
abstract Write :
        array:byte[] *
        offset:int *
        count:int -> unit
override Write :
        array:byte[] *
        offset:int *
        count:int -> unit

参数

array
类型：
array<
System Byte
>
[]
()
[]

字节数组，从该字节数组将 count 个字节复制到当前缓冲流中。
offset
类型： System Int32
缓冲区中的偏移量，从此处开始将字节复制到当前缓冲流中。
count
类型： System Int32
要写入当前缓冲流中的字节数。
异常 | 条件
ArgumentException | array 的长度减去 offset 小于 count。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 count 为负。
IOException | 流关闭或为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 流不支持写入。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

' Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.")
startTime = DateTime.Now
For i As Integer = 1 To numberOfLoops
    bufStream.Write(dataToSend, 0, dataToSend.Length)
Next i

bufStream.Flush()
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes sent In {1} seconds." & vbCrLf, _
    numberOfLoops * dataToSend.Length, _
    bufferedTime.ToString("F1"))

// Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.");
startTime = DateTime.Now;
for(int i = 0; i < numberOfLoops; i++)
{
    bufStream.Write(dataToSend, 0, dataToSend.Length);
}
bufStream.Flush();
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes sent in {1} seconds.\n",
    numberOfLoops * dataToSend.Length,
    bufferedTime.ToString("F1"));

// Send the data using the BufferedStream.
Console::WriteLine( "Sending data using BufferedStream." );
startTime = DateTime::Now;
for ( int i = 0; i < numberOfLoops; i++ )
{
   bufStream->Write( dataToSend, 0, dataToSend->Length );

}
bufStream->Flush();
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes sent in {1} seconds.\n", (numberOfLoops * dataToSend->Length).ToString(), bufferedTime.ToString(  "F1" ) );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
CanWrite
Read

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.WriteByte 方法

BufferedStream
.
.
::
.
WriteByte 方法
BufferedStream 类

将一个字节写入缓冲流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub WriteByte ( _
    value As Byte _
)
public override void WriteByte(
    byte value
)
public:
virtual void WriteByte(
    unsigned char value
) override
abstract WriteByte :
        value:byte -> unit
override WriteByte :
        value:byte -> unit

参数

value
类型： System Byte
要写入流的字节。
异常 | 条件
NotSupportedException | 流不支持写入。
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream 属性

BufferedStream 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
BufferedStream 类

BufferedStream 类型公开以下成员。

名称 说明
页首

参考

BufferedStream 类
System.IO 命名空间


BufferedStream ..::.CanRead 属性

BufferedStream
.
.
::
.
CanRead 属性
BufferedStream 类

获取一个值，该值指示当前流是否支持读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanRead As Boolean
    Get
public override bool CanRead { get; }
public:
virtual property bool CanRead {
    bool get () override;
}
abstract CanRead : bool
override CanRead : bool

属性值

类型： System Boolean
如果流支持读取，则为 true；如果流已关闭或是通过只写访问方式打开的，则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持读取，则对 StreamReader、StringReader、TextReader 的 Read、ReadByte、BeginRead、EndRead 和 Peek 方法的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

If bufStream.CanRead Then
    ReceiveData(netStream, bufStream)
End If

if(bufStream.CanRead)
{
    ReceiveData(netStream, bufStream);
}

if ( bufStream->CanRead )
{
   Client::ReceiveData( netStream, bufStream );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
Read

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.CanSeek 属性

BufferedStream
.
.
::
.
CanSeek 属性
BufferedStream 类

获取一个值，该值指示当前流是否支持查找。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanSeek As Boolean
    Get
public override bool CanSeek { get; }
public:
virtual property bool CanSeek {
    bool get () override;
}
abstract CanSeek : bool
override CanSeek : bool

属性值

类型： System Boolean
如果流支持查找，则为 true；如果流已关闭或者如果流是由操作系统句柄（如管道或到控制台的输出）构造的，则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持查找，则对 Length、SetLength、Position 和 Seek 的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

' Check whether the underlying stream supports seeking.
If bufStream.CanSeek Then
    Console.WriteLine("NetworkStream supports" & _
        "seeking." & vbCrLf)
Else
    Console.WriteLine("NetworkStream does not " & _
        "support seeking." & vbCrLf)
End If

// Check whether the underlying stream supports seeking.
Console.WriteLine("NetworkStream {0} seeking.\n",
    bufStream.CanSeek ? "supports" : "does not support");

// Check whether the underlying stream supports seeking.
Console::WriteLine( "NetworkStream {0} seeking.\n", bufStream->CanSeek ? (String^)"supports" : "does not support" );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
SetLength
Seek

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.CanWrite 属性

BufferedStream
.
.
::
.
CanWrite 属性
BufferedStream 类

获取一个值，该值指示当前流是否支持写入。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanWrite As Boolean
    Get
public override bool CanWrite { get; }
public:
virtual property bool CanWrite {
    bool get () override;
}
abstract CanWrite : bool
override CanWrite : bool

属性值

类型： System Boolean
如果流支持写入，则为 true；如果流已关闭或是通过只读访问方式打开的，则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持写入，则调用 SetLength、Write 或 WriteByte 将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

此代码示例摘自一个为 BufferedStream 类提供的更大的示例。

If bufStream.CanWrite Then
    SendData(netStream, bufStream)
End If

if(bufStream.CanWrite)
{
    SendData(netStream, bufStream);
}

if ( bufStream->CanWrite )
{
   Client::SendData( netStream, bufStream );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
Write

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.Length 属性

BufferedStream
.
.
::
.
Length 属性
BufferedStream 类

获取流长度，长度以字节为单位。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Length As Long
    Get
public override long Length { get; }
public:
virtual property long long Length {
    long long get () override;
}
abstract Length : int64
override Length : int64

属性值

类型： System Int64
流长度，以字节为单位。
异常 | 条件
IOException | 基础流为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或已关闭。
NotSupportedException | 流不支持查找。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


BufferedStream ..::.Position 属性

BufferedStream
.
.
::
.
Position 属性
BufferedStream 类

获取当前流内的位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Property Position As Long
    Get
    Set
public override long Position { get; set; }
public:
virtual property long long Position {
    long long get () override;
    void set (long long value) override;
}
abstract Position : int64 with get, set
override Position : int64 with get, set

属性值

类型： System Int64
当前流内的位置。
异常 | 条件
ArgumentOutOfRangeException | 传递给 Seek 的值为负。
IOException | 发生 I/O 错误，如流被关闭。
NotSupportedException | 流不支持查找。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

get 访问器调用 Seek 获取基础流中的当前位置，然后根据缓冲区中的当前位置调整此值。

set 访问器将以前写入缓冲区的所有数据都复制到基础流中，然后调用 Seek。

支持搜索到超出流长度的任何位置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

BufferedStream 类
BufferedStream 成员
System.IO 命名空间
CanSeek
Seek

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory 类

Directory 类
成员

公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。 公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(True)> _
Public NotInheritable Class Directory
[ComVisibleAttribute(true)]
public static class Directory
[ComVisibleAttribute(true)]
public ref class Directory abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
[<ComVisibleAttribute(true)>]
type Directory =  class end

将 Directory 类用于典型操作，如复制、移动、重命名、创建和删除目录。也可将 Directory 类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime 信息。 将 Directory 类用于典型操作，如复制、移动、重命名、创建和删除目录。也可将 Directory 类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime 信息。

由于所有的 Directory 方法都是静态的，所以如果只想执行一个操作，那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。大多数 Directory 方法要求当前操作的目录的路径。 由于所有的 Directory 方法都是静态的，所以如果只想执行一个操作，那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。大多数 Directory 方法要求当前操作的目录的路径。

Directory 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象，可考虑改用 DirectoryInfo 的相应实例方法，因为并不总是需要安全检查。 Directory 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象，可考虑改用 DirectoryInfo 的相应实例方法，因为并不总是需要安全检查。

说明 说明

在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将会引发异常。然而，如果路径是完全限定的，但是以空格开头，则空格不会被省略，并且不会引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将会引发异常。然而，如果路径是完全限定的，但是以空格开头，则空格不会被省略，并且不会引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将会引发异常。然而，如果路径是完全限定的，但是以空格开头，则空格不会被省略，并且不会引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将会引发异常。然而，如果路径是完全限定的，但是以空格开头，则空格不会被省略，并且不会引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。

在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径：

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

默认情况下，向所有用户授予对新目录的完全读/写访问权限。如果在以目录分隔符结尾的路径字符串处要求提供某个目录的权限，会导致要求提供该目录所含的所有子目录的权限（如“C:\Temp\”）。如果仅需要某个特定目录的权限，则该字符串应该以句号结尾（例如“C:\Temp\.”）。 默认情况下，向所有用户授予对新目录的完全读/写访问权限。如果在以目录分隔符结尾的路径字符串处要求提供某个目录的权限，会导致要求提供该目录所含的所有子目录的权限（如“C:\Temp\”）。如果仅需要某个特定目录的权限，则该字符串应该以句号结尾（例如“C:\Temp\.”）。 默认情况下，向所有用户授予对新目录的完全读/写访问权限。如果在以目录分隔符结尾的路径字符串处要求提供某个目录的权限，会导致要求提供该目录所含的所有子目录的权限（如“C:\Temp\”）。如果仅需要某个特定目录的权限，则该字符串应该以句号结尾（例如“C:\Temp\.”）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例确定指定的目录是否存在，如果存在，则删除该目录；如果不存在，则创建该目录。然后，此示例将移动此目录，在其中创建一个文件并对文件进行计数。 下面的代码示例确定指定的目录是否存在，如果存在，则删除该目录；如果不存在，则创建该目录。然后，此示例将移动此目录，在其中创建一个文件并对文件进行计数。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        'Specify the directories you want to manipulate.
        Dim path As String = "c:\MyDir"
        Dim target As String = "c:\TestDir"

        Try
            ' Determine whethers the directory exists.
            If Directory.Exists(path) = False Then
                ' Create the directory.
                Directory.CreateDirectory(path)
            End If

            If Directory.Exists(target) Then
                ' Delete the target to ensure it is not there.
                Directory.Delete(target, True)
            End If

            ' Move the directory.
            Directory.Move(path, target)

            'Create a file in the directory.
            File.CreateText(target + "\myfile.txt")

            'Count the files in the target.
            Console.WriteLine("The number of files in {0} is {1}", _
              target, Directory.GetFiles(target).Length)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        string path = @"c:\MyDir";
        string target = @"c:\TestDir";

        try
        {
            // Determine whether the directory exists.
            if (!Directory.Exists(path))
            {
                // Create the directory it does not exist.
                Directory.CreateDirectory(path);
            }

            if (Directory.Exists(target))
            {
                // Delete the target to ensure it is not there.
                Directory.Delete(target, true);
            }

            // Move the directory.
            Directory.Move(path, target);

            // Create a file in the directory.
            File.CreateText(target + @"\myfile.txt");

            // Count the files in the target directory.
            Console.WriteLine("The number of files in {0} is {1}",
                target, Directory.GetFiles(target).Length);
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   String^ path = "c:\\MyDir";
   String^ target = "c:\\TestDir";
   try
   {

      // Determine whether the directory exists.
      if (  !Directory::Exists( path ) )
      {

         // Create the directory it does not exist.
         Directory::CreateDirectory( path );
      }
      if ( Directory::Exists( target ) )
      {

         // Delete the target to ensure it is not there.
         Directory::Delete( target, true );
      }

      // Move the directory.
      Directory::Move( path, target );

      // Create a file in the directory.
      File::CreateText( String::Concat( target, "\\myfile.txt" ) );

      // Count the files in the target directory.
      Console::WriteLine( "The number of files in {0} is {1}", target, Directory::GetFiles( target )->Length );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}

下面的代码示例演示如何计算目录的大小。

' The following example calculates the size of a directory
' and its subdirectories, if any, and displays the total size
' in bytes.
Imports System
Imports System.IO
Imports Microsoft.VisualBasic

Public Class ShowDirSize

    Public Shared Function DirSize(ByVal d As DirectoryInfo) As Long
        Dim Size As Long = 0
        ' Add file sizes.
        Dim fis As FileInfo() = d.GetFiles()
        Dim fi As FileInfo
        For Each fi In fis
            Size += fi.Length
        Next fi
        ' Add subdirectory sizes.
        Dim dis As DirectoryInfo() = d.GetDirectories()
        Dim di As DirectoryInfo
        For Each di In dis
            Size += DirSize(di)
        Next di
        Return Size
    End Function 'DirSize

    Public Overloads Shared Sub Main(ByVal args() As String)
        If args.Length <> 1 Then
            Console.WriteLine("You must provide a directory argument at the command line.")
        Else
            Dim d As New DirectoryInfo(args(0))
            Console.WriteLine("The size of {0} and its subdirectories is {1} bytes.", d, DirSize(d))
        End If
    End Sub 'Main
End Class 'ShowDirSize

// The following example calculates the size of a directory
// and its subdirectories, if any, and displays the total size
// in bytes.

using System;
using System.IO;

public class ShowDirSize
{
    public static long DirSize(DirectoryInfo d)
    {
        long Size = 0;
        // Add file sizes.
        FileInfo[] fis = d.GetFiles();
        foreach (FileInfo fi in fis)
        {
            Size += fi.Length;
        }
        // Add subdirectory sizes.
        DirectoryInfo[] dis = d.GetDirectories();
        foreach (DirectoryInfo di in dis)
        {
            Size += DirSize(di);
        }
        return(Size);
    }
    public static void Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.WriteLine("You must provide a directory argument at the command line.");
        }
        else
        {
            DirectoryInfo d = new DirectoryInfo(args[0]);
            Console.WriteLine("The size of {0} and its subdirectories is {1} bytes.", d, DirSize(d));
        }
    }
}

// The following example calculates the size of a directory
// and its subdirectories, if any, and displays the total size
// in bytes.
using namespace System;
using namespace System::IO;

long DirSize( DirectoryInfo^ d )
{
   long Size = 0;

   // Add file sizes.
   array<FileInfo^>^fis = d->GetFiles();

   for each (FileInfo^ fi in fis)
   {
      Size += (long)fi->Length;
   }

   array<DirectoryInfo^>^dis = d->GetDirectories();

   for each (DirectoryInfo^ di in dis)
   {
      Size += DirSize( di );
   }

   return Size;
}

int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args->Length != 2 )
   {
      Console::WriteLine( "You must provide a directory argument at the command line." );
   }
   else
   {
      DirectoryInfo^ d = gcnew DirectoryInfo( args[ 1 ] );
      Console::WriteLine( "The size of {0} and its subdirectories is {1} bytes.", d, DirSize( d ) );
   }
}

System.IO System.IO..::.DirectoryDirectory
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 成员
System.IO 命名空间
DriveInfo
File
DirectoryInfo
FileInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


Directory 成员

Directory 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。 公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。

Directory 类型公开以下成员。

名称 说明
页首

参考

Directory 类
System.IO 命名空间


Directory 方法

Directory 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

Directory 类型公开以下成员。

名称 说明
页首

参考

Directory 类
System.IO 命名空间


Directory ..::.CreateDirectory 方法

Directory
.
.
::
.
CreateDirectory 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

创建指定路径中的所有目录。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.CreateDirectory 方法 (String)

Directory
.
.
::
.
CreateDirectory 方法 (String)
Directory 类

按 path 的指定创建所有目录和子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function CreateDirectory ( _
    path As String _
) As DirectoryInfo
public static DirectoryInfo CreateDirectory(
    string path
)
public:
static DirectoryInfo^ CreateDirectory(
    String^ path
)
static member CreateDirectory :
        path:string -> DirectoryInfo

参数

path
类型： System String
要创建的目录路径。

返回值

类型： System.IO DirectoryInfo
由 path 指定的 DirectoryInfo。
异常 | 条件
IOException | path 指定的目录是只读的。 - 或 - 网络名称未知。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - path 带有前缀，或仅包含一个冒号字符 (:)。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
NotSupportedException | path 包含一个冒号字符 (:)，该冒号字符不是驱动器标签（“C:\”）的一部分。

创建在 path 中指定的任意和所有目录，除非这些目录已存在或 path 的某一部分无效。path 参数指定目录路径，而不是文件路径。如果目录已经存在，则此方法不执行任何操作。 创建在 path 中指定的任意和所有目录，除非这些目录已存在或 path 的某一部分无效。path 参数指定目录路径，而不是文件路径。如果目录已经存在，则此方法不执行任何操作。 创建在 path 中指定的任意和所有目录，除非这些目录已存在或 path 的某一部分无效。path 参数指定目录路径，而不是文件路径。如果目录已经存在，则此方法不执行任何操作。

您可以在远程计算机上创建目录，以共享对其具有写入访问权限的目录。UNC 路径受支持；例如，您可以为 path: \\2009\Archives\December 指定以下内容。 您可以在远程计算机上创建目录，以共享对其具有写入访问权限的目录。UNC 路径受支持；例如，您可以为 path: \\2009\Archives\December 指定以下内容。

不支持只通过冒号 (:) 字符创建目录，并且这将导致引发 NotSupportedException。

下面的代码示例创建并删除指定的目录。

Imports System
Imports System.IO
Imports Microsoft.VisualBasic

Public Class Test
    Public Shared Sub Main()
        ' Specify the directory you want to manipulate.
        Dim path As String = "c:\MyDir"

        Try
            ' Determine whether the directory exists.
            If Directory.Exists(path) Then
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            Dim di As DirectoryInfo = Directory.CreateDirectory(path)
            Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path))

            ' Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}.", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\MyDir";

        try
        {
            // Determine whether the directory exists.
            if (Directory.Exists(path))
            {
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            DirectoryInfo di = Directory.CreateDirectory(path);
            Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));

            // Delete the directory.
            di.Delete();
            Console.WriteLine("The directory was deleted successfully.");
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directory you want to manipulate.
   String^ path = "c:\\MyDir";
   try
   {

      // Determine whether the directory exists.
      if ( Directory::Exists( path ) )
      {
         Console::WriteLine( "That path exists already." );
         return 0;
      }

      // Try to create the directory.
      DirectoryInfo^ di = Directory::CreateDirectory( path );
      Console::WriteLine( "The directory was created successfully at {0}.", Directory::GetCreationTime( path ) );

      // Delete the directory.
      di->Delete();
      Console::WriteLine( "The directory was deleted successfully." );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}

若要在当前目录是 C:\Users\User1 时创建目录 C:\Users\User1\Public\Html，请使用以下任意调用以确保正确解释反斜杠。

在 Visual Basic 中：

 Directory.CreateDirectory("Public\Html")
     Directory.CreateDirectory("\Users\User1\Public\Html")
     Directory.CreateDirectory("c:\Users\User1\Public\Html")

在 C# 中：

 Directory.CreateDirectory("Public\\Html");
     Directory.CreateDirectory("\\Users\\User1\\Public\\Html");
     Directory.CreateDirectory("c:\\Users\\User1\\Public\\Html");

在 C++ 中：

 Directory::CreateDirectory("Public\\Html");
     Directory::CreateDirectory("\\Users\\User1\\Public\\Html");
     Directory::CreateDirectory("c:\\Users\\User1\\Public\\Html");
  • FileIOPermission

    用于读取和写入文件或目录。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件或目录。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
CreateDirectory 重载
System.IO 命名空间
DirectoryInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.CreateDirectory 方法 (String, DirectorySecurity)

Directory
.
.
::
.
CreateDirectory 方法 (String, DirectorySecurity)
Directory 类

创建指定路径中的所有目录，并应用指定的 Windows 安全性。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function CreateDirectory ( _
    path As String, _
    directorySecurity As DirectorySecurity _
) As DirectoryInfo
public static DirectoryInfo CreateDirectory(
    string path,
    DirectorySecurity directorySecurity
)
public:
static DirectoryInfo^ CreateDirectory(
    String^ path,
    DirectorySecurity^ directorySecurity
)
static member CreateDirectory :
        path:string *
        directorySecurity:DirectorySecurity -> DirectoryInfo

参数

path
类型： System String
要创建的目录。
directorySecurity
类型： System.Security.AccessControl DirectorySecurity
要应用于此目录的访问控制。

返回值

类型： System.IO DirectoryInfo
表示新创建的目录的 DirectoryInfo 对象。
异常 | 条件
IOException | path 指定的目录是只读的。 - 或 - 网络名称未知。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - path 带有前缀，或仅包含一个冒号字符 (:)。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
NotSupportedException | path 包含一个冒号字符 (:)，该冒号字符不是驱动器标签（“C:\”）的一部分。

使用此方法重载来创建具有访问控制的目录，以便在应用安全性之前不能访问此目录。

创建在 path 参数中指定的所有目录，除非它们已经存在或者 path 的某些部分无效。path 参数指定目录路径，而不是文件路径。 创建在 path 参数中指定的所有目录，除非它们已经存在或者 path 的某些部分无效。path 参数指定目录路径，而不是文件路径。

您可以在远程计算机上创建目录，以共享对其具有写入访问权限的目录。UNC 路径受支持；例如，您可以为 path: \\2009\Archives\December 指定以下内容。 您可以在远程计算机上创建目录，以共享对其具有写入访问权限的目录。UNC 路径受支持；例如，您可以为 path: \\2009\Archives\December 指定以下内容。

不支持只通过冒号 (:) 字符来创建目录，因为这会引发 NotSupportedException。

  • FileIOPermission

    用于读取和写入文件和目录以及用于访问目标目录。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 安全操作：Demand 用于读取和写入文件和目录以及用于访问目标目录。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 安全操作：Demand

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
CreateDirectory 重载
System.IO 命名空间


Directory ..::.Delete 方法

Directory
.
.
::
.
Delete 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

删除指定的目录。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.Delete 方法 (String)

Directory
.
.
::
.
Delete 方法 (String)
Directory 类

从指定路径删除空目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Delete ( _
    path As String _
)
public static void Delete(
    string path
)
public:
static void Delete(
    String^ path
)
static member Delete :
        path:string -> unit

参数

path
类型： System String
要移除的空目录的名称。此目录必须为可写或为空。 要移除的空目录的名称。此目录必须为可写或为空。
异常 | 条件
IOException | 存在具有相同名称和 path 指定的位置的文件。 - 或 - 该目录为应用程序的当前工作目录。 - 或 - 由 path 指定的目录不为空。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - 目录中包含一个只读文件。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径不存在或未能找到。 - 或 - 指定的路径无效（例如，它位于未映射的驱动器上）。

如果为第二个参数指定 false，则此方法与 Delete(String, Boolean) 的行为类似。

path 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 path 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 path 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

如果在 path 参数中指定的目录包含文件或子目录，则此方法引发 IOException。

path 参数不区分大小写。

在某些情况下，如果指定的目录在 Windows 资源管理器中打开，则 Delete 方法可能无法删除它。

下面的代码示例删除指定的目录，但如果其中有子目录，则引发异常。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim path As String = "c:\MyDir"
        Dim subPath As String = "c:\MyDir\temp"

        Try
            ' Determine whether the directory exists.
            If Directory.Exists(path) = False Then
                ' Create the directory if it does not exist.
                Directory.CreateDirectory(path)
            End If

            ' Determine whether the subdirectory exists.
            If Directory.Exists(subPath) = False Then
                ' Create the subdirectory if it does not exist.
                Directory.CreateDirectory(SubPath)
            End If

            ' This Delete operation will not be allowed because there are subdirectories.
            Console.WriteLine("I am about to attempt to delete {0}.", path)
            Directory.Delete(path)
            Console.WriteLine("The Delete operation was successful, which was unexpected.")

        Catch
            Console.WriteLine("The Delete operation failed as expected.")
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        string path = @"c:\MyDir";
        string subPath = @"c:\MyDir\temp";

        try
        {
            // Determine whether the directory exists.
            if (!Directory.Exists(path))
            {
                // Create the directory if it does not exist.
                Directory.CreateDirectory(path);
            }

            if (!Directory.Exists(subPath))
            {
                // Create the subdirectory if it does not exist.
                Directory.CreateDirectory(subPath);
            }

            // This operation will not be allowed because there are subdirectories.
            Console.WriteLine("I am about to attempt to delete {0}.", path);
            Directory.Delete(path);
            Console.WriteLine("The Delete operation was successful, which was unexpected.");

        }
        catch (Exception)
        {
            Console.WriteLine("The Delete operation failed as expected.");
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   String^ path = "c:\\MyDir";
   String^ subPath = "c:\\MyDir\\temp";
   try
   {

      // Determine whether the directory exists.
      if (  !Directory::Exists( path ) )
      {

         // Create the directory if it does not exist.
         Directory::CreateDirectory( path );
      }
      if (  !Directory::Exists( subPath ) )
      {

         // Create the subdirectory if it does not exist.
         Directory::CreateDirectory( subPath );
      }

      // This operation will not be allowed because there are subdirectories.
      Console::WriteLine( "I am about to attempt to delete {0}.", path );
      Directory::Delete( path );
      Console::WriteLine( "The Delete operation was successful, which was unexpected." );
   }
   catch ( Exception^ )
   {
      Console::WriteLine( "The Delete operation failed as expected." );
   }

}
  • FileIOPermission

    用于向指定目录写入。关联的枚举：FileIOPermissionAccess..::.Write 用于向指定目录写入。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
Delete 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.Delete 方法 (String, Boolean)

Directory
.
.
::
.
Delete 方法 (String, Boolean)
Directory 类

删除指定的目录并（如果指示）删除该目录中的所有子目录和文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Delete ( _
    path As String, _
    recursive As Boolean _
)
public static void Delete(
    string path,
    bool recursive
)
public:
static void Delete(
    String^ path,
    bool recursive
)
static member Delete :
        path:string *
        recursive:bool -> unit

参数

path
类型： System String
要移除的目录的名称。
recursive
类型： System Boolean
若要移除 path 中的目录、子目录和文件，则为 true；否则为 false。
异常 | 条件
IOException | 存在具有相同名称和 path 指定的位置的文件。 - 或 - path 指定的目录是只读的，或者 recursive 是 false 并且 path 不是空目录。 - 或 - 该目录为应用程序的当前工作目录。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - 目录中包含一个只读文件。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径不存在或未能找到。 - 或 - 指定的路径无效（例如，它位于未映射的驱动器上）。

path 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 path 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 path 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

如果 recursive 参数为 true，则用户必须具有当前目录及其所有子目录的写权限。

当删除一个包含重分析点（例如符号链接或装入点）的目录时，此方法的行为稍有不同。如果该重分析点为目录（例如装入点），则其将被卸载并且装入点将被删除。该方法不通过该重分析点递归。如果该重分析点为某个文件的符号链接，则该重分析点被删除并且不是此符号链接的目标。 当删除一个包含重分析点（例如符号链接或装入点）的目录时，此方法的行为稍有不同。如果该重分析点为目录（例如装入点），则其将被卸载并且装入点将被删除。该方法不通过该重分析点递归。如果该重分析点为某个文件的符号链接，则该重分析点被删除并且不是此符号链接的目标。 当删除一个包含重分析点（例如符号链接或装入点）的目录时，此方法的行为稍有不同。如果该重分析点为目录（例如装入点），则其将被卸载并且装入点将被删除。该方法不通过该重分析点递归。如果该重分析点为某个文件的符号链接，则该重分析点被删除并且不是此符号链接的目标。 当删除一个包含重分析点（例如符号链接或装入点）的目录时，此方法的行为稍有不同。如果该重分析点为目录（例如装入点），则其将被卸载并且装入点将被删除。该方法不通过该重分析点递归。如果该重分析点为某个文件的符号链接，则该重分析点被删除并且不是此符号链接的目标。

在某些情况下，如果指定的目录在 Windows 资源管理器中打开，则 Delete 方法可能无法删除它。

下面的代码示例创建并删除指定的目录和子目录。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim path As String = "c:\MyDir"
        Dim subPath As String = "c:\MyDir\temp"

        Try
            ' Determine whether the directory exists.
            If Directory.Exists(path) = False Then
                ' Create the directory.
                Directory.CreateDirectory(path)
            End If

            ' Determine whether the directory exists.
            If Directory.Exists(subPath) = False Then
                ' Create the directory.
                Directory.CreateDirectory(subPath)
            End If

            'This will succeed because subdirectories are being deleted.
            Console.WriteLine("I am about to attempt to delete {0}", path)
            Directory.Delete(path, True)
            Console.WriteLine("The Delete operation was successful.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        // Specify the directories you want to manipulate.
        string path = @"c:\MyDir";
        string subPath = @"c:\MyDir\temp";

        try
        {
            // Determine whether the directory exists.
            if (!Directory.Exists(path))
            {
                // Create the directory.
                Directory.CreateDirectory(path);
            }

            if (!Directory.Exists(subPath))
            {
                // Create the directory.
                Directory.CreateDirectory(subPath);
            }

            // This will succeed because subdirectories are being deleted.
            Console.WriteLine("I am about to attempt to delete {0}", path);
            Directory.Delete(path, true);
            Console.WriteLine("The Delete operation was successful.");

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   String^ path = "c:\\MyDir";
   String^ subPath = "c:\\MyDir\\temp";
   try
   {

      // Determine whether the directory exists.
      if (  !Directory::Exists( path ) )
      {

         // Create the directory.
         Directory::CreateDirectory( path );
      }
      if (  !Directory::Exists( subPath ) )
      {

         // Create the directory.
         Directory::CreateDirectory( subPath );
      }

      // This will succeed because subdirectories are being deleted.
      Console::WriteLine( "I am about to attempt to delete {0}", path );
      Directory::Delete( path, true );
      Console::WriteLine( "The Delete operation was successful." );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于向指定目录写入。关联的枚举：FileIOPermissionAccess..::.Write 用于向指定目录写入。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
Delete 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.EnumerateDirectories 方法

Directory
.
.
::
.
EnumerateDirectories 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

返回指定路径中的目录名称的可枚举集合。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.EnumerateDirectories 方法 (String)

Directory
.
.
::
.
EnumerateDirectories 方法 (String)
Directory 类

返回指定路径中的目录名称的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateDirectories ( _
    path As String _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateDirectories(
    string path
)
public:
static IEnumerable<String^>^ EnumerateDirectories(
    String^ path
)
static member EnumerateDirectories :
        path:string -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中的目录名称的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetDirectories 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。 EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetDirectories 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。

下面的示例枚举指定路径中的顶层目录。

Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath)
            For Each folder In dirs
                ' Remove path information from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));

            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateDirectories 重载
System.IO 命名空间


Directory ..::.EnumerateDirectories 方法 (String, String)

Directory
.
.
::
.
EnumerateDirectories 方法 (String, String)
Directory 类

返回指定路径中与搜索模式匹配的目录名称的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateDirectories ( _
    path As String, _
    searchPattern As String _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateDirectories(
    string path,
    string searchPattern
)
public:
static IEnumerable<String^>^ EnumerateDirectories(
    String^ path,
    String^ searchPattern
)
static member EnumerateDirectories :
        path:string *
        searchPattern:string -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的目录名称匹配的搜索字符串。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中与 searchPattern 匹配的目录名称的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetDirectories 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。 EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetDirectories 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。

下面的示例枚举指定路径中与指定搜索模式匹配的顶层目录。

Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*")
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*")
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));

            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateDirectories 重载
System.IO 命名空间


Directory ..::.EnumerateDirectories 方法 (String, String, SearchOption)

Directory
.
.
::
.
EnumerateDirectories 方法 (String, String, SearchOption)
Directory 类

返回指定路径中与搜索模式匹配的目录名称的可枚举集合，还可以搜索子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateDirectories ( _
    path As String, _
    searchPattern As String, _
    searchOption As SearchOption _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateDirectories(
    string path,
    string searchPattern,
    SearchOption searchOption
)
public:
static IEnumerable<String^>^ EnumerateDirectories(
    String^ path,
    String^ searchPattern,
    SearchOption searchOption
)
static member EnumerateDirectories :
        path:string *
        searchPattern:string *
        searchOption:SearchOption -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的目录名称匹配的搜索字符串。
searchOption
类型： System.IO SearchOption
SearchOption 枚举的一个值，指定搜索操作是应仅包含当前目录还是应包含所有子目录。
默认值为 TopDirectoryOnly。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中与 searchPattern 和 searchOption 匹配的目录名称的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetDirectories 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。 EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetDirectories 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。

下面的示例枚举指定路径中与指定搜索模式匹配的目录。它使用 SearchOption 参数指定应在搜索中包括所有子目录。 下面的示例枚举指定路径中与指定搜索模式匹配的目录。它使用 SearchOption 参数指定应在搜索中包括所有子目录。

Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*", _
                    SearchOption.AllDirectories)
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*",
                         SearchOption.AllDirectories)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));

            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateDirectories 重载
System.IO 命名空间


Directory ..::.EnumerateFiles 方法

Directory
.
.
::
.
EnumerateFiles 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

返回指定路径中的文件名的可枚举集合。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.EnumerateFiles 方法 (String)

Directory
.
.
::
.
EnumerateFiles 方法 (String)
Directory 类

返回指定路径中的文件名的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateFiles ( _
    path As String _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateFiles(
    string path
)
public:
static IEnumerable<String^>^ EnumerateFiles(
    String^ path
)
static member EnumerateFiles :
        path:string -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中的文件名称的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetFiles 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetFiles 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

下面的示例枚举指定目录中的文件，读取文件的每一行，然后显示包含字符串“Europe”的行。

Imports System.IO
Imports System.Linq
Module Module1

    Sub Main()
        Try
            ' LINQ query for all files containing the word 'Europe'.
            Dim files = From file In _
                Directory.EnumerateFiles("\\archives1\library\")
                Where file.ToLower().Contains("europe")

            ' Show results.
            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", _
                    files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all files containing the word 'Europe'.
             var files = from file in
                Directory.EnumerateFiles(@"\\archives1\library\")
                   where file.ToLower().Contains("europe")
                   select file;

            // Show results.
            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.",
                files.Count<string>().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateFiles 重载
System.IO 命名空间


Directory ..::.EnumerateFiles 方法 (String, String)

Directory
.
.
::
.
EnumerateFiles 方法 (String, String)
Directory 类

返回指定路径中与搜索模式匹配的文件名称的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateFiles ( _
    path As String, _
    searchPattern As String _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateFiles(
    string path,
    string searchPattern
)
public:
static IEnumerable<String^>^ EnumerateFiles(
    String^ path,
    String^ searchPattern
)
static member EnumerateFiles :
        path:string *
        searchPattern:string -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的目录名称匹配的搜索字符串。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中与 searchPattern 匹配的文件名称的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetFiles 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetFiles 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

下面的示例枚举指定目录中扩展名为 .txt 的文件，读取文件的每一行，然后显示包含字符串“Europe”的行。

Imports System.IO
Imports System.Linq
Module Module1

    Sub Main()
        Try
            ' LINQ query for all .txt files containing the word 'Europe'.
            Dim files = From file In _
                Directory.EnumerateFiles("\\archives1\library\", "*.txt")
                Where file.ToLower().Contains("europe")

            ' Show results.
            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", _
                    files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

using System;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all .txt files containing the word 'Europe'.
             var files = from file in
                Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
                   where file.ToLower().Contains("europe")
                   select file;

            // Show results.
            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.",
                files.Count<string>().ToString());
        }

        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateFiles 重载
System.IO 命名空间


Directory ..::.EnumerateFiles 方法 (String, String, SearchOption)

Directory
.
.
::
.
EnumerateFiles 方法 (String, String, SearchOption)
Directory 类

返回指定路径中与搜索模式匹配的文件名称的可枚举集合，还可以搜索子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateFiles ( _
    path As String, _
    searchPattern As String, _
    searchOption As SearchOption _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateFiles(
    string path,
    string searchPattern,
    SearchOption searchOption
)
public:
static IEnumerable<String^>^ EnumerateFiles(
    String^ path,
    String^ searchPattern,
    SearchOption searchOption
)
static member EnumerateFiles :
        path:string *
        searchPattern:string *
        searchOption:SearchOption -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的目录名称匹配的搜索字符串。
searchOption
类型： System.IO SearchOption
SearchOption 枚举的一个值，指定搜索操作是应仅包含当前目录还是应包含所有子目录。
默认值为 TopDirectoryOnly。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中与 searchPattern 和 searchOption 匹配的文件名称的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetFiles 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles 时，您可以在返回整个集合之前开始枚举名称集合；当您使用 GetFiles 时，则必须等待整个名称数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

下面的示例以递归方式所有扩展名为 .txt 的文件，读取文件的每一行，然后显示包含字符串“Microsoft”的行。

Imports System.IO
Imports System.Xml.Linq
Module Module1

    Sub Main()

        Try
            Dim files = From chkFile In Directory.EnumerateFiles("c:\", "*.txt", _
                                                 SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine("{0}\t{1}", f.curFile, f.curLine)
            Next
            Console.WriteLine("{0} files found.", _
                    files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {

        try
        {
            var files = from file in Directory.EnumerateFiles(@"c:\",
                            "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine("{0}\t{1}", f.File, f.Line);
            }
            Console.WriteLine("{0} files found.",
                files.Count().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateFiles 重载
System.IO 命名空间


Directory ..::.EnumerateFileSystemEntries 方法

Directory
.
.
::
.
EnumerateFileSystemEntries 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

返回指定路径中的文件系统项的可枚举集合。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.EnumerateFileSystemEntries 方法 (String)

Directory
.
.
::
.
EnumerateFileSystemEntries 方法 (String)
Directory 类

返回指定路径中的文件系统项的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateFileSystemEntries ( _
    path As String _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateFileSystemEntries(
    string path
)
public:
static IEnumerable<String^>^ EnumerateFileSystemEntries(
    String^ path
)
static member EnumerateFileSystemEntries :
        path:string -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中的文件系统项的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateFileSystemEntries 和 GetFileSystemEntries 方法不同点在于：当使用 EnumerateFileSystemEntries 时，您可以在返回整个集合之前开始枚举项的集合；当您使用 GetFileSystemEntries 时，则必须等待整个项的数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFileSystemEntries 和 GetFileSystemEntries 方法不同点在于：当使用 EnumerateFileSystemEntries 时，您可以在返回整个集合之前开始枚举项的集合；当您使用 GetFileSystemEntries 时，则必须等待整个项的数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateFileSystemEntries 重载
System.IO 命名空间


Directory ..::.EnumerateFileSystemEntries 方法 (String, String)

Directory
.
.
::
.
EnumerateFileSystemEntries 方法 (String, String)
Directory 类

返回指定路径中与搜索模式匹配的文件系统项的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateFileSystemEntries ( _
    path As String, _
    searchPattern As String _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateFileSystemEntries(
    string path,
    string searchPattern
)
public:
static IEnumerable<String^>^ EnumerateFileSystemEntries(
    String^ path,
    String^ searchPattern
)
static member EnumerateFileSystemEntries :
        path:string *
        searchPattern:string -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的目录名称匹配的搜索字符串。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中与 searchPattern 匹配的文件系统项的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateFileSystemEntries 和 GetFileSystemEntries 方法不同点在于：当使用 EnumerateFileSystemEntries 时，您可以在返回整个集合之前开始枚举项的集合；当您使用 GetFileSystemEntries 时，则必须等待整个项的数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFileSystemEntries 和 GetFileSystemEntries 方法不同点在于：当使用 EnumerateFileSystemEntries 时，您可以在返回整个集合之前开始枚举项的集合；当您使用 GetFileSystemEntries 时，则必须等待整个项的数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateFileSystemEntries 重载
System.IO 命名空间


Directory ..::.EnumerateFileSystemEntries 方法 (String, String, SearchOption)

Directory
.
.
::
.
EnumerateFileSystemEntries 方法 (String, String, SearchOption)
Directory 类

返回指定路径中与搜索模式匹配的文件名称和目录名称的可枚举集合，还可以搜索子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function EnumerateFileSystemEntries ( _
    path As String, _
    searchPattern As String, _
    searchOption As SearchOption _
) As IEnumerable(Of String)
public static IEnumerable<string> EnumerateFileSystemEntries(
    string path,
    string searchPattern,
    SearchOption searchOption
)
public:
static IEnumerable<String^>^ EnumerateFileSystemEntries(
    String^ path,
    String^ searchPattern,
    SearchOption searchOption
)
static member EnumerateFileSystemEntries :
        path:string *
        searchPattern:string *
        searchOption:SearchOption -> IEnumerable<string>

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的目录名称匹配的搜索字符串。
searchOption
类型： System.IO SearchOption
SearchOption 枚举的一个值，指定搜索操作是应仅包含当前目录还是应包含所有子目录。
默认值为 TopDirectoryOnly。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

由 path 指定的目录中与 searchPattern 和 searchOption 匹配的文件系统项的可枚举集合。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

EnumerateFileSystemEntries 和 GetFileSystemEntries 方法不同点在于：当使用 EnumerateFileSystemEntries 时，您可以在返回整个集合之前开始枚举项的集合；当您使用 GetFileSystemEntries 时，则必须等待整个项的数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFileSystemEntries 和 GetFileSystemEntries 方法不同点在于：当使用 EnumerateFileSystemEntries 时，您可以在返回整个集合之前开始枚举项的集合；当您使用 GetFileSystemEntries 时，则必须等待整个项的数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
EnumerateFileSystemEntries 重载
System.IO 命名空间


Directory ..::.Exists 方法

Directory
.
.
::
.
Exists 方法
Directory 类

确定给定路径是否引用磁盘上的现有目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Exists ( _
    path As String _
) As Boolean
public static bool Exists(
    string path
)
public:
static bool Exists(
    String^ path
)
static member Exists :
        path:string -> bool

参数

path
类型： System String
要测试的路径。

返回值

类型： System Boolean
如果 path 引用现有目录，则为 true；否则为 false。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。

检查该目录是否存在之前，从 path 参数的末尾移除尾随空格。

path 参数不区分大小写。

如果您没有该目录的最小只读权限，Exists 方法将返回 false。

下表列出了其他典型或相关的 I/O 任务的示例。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例接受命令行上的一组文件名或目录名，确定名称类型，然后相应地进行处理。

' For File.Exists, Directory.Exists

Imports System
Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub 'Main

    ' Process all files in the directory passed in, recurse on any directories
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub 'ProcessDirectory

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub 'ProcessFile
End Class 'RecursiveFileProcessor

// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);
    }
}

// For File::Exists, Directory::Exists
using namespace System;
using namespace System::IO;
using namespace System::Collections;

// Insert logic for processing found files here.
void ProcessFile( String^ path )
{
   Console::WriteLine( "Processed file '{0}'.", path );
}

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
void ProcessDirectory( String^ targetDirectory )
{

   // Process the list of files found in the directory.
   array<String^>^fileEntries = Directory::GetFiles( targetDirectory );
   IEnumerator^ files = fileEntries->GetEnumerator();
   while ( files->MoveNext() )
   {
      String^ fileName = safe_cast<String^>(files->Current);
      ProcessFile( fileName );
   }

   // Recurse into subdirectories of this directory.
   array<String^>^subdirectoryEntries = Directory::GetDirectories( targetDirectory );
   IEnumerator^ dirs = subdirectoryEntries->GetEnumerator();
   while ( dirs->MoveNext() )
   {
      String^ subdirectory = safe_cast<String^>(dirs->Current);
      ProcessDirectory( subdirectory );
   }
}

int main( int argc, char *argv[] )
{
   for ( int i = 1; i < argc; i++ )
   {
      String^ path = gcnew String(argv[ i ]);
      if ( File::Exists( path ) )
      {

         // This path is a file
         ProcessFile( path );
      }
      else
      if ( Directory::Exists( path ) )
      {

         // This path is a directory
         ProcessDirectory( path );
      }
      else
      {
         Console::WriteLine( "{0} is not a valid file or directory.", path );
      }

   }
}
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间
DirectoryInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetAccessControl 方法

Directory
.
.
::
.
GetAccessControl 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

返回某个目录的 Windows 访问控制列表 (ACL)。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.GetAccessControl 方法 (String)

Directory
.
.
::
.
GetAccessControl 方法 (String)
Directory 类

获取一个 DirectorySecurity 对象，该对象封装指定目录的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetAccessControl ( _
    path As String _
) As DirectorySecurity
public static DirectorySecurity GetAccessControl(
    string path
)
public:
static DirectorySecurity^ GetAccessControl(
    String^ path
)
static member GetAccessControl :
        path:string -> DirectorySecurity

参数

path
类型： System String
包含 DirectorySecurity 对象的目录的路径，该对象描述文件的访问控制列表 (ACL) 信息。

返回值

类型： System.Security.AccessControl DirectorySecurity
一个 DirectorySecurity 对象，该对象封装 path 参数所描述的文件的访问控制规则。
异常 | 条件
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
IOException | 打开目录时发生 I/O 错误。
PlatformNotSupportedException | 当前操作系统不是 Windows 2000 或更高版本。
SystemException | 未能找到目录。
UnauthorizedAccessException | path 参数指定了一个只读目录。 - 或 - 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

使用 GetAccessControl 方法检索某个目录的访问控制列表 (ACL) 项。

ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。 在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。

下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法添加访问控制列表 (ACL) 项，然后从某个目录中移除一个 ACL 项。您必须提供有效的用户或组帐户才能运行此示例。 下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法添加访问控制列表 (ACL) 项，然后从某个目录中移除一个 ACL 项。您必须提供有效的用户或组帐户才能运行此示例。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module DirectoryExample

    Sub Main()
        Try
            Dim DirectoryName As String = "TestDirectory"

            Console.WriteLine("Adding access control entry for " + DirectoryName)

            ' Add the access control entry to the directory.
            AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " + DirectoryName)

            ' Remove the access control entry from the directory.
            RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub

    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

int main()
{
    String^ directoryName = "TestDirectory";
    String^ accountName = "MYDOMAIN\\MyAccount";
    if (!Directory::Exists(directoryName))
    {
        Console::WriteLine("The directory {0} could not be found.",
            directoryName);
        return 0;
    }
    try
    {
        Console::WriteLine("Adding access control entry for {0}",
            directoryName);

        // Add the access control entry to the directory.
        AddDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from {0}",
            directoryName);

        // Remove the access control entry from the directory.
        RemoveDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("You are not authorised to carry" +
            " out this procedure.");
    }
    catch (System::Security::Principal::
        IdentityNotMappedException^)
    {
        Console::WriteLine("The account {0} could not be found.", accountName);
    }
}
  • FileIOPermission

    表示枚举目录的访问控制列表 (ACL) 的权限。关联的枚举：NoAccess、View 表示枚举目录的访问控制列表 (ACL) 的权限。关联的枚举：NoAccess、View

    安全操作：Demand。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
GetAccessControl 重载
System.IO 命名空间


Directory ..::.GetAccessControl 方法 (String, AccessControlSections)

Directory
.
.
::
.
GetAccessControl 方法 (String, AccessControlSections)
Directory 类

获取一个 DirectorySecurity 对象，它封装指定目录的指定类型的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetAccessControl ( _
    path As String, _
    includeSections As AccessControlSections _
) As DirectorySecurity
public static DirectorySecurity GetAccessControl(
    string path,
    AccessControlSections includeSections
)
public:
static DirectorySecurity^ GetAccessControl(
    String^ path,
    AccessControlSections includeSections
)
static member GetAccessControl :
        path:string *
        includeSections:AccessControlSections -> DirectorySecurity

参数

path
类型： System String
包含 DirectorySecurity 对象的目录的路径，该对象描述文件的访问控制列表 (ACL) 信息。
includeSections
类型： System.Security.AccessControl AccessControlSections
AccessControlSections 值之一，它指定要接收的访问控制列表 (ACL) 信息的类型。

返回值

类型： System.Security.AccessControl DirectorySecurity
一个 DirectorySecurity 对象，该对象封装 path 参数所描述的文件的访问控制规则。
异常 | 条件
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
IOException | 打开目录时发生 I/O 错误。
PlatformNotSupportedException | 当前操作系统不是 Windows 2000 或更高版本。
SystemException | 未能找到目录。
UnauthorizedAccessException | path 参数指定了一个只读目录。 - 或 - 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

使用 GetAccessControl 方法检索某个目录的访问控制列表 (ACL) 项。

ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。 在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。

  • FileIOPermission

    表示枚举目录的访问控制列表 (ACL) 的权限。关联的枚举：NoAccess、View 表示枚举目录的访问控制列表 (ACL) 的权限。关联的枚举：NoAccess、View

    安全操作：Demand。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
GetAccessControl 重载
System.IO 命名空间


Directory ..::.GetCreationTime 方法

Directory
.
.
::
.
GetCreationTime 方法
Directory 类

获取目录的创建日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetCreationTime ( _
    path As String _
) As DateTime
public static DateTime GetCreationTime(
    string path
)
public:
static DateTime GetCreationTime(
    String^ path
)
static member GetCreationTime :
        path:string -> DateTime

参数

path
类型： System String
目录的路径。

返回值

类型： System DateTime
一个 DateTime 结构，它设置为指定目录的创建日期和时间。该值用本地时间表示。 一个 DateTime 结构，它设置为指定目录的创建日期和时间。该值用本地时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

此方法与 File..::.GetCreationTime 等效。

如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例获取指定目录的创建时间。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Get the creation time of a well-known directory.
            Dim dt As DateTime = Directory.GetCreationTime(Environment.CurrentDirectory)

            ' Give feedback to the user.
            If DateTime.Now.Subtract(dt).TotalDays > 364 Then
                Console.WriteLine("This directory is over a year old.")
            ElseIf DateTime.Now.Subtract(dt).TotalDays > 30 Then
                Console.WriteLine("This directory is over a month old.")
            ElseIf DateTime.Now.Subtract(dt).TotalDays <= 1 Then
                Console.WriteLine("This directory is less than a day old.")
            Else
                Console.WriteLine("This directory was created on {0}", dt)
            End If

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Get the creation time of a well-known directory.
            DateTime dt = Directory.GetCreationTime(Environment.CurrentDirectory);

            // Give feedback to the user.
            if (DateTime.Now.Subtract(dt).TotalDays > 364)
            {
                Console.WriteLine("This directory is over a year old.");
            }
            else if (DateTime.Now.Subtract(dt).TotalDays > 30)
            {
                Console.WriteLine("This directory is over a month old.");
            }
            else if (DateTime.Now.Subtract(dt).TotalDays <= 1)
            {
                Console.WriteLine("This directory is less than a day old.");
            }
            else
            {
                Console.WriteLine("This directory was created on {0}", dt);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {

      // Get the creation time of a well-known directory.
      DateTime dt = Directory::GetCreationTime( Environment::CurrentDirectory );

      // Give feedback to the user.
      if ( DateTime::Now.Subtract( dt ).TotalDays > 364 )
      {
         Console::WriteLine( "This directory is over a year old." );
      }
      else
      if ( DateTime::Now.Subtract( dt ).TotalDays > 30 )
      {
         Console::WriteLine( "This directory is over a month old." );
      }
      else
      if ( DateTime::Now.Subtract( dt ).TotalDays <= 1 )
      {
         Console::WriteLine( "This directory is less than a day old." );
      }
      else
      {
         Console::WriteLine( "This directory was created on {0}", dt );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetCreationTimeUtc 方法

Directory
.
.
::
.
GetCreationTimeUtc 方法
Directory 类

获取目录创建的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetCreationTimeUtc ( _
    path As String _
) As DateTime
public static DateTime GetCreationTimeUtc(
    string path
)
public:
static DateTime GetCreationTimeUtc(
    String^ path
)
static member GetCreationTimeUtc :
        path:string -> DateTime

参数

path
类型： System String
目录的路径。

返回值

类型： System DateTime
一个 DateTime 结构，它设置为指定目录的创建日期和时间。该值用 UTC 时间表示。 一个 DateTime 结构，它设置为指定目录的创建日期和时间。该值用 UTC 时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

使用该方法获取目录基于协调通用时间 (UTC) 的创建时间。

下面的代码示例演示了使用协调通用时间 (UTC) 输出时，输出内容的变化。

' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System
Imports System.IO

Public Class DirectoryUTCTime

   Public Shared Sub Main()
      ' Set the directory.
      Dim n As String = "C:\test\newdir"
      'Create two variables to use to set the time.
      Dim dtime1 As New DateTime(2002, 1, 3)
      Dim dtime2 As New DateTime(1999, 1, 1)

      'Create the directory.
      Try
         Directory.CreateDirectory(n)
      Catch e As IOException
         Console.WriteLine(e)
      End Try

      'Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1)
      Directory.SetLastAccessTimeUtc(n, dtime1)

      ' Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))

      'Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2)
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
   End Sub 'Main
End Class 'DirectoryUTCTime

' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:

' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryUTCTime
  {
    public static void Main()
    {
    // Set the directory.
      string n = @"C:\test\newdir";
        //Create two variables to use to set the time.
      DateTime dtime1 = new DateTime(2002, 1, 3);
      DateTime dtime2 = new DateTime(1999, 1, 1);

    //Create the directory.
      try
      {
          Directory.CreateDirectory(n);
      }
      catch (IOException e)
      {
          Console.WriteLine(e);
      }

    //Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1);
      Directory.SetLastAccessTimeUtc(n, dtime1);

        // Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));

        //Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2);
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
    }
  }
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{

   // Set the directory.
   String^ n = "C:\\test\\newdir";

   //Create two variables to use to set the time.
   DateTime dtime1 = DateTime(2002,1,3);
   DateTime dtime2 = DateTime(1999,1,1);

   //Create the directory.
   try
   {
      Directory::CreateDirectory( n );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( e );
   }

   //Set the creation and last access times to a variable DateTime value.
   Directory::SetCreationTime( n, dtime1 );
   Directory::SetLastAccessTimeUtc( n, dtime1 );

   // Print to console the results.
   Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
   Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
   Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
   Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
   Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
   Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );

   //Set the last write time to a different value.
   Directory::SetLastWriteTimeUtc( n, dtime2 );
   Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}

// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
  • FileIOPermission

    用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetCurrentDirectory 方法

Directory
.
.
::
.
GetCurrentDirectory 方法
Directory 类

获取应用程序的当前工作目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetCurrentDirectory As String
public static string GetCurrentDirectory()
public:
static String^ GetCurrentDirectory()
static member GetCurrentDirectory : unit -> string

返回值

类型： System String
包含当前工作目录的路径的字符串，并不以反斜杠 (\) 结尾。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | 操作系统为 Windows CE，该系统不具有当前目录功能。 此方法在 .NET Compact Framework 中可用，但是当前并不支持。

当前目录不同于原始目录，后者是从其开始进程的目录。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明了 GetCurrentDirectory 方法。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Get the current directory.
            Dim path As String = Directory.GetCurrentDirectory()
            Dim target As String = "c:\temp"
            Console.WriteLine("The current directory is {0}", path)
            If Directory.Exists(target) = False Then
                Directory.CreateDirectory(target)
            End If
            ' Change the current directory.
            Environment.CurrentDirectory = (target)
            If path.Equals(Directory.GetCurrentDirectory()) Then
                Console.WriteLine("You are in the temp directory.")
            Else
                Console.WriteLine("You are not in the temp directory.")
            End If
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Get the current directory.
            string path = Directory.GetCurrentDirectory();
            string target = @"c:\temp";
            Console.WriteLine("The current directory is {0}", path);
            if (!Directory.Exists(target))
            {
                Directory.CreateDirectory(target);
            }

            // Change the current directory.
            Environment.CurrentDirectory = (target);
            if (path.Equals(Directory.GetCurrentDirectory()))
            {
                Console.WriteLine("You are in the temp directory.");
            }
            else
            {
                Console.WriteLine("You are not in the temp directory.");
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {

      // Get the current directory.
      String^ path = Directory::GetCurrentDirectory();
      String^ target = "c:\\temp";
      Console::WriteLine( "The current directory is {0}", path );
      if (  !Directory::Exists( target ) )
      {
         Directory::CreateDirectory( target );
      }

      // Change the current directory.
      Environment::CurrentDirectory = target;
      if ( path->Equals( Directory::GetCurrentDirectory() ) )
      {
         Console::WriteLine( "You are in the temp directory." );
      }
      else
      {
         Console::WriteLine( "You are not in the temp directory." );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetDirectories 方法

Directory
.
.
::
.
GetDirectories 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

获取指定目录中子目录的名称。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.GetDirectories 方法 (String)

Directory
.
.
::
.
GetDirectories 方法 (String)
Directory 类

获取指定目录中子目录的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetDirectories ( _
    path As String _
) As String()
public static string[] GetDirectories(
    string path
)
public:
static array<String^>^ GetDirectories(
    String^ path
)
static member GetDirectories :
        path:string -> string[]

参数

path
类型： System String
为其返回子目录名称的数组的路径。

返回值

类型：
array<
System String
>
[]
()
[]

path 中子目录名称的数组。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 是一个文件名。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

如果不存在子目录，该方法将返回空数组。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

此方法与将星号 (*) 指定为搜索模式的 GetDirectories 方法相同。

由此方法返回的名称以 path 中提供的目录信息为前缀。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例接受命令行上的一组文件名或目录名，确定名称类型，然后相应地进行处理。

' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists

Imports System
Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub 'Main

    ' Process all files in the directory passed in, recurse on any directories
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub 'ProcessDirectory

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub 'ProcessFile
End Class 'RecursiveFileProcessor

// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);
    }
}

// For Directory::GetFiles and Directory::GetDirectories
// For File::Exists, Directory::Exists
using namespace System;
using namespace System::IO;
using namespace System::Collections;

// Insert logic for processing found files here.
void ProcessFile( String^ path )
{
   Console::WriteLine( "Processed file '{0}'.", path );
}

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
void ProcessDirectory( String^ targetDirectory )
{

   // Process the list of files found in the directory.
   array<String^>^fileEntries = Directory::GetFiles( targetDirectory );
   IEnumerator^ files = fileEntries->GetEnumerator();
   while ( files->MoveNext() )
   {
      String^ fileName = safe_cast<String^>(files->Current);
      ProcessFile( fileName );
   }

   // Recurse into subdirectories of this directory.
   array<String^>^subdirectoryEntries = Directory::GetDirectories( targetDirectory );
   IEnumerator^ dirs = subdirectoryEntries->GetEnumerator();
   while ( dirs->MoveNext() )
   {
      String^ subdirectory = safe_cast<String^>(dirs->Current);
      ProcessDirectory( subdirectory );
   }
}

int main( int argc, char *argv[] )
{
   for ( int i = 1; i < argc; i++ )
   {
      String^ path = gcnew String(argv[ i ]);
      if ( File::Exists( path ) )
      {

         // This path is a file
         ProcessFile( path );
      }
      else
      if ( Directory::Exists( path ) )
      {

         // This path is a directory
         ProcessDirectory( path );
      }
      else
      {
         Console::WriteLine( "{0} is not a valid file or directory.", path );
      }

   }
}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
GetDirectories 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetDirectories 方法 (String, String)

Directory
.
.
::
.
GetDirectories 方法 (String, String)
Directory 类

从当前目录获取与指定搜索模式匹配的目录的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetDirectories ( _
    path As String, _
    searchPattern As String _
) As String()
public static string[] GetDirectories(
    string path,
    string searchPattern
)
public:
static array<String^>^ GetDirectories(
    String^ path,
    String^ searchPattern
)
static member GetDirectories :
        path:string *
        searchPattern:string -> string[]

参数

path
类型： System String
要搜索的路径。
searchPattern
类型： System String
要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。 要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。

返回值

类型：
array<
System String
>
[]
()
[]

与搜索模式匹配的目录的 String 数组。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 或 searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 是一个文件名。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

在 searchPattern 中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。

如果不存在子目录，或不存在与 searchPattern 参数匹配的子目录，此方法将返回一个空数组。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例计算以指定的字母开头的路径中的目录数。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get subdirectories that begin with the letter "p."
            Dim dirs As String() = Directory.GetDirectories("c:\", "p*")
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Only get subdirectories that begin with the letter "p."
            string[] dirs = Directory.GetDirectories(@"c:\", "p*");
            Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {

      // Only get subdirectories that begin with the letter "p."
      array<String^>^dirs = Directory::GetDirectories( "c:\\", "p*" );
      Console::WriteLine( "The number of directories starting with p is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Console::WriteLine( myEnum->Current );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery。 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
GetDirectories 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetDirectories 方法 (String, String, SearchOption)

Directory
.
.
::
.
GetDirectories 方法 (String, String, SearchOption)
Directory 类

获取当前目录中与指定搜索模式匹配并使用某个值确定是否在子目录中搜索的目录的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetDirectories ( _
    path As String, _
    searchPattern As String, _
    searchOption As SearchOption _
) As String()
public static string[] GetDirectories(
    string path,
    string searchPattern,
    SearchOption searchOption
)
public:
static array<String^>^ GetDirectories(
    String^ path,
    String^ searchPattern,
    SearchOption searchOption
)
static member GetDirectories :
        path:string *
        searchPattern:string *
        searchOption:SearchOption -> string[]

参数

path
类型： System String
要搜索的路径。
searchPattern
类型： System String
要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。 要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。
searchOption
类型： System.IO SearchOption
SearchOption 值之一，指定搜索操作应包括所有子目录还是仅包括当前目录。

返回值

类型：
array<
System String
>
[]
()
[]

与搜索模式匹配的目录的 String 数组。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 或 searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
UnauthorizedAccessException | 调用方没有所要求的权限。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 是一个文件名。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 参数中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 参数中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 参数中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。

如果不存在子目录，或不存在与 searchPattern 参数匹配的子目录，此方法将返回一个空数组。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery。 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
GetDirectories 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetDirectoryRoot 方法

Directory
.
.
::
.
GetDirectoryRoot 方法
Directory 类

返回指定路径的卷信息、根信息或两者同时返回。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetDirectoryRoot ( _
    path As String _
) As String
public static string GetDirectoryRoot(
    string path
)
public:
static String^ GetDirectoryRoot(
    String^ path
)
static member GetDirectoryRoot :
        path:string -> string

参数

path
类型： System String
文件或目录的路径。

返回值

类型： System String
包含指定路径的卷信息、根信息或同时包括这两者的字符串。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

此方法获取 path 的完全限定路径名（该名称与 GetFullPath 返回的名称相同），并且返回根目录信息。不要求存在指定的路径。 此方法获取 path 的完全限定路径名（该名称与 GetFullPath 返回的名称相同），并且返回根目录信息。不要求存在指定的路径。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示如何设置当前目录以及如何显示根目录。

' This sample shows how to set the current directory and how to determine
' the root directory.
Imports System
Imports System.IO

Public Class DirectoryRoot

   Public Shared Sub Main()
      ' Create string for a directory. This value should be an existing directory
      ' or the sample will throw a DirectoryNotFoundException.
      Dim dir As String = "C:\test"
      Try
         'Set the current directory.
         Directory.SetCurrentDirectory(dir)
      Catch e As DirectoryNotFoundException
         Console.WriteLine("The specified directory does not exist. {0}", e)
      End Try
      ' Print to console the results.
      Console.WriteLine("Root directory: {0}", Directory.GetDirectoryRoot(dir))
      Console.WriteLine("Current directory: {0}", Directory.GetCurrentDirectory())
   End Sub 'Main
End Class 'DirectoryRoot
' The output of this sample depends on what value you assign to the variable dir.
' If the directory c:\test exists, the output for this sample is:
' Root directory: C:\
' Current directory: C:\test

// This sample shows how to set the current directory and how to determine
// the root directory.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryRoot
  {
    public static void Main()
    {
    // Create string for a directory. This value should be an existing directory
    // or the sample will throw a DirectoryNotFoundException.
      string dir = @"C:\test";
      try
      {
          //Set the current directory.
          Directory.SetCurrentDirectory(dir);
      }
      catch (DirectoryNotFoundException e)
      {
          Console.WriteLine("The specified directory does not exist. {0}", e);
      }
    // Print to console the results.
      Console.WriteLine("Root directory: {0}", Directory.GetDirectoryRoot(dir));
      Console.WriteLine("Current directory: {0}", Directory.GetCurrentDirectory());
    }
  }
}
// The output of this sample depends on what value you assign to the variable dir.
// If the directory c:\test exists, the output for this sample is:
// Root directory: C:\
// Current directory: C:\test

// This sample shows how to set the current directory and how to determine
// the root directory.
using namespace System;
using namespace System::IO;
int main()
{

   // Create string for a directory. This value should be an existing directory
   // or the sample will throw a DirectoryNotFoundException.
   String^ dir = "C:\\test";
   try
   {

      //Set the current directory.
      Directory::SetCurrentDirectory( dir );
   }
   catch ( DirectoryNotFoundException^ e )
   {
      Console::WriteLine( "The specified directory does not exist. {0}", e );
   }

   // Print to console the results.
   Console::WriteLine( "Root directory: {0}", Directory::GetDirectoryRoot( dir ) );
   Console::WriteLine( "Current directory: {0}", Directory::GetCurrentDirectory() );
}

// The output of this sample depends on what value you assign to the variable dir.
// If the directory c:\test exists, the output for this sample is:
// Root directory: C:\
// Current directory: C:\test
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetFiles 方法

Directory
.
.
::
.
GetFiles 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

返回指定目录中的文件的名称。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.GetFiles 方法 (String)

Directory
.
.
::
.
GetFiles 方法 (String)
Directory 类

返回指定目录中文件的名称（包括其路径）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFiles ( _
    path As String _
) As String()
public static string[] GetFiles(
    string path
)
public:
static array<String^>^ GetFiles(
    String^ path
)
static member GetFiles :
        path:string -> string[]

参数

path
类型： System String
将从其检索文件的目录。

返回值

类型：
array<
System String
>
[]
()
[]

指定目录中文件名的 String 数组。
异常 | 条件
IOException | path 是一个文件名。 - 或 - 发生了网络错误。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

将返回的文件名追加到提供的 path 参数中。

如果不存在文件，该方法将返回空数组。

此方法与将星号 (*) 指定为搜索模式的 GetFiles 方法相同。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

返回文件的名称顺序无法保证；如果需要特定排序顺序，请使用 Sort()()() 方法。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何使用 GetFiles 方法从用户指定的位置返回文件名。将该示例配置为捕捉此方法的所有常见错误。 下面的示例演示如何使用 GetFiles 方法从用户指定的位置返回文件名。将该示例配置为捕捉此方法的所有常见错误。

' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists

Imports System
Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub 'Main

    ' Process all files in the directory passed in, recurse on any directories
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub 'ProcessDirectory

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub 'ProcessFile
End Class 'RecursiveFileProcessor

// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);
    }
}

// For Directory::GetFiles and Directory::GetDirectories
// For File::Exists, Directory::Exists
using namespace System;
using namespace System::IO;
using namespace System::Collections;

// Insert logic for processing found files here.
void ProcessFile( String^ path )
{
   Console::WriteLine( "Processed file '{0}'.", path );
}

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
void ProcessDirectory( String^ targetDirectory )
{

   // Process the list of files found in the directory.
   array<String^>^fileEntries = Directory::GetFiles( targetDirectory );
   IEnumerator^ files = fileEntries->GetEnumerator();
   while ( files->MoveNext() )
   {
      String^ fileName = safe_cast<String^>(files->Current);
      ProcessFile( fileName );
   }

   // Recurse into subdirectories of this directory.
   array<String^>^subdirectoryEntries = Directory::GetDirectories( targetDirectory );
   IEnumerator^ dirs = subdirectoryEntries->GetEnumerator();
   while ( dirs->MoveNext() )
   {
      String^ subdirectory = safe_cast<String^>(dirs->Current);
      ProcessDirectory( subdirectory );
   }
}

int main( int argc, char *argv[] )
{
   for ( int i = 1; i < argc; i++ )
   {
      String^ path = gcnew String(argv[ i ]);
      if ( File::Exists( path ) )
      {

         // This path is a file
         ProcessFile( path );
      }
      else
      if ( Directory::Exists( path ) )
      {

         // This path is a directory
         ProcessDirectory( path );
      }
      else
      {
         Console::WriteLine( "{0} is not a valid file or directory.", path );
      }

   }
}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
GetFiles 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetFiles 方法 (String, String)

Directory
.
.
::
.
GetFiles 方法 (String, String)
Directory 类

返回指定目录中与指定的搜索模式匹配的文件的名称（包含它们的路径）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFiles ( _
    path As String, _
    searchPattern As String _
) As String()
public static string[] GetFiles(
    string path,
    string searchPattern
)
public:
static array<String^>^ GetFiles(
    String^ path,
    String^ searchPattern
)
static member GetFiles :
        path:string *
        searchPattern:string -> string[]

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。 要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。

返回值

类型：
array<
System String
>
[]
()
[]

一个 String 数组，它包含指定目录中与指定搜索模式匹配的文件的名称。文件名包含完整路径。 一个 String 数组，它包含指定目录中与指定搜索模式匹配的文件的名称。文件名包含完整路径。
异常 | 条件
IOException | path 是一个文件名。 - 或 - 发生了网络错误。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 或 searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

将返回的文件名追加到提供的 path 参数中。

如果不存在文件，或不存在与 searchPattern 参数匹配的文件，此方法将返回一个空数组。

返回文件的名称顺序无法保证；如果需要特定排序顺序，请使用 Sort()()() 方法。

在 searchPattern 中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好零个或一个字符。

通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。

说明 说明

在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。

以下列表显示了 searchPattern 参数的不同长度的行为：

  • “*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。

  • “*.abcd”仅返回扩展名为 .abcd 的文件。

  • “*.abcde”仅返回扩展名为 .abcde 的文件。

  • “*.abcdef”仅返回扩展名为 .abcdef 的文件。

说明 说明

因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件名格式为“LONGFI~1.TXT”。 因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件名格式为“LONGFI~1.TXT”。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例计算以指定的字母开头的路径中的目录数。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get files that begin with the letter "c."
            Dim dirs As String() = Directory.GetFiles("c:\", "c*")
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Only get files that begin with the letter "c."
            string[] dirs = Directory.GetFiles(@"c:\", "c*");
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {

      // Only get files that begin with the letter "c."
      array<String^>^dirs = Directory::GetFiles( "c:\\", "c*" );
      Console::WriteLine( "The number of files starting with c is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Console::WriteLine( myEnum->Current );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
GetFiles 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetFiles 方法 (String, String, SearchOption)

Directory
.
.
::
.
GetFiles 方法 (String, String, SearchOption)
Directory 类

返回指定目录中与指定的搜索模式匹配的文件的名称（包含它们的路径），并使用一个值以确定是否搜索子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFiles ( _
    path As String, _
    searchPattern As String, _
    searchOption As SearchOption _
) As String()
public static string[] GetFiles(
    string path,
    string searchPattern,
    SearchOption searchOption
)
public:
static array<String^>^ GetFiles(
    String^ path,
    String^ searchPattern,
    SearchOption searchOption
)
static member GetFiles :
        path:string *
        searchPattern:string *
        searchOption:SearchOption -> string[]

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。 要与 path 中的文件名匹配的搜索字符串。此参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。
searchOption
类型： System.IO SearchOption
SearchOption 值之一，指定搜索操作应包括所有子目录还是仅包括当前目录。

返回值

类型：
array<
System String
>
[]
()
[]

一个 String 数组，它包含指定目录中与指定搜索模式匹配的文件的名称。文件名包含完整路径。 一个 String 数组，它包含指定目录中与指定搜索模式匹配的文件的名称。文件名包含完整路径。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 或 searchpattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
UnauthorizedAccessException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 是一个文件名。 - 或 - 发生了网络错误。

文件名包含完整路径。

如果不存在文件，或不存在与 searchPattern 参数匹配的文件，此方法将返回一个空数组。

返回文件的名称顺序无法保证；如果需要特定排序顺序，请使用 Sort()()() 方法。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好零个或一个字符。

通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 参数中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 参数中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 参数中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。

说明 说明

在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（如“*.txt”），扩展名长度正好为三个字符时的匹配行为与扩展名长度多余或少于三个字符时的匹配行为不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。

以下列表显示了 searchPattern 参数的不同长度的行为：

  • “*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。

  • “*.abcd”仅返回扩展名为 .abcd 的文件。

  • “*.abcde”仅返回扩展名为 .abcde 的文件。

  • “*.abcdef”仅返回扩展名为 .abcdef 的文件。

说明 说明

因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件格式为“LONGFI~1.TXT”。 因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件格式为“LONGFI~1.TXT”。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
GetFiles 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetFileSystemEntries 方法

Directory
.
.
::
.
GetFileSystemEntries 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Directory 类

返回指定目录中所有文件和子目录的名称。

名称 说明
页首

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.GetFileSystemEntries 方法 (String)

Directory
.
.
::
.
GetFileSystemEntries 方法 (String)
Directory 类

返回指定目录中所有文件和子目录的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFileSystemEntries ( _
    path As String _
) As String()
public static string[] GetFileSystemEntries(
    string path
)
public:
static array<String^>^ GetFileSystemEntries(
    String^ path
)
static member GetFileSystemEntries :
        path:string -> string[]

参数

path
类型： System String
为其返回文件名和子目录名的目录。

返回值

类型：
array<
System String
>
[]
()
[]

包含指定目录中文件和子目录的名称的数组。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 是一个文件名。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

此方法与将星号 (*) 指定为搜索模式的 GetFileSystemEntries 方法相同。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例通过 GetFileSystemEntries 方法以用户指定的位置的所有文件和子目录的名称来填充字符串的数组，并将数组中的每一个字符串输出到控制台。将该示例配置为捕捉此方法的所有常见错误。 下面的示例通过 GetFileSystemEntries 方法以用户指定的位置的所有文件和子目录的名称来填充字符串的数组，并将数组中的每一个字符串输出到控制台。将该示例配置为捕捉此方法的所有常见错误。

Option Explicit On
Option Strict On

Imports System

Namespace GetFileSystemEntries
    Class Class1
        Overloads Shared Sub Main(ByVal args() As String)
            Dim snippets As New Class1()
            Dim path As String = System.IO.Directory.GetCurrentDirectory()
            Dim filter As String = "*.exe"
            snippets.PrintFileSystemEntries(path)
            snippets.PrintFileSystemEntries(path, filter)
            snippets.GetLogicalDrives()
            snippets.GetParent(path)
            snippets.Move("C:\proof", "C:\Temp")
        End Sub 'Main

        Sub PrintFileSystemEntries(ByVal path As String)
            Try
                ' Obtain the file system entries in the directory path.
                Dim directoryEntries As String()
                directoryEntries = System.IO.Directory.GetFileSystemEntries(path)
                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub
        Sub PrintFileSystemEntries(ByVal path As String, _
                                   ByVal pattern As String)
            Try
                ' Obtain the file system entries in the directory
                ' path that match the pattern.
                Dim directoryEntries As String()
                directoryEntries = _
                   System.IO.Directory.GetFileSystemEntries(path, pattern)

                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub

        ' Print out all logical drives on the system.
        Sub GetLogicalDrives()
            Try
                Dim drives As String()
                drives = System.IO.Directory.GetLogicalDrives()

                Dim str As String
                For Each str In drives
                    System.Console.WriteLine(str)
                Next str
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An I/O error occurs.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            End Try
        End Sub
        Sub GetParent(ByVal path As String)
            Try
                Dim directoryInfo As System.IO.DirectoryInfo
                directoryInfo = System.IO.Directory.GetParent(path)
                System.Console.WriteLine(directoryInfo.FullName)
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                     "contains only white spaces, or " + _
                                     "contains invalid characters.")
            End Try
        End Sub
        Sub Move(ByVal sourcePath As String, ByVal destinationPath As String)
            Try
                System.IO.Directory.Move(sourcePath, destinationPath)
                System.Console.WriteLine("The directory move is complete.")
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An attempt was made to move a " + _
                                        "directory to a different " + _
                                        "volume, or destDirName " + _
                                        "already exists.")
            End Try
        End Sub
    End Class
End Namespace

using System;

namespace GetFileSystemEntries
{
    class Class1
    {
        static void Main(string[] args)
        {
            Class1 snippets = new Class1();

            string path = System.IO.Directory.GetCurrentDirectory();
            string filter = "*.exe";

            snippets.PrintFileSystemEntries(path);
            snippets.PrintFileSystemEntries(path, filter);
            snippets.GetLogicalDrives();
            snippets.GetParent(path);
            snippets.Move("C:\\proof", "C:\\Temp");
        }

        void PrintFileSystemEntries(string path)
        {

            try
            {
                // Obtain the file system entries in the directory path.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }
        void PrintFileSystemEntries(string path, string pattern)
        {
            try
            {
                // Obtain the file system entries in the directory
                // path that match the pattern.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path, pattern);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }

        // Print out all logical drives on the system.
        void GetLogicalDrives()
        {
            try
            {
                string[] drives = System.IO.Directory.GetLogicalDrives();

                foreach (string str in drives)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An I/O error occurs.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
        }
        void GetParent(string path)
        {
            try
            {
                System.IO.DirectoryInfo directoryInfo =
                    System.IO.Directory.GetParent(path);

                System.Console.WriteLine(directoryInfo.FullName);
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, or " +
                    "contains invalid characters.");
            }
        }
        void Move(string sourcePath, string destinationPath)
        {
            try
            {
                System.IO.Directory.Move(sourcePath, destinationPath);
                System.Console.WriteLine("The directory move is complete.");
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An attempt was made to move a " +
                    "directory to a different " +
                    "volume, or destDirName " +
                    "already exists.");
            }
        }
    }
}

using namespace System;
class Class1
{
public:
   void PrintFileSystemEntries( String^ path )
   {
      try
      {

         // Obtain the file system entries in the directory path.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   void PrintFileSystemEntries( String^ path, String^ pattern )
   {
      try
      {

         // Obtain the file system entries in the directory
         // path that match the pattern.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path, pattern );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   // Print out all logical drives on the system.
   void GetLogicalDrives()
   {
      try
      {
         array<String^>^drives = System::IO::Directory::GetLogicalDrives();
         for ( int i = 0; i < drives->Length; i++ )
         {
            System::Console::WriteLine( drives[ i ] );

         }
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An I/O error occurs." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }

   }

   void GetParent( String^ path )
   {
      try
      {
         System::IO::DirectoryInfo^ directoryInfo = System::IO::Directory::GetParent( path );
         System::Console::WriteLine( directoryInfo->FullName );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, or \HelloServer'                  contains invalid characters." );
      }

   }

   void Move( String^ sourcePath, String^ destinationPath )
   {
      try
      {
         System::IO::Directory::Move( sourcePath, destinationPath );
         System::Console::WriteLine(  "The directory move is complete." );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An attempt was made to move a \HelloServer'                  directory to a different \HelloServer'                  volume, or destDirName \HelloServer'                  already exists." );
      }

   }

};

int main()
{
   Class1 * snippets = new Class1;
   String^ path = System::IO::Directory::GetCurrentDirectory();
   String^ filter =  "*.exe";
   snippets->PrintFileSystemEntries( path );
   snippets->PrintFileSystemEntries( path, filter );
   snippets->GetLogicalDrives();
   snippets->GetParent( path );
   snippets->Move(  "C:\\proof",  "C:\\Temp" );
   return 0;
}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
GetFileSystemEntries 重载
System.IO 命名空间
FileSystemInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetFileSystemEntries 方法 (String, String)

Directory
.
.
::
.
GetFileSystemEntries 方法 (String, String)
Directory 类

返回与指定搜索条件匹配的文件系统项的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFileSystemEntries ( _
    path As String, _
    searchPattern As String _
) As String()
public static string[] GetFileSystemEntries(
    string path,
    string searchPattern
)
public:
static array<String^>^ GetFileSystemEntries(
    String^ path,
    String^ searchPattern
)
static member GetFileSystemEntries :
        path:string *
        searchPattern:string -> string[]

参数

path
类型： System String
要搜索的路径。
searchPattern
类型： System String
要与 path 中的文件名匹配的搜索字符串。此 searchPattern 参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。 要与 path 中的文件名匹配的搜索字符串。此 searchPattern 参数不能以两个句点（“..”）结束，不能在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 的前面包含两个句点（“..”），也不能包含 InvalidPathChars 中的任何字符。

返回值

类型：
array<
System String
>
[]
()
[]

一个数组，包含与搜索条件匹配的文件系统项。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 或 searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 是一个文件名。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。

在 searchPattern 中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。 通配说明符以外的字符表示它们自己。例如，searchPattern 字符串“*t”搜索 path 中所有以字母“t”结尾的名称。searchPattern 字符串“s*”搜索 path 中所有以字母“s”开头的名称。

扩展名恰好是三个字符时的 searchPattern 匹配行为与扩展名多于三个字符时不同恰好为三个字符的 searchPattern 返回扩展名为三个字符或更多字符的文件。一个字符、两个字符或三个以上字符的 searchPattern 只返回扩展名恰好等于该长度的文件。 扩展名恰好是三个字符时的 searchPattern 匹配行为与扩展名多于三个字符时不同恰好为三个字符的 searchPattern 返回扩展名为三个字符或更多字符的文件。一个字符、两个字符或三个以上字符的 searchPattern 只返回扩展名恰好等于该长度的文件。 扩展名恰好是三个字符时的 searchPattern 匹配行为与扩展名多于三个字符时不同恰好为三个字符的 searchPattern 返回扩展名为三个字符或更多字符的文件。一个字符、两个字符或三个以上字符的 searchPattern 只返回扩展名恰好等于该长度的文件。

以下列表显示了 searchPattern 参数的不同长度的行为：

  • “*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。

  • “*.abcd”只返回扩展名为 .abcd 的文件。

  • “*.abcde”只返回扩展名为 .abcde 的文件。

  • “*.abcdef”只返回扩展名为 .abcdef 的文件。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例通过 GetFileSystemEntries 方法使用与在特定位置用户指定的过滤器相匹配的所有文件的名称填充字符串的数组，并将数组中的每一个字符串输出到控制台。将该示例配置为捕捉此方法的所有常见错误。 下面的示例通过 GetFileSystemEntries 方法使用与在特定位置用户指定的过滤器相匹配的所有文件的名称填充字符串的数组，并将数组中的每一个字符串输出到控制台。将该示例配置为捕捉此方法的所有常见错误。

Option Explicit On
Option Strict On

Imports System

Namespace GetFileSystemEntries
    Class Class1
        Overloads Shared Sub Main(ByVal args() As String)
            Dim snippets As New Class1()
            Dim path As String = System.IO.Directory.GetCurrentDirectory()
            Dim filter As String = "*.exe"
            snippets.PrintFileSystemEntries(path)
            snippets.PrintFileSystemEntries(path, filter)
            snippets.GetLogicalDrives()
            snippets.GetParent(path)
            snippets.Move("C:\proof", "C:\Temp")
        End Sub 'Main

        Sub PrintFileSystemEntries(ByVal path As String)
            Try
                ' Obtain the file system entries in the directory path.
                Dim directoryEntries As String()
                directoryEntries = System.IO.Directory.GetFileSystemEntries(path)
                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub
        Sub PrintFileSystemEntries(ByVal path As String, _
                                   ByVal pattern As String)
            Try
                ' Obtain the file system entries in the directory
                ' path that match the pattern.
                Dim directoryEntries As String()
                directoryEntries = _
                   System.IO.Directory.GetFileSystemEntries(path, pattern)

                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub

        ' Print out all logical drives on the system.
        Sub GetLogicalDrives()
            Try
                Dim drives As String()
                drives = System.IO.Directory.GetLogicalDrives()

                Dim str As String
                For Each str In drives
                    System.Console.WriteLine(str)
                Next str
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An I/O error occurs.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            End Try
        End Sub
        Sub GetParent(ByVal path As String)
            Try
                Dim directoryInfo As System.IO.DirectoryInfo
                directoryInfo = System.IO.Directory.GetParent(path)
                System.Console.WriteLine(directoryInfo.FullName)
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                     "contains only white spaces, or " + _
                                     "contains invalid characters.")
            End Try
        End Sub
        Sub Move(ByVal sourcePath As String, ByVal destinationPath As String)
            Try
                System.IO.Directory.Move(sourcePath, destinationPath)
                System.Console.WriteLine("The directory move is complete.")
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An attempt was made to move a " + _
                                        "directory to a different " + _
                                        "volume, or destDirName " + _
                                        "already exists.")
            End Try
        End Sub
    End Class
End Namespace

using System;

namespace GetFileSystemEntries
{
    class Class1
    {
        static void Main(string[] args)
        {
            Class1 snippets = new Class1();

            string path = System.IO.Directory.GetCurrentDirectory();
            string filter = "*.exe";

            snippets.PrintFileSystemEntries(path);
            snippets.PrintFileSystemEntries(path, filter);
            snippets.GetLogicalDrives();
            snippets.GetParent(path);
            snippets.Move("C:\\proof", "C:\\Temp");
        }

        void PrintFileSystemEntries(string path)
        {

            try
            {
                // Obtain the file system entries in the directory path.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }
        void PrintFileSystemEntries(string path, string pattern)
        {
            try
            {
                // Obtain the file system entries in the directory
                // path that match the pattern.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path, pattern);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }

        // Print out all logical drives on the system.
        void GetLogicalDrives()
        {
            try
            {
                string[] drives = System.IO.Directory.GetLogicalDrives();

                foreach (string str in drives)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An I/O error occurs.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
        }
        void GetParent(string path)
        {
            try
            {
                System.IO.DirectoryInfo directoryInfo =
                    System.IO.Directory.GetParent(path);

                System.Console.WriteLine(directoryInfo.FullName);
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, or " +
                    "contains invalid characters.");
            }
        }
        void Move(string sourcePath, string destinationPath)
        {
            try
            {
                System.IO.Directory.Move(sourcePath, destinationPath);
                System.Console.WriteLine("The directory move is complete.");
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An attempt was made to move a " +
                    "directory to a different " +
                    "volume, or destDirName " +
                    "already exists.");
            }
        }
    }
}

using namespace System;
class Class1
{
public:
   void PrintFileSystemEntries( String^ path )
   {
      try
      {

         // Obtain the file system entries in the directory path.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   void PrintFileSystemEntries( String^ path, String^ pattern )
   {
      try
      {

         // Obtain the file system entries in the directory
         // path that match the pattern.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path, pattern );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   // Print out all logical drives on the system.
   void GetLogicalDrives()
   {
      try
      {
         array<String^>^drives = System::IO::Directory::GetLogicalDrives();
         for ( int i = 0; i < drives->Length; i++ )
         {
            System::Console::WriteLine( drives[ i ] );

         }
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An I/O error occurs." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }

   }

   void GetParent( String^ path )
   {
      try
      {
         System::IO::DirectoryInfo^ directoryInfo = System::IO::Directory::GetParent( path );
         System::Console::WriteLine( directoryInfo->FullName );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, or \HelloServer'                  contains invalid characters." );
      }

   }

   void Move( String^ sourcePath, String^ destinationPath )
   {
      try
      {
         System::IO::Directory::Move( sourcePath, destinationPath );
         System::Console::WriteLine(  "The directory move is complete." );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An attempt was made to move a \HelloServer'                  directory to a different \HelloServer'                  volume, or destDirName \HelloServer'                  already exists." );
      }

   }

};

int main()
{
   Class1 * snippets = new Class1;
   String^ path = System::IO::Directory::GetCurrentDirectory();
   String^ filter =  "*.exe";
   snippets->PrintFileSystemEntries( path );
   snippets->PrintFileSystemEntries( path, filter );
   snippets->GetLogicalDrives();
   snippets->GetParent( path );
   snippets->Move(  "C:\\proof",  "C:\\Temp" );
   return 0;
}
  • FileIOPermission

    用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问当前目录的路径信息。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
GetFileSystemEntries 重载
System.IO 命名空间
FileSystemInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetFileSystemEntries 方法 (String, String, SearchOption)

Directory
.
.
::
.
GetFileSystemEntries 方法 (String, String, SearchOption)
Directory 类

获取指定路径中与搜索模式匹配的所有文件名称和目录名称的数组，还可以搜索子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFileSystemEntries ( _
    path As String, _
    searchPattern As String, _
    searchOption As SearchOption _
) As String()
public static string[] GetFileSystemEntries(
    string path,
    string searchPattern,
    SearchOption searchOption
)
public:
static array<String^>^ GetFileSystemEntries(
    String^ path,
    String^ searchPattern,
    SearchOption searchOption
)
static member GetFileSystemEntries :
        path:string *
        searchPattern:string *
        searchOption:SearchOption -> string[]

参数

path
类型： System String
要搜索的目录。
searchPattern
类型： System String
用于搜索与其搜索模式匹配的所有文件或目录的字符串。默认模式为“*”，该模式返回所有文件和目录。 用于搜索与其搜索模式匹配的所有文件或目录的字符串。默认模式为“*”，该模式返回所有文件和目录。
searchOption
类型： System.IO SearchOption
该选项指定搜索操作应仅包括当前目录还是应包括所有子目录。
默认值为 TopDirectoryOnly。

返回值

类型：
array<
System String
>
[]
()
[]

一个数组，包含与搜索条件匹配的文件系统项。
异常 | 条件
ArgumentException | path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。 - 或 - searchPattern 不包含有效模式。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | path 无效，比如引用未映射的驱动器。
IOException | path 是一个文件名。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | Description
* | 零个或多个字符。
? | 正好一个字符。

可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 可以使用 path 参数指定相对路径信息。相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
GetFileSystemEntries 重载
System.IO 命名空间


Directory ..::.GetLastAccessTime 方法

Directory
.
.
::
.
GetLastAccessTime 方法
Directory 类

返回上次访问指定文件或目录的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastAccessTime ( _
    path As String _
) As DateTime
public static DateTime GetLastAccessTime(
    string path
)
public:
static DateTime GetLastAccessTime(
    String^ path
)
static member GetLastAccessTime :
        path:string -> DateTime

参数

path
类型： System String
要获取其访问日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它设置为上次访问指定文件或目录的日期和时间。该值用本地时间表示。 一个 DateTime 结构，它设置为上次访问指定文件或目录的日期和时间。该值用本地时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 参数的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

此方法与 File..::.GetLastAccessTime 相同。

如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 GetLastAccessTime。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\MyDir"
            If Directory.Exists(path) = False Then
                Directory.CreateDirectory(path)
            End If
            Directory.SetLastAccessTime(path, New DateTime(1985, 5, 4))

            'Get the access time of a well-known directory.
            Dim dt As DateTime = Directory.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this directory was {0}", dt)

            'Update the last access time.
            Directory.SetLastAccessTime(path, DateTime.Now)
            dt = Directory.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this directory was {0}", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\MyDir";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            Directory.SetLastAccessTime(path, new DateTime(1985,5,4));

            // Get the creation time of a well-known directory.
            DateTime dt = Directory.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this directory was {0}", dt);

            // Update the last access time.
            Directory.SetLastAccessTime(path, DateTime.Now);
            dt = Directory.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this directory was {0}", dt);
        }

        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\MyDir";
      if (  !Directory::Exists( path ) )
      {
         Directory::CreateDirectory( path );
      }
      Directory::SetLastAccessTime( path, DateTime(1985,5,4) );

      // Get the creation time of a well-known directory.
      DateTime dt = Directory::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this directory was {0}", dt );

      // Update the last access time.
      Directory::SetLastAccessTime( path, DateTime::Now );
      dt = Directory::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this directory was {0}", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetLastAccessTimeUtc 方法

Directory
.
.
::
.
GetLastAccessTimeUtc 方法
Directory 类

返回上次访问指定文件或目录的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastAccessTimeUtc ( _
    path As String _
) As DateTime
public static DateTime GetLastAccessTimeUtc(
    string path
)
public:
static DateTime GetLastAccessTimeUtc(
    String^ path
)
static member GetLastAccessTimeUtc :
        path:string -> DateTime

参数

path
类型： System String
要获取其访问日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它设置为上次访问指定文件或目录的日期和时间。该值用 UTC 时间表示。 一个 DateTime 结构，它设置为上次访问指定文件或目录的日期和时间。该值用 UTC 时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 参数的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示了使用协调通用时间 (UTC) 输出时，输出内容的变化。

' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System
Imports System.IO

Public Class DirectoryUTCTime

   Public Shared Sub Main()
      ' Set the directory.
      Dim n As String = "C:\test\newdir"
      'Create two variables to use to set the time.
      Dim dtime1 As New DateTime(2002, 1, 3)
      Dim dtime2 As New DateTime(1999, 1, 1)

      'Create the directory.
      Try
         Directory.CreateDirectory(n)
      Catch e As IOException
         Console.WriteLine(e)
      End Try

      'Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1)
      Directory.SetLastAccessTimeUtc(n, dtime1)

      ' Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))

      'Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2)
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
   End Sub 'Main
End Class 'DirectoryUTCTime

' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:

' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryUTCTime
  {
    public static void Main()
    {
    // Set the directory.
      string n = @"C:\test\newdir";
        //Create two variables to use to set the time.
      DateTime dtime1 = new DateTime(2002, 1, 3);
      DateTime dtime2 = new DateTime(1999, 1, 1);

    //Create the directory.
      try
      {
          Directory.CreateDirectory(n);
      }
      catch (IOException e)
      {
          Console.WriteLine(e);
      }

    //Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1);
      Directory.SetLastAccessTimeUtc(n, dtime1);

        // Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));

        //Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2);
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
    }
  }
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{

   // Set the directory.
   String^ n = "C:\\test\\newdir";

   //Create two variables to use to set the time.
   DateTime dtime1 = DateTime(2002,1,3);
   DateTime dtime2 = DateTime(1999,1,1);

   //Create the directory.
   try
   {
      Directory::CreateDirectory( n );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( e );
   }

   //Set the creation and last access times to a variable DateTime value.
   Directory::SetCreationTime( n, dtime1 );
   Directory::SetLastAccessTimeUtc( n, dtime1 );

   // Print to console the results.
   Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
   Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
   Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
   Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
   Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
   Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );

   //Set the last write time to a different value.
   Directory::SetLastWriteTimeUtc( n, dtime2 );
   Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}

// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
  • FileIOPermission

    用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetLastWriteTime 方法

Directory
.
.
::
.
GetLastWriteTime 方法
Directory 类

返回上次写入指定文件或目录的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastWriteTime ( _
    path As String _
) As DateTime
public static DateTime GetLastWriteTime(
    string path
)
public:
static DateTime GetLastWriteTime(
    String^ path
)
static member GetLastWriteTime :
        path:string -> DateTime

参数

path
类型： System String
要获取其修改日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它设置为上次写入指定文件或目录的日期和时间。该值用本地时间表示。 一个 DateTime 结构，它设置为上次写入指定文件或目录的日期和时间。该值用本地时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 GetLastWriteTime。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\MyDir"
            If Directory.Exists(path) = False Then
                Directory.CreateDirectory(path)
            Else
                ' Take an action which will affect the write time.
                Directory.SetLastWriteTime(path, New DateTime(1985, 4, 3))
            End If

            ' Get the creation time of a well-known directory.
            Dim dt As DateTime = Directory.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this directory was {0}", dt)

            ' Update the last write time.
            Directory.SetLastWriteTime(path, DateTime.Now)
            dt = Directory.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this directory was {0}", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\MyDir";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            else
            {
                // Take an action which will affect the write time.
                Directory.SetLastWriteTime(path, new DateTime(1985,4,3));
            }

            // Get the creation time of a well-known directory.
            DateTime dt = Directory.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this directory was {0}", dt);

            // Update the last write time.
            Directory.SetLastWriteTime(path, DateTime.Now);
            dt = Directory.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this directory was {0}", dt);
        }

        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\MyDir";
      if (  !Directory::Exists( path ) )
      {
         Directory::CreateDirectory( path );
      }
      else
      {

         // Take an action which will affect the write time.
         Directory::SetLastWriteTime( path, DateTime(1985,4,3) );
      }

      // Get the creation time of a well-known directory.
      DateTime dt = Directory::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this directory was {0}", dt );

      // Update the last write time.
      Directory::SetLastWriteTime( path, DateTime::Now );
      dt = Directory::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this directory was {0}", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetLastWriteTimeUtc 方法

Directory
.
.
::
.
GetLastWriteTimeUtc 方法
Directory 类

返回上次写入指定文件或目录的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastWriteTimeUtc ( _
    path As String _
) As DateTime
public static DateTime GetLastWriteTimeUtc(
    string path
)
public:
static DateTime GetLastWriteTimeUtc(
    String^ path
)
static member GetLastWriteTimeUtc :
        path:string -> DateTime

参数

path
类型： System String
要获取其修改日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它设置为上次写入指定文件或目录的日期和时间。该值用 UTC 时间表示。 一个 DateTime 结构，它设置为上次写入指定文件或目录的日期和时间。该值用 UTC 时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 path 参数中描述的目录不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示了使用协调通用时间 (UTC) 输出时，输出内容的变化。

' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System
Imports System.IO

Public Class DirectoryUTCTime

   Public Shared Sub Main()
      ' Set the directory.
      Dim n As String = "C:\test\newdir"
      'Create two variables to use to set the time.
      Dim dtime1 As New DateTime(2002, 1, 3)
      Dim dtime2 As New DateTime(1999, 1, 1)

      'Create the directory.
      Try
         Directory.CreateDirectory(n)
      Catch e As IOException
         Console.WriteLine(e)
      End Try

      'Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1)
      Directory.SetLastAccessTimeUtc(n, dtime1)

      ' Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))

      'Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2)
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
   End Sub 'Main
End Class 'DirectoryUTCTime

' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:

' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryUTCTime
  {
    public static void Main()
    {
    // Set the directory.
      string n = @"C:\test\newdir";
        //Create two variables to use to set the time.
      DateTime dtime1 = new DateTime(2002, 1, 3);
      DateTime dtime2 = new DateTime(1999, 1, 1);

    //Create the directory.
      try
      {
          Directory.CreateDirectory(n);
      }
      catch (IOException e)
      {
          Console.WriteLine(e);
      }

    //Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1);
      Directory.SetLastAccessTimeUtc(n, dtime1);

        // Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));

        //Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2);
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
    }
  }
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{

   // Set the directory.
   String^ n = "C:\\test\\newdir";

   //Create two variables to use to set the time.
   DateTime dtime1 = DateTime(2002,1,3);
   DateTime dtime2 = DateTime(1999,1,1);

   //Create the directory.
   try
   {
      Directory::CreateDirectory( n );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( e );
   }

   //Set the creation and last access times to a variable DateTime value.
   Directory::SetCreationTime( n, dtime1 );
   Directory::SetLastAccessTimeUtc( n, dtime1 );

   // Print to console the results.
   Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
   Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
   Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
   Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
   Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
   Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );

   //Set the last write time to a different value.
   Directory::SetLastWriteTimeUtc( n, dtime2 );
   Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}

// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
  • FileIOPermission

    用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件或目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetLogicalDrives 方法

Directory
.
.
::
.
GetLogicalDrives 方法
Directory 类

检索此计算机上格式为“<盘符>:\”的逻辑驱动器的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLogicalDrives As String()
public static string[] GetLogicalDrives()
public:
static array<String^>^ GetLogicalDrives()
static member GetLogicalDrives : unit -> string[]

返回值

类型：
array<
System String
>
[]
()
[]

此计算机上的逻辑驱动器。
异常 | 条件
IOException | 发生 I/O 错误（例如，磁盘错误）。
UnauthorizedAccessException | 调用方没有所要求的权限。

GetLogicalDrives 返回特定计算机中所有可访问的驱动器，包括软盘驱动器和任何光盘驱动器。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例通过 GetLogicalDrives 方法将调用的计算机上的每一个驱动器的名称分配到字符串的数组中。然后将此字符串数组中的每一个成员输出到控制台。将该示例配置为捕捉此方法的所有常见错误。 下面的示例通过 GetLogicalDrives 方法将调用的计算机上的每一个驱动器的名称分配到字符串的数组中。然后将此字符串数组中的每一个成员输出到控制台。将该示例配置为捕捉此方法的所有常见错误。 下面的示例通过 GetLogicalDrives 方法将调用的计算机上的每一个驱动器的名称分配到字符串的数组中。然后将此字符串数组中的每一个成员输出到控制台。将该示例配置为捕捉此方法的所有常见错误。

Option Explicit On
Option Strict On

Imports System

Namespace GetFileSystemEntries
    Class Class1
        Overloads Shared Sub Main(ByVal args() As String)
            Dim snippets As New Class1()
            Dim path As String = System.IO.Directory.GetCurrentDirectory()
            Dim filter As String = "*.exe"
            snippets.PrintFileSystemEntries(path)
            snippets.PrintFileSystemEntries(path, filter)
            snippets.GetLogicalDrives()
            snippets.GetParent(path)
            snippets.Move("C:\proof", "C:\Temp")
        End Sub 'Main

        Sub PrintFileSystemEntries(ByVal path As String)
            Try
                ' Obtain the file system entries in the directory path.
                Dim directoryEntries As String()
                directoryEntries = System.IO.Directory.GetFileSystemEntries(path)
                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub
        Sub PrintFileSystemEntries(ByVal path As String, _
                                   ByVal pattern As String)
            Try
                ' Obtain the file system entries in the directory
                ' path that match the pattern.
                Dim directoryEntries As String()
                directoryEntries = _
                   System.IO.Directory.GetFileSystemEntries(path, pattern)

                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub

        ' Print out all logical drives on the system.
        Sub GetLogicalDrives()
            Try
                Dim drives As String()
                drives = System.IO.Directory.GetLogicalDrives()

                Dim str As String
                For Each str In drives
                    System.Console.WriteLine(str)
                Next str
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An I/O error occurs.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            End Try
        End Sub
        Sub GetParent(ByVal path As String)
            Try
                Dim directoryInfo As System.IO.DirectoryInfo
                directoryInfo = System.IO.Directory.GetParent(path)
                System.Console.WriteLine(directoryInfo.FullName)
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                     "contains only white spaces, or " + _
                                     "contains invalid characters.")
            End Try
        End Sub
        Sub Move(ByVal sourcePath As String, ByVal destinationPath As String)
            Try
                System.IO.Directory.Move(sourcePath, destinationPath)
                System.Console.WriteLine("The directory move is complete.")
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An attempt was made to move a " + _
                                        "directory to a different " + _
                                        "volume, or destDirName " + _
                                        "already exists.")
            End Try
        End Sub
    End Class
End Namespace

using System;

namespace GetFileSystemEntries
{
    class Class1
    {
        static void Main(string[] args)
        {
            Class1 snippets = new Class1();

            string path = System.IO.Directory.GetCurrentDirectory();
            string filter = "*.exe";

            snippets.PrintFileSystemEntries(path);
            snippets.PrintFileSystemEntries(path, filter);
            snippets.GetLogicalDrives();
            snippets.GetParent(path);
            snippets.Move("C:\\proof", "C:\\Temp");
        }

        void PrintFileSystemEntries(string path)
        {

            try
            {
                // Obtain the file system entries in the directory path.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }
        void PrintFileSystemEntries(string path, string pattern)
        {
            try
            {
                // Obtain the file system entries in the directory
                // path that match the pattern.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path, pattern);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }

        // Print out all logical drives on the system.
        void GetLogicalDrives()
        {
            try
            {
                string[] drives = System.IO.Directory.GetLogicalDrives();

                foreach (string str in drives)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An I/O error occurs.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
        }
        void GetParent(string path)
        {
            try
            {
                System.IO.DirectoryInfo directoryInfo =
                    System.IO.Directory.GetParent(path);

                System.Console.WriteLine(directoryInfo.FullName);
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, or " +
                    "contains invalid characters.");
            }
        }
        void Move(string sourcePath, string destinationPath)
        {
            try
            {
                System.IO.Directory.Move(sourcePath, destinationPath);
                System.Console.WriteLine("The directory move is complete.");
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An attempt was made to move a " +
                    "directory to a different " +
                    "volume, or destDirName " +
                    "already exists.");
            }
        }
    }
}

using namespace System;
class Class1
{
public:
   void PrintFileSystemEntries( String^ path )
   {
      try
      {

         // Obtain the file system entries in the directory path.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   void PrintFileSystemEntries( String^ path, String^ pattern )
   {
      try
      {

         // Obtain the file system entries in the directory
         // path that match the pattern.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path, pattern );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   // Print out all logical drives on the system.
   void GetLogicalDrives()
   {
      try
      {
         array<String^>^drives = System::IO::Directory::GetLogicalDrives();
         for ( int i = 0; i < drives->Length; i++ )
         {
            System::Console::WriteLine( drives[ i ] );

         }
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An I/O error occurs." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }

   }

   void GetParent( String^ path )
   {
      try
      {
         System::IO::DirectoryInfo^ directoryInfo = System::IO::Directory::GetParent( path );
         System::Console::WriteLine( directoryInfo->FullName );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, or \HelloServer'                  contains invalid characters." );
      }

   }

   void Move( String^ sourcePath, String^ destinationPath )
   {
      try
      {
         System::IO::Directory::Move( sourcePath, destinationPath );
         System::Console::WriteLine(  "The directory move is complete." );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An attempt was made to move a \HelloServer'                  directory to a different \HelloServer'                  volume, or destDirName \HelloServer'                  already exists." );
      }

   }

};

int main()
{
   Class1 * snippets = new Class1;
   String^ path = System::IO::Directory::GetCurrentDirectory();
   String^ filter =  "*.exe";
   snippets->PrintFileSystemEntries( path );
   snippets->PrintFileSystemEntries( path, filter );
   snippets->GetLogicalDrives();
   snippets->GetParent( path );
   snippets->Move(  "C:\\proof",  "C:\\Temp" );
   return 0;
}
  • SecurityPermission

    用来调用非托管代码，如用 PInvoke 或 COM 互操作调用本机代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode 用来调用非托管代码，如用 PInvoke 或 COM 互操作调用本机代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.GetParent 方法

Directory
.
.
::
.
GetParent 方法
Directory 类

检索指定路径的父目录，包括绝对路径和相对路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetParent ( _
    path As String _
) As DirectoryInfo
public static DirectoryInfo GetParent(
    string path
)
public:
static DirectoryInfo^ GetParent(
    String^ path
)
static member GetParent :
        path:string -> DirectoryInfo

参数

path
类型： System String
用于检索父目录的路径。

返回值

类型： System.IO DirectoryInfo
父目录；如果 path 是根目录，包括 UNC 服务器或共享名的根，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
IOException | path 指定的目录是只读的。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 未找到指定的路径。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何使用 GetParent 方法检索用户指定位置“路径”的父目录。然后将由 GetParent 方法返回的值输出到控制台。将该示例配置为捕捉此方法的所有常见错误。 下面的示例演示如何使用 GetParent 方法检索用户指定位置“路径”的父目录。然后将由 GetParent 方法返回的值输出到控制台。将该示例配置为捕捉此方法的所有常见错误。 下面的示例演示如何使用 GetParent 方法检索用户指定位置“路径”的父目录。然后将由 GetParent 方法返回的值输出到控制台。将该示例配置为捕捉此方法的所有常见错误。

Option Explicit On
Option Strict On

Imports System

Namespace GetFileSystemEntries
    Class Class1
        Overloads Shared Sub Main(ByVal args() As String)
            Dim snippets As New Class1()
            Dim path As String = System.IO.Directory.GetCurrentDirectory()
            Dim filter As String = "*.exe"
            snippets.PrintFileSystemEntries(path)
            snippets.PrintFileSystemEntries(path, filter)
            snippets.GetLogicalDrives()
            snippets.GetParent(path)
            snippets.Move("C:\proof", "C:\Temp")
        End Sub 'Main

        Sub PrintFileSystemEntries(ByVal path As String)
            Try
                ' Obtain the file system entries in the directory path.
                Dim directoryEntries As String()
                directoryEntries = System.IO.Directory.GetFileSystemEntries(path)
                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub
        Sub PrintFileSystemEntries(ByVal path As String, _
                                   ByVal pattern As String)
            Try
                ' Obtain the file system entries in the directory
                ' path that match the pattern.
                Dim directoryEntries As String()
                directoryEntries = _
                   System.IO.Directory.GetFileSystemEntries(path, pattern)

                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub

        ' Print out all logical drives on the system.
        Sub GetLogicalDrives()
            Try
                Dim drives As String()
                drives = System.IO.Directory.GetLogicalDrives()

                Dim str As String
                For Each str In drives
                    System.Console.WriteLine(str)
                Next str
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An I/O error occurs.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            End Try
        End Sub
        Sub GetParent(ByVal path As String)
            Try
                Dim directoryInfo As System.IO.DirectoryInfo
                directoryInfo = System.IO.Directory.GetParent(path)
                System.Console.WriteLine(directoryInfo.FullName)
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                     "contains only white spaces, or " + _
                                     "contains invalid characters.")
            End Try
        End Sub
        Sub Move(ByVal sourcePath As String, ByVal destinationPath As String)
            Try
                System.IO.Directory.Move(sourcePath, destinationPath)
                System.Console.WriteLine("The directory move is complete.")
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An attempt was made to move a " + _
                                        "directory to a different " + _
                                        "volume, or destDirName " + _
                                        "already exists.")
            End Try
        End Sub
    End Class
End Namespace

using System;

namespace GetFileSystemEntries
{
    class Class1
    {
        static void Main(string[] args)
        {
            Class1 snippets = new Class1();

            string path = System.IO.Directory.GetCurrentDirectory();
            string filter = "*.exe";

            snippets.PrintFileSystemEntries(path);
            snippets.PrintFileSystemEntries(path, filter);
            snippets.GetLogicalDrives();
            snippets.GetParent(path);
            snippets.Move("C:\\proof", "C:\\Temp");
        }

        void PrintFileSystemEntries(string path)
        {

            try
            {
                // Obtain the file system entries in the directory path.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }
        void PrintFileSystemEntries(string path, string pattern)
        {
            try
            {
                // Obtain the file system entries in the directory
                // path that match the pattern.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path, pattern);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }

        // Print out all logical drives on the system.
        void GetLogicalDrives()
        {
            try
            {
                string[] drives = System.IO.Directory.GetLogicalDrives();

                foreach (string str in drives)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An I/O error occurs.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
        }
        void GetParent(string path)
        {
            try
            {
                System.IO.DirectoryInfo directoryInfo =
                    System.IO.Directory.GetParent(path);

                System.Console.WriteLine(directoryInfo.FullName);
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, or " +
                    "contains invalid characters.");
            }
        }
        void Move(string sourcePath, string destinationPath)
        {
            try
            {
                System.IO.Directory.Move(sourcePath, destinationPath);
                System.Console.WriteLine("The directory move is complete.");
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An attempt was made to move a " +
                    "directory to a different " +
                    "volume, or destDirName " +
                    "already exists.");
            }
        }
    }
}

using namespace System;
class Class1
{
public:
   void PrintFileSystemEntries( String^ path )
   {
      try
      {

         // Obtain the file system entries in the directory path.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   void PrintFileSystemEntries( String^ path, String^ pattern )
   {
      try
      {

         // Obtain the file system entries in the directory
         // path that match the pattern.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path, pattern );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   // Print out all logical drives on the system.
   void GetLogicalDrives()
   {
      try
      {
         array<String^>^drives = System::IO::Directory::GetLogicalDrives();
         for ( int i = 0; i < drives->Length; i++ )
         {
            System::Console::WriteLine( drives[ i ] );

         }
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An I/O error occurs." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }

   }

   void GetParent( String^ path )
   {
      try
      {
         System::IO::DirectoryInfo^ directoryInfo = System::IO::Directory::GetParent( path );
         System::Console::WriteLine( directoryInfo->FullName );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, or \HelloServer'                  contains invalid characters." );
      }

   }

   void Move( String^ sourcePath, String^ destinationPath )
   {
      try
      {
         System::IO::Directory::Move( sourcePath, destinationPath );
         System::Console::WriteLine(  "The directory move is complete." );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An attempt was made to move a \HelloServer'                  directory to a different \HelloServer'                  volume, or destDirName \HelloServer'                  already exists." );
      }

   }

};

int main()
{
   Class1 * snippets = new Class1;
   String^ path = System::IO::Directory::GetCurrentDirectory();
   String^ filter =  "*.exe";
   snippets->PrintFileSystemEntries( path );
   snippets->PrintFileSystemEntries( path, filter );
   snippets->GetLogicalDrives();
   snippets->GetParent( path );
   snippets->Move(  "C:\\proof",  "C:\\Temp" );
   return 0;
}
  • FileIOPermission

    用于从文件或目录中读取。关联的枚举：FileIOPermissionAccess..::.Read 用于从文件或目录中读取。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间
DirectoryInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.Move 方法

Directory
.
.
::
.
Move 方法
Directory 类

将文件或目录及其内容移到新位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Move ( _
    sourceDirName As String, _
    destDirName As String _
)
public static void Move(
    string sourceDirName,
    string destDirName
)
public:
static void Move(
    String^ sourceDirName,
    String^ destDirName
)
static member Move :
        sourceDirName:string *
        destDirName:string -> unit

参数

sourceDirName
类型： System String
要移动的文件或目录的路径。
destDirName
类型： System String
指向 sourceDirName 的新位置的路径。如果 sourceDirName 是一个文件，则 destDirName 也必须是一个文件名。 指向 sourceDirName 的新位置的路径。如果 sourceDirName 是一个文件，则 destDirName 也必须是一个文件名。
异常 | 条件
IOException | 尝试将一个目录移到不同的卷。 - 或 - destDirName 已存在。 - 或 - sourceDirName 和 destDirName 参数引用相同的文件或目录。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | sourceDirName 或 destDirName 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | sourceDirName 或 destDirName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 由 sourceDirName 指定的路径无效（例如，它位于未映射的驱动器上）。

举例来讲，如果您尝试将 c:\mydir 移到 c:\public，并且 c:\public 已存在，则此方法引发 IOException。您必须将“c:\\public\\mydir”指定为 destDirName 参数（假设“c:\\public”下不存在“mydir”），或者指定一个新的目录名，例如“c:\\newdir”。 举例来讲，如果您尝试将 c:\mydir 移到 c:\public，并且 c:\public 已存在，则此方法引发 IOException。您必须将“c:\\public\\mydir”指定为 destDirName 参数（假设“c:\\public”下不存在“mydir”），或者指定一个新的目录名，例如“c:\\newdir”。

允许 sourceDirName 和 destDirName 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 sourceDirName 和 destDirName 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 sourceDirName 和 destDirName 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何将目录和其中包含的所有文件移动到硬盘驱动器上的新的位置。将该示例配置为捕捉此方法的所有常见错误。 下面的示例演示如何将目录和其中包含的所有文件移动到硬盘驱动器上的新的位置。将该示例配置为捕捉此方法的所有常见错误。

Option Explicit On
Option Strict On

Imports System

Namespace GetFileSystemEntries
    Class Class1
        Overloads Shared Sub Main(ByVal args() As String)
            Dim snippets As New Class1()
            Dim path As String = System.IO.Directory.GetCurrentDirectory()
            Dim filter As String = "*.exe"
            snippets.PrintFileSystemEntries(path)
            snippets.PrintFileSystemEntries(path, filter)
            snippets.GetLogicalDrives()
            snippets.GetParent(path)
            snippets.Move("C:\proof", "C:\Temp")
        End Sub 'Main

        Sub PrintFileSystemEntries(ByVal path As String)
            Try
                ' Obtain the file system entries in the directory path.
                Dim directoryEntries As String()
                directoryEntries = System.IO.Directory.GetFileSystemEntries(path)
                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub
        Sub PrintFileSystemEntries(ByVal path As String, _
                                   ByVal pattern As String)
            Try
                ' Obtain the file system entries in the directory
                ' path that match the pattern.
                Dim directoryEntries As String()
                directoryEntries = _
                   System.IO.Directory.GetFileSystemEntries(path, pattern)

                Dim str As String
                For Each str In directoryEntries
                    System.Console.WriteLine(str)
                Next str
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                        "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.DirectoryNotFoundException
                System.Console.WriteLine("The path encapsulated in the " + _
                                        "Directory object does not exist.")
            End Try
        End Sub

        ' Print out all logical drives on the system.
        Sub GetLogicalDrives()
            Try
                Dim drives As String()
                drives = System.IO.Directory.GetLogicalDrives()

                Dim str As String
                For Each str In drives
                    System.Console.WriteLine(str)
                Next str
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An I/O error occurs.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            End Try
        End Sub
        Sub GetParent(ByVal path As String)
            Try
                Dim directoryInfo As System.IO.DirectoryInfo
                directoryInfo = System.IO.Directory.GetParent(path)
                System.Console.WriteLine(directoryInfo.FullName)
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                     "contains only white spaces, or " + _
                                     "contains invalid characters.")
            End Try
        End Sub
        Sub Move(ByVal sourcePath As String, ByVal destinationPath As String)
            Try
                System.IO.Directory.Move(sourcePath, destinationPath)
                System.Console.WriteLine("The directory move is complete.")
            Catch exp As ArgumentNullException
                System.Console.WriteLine("Path is a null reference.")
            Catch exp As System.Security.SecurityException
                System.Console.WriteLine("The caller does not have the " + _
                                           "required permission.")
            Catch exp As ArgumentException
                System.Console.WriteLine("Path is an empty string, " + _
                                        "contains only white spaces, " + _
                                        "or contains invalid characters.")
            Catch exp As System.IO.IOException
                System.Console.WriteLine("An attempt was made to move a " + _
                                        "directory to a different " + _
                                        "volume, or destDirName " + _
                                        "already exists.")
            End Try
        End Sub
    End Class
End Namespace

using System;

namespace GetFileSystemEntries
{
    class Class1
    {
        static void Main(string[] args)
        {
            Class1 snippets = new Class1();

            string path = System.IO.Directory.GetCurrentDirectory();
            string filter = "*.exe";

            snippets.PrintFileSystemEntries(path);
            snippets.PrintFileSystemEntries(path, filter);
            snippets.GetLogicalDrives();
            snippets.GetParent(path);
            snippets.Move("C:\\proof", "C:\\Temp");
        }

        void PrintFileSystemEntries(string path)
        {

            try
            {
                // Obtain the file system entries in the directory path.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }
        void PrintFileSystemEntries(string path, string pattern)
        {
            try
            {
                // Obtain the file system entries in the directory
                // path that match the pattern.
                string[] directoryEntries =
                    System.IO.Directory.GetFileSystemEntries(path, pattern);

                foreach (string str in directoryEntries)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.DirectoryNotFoundException)
            {
                System.Console.WriteLine("The path encapsulated in the " +
                    "Directory object does not exist.");
            }
        }

        // Print out all logical drives on the system.
        void GetLogicalDrives()
        {
            try
            {
                string[] drives = System.IO.Directory.GetLogicalDrives();

                foreach (string str in drives)
                {
                    System.Console.WriteLine(str);
                }
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An I/O error occurs.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
        }
        void GetParent(string path)
        {
            try
            {
                System.IO.DirectoryInfo directoryInfo =
                    System.IO.Directory.GetParent(path);

                System.Console.WriteLine(directoryInfo.FullName);
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, or " +
                    "contains invalid characters.");
            }
        }
        void Move(string sourcePath, string destinationPath)
        {
            try
            {
                System.IO.Directory.Move(sourcePath, destinationPath);
                System.Console.WriteLine("The directory move is complete.");
            }
            catch (ArgumentNullException)
            {
                System.Console.WriteLine("Path is a null reference.");
            }
            catch (System.Security.SecurityException)
            {
                System.Console.WriteLine("The caller does not have the " +
                    "required permission.");
            }
            catch (ArgumentException)
            {
                System.Console.WriteLine("Path is an empty string, " +
                    "contains only white spaces, " +
                    "or contains invalid characters.");
            }
            catch (System.IO.IOException)
            {
                System.Console.WriteLine("An attempt was made to move a " +
                    "directory to a different " +
                    "volume, or destDirName " +
                    "already exists.");
            }
        }
    }
}

using namespace System;
class Class1
{
public:
   void PrintFileSystemEntries( String^ path )
   {
      try
      {

         // Obtain the file system entries in the directory path.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   void PrintFileSystemEntries( String^ path, String^ pattern )
   {
      try
      {

         // Obtain the file system entries in the directory
         // path that match the pattern.
         array<String^>^directoryEntries = System::IO::Directory::GetFileSystemEntries( path, pattern );
         for ( int i = 0; i < directoryEntries->Length; i++ )
         {
            System::Console::WriteLine( directoryEntries[ i ] );

         }
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::DirectoryNotFoundException^ )
      {
         System::Console::WriteLine(  "The path encapsulated in the \HelloServer'                  Directory object does not exist." );
      }

   }

   // Print out all logical drives on the system.
   void GetLogicalDrives()
   {
      try
      {
         array<String^>^drives = System::IO::Directory::GetLogicalDrives();
         for ( int i = 0; i < drives->Length; i++ )
         {
            System::Console::WriteLine( drives[ i ] );

         }
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An I/O error occurs." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }

   }

   void GetParent( String^ path )
   {
      try
      {
         System::IO::DirectoryInfo^ directoryInfo = System::IO::Directory::GetParent( path );
         System::Console::WriteLine( directoryInfo->FullName );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, or \HelloServer'                  contains invalid characters." );
      }

   }

   void Move( String^ sourcePath, String^ destinationPath )
   {
      try
      {
         System::IO::Directory::Move( sourcePath, destinationPath );
         System::Console::WriteLine(  "The directory move is complete." );
      }
      catch ( ArgumentNullException^ )
      {
         System::Console::WriteLine(  "Path is a null reference." );
      }
      catch ( System::Security::SecurityException^ )
      {
         System::Console::WriteLine(  "The caller does not have the \HelloServer'                  required permission." );
      }
      catch ( ArgumentException^ )
      {
         System::Console::WriteLine(  "Path is an empty String, \HelloServer'                  contains only white spaces, \HelloServer'                  or contains invalid characters." );
      }
      catch ( System::IO::IOException^ )
      {
         System::Console::WriteLine(  "An attempt was made to move a \HelloServer'                  directory to a different \HelloServer'                  volume, or destDirName \HelloServer'                  already exists." );
      }

   }

};

int main()
{
   Class1 * snippets = new Class1;
   String^ path = System::IO::Directory::GetCurrentDirectory();
   String^ filter =  "*.exe";
   snippets->PrintFileSystemEntries( path );
   snippets->PrintFileSystemEntries( path, filter );
   snippets->GetLogicalDrives();
   snippets->GetParent( path );
   snippets->Move(  "C:\\proof",  "C:\\Temp" );
   return 0;
}
  • FileIOPermission

    用于读取 sourceDirName 并写入 sourceDirName 和 destDirName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取 sourceDirName 并写入 sourceDirName 和 destDirName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetAccessControl 方法

Directory
.
.
::
.
SetAccessControl 方法
Directory 类

将 DirectorySecurity 对象描述的访问控制列表 (ACL) 项应用于指定的目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetAccessControl ( _
    path As String, _
    directorySecurity As DirectorySecurity _
)
public static void SetAccessControl(
    string path,
    DirectorySecurity directorySecurity
)
public:
static void SetAccessControl(
    String^ path,
    DirectorySecurity^ directorySecurity
)
static member SetAccessControl :
        path:string *
        directorySecurity:DirectorySecurity -> unit

参数

path
类型： System String
要从中添加或移除访问控制列表 (ACL) 项的目录。
directorySecurity
类型： System.Security.AccessControl DirectorySecurity
一个 DirectorySecurity 对象，该对象描述要应用于 path 参数所描述的目录的 ACL 项。
异常 | 条件
ArgumentNullException | directorySecurity 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 未能找到目录。
ArgumentException | path 无效。
UnauthorizedAccessException | 当前进程不具有访问由 path 指定的目录的权限。 - 或 - 当前进程没有足够的特权设置 ACL 项。
PlatformNotSupportedException | 当前操作系统不是 Windows 2000 或更高版本。

SetAccessControl 方法将访问控制列表 (ACL) 项应用于表示非继承 ACL 列表的文件。

警告说明 警告

为 directorySecurity 参数指定的 ACL 替换该目录的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有 ACL 并对其进行修改。 为 directorySecurity 参数指定的 ACL 替换该目录的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有 ACL 并对其进行修改。

ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

SetAccessControl 方法仅存留在对象创建以后被修改过的 DirectorySecurity 对象。 如果没有修改 DirectorySecurity 对象，则不会保留到文件中。 因此，不可能从一个文件中检索 DirectorySecurity 对象并将同一对象应用到另一个文件。

将 ACL 信息从一个文件复制到另一个文件：

  1. 使用 GetAccessControl 方法从源文件检索 DirectorySecurity 对象。

  2. 为目标文件创建新的 DirectorySecurity 对象。

  3. 使用 DirectorySecurity 源对象的 GetSecurityDescriptorBinaryForm 或 GetSecurityDescriptorSddlForm 方法检索 ACL 信息。

  4. 使用 SetSecurityDescriptorBinaryForm 或 SetSecurityDescriptorSddlForm 方法将在步骤 3 中检索到的信息复制到 DirectorySecurity 目标对象。

  5. 使用 SetAccessControl 方法将 DirectorySecurity 目标对象设置为目标文件。

在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。 在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。

下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法添加访问控制列表 (ACL) 项，然后从某个目录中移除一个 ACL 项。您必须提供有效的用户或组帐户才能运行此示例。 下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法添加访问控制列表 (ACL) 项，然后从某个目录中移除一个 ACL 项。您必须提供有效的用户或组帐户才能运行此示例。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module DirectoryExample

    Sub Main()
        Try
            Dim DirectoryName As String = "TestDirectory"

            Console.WriteLine("Adding access control entry for " + DirectoryName)

            ' Add the access control entry to the directory.
            AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " + DirectoryName)

            ' Remove the access control entry from the directory.
            RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub

    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

int main()
{
    String^ directoryName = "TestDirectory";
    String^ accountName = "MYDOMAIN\\MyAccount";
    if (!Directory::Exists(directoryName))
    {
        Console::WriteLine("The directory {0} could not be found.",
            directoryName);
        return 0;
    }
    try
    {
        Console::WriteLine("Adding access control entry for {0}",
            directoryName);

        // Add the access control entry to the directory.
        AddDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from {0}",
            directoryName);

        // Remove the access control entry from the directory.
        RemoveDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("You are not authorised to carry" +
            " out this procedure.");
    }
    catch (System::Security::Principal::
        IdentityNotMappedException^)
    {
        Console::WriteLine("The account {0} could not be found.", accountName);
    }
}
  • FileIOPermission

    表示枚举目录的访问控制列表 (ACL) 的权限。关联的枚举：NoAccess、View 表示枚举目录的访问控制列表 (ACL) 的权限。关联的枚举：NoAccess、View

    安全操作：Demand。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间


Directory ..::.SetCreationTime 方法

Directory
.
.
::
.
SetCreationTime 方法
Directory 类

为指定的文件或目录设置创建日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetCreationTime ( _
    path As String, _
    creationTime As DateTime _
)
public static void SetCreationTime(
    string path,
    DateTime creationTime
)
public:
static void SetCreationTime(
    String^ path,
    DateTime creationTime
)
static member SetCreationTime :
        path:string *
        creationTime:DateTime -> unit

参数

path
类型： System String
要设置其创建日期和时间信息的文件或目录。
creationTime
类型： System DateTime
DateTime，它包含要为 path 的创建日期和时间设置的值。该值用本地时间表示。 DateTime，它包含要为 path 的创建日期和时间设置的值。该值用本地时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentOutOfRangeException | creationTime 指定超出该操作允许的日期或时间范围的值。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此方法。

下面的代码示例演示了使用协调通用时间 (UTC) 输出时，输出内容的变化。

' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System
Imports System.IO

Public Class DirectoryUTCTime

   Public Shared Sub Main()
      ' Set the directory.
      Dim n As String = "C:\test\newdir"
      'Create two variables to use to set the time.
      Dim dtime1 As New DateTime(2002, 1, 3)
      Dim dtime2 As New DateTime(1999, 1, 1)

      'Create the directory.
      Try
         Directory.CreateDirectory(n)
      Catch e As IOException
         Console.WriteLine(e)
      End Try

      'Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1)
      Directory.SetLastAccessTimeUtc(n, dtime1)

      ' Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))

      'Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2)
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
   End Sub 'Main
End Class 'DirectoryUTCTime

' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:

' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryUTCTime
  {
    public static void Main()
    {
    // Set the directory.
      string n = @"C:\test\newdir";
        //Create two variables to use to set the time.
      DateTime dtime1 = new DateTime(2002, 1, 3);
      DateTime dtime2 = new DateTime(1999, 1, 1);

    //Create the directory.
      try
      {
          Directory.CreateDirectory(n);
      }
      catch (IOException e)
      {
          Console.WriteLine(e);
      }

    //Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1);
      Directory.SetLastAccessTimeUtc(n, dtime1);

        // Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));

        //Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2);
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
    }
  }
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{

   // Set the directory.
   String^ n = "C:\\test\\newdir";

   //Create two variables to use to set the time.
   DateTime dtime1 = DateTime(2002,1,3);
   DateTime dtime2 = DateTime(1999,1,1);

   //Create the directory.
   try
   {
      Directory::CreateDirectory( n );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( e );
   }

   //Set the creation and last access times to a variable DateTime value.
   Directory::SetCreationTime( n, dtime1 );
   Directory::SetLastAccessTimeUtc( n, dtime1 );

   // Print to console the results.
   Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
   Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
   Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
   Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
   Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
   Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );

   //Set the last write time to a different value.
   Directory::SetLastWriteTimeUtc( n, dtime2 );
   Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}

// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
  • FileIOPermission

    用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetCreationTimeUtc 方法

Directory
.
.
::
.
SetCreationTimeUtc 方法
Directory 类

设置指定文件或目录的创建日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetCreationTimeUtc ( _
    path As String, _
    creationTimeUtc As DateTime _
)
public static void SetCreationTimeUtc(
    string path,
    DateTime creationTimeUtc
)
public:
static void SetCreationTimeUtc(
    String^ path,
    DateTime creationTimeUtc
)
static member SetCreationTimeUtc :
        path:string *
        creationTimeUtc:DateTime -> unit

参数

path
类型： System String
要设置其创建日期和时间信息的文件或目录。
creationTimeUtc
类型： System DateTime
DateTime，它包含要为 path 的创建日期和时间设置的值。该值用 UTC 时间表示。 DateTime，它包含要为 path 的创建日期和时间设置的值。该值用 UTC 时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentOutOfRangeException | creationTime 指定超出该操作允许的日期或时间范围的值。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此方法。

  • FileIOPermission

    用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetCurrentDirectory 方法

Directory
.
.
::
.
SetCurrentDirectory 方法
Directory 类

将应用程序的当前工作目录设置为指定的目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetCurrentDirectory ( _
    path As String _
)
public static void SetCurrentDirectory(
    string path
)
public:
static void SetCurrentDirectory(
    String^ path
)
static member SetCurrentDirectory :
        path:string -> unit

参数

path
类型： System String
设置为当前工作目录的路径。
异常 | 条件
IOException | 发生了 I/O 错误。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有访问未委托的代码所需的权限。
FileNotFoundException | 未找到指定的路径。
DirectoryNotFoundException | 未找到指定的目录。

当应用程序终止时，工作目录被还原为其原始位置（从其开始进程的目录）。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

如果您要将目录设置为装有可移动媒体的驱动器（例如对于软盘驱动器，为“A:”，对于 CD-ROM 驱动器，为“E:”），则可以通过使用 IsReady 属性确定该驱动器是否已就绪。

下面的代码示例演示如何设置当前目录以及如何显示根目录。

' This sample shows how to set the current directory and how to determine
' the root directory.
Imports System
Imports System.IO

Public Class DirectoryRoot

   Public Shared Sub Main()
      ' Create string for a directory. This value should be an existing directory
      ' or the sample will throw a DirectoryNotFoundException.
      Dim dir As String = "C:\test"
      Try
         'Set the current directory.
         Directory.SetCurrentDirectory(dir)
      Catch e As DirectoryNotFoundException
         Console.WriteLine("The specified directory does not exist. {0}", e)
      End Try
      ' Print to console the results.
      Console.WriteLine("Root directory: {0}", Directory.GetDirectoryRoot(dir))
      Console.WriteLine("Current directory: {0}", Directory.GetCurrentDirectory())
   End Sub 'Main
End Class 'DirectoryRoot
' The output of this sample depends on what value you assign to the variable dir.
' If the directory c:\test exists, the output for this sample is:
' Root directory: C:\
' Current directory: C:\test

// This sample shows how to set the current directory and how to determine
// the root directory.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryRoot
  {
    public static void Main()
    {
    // Create string for a directory. This value should be an existing directory
    // or the sample will throw a DirectoryNotFoundException.
      string dir = @"C:\test";
      try
      {
          //Set the current directory.
          Directory.SetCurrentDirectory(dir);
      }
      catch (DirectoryNotFoundException e)
      {
          Console.WriteLine("The specified directory does not exist. {0}", e);
      }
    // Print to console the results.
      Console.WriteLine("Root directory: {0}", Directory.GetDirectoryRoot(dir));
      Console.WriteLine("Current directory: {0}", Directory.GetCurrentDirectory());
    }
  }
}
// The output of this sample depends on what value you assign to the variable dir.
// If the directory c:\test exists, the output for this sample is:
// Root directory: C:\
// Current directory: C:\test

// This sample shows how to set the current directory and how to determine
// the root directory.
using namespace System;
using namespace System::IO;
int main()
{

   // Create string for a directory. This value should be an existing directory
   // or the sample will throw a DirectoryNotFoundException.
   String^ dir = "C:\\test";
   try
   {

      //Set the current directory.
      Directory::SetCurrentDirectory( dir );
   }
   catch ( DirectoryNotFoundException^ e )
   {
      Console::WriteLine( "The specified directory does not exist. {0}", e );
   }

   // Print to console the results.
   Console::WriteLine( "Root directory: {0}", Directory::GetDirectoryRoot( dir ) );
   Console::WriteLine( "Current directory: {0}", Directory::GetCurrentDirectory() );
}

// The output of this sample depends on what value you assign to the variable dir.
// If the directory c:\test exists, the output for this sample is:
// Root directory: C:\
// Current directory: C:\test
  • FileIOPermission

    用于写入文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

  • SecurityPermission

    用于调用非托管代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode 用于调用非托管代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetLastAccessTime 方法

Directory
.
.
::
.
SetLastAccessTime 方法
Directory 类

设置上次访问指定文件或目录的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastAccessTime ( _
    path As String, _
    lastAccessTime As DateTime _
)
public static void SetLastAccessTime(
    string path,
    DateTime lastAccessTime
)
public:
static void SetLastAccessTime(
    String^ path,
    DateTime lastAccessTime
)
static member SetLastAccessTime :
        path:string *
        lastAccessTime:DateTime -> unit

参数

path
类型： System String
要设置其访问日期和时间信息的文件或目录。
lastAccessTime
类型： System DateTime
DateTime，它包含要为 path 的访问日期和时间设置的值。该值用本地时间表示。 DateTime，它包含要为 path 的访问日期和时间设置的值。该值用本地时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
ArgumentOutOfRangeException | lastAccessTime 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此方法。

下面的代码示例演示 SetLastAccessTime。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\MyDir"
            If Directory.Exists(path) = False Then
                Directory.CreateDirectory(path)
            End If
            Directory.SetLastAccessTime(path, New DateTime(1985, 5, 4))

            'Get the last access time of a well-known directory.
            Dim dt As DateTime = Directory.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this directory was {0}", dt)

            'Update the last access time.
            Directory.SetLastAccessTime(path, DateTime.Now)
            dt = Directory.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this directory was {0}", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\MyDir";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            Directory.SetLastAccessTime(path, new DateTime(1985,5,4));

            // Get the last access time of a well-known directory.
            DateTime dt = Directory.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this directory was {0}", dt);

            // Update the last access time.
            Directory.SetLastAccessTime(path, DateTime.Now);
            dt = Directory.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this directory was {0}", dt);
        }

        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\MyDir";
      if (  !Directory::Exists( path ) )
      {
         Directory::CreateDirectory( path );
      }
      Directory::SetLastAccessTime( path, DateTime(1985,5,4) );

      // Get the last access time of a well-known directory.
      DateTime dt = Directory::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this directory was {0}", dt );

      // Update the last access time.
      Directory::SetLastAccessTime( path, DateTime::Now );
      dt = Directory::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this directory was {0}", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetLastAccessTimeUtc 方法

Directory
.
.
::
.
SetLastAccessTimeUtc 方法
Directory 类

设置上次访问指定文件或目录的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastAccessTimeUtc ( _
    path As String, _
    lastAccessTimeUtc As DateTime _
)
public static void SetLastAccessTimeUtc(
    string path,
    DateTime lastAccessTimeUtc
)
public:
static void SetLastAccessTimeUtc(
    String^ path,
    DateTime lastAccessTimeUtc
)
static member SetLastAccessTimeUtc :
        path:string *
        lastAccessTimeUtc:DateTime -> unit

参数

path
类型： System String
要设置其访问日期和时间信息的文件或目录。
lastAccessTimeUtc
类型： System DateTime
DateTime，它包含要为 path 的访问日期和时间设置的值。该值用 UTC 时间表示。 DateTime，它包含要为 path 的访问日期和时间设置的值。该值用 UTC 时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
ArgumentOutOfRangeException | lastAccessTimeUtc 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此方法。

下面的代码示例演示了使用协调通用时间 (UTC) 输出时，输出内容的变化。

' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System
Imports System.IO

Public Class DirectoryUTCTime

   Public Shared Sub Main()
      ' Set the directory.
      Dim n As String = "C:\test\newdir"
      'Create two variables to use to set the time.
      Dim dtime1 As New DateTime(2002, 1, 3)
      Dim dtime2 As New DateTime(1999, 1, 1)

      'Create the directory.
      Try
         Directory.CreateDirectory(n)
      Catch e As IOException
         Console.WriteLine(e)
      End Try

      'Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1)
      Directory.SetLastAccessTimeUtc(n, dtime1)

      ' Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))

      'Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2)
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
   End Sub 'Main
End Class 'DirectoryUTCTime

' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:

' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryUTCTime
  {
    public static void Main()
    {
    // Set the directory.
      string n = @"C:\test\newdir";
        //Create two variables to use to set the time.
      DateTime dtime1 = new DateTime(2002, 1, 3);
      DateTime dtime2 = new DateTime(1999, 1, 1);

    //Create the directory.
      try
      {
          Directory.CreateDirectory(n);
      }
      catch (IOException e)
      {
          Console.WriteLine(e);
      }

    //Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1);
      Directory.SetLastAccessTimeUtc(n, dtime1);

        // Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));

        //Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2);
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
    }
  }
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{

   // Set the directory.
   String^ n = "C:\\test\\newdir";

   //Create two variables to use to set the time.
   DateTime dtime1 = DateTime(2002,1,3);
   DateTime dtime2 = DateTime(1999,1,1);

   //Create the directory.
   try
   {
      Directory::CreateDirectory( n );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( e );
   }

   //Set the creation and last access times to a variable DateTime value.
   Directory::SetCreationTime( n, dtime1 );
   Directory::SetLastAccessTimeUtc( n, dtime1 );

   // Print to console the results.
   Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
   Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
   Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
   Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
   Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
   Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );

   //Set the last write time to a different value.
   Directory::SetLastWriteTimeUtc( n, dtime2 );
   Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}

// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
  • FileIOPermission

    用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetLastWriteTime 方法

Directory
.
.
::
.
SetLastWriteTime 方法
Directory 类

设置上次写入目录的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastWriteTime ( _
    path As String, _
    lastWriteTime As DateTime _
)
public static void SetLastWriteTime(
    string path,
    DateTime lastWriteTime
)
public:
static void SetLastWriteTime(
    String^ path,
    DateTime lastWriteTime
)
static member SetLastWriteTime :
        path:string *
        lastWriteTime:DateTime -> unit

参数

path
类型： System String
目录的路径。
lastWriteTime
类型： System DateTime
上次写入目录的日期和时间。该值用本地时间表示。 上次写入目录的日期和时间。该值用本地时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
ArgumentOutOfRangeException | lastWriteTime 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此方法。

下面的代码示例演示 SetLastWriteTime。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\MyDir"
            If Directory.Exists(path) = False Then
                Directory.CreateDirectory(path)
            Else
                ' Take an action that will affect the write time.
                Directory.SetLastWriteTime(path, New DateTime(1985, 4, 3))
            End If

            'Get the last write time of a well-known directory.
            Dim dt As DateTime = Directory.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this directory was {0}", dt)

            'Update the last write time.
            Directory.SetLastWriteTime(path, DateTime.Now)
            dt = Directory.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this directory was {0}", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\MyDir";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            else
            {
                // Take an action that will affect the write time.
                Directory.SetLastWriteTime(path, new DateTime(1985,4,3));
            }

            // Get the last write time of a well-known directory.
            DateTime dt = Directory.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this directory was {0}", dt);

            //Update the last write time.
            Directory.SetLastWriteTime(path, DateTime.Now);
            dt = Directory.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this directory was {0}", dt);
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
void main()
{
   try
   {
      String^ path = "c:\\MyDir";
      if (  !Directory::Exists( path ) )
      {
         Directory::CreateDirectory( path );
      }
      else
      {

         // Take an action that will affect the write time.
         Directory::SetLastWriteTime( path, DateTime(1985,4,3) );
      }

      // Get the last write time of a well-known directory.
      DateTime dt = Directory::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this directory was {0}", dt );

      //Update the last write time.
      Directory::SetLastWriteTime( path, DateTime::Now );
      dt = Directory::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this directory was {0}", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Directory ..::.SetLastWriteTimeUtc 方法

Directory
.
.
::
.
SetLastWriteTimeUtc 方法
Directory 类

设置上次写入某个目录的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastWriteTimeUtc ( _
    path As String, _
    lastWriteTimeUtc As DateTime _
)
public static void SetLastWriteTimeUtc(
    string path,
    DateTime lastWriteTimeUtc
)
public:
static void SetLastWriteTimeUtc(
    String^ path,
    DateTime lastWriteTimeUtc
)
static member SetLastWriteTimeUtc :
        path:string *
        lastWriteTimeUtc:DateTime -> unit

参数

path
类型： System String
目录的路径。
lastWriteTimeUtc
类型： System DateTime
上次写入目录的日期和时间。该值用 UTC 时间表示。 上次写入目录的日期和时间。该值用 UTC 时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
ArgumentOutOfRangeException | lastWriteTimeUtc 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此方法。

下面的代码示例演示了使用协调通用时间 (UTC) 输出时，输出内容的变化。

' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System
Imports System.IO

Public Class DirectoryUTCTime

   Public Shared Sub Main()
      ' Set the directory.
      Dim n As String = "C:\test\newdir"
      'Create two variables to use to set the time.
      Dim dtime1 As New DateTime(2002, 1, 3)
      Dim dtime2 As New DateTime(1999, 1, 1)

      'Create the directory.
      Try
         Directory.CreateDirectory(n)
      Catch e As IOException
         Console.WriteLine(e)
      End Try

      'Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1)
      Directory.SetLastAccessTimeUtc(n, dtime1)

      ' Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))

      'Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2)
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
   End Sub 'Main
End Class 'DirectoryUTCTime

' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:

' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;

namespace IOSamples
{
  public class DirectoryUTCTime
  {
    public static void Main()
    {
    // Set the directory.
      string n = @"C:\test\newdir";
        //Create two variables to use to set the time.
      DateTime dtime1 = new DateTime(2002, 1, 3);
      DateTime dtime2 = new DateTime(1999, 1, 1);

    //Create the directory.
      try
      {
          Directory.CreateDirectory(n);
      }
      catch (IOException e)
      {
          Console.WriteLine(e);
      }

    //Set the creation and last access times to a variable DateTime value.
      Directory.SetCreationTime(n, dtime1);
      Directory.SetLastAccessTimeUtc(n, dtime1);

        // Print to console the results.
      Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
      Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
      Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
      Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
      Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
      Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));

        //Set the last write time to a different value.
      Directory.SetLastWriteTimeUtc(n, dtime2);
      Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
    }
  }
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM

// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{

   // Set the directory.
   String^ n = "C:\\test\\newdir";

   //Create two variables to use to set the time.
   DateTime dtime1 = DateTime(2002,1,3);
   DateTime dtime2 = DateTime(1999,1,1);

   //Create the directory.
   try
   {
      Directory::CreateDirectory( n );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( e );
   }

   //Set the creation and last access times to a variable DateTime value.
   Directory::SetCreationTime( n, dtime1 );
   Directory::SetLastAccessTimeUtc( n, dtime1 );

   // Print to console the results.
   Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
   Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
   Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
   Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
   Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
   Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );

   //Set the last write time to a different value.
   Directory::SetLastWriteTimeUtc( n, dtime2 );
   Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}

// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
  • FileIOPermission

    用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定文件或目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

Directory 类
Directory 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo 类

DirectoryInfo 类
成员

公开用于创建、移动和枚举目录和子目录的实例方法。此类不能被继承。 公开用于创建、移动和枚举目录和子目录的实例方法。此类不能被继承。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class DirectoryInfo _
    Inherits FileSystemInfo
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DirectoryInfo : FileSystemInfo
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class DirectoryInfo sealed : public FileSystemInfo
[<SealedAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type DirectoryInfo =
    class
        inherit FileSystemInfo
    end

将 DirectoryInfo 类用于典型操作，如复制、移动、重命名、创建和删除目录。

如果打算多次重用某个对象，可考虑使用 DirectoryInfo 的实例方法，而不是 Directory 类的相应静态方法，因为并不总是需要安全检查。

说明 说明

在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。

在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径：

  • C# 中的“c:\\MyDir\\MyFile.txt”或 Visual Basic 中的“c:\MyDir\MyFile.txt”。

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

默认情况下，向所有用户授予对新目录的完全读/写访问权限。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 DirectoryInfo 类的某些主要成员。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Try
            ' Determine whether the directory exists.
            If di.Exists Then
                ' Indicate that it already exists.
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            di.Create()
            Console.WriteLine("The directory was created successfully.")

            ' Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di = new DirectoryInfo(@"c:\MyDir");
        try
        {
            // Determine whether the directory exists.
            if (di.Exists)
            {
                // Indicate that the directory already exists.
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            di.Create();
            Console.WriteLine("The directory was created successfully.");

            // Delete the directory.
            di.Delete();
            Console.WriteLine("The directory was deleted successfully.");

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\MyDir" );
   try
   {

      // Determine whether the directory exists.
      if ( di->Exists )
      {

         // Indicate that the directory already exists.
         Console::WriteLine( "That path exists already." );
         return 0;
      }

      // Try to create the directory.
      di->Create();
      Console::WriteLine( "The directory was created successfully." );

      // Delete the directory.
      di->Delete();
      Console::WriteLine( "The directory was deleted successfully." );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}

下面的示例演示如何复制目录及其内容。

Imports System
Imports System.IO

Class CopyDir
    Shared Sub Copy(ByVal sourceDirectory As String, ByVal targetDirectory As String)
        Dim diSource As DirectoryInfo = New DirectoryInfo(sourceDirectory)
        Dim diTarget As DirectoryInfo = New DirectoryInfo(targetDirectory)

        CopyAll(diSource, diTarget)
    End Sub

    Shared Sub CopyAll(ByVal source As DirectoryInfo, ByVal target As DirectoryInfo)

        ' Check if the target directory exists, if not, create it.
        If Directory.Exists(target.FullName) = False Then
            Directory.CreateDirectory(target.FullName)
        End If

        ' Copy each file into it's new directory.
        For Each fi As FileInfo In source.GetFiles()
            Console.WriteLine("Copying {0}\{1}", target.FullName, fi.Name)
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), True)
        Next

        ' Copy each subdirectory using recursion.
        For Each diSourceSubDir As DirectoryInfo In source.GetDirectories()
            Dim nextTargetSubDir As DirectoryInfo = target.CreateSubdirectory(diSourceSubDir.Name)
            CopyAll(diSourceSubDir, nextTargetSubDir)
        Next
    End Sub

    Shared Sub Main()
        Dim sourceDirectory As String = "c:\\sourceDirectory"
        Dim targetDirectory As String = "c:\\targetDirectory"

        Copy(sourceDirectory, targetDirectory)
    End Sub
    ' Output will vary based on the contents of the source directory.
End Class

using System;
using System.IO;

class CopyDir
{
    public static void Copy(string sourceDirectory, string targetDirectory)
    {
        DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
        DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);

        CopyAll(diSource, diTarget);
    }

    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        // Check if the target directory exists, if not, create it.
        if (Directory.Exists(target.FullName) == false)
        {
            Directory.CreateDirectory(target.FullName);
        }

        // Copy each file into it's new directory.
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
        }

        // Copy each subdirectory using recursion.
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }

    public static void Main()
    {
        string sourceDirectory = @"c:\sourceDirectory";
        string targetDirectory = @"c:\targetDirectory";

        Copy(sourceDirectory, targetDirectory);
    }

    // Output will vary based on the contents of the source directory.
}

System.IO System.IO..::.DirectoryInfoDirectoryInfo
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 成员
System.IO 命名空间
File
Attributes
Directory
Path

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


DirectoryInfo 成员

DirectoryInfo 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

公开用于创建、移动和枚举目录和子目录的实例方法。此类不能被继承。 公开用于创建、移动和枚举目录和子目录的实例方法。此类不能被继承。

DirectoryInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

DirectoryInfo 类
System.IO 命名空间


DirectoryInfo 构造函数

DirectoryInfo 构造函数
DirectoryInfo 类

在指定的路径中初始化 DirectoryInfo 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String _
)
public DirectoryInfo(
    string path
)
public:
DirectoryInfo(
    String^ path
)
new :
        path:string -> DirectoryInfo

参数

path
类型： System String
一个字符串，它指定要在其中创建 DirectoryInfo 的路径。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SecurityException | 调用方没有所要求的权限。
ArgumentException | path 包含无效字符，如 "、<、> 或 |.
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。

此构造函数不检查目录是否存在。该构造函数是一个字符串占位符，在后续操作中将使用该字符串访问磁盘。 此构造函数不检查目录是否存在。该构造函数是一个字符串占位符，在后续操作中将使用该字符串访问磁盘。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例使用此构造函数创建指定的目录及子目录，并演示包含子目录的目录不能被删除。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di1 As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Dim di2 As DirectoryInfo = New DirectoryInfo("c:\MyDir\temp")
        Try
            ' Create the directories.
            di1.Create()
            di2.Create()
            ' This operation will not be allowed because there are subdirectories.
            Console.WriteLine("I am about to attempt to delete {0}.", di1.Name)
            di1.Delete()
            Console.WriteLine("The Delete operation was successful, which was unexpected.")
        Catch e As Exception
            Console.WriteLine("The Delete operation failed as expected.")
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di1 = new DirectoryInfo(@"c:\MyDir");
        DirectoryInfo di2 = new DirectoryInfo(@"c:\MyDir\temp");

        try
        {
            // Create the directories.
            di1.Create();
            di2.Create();

            // This operation will not be allowed because there are subdirectories.
            Console.WriteLine("I am about to attempt to delete {0}.", di1.Name);
            di1.Delete();
            Console.WriteLine("The Delete operation was successful, which was unexpected.");
        }
        catch (Exception)
        {
            Console.WriteLine("The Delete operation failed as expected.");
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   DirectoryInfo^ di1 = gcnew DirectoryInfo( "c:\\MyDir" );
   DirectoryInfo^ di2 = gcnew DirectoryInfo( "c:\\MyDir\\temp" );
   try
   {

      // Create the directories.
      di1->Create();
      di2->Create();

      // This operation will not be allowed because there are subdirectories.
      Console::WriteLine( "I am about to attempt to delete {0}.", di1->Name );
      di1->Delete();
      Console::WriteLine( "The Delete operation was successful, which was unexpected." );
   }
   catch ( Exception^ )
   {
      Console::WriteLine( "The Delete operation failed as expected." );
   }

}
  • FileIOPermission

    用于读取文件和目录。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件和目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间
DriveInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo 字段

DirectoryInfo 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

DirectoryInfo 类型公开以下成员。

名称 说明
页首

参考

DirectoryInfo 类
System.IO 命名空间


DirectoryInfo 方法

DirectoryInfo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

DirectoryInfo 类型公开以下成员。

名称 说明
页首

参考

DirectoryInfo 类
System.IO 命名空间


DirectoryInfo ..::.Create 方法

DirectoryInfo
.
.
::
.
Create 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

创建目录。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.Create 方法

DirectoryInfo
.
.
::
.
Create 方法
DirectoryInfo 类

创建目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Create
public void Create()
public:
void Create()
member Create : unit -> unit

异常 | 条件
IOException | 不能创建该目录。

如果目录已经存在，则此方法不执行任何操作。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例检查指定目录是否存在；如果该目录不存在，则创建此目录，然后删除该目录。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Try
            ' Determine whether the directory exists.
            If di.Exists Then
                ' Indicate that it already exists.
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            di.Create()
            Console.WriteLine("The directory was created successfully.")

            'Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di = new DirectoryInfo(@"c:\MyDir");

        try
        {
            // Determine whether the directory exists.
            if (di.Exists)
            {
                // Indicate that it already exists.
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            di.Create();
            Console.WriteLine("The directory was created successfully.");

            // Delete the directory.
            di.Delete();
            Console.WriteLine("The directory was deleted successfully.");

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\MyDir" );
   try
   {

      // Determine whether the directory exists.
      if ( di->Exists )
      {

         // Indicate that it already exists.
         Console::WriteLine( "That path exists already." );
         return 0;
      }

      // Try to create the directory.
      di->Create();
      Console::WriteLine( "The directory was created successfully." );

      // Delete the directory.
      di->Delete();
      Console::WriteLine( "The directory was deleted successfully." );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于写入文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
Create 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.Create 方法 (DirectorySecurity)

DirectoryInfo
.
.
::
.
Create 方法 (DirectorySecurity)
DirectoryInfo 类

使用 DirectorySecurity 对象创建目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Create ( _
    directorySecurity As DirectorySecurity _
)
public void Create(
    DirectorySecurity directorySecurity
)
public:
void Create(
    DirectorySecurity^ directorySecurity
)
member Create :
        directorySecurity:DirectorySecurity -> unit

参数

directorySecurity
类型： System.Security.AccessControl DirectorySecurity
要应用于此目录的访问控制。
异常 | 条件
IOException | 由 path 指定的目录是只读的或不为空。
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
NotSupportedException | 尝试仅通过冒号 (:) 字符创建目录。
IOException | 由 path 指定的目录是只读的或不为空。

使用此方法重载来创建具有访问控制的目录，以便在应用安全性之前不能访问此目录。

如果目录已经存在，则此方法不执行任何操作。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    表示创建目录的权限。安全操作：Demand。关联的枚举：EnvironmentPermissionAccess..::.Read
表示创建目录的权限。安全操作：Demand。关联的枚举：EnvironmentPermissionAccess..::.Read
表示创建目录的权限。安全操作：Demand。关联的枚举：EnvironmentPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
Create 重载
System.IO 命名空间


DirectoryInfo ..::.CreateSubdirectory 方法

DirectoryInfo
.
.
::
.
CreateSubdirectory 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

在指定路径中创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。 在指定路径中创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.CreateSubdirectory 方法 (String)

DirectoryInfo
.
.
::
.
CreateSubdirectory 方法 (String)
DirectoryInfo 类

在指定路径中创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。 在指定路径中创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function CreateSubdirectory ( _
    path As String _
) As DirectoryInfo
public DirectoryInfo CreateSubdirectory(
    string path
)
public:
DirectoryInfo^ CreateSubdirectory(
    String^ path
)
member CreateSubdirectory :
        path:string -> DirectoryInfo

参数

path
类型： System String
指定的路径。它不能是另一个磁盘卷或“统一命名约定”(UNC) 名称。 指定的路径。它不能是另一个磁盘卷或“统一命名约定”(UNC) 名称。

返回值

类型： System.IO DirectoryInfo
在 path 中指定的最后一个目录。
异常 | 条件
ArgumentException | path 未指定有效文件路径或包含无效的 DirectoryInfo 字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | 不能创建子目录。 - 或 - 已有文件或目录具有 path 所指定的名称。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。
SecurityException | 调用方不具有创建目录的代码访问权限。 - 或 - 调用方不具有读取返回的 DirectoryInfo 对象描述的目录的代码访问权限。这可能在 path 参数描述现有目录时发生。 调用方不具有读取返回的 DirectoryInfo 对象描述的目录的代码访问权限。这可能在 path 参数描述现有目录时发生。
NotSupportedException | path 包含一个冒号字符 (:)，该冒号字符不是驱动器标签（“C:\”）的一部分。

除非 path 的某些部分无效，否则，将创建在 path 中指定的所有目录。path 参数指定目录路径，而不是文件路径。如果子目录已经存在，则此方法不执行任何操作。 除非 path 的某些部分无效，否则，将创建在 path 中指定的所有目录。path 参数指定目录路径，而不是文件路径。如果子目录已经存在，则此方法不执行任何操作。 除非 path 的某些部分无效，否则，将创建在 path 中指定的所有目录。path 参数指定目录路径，而不是文件路径。如果子目录已经存在，则此方法不执行任何操作。

说明 说明

路径名称限制为 248 个字符。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何创建子目录。在此示例中，所创建的目录在创建后立即删除。因此，要测试该示例，应在代码中注释掉删除行。 下面的示例演示如何创建子目录。在此示例中，所创建的目录在创建后立即删除。因此，要测试该示例，应在代码中注释掉删除行。 下面的示例演示如何创建子目录。在此示例中，所创建的目录在创建后立即删除。因此，要测试该示例，应在代码中注释掉删除行。

Imports System
Imports System.IO

Public Class CreateSubTest

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("TempDir")

        ' Create the directory only if it does not already exist.
        If di.Exists = False Then
            di.Create()
        End If

        ' Create a subdirectory in the directory just created.
        Dim dis As DirectoryInfo = di.CreateSubdirectory("SubDir")

        ' Process that directory as required.
        ' ...

        ' Delete the subdirectory.
        dis.Delete(True)

        ' Delete the directory.
        di.Delete(True)
    End Sub 'Main
End Class 'CreateSubTest

using System;
using System.IO;

public class CreateSubTest
{
    public static void Main()
    {
        // Create a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("TempDir");

        // Create the directory only if it does not already exist.
        if (di.Exists == false)
            di.Create();

        // Create a subdirectory in the directory just created.
        DirectoryInfo dis = di.CreateSubdirectory("SubDir");

        // Process that directory as required.
        // ...

        // Delete the subdirectory.
        dis.Delete(true);

        // Delete the directory.
        di.Delete(true);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Create a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "TempDir" );

   // Create the directory only if it does not already exist.
   if ( di->Exists == false )
      di->Create();

   // Create a subdirectory in the directory just created.
   DirectoryInfo^ dis = di->CreateSubdirectory( "SubDir" );

   // Process that directory as required.
   // ...
   // Delete the subdirectory.
   dis->Delete( true );

   // Delete the directory.
   di->Delete( true );
}
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
CreateSubdirectory 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.CreateSubdirectory 方法 (String, DirectorySecurity)

DirectoryInfo
.
.
::
.
CreateSubdirectory 方法 (String, DirectorySecurity)
DirectoryInfo 类

使用指定的安全性在指定的路径上创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。 使用指定的安全性在指定的路径上创建一个或多个子目录。指定路径可以是相对于 DirectoryInfo 类的此实例的路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function CreateSubdirectory ( _
    path As String, _
    directorySecurity As DirectorySecurity _
) As DirectoryInfo
public DirectoryInfo CreateSubdirectory(
    string path,
    DirectorySecurity directorySecurity
)
public:
DirectoryInfo^ CreateSubdirectory(
    String^ path,
    DirectorySecurity^ directorySecurity
)
member CreateSubdirectory :
        path:string *
        directorySecurity:DirectorySecurity -> DirectoryInfo

参数

path
类型： System String
指定的路径。它不能是另一个磁盘卷或“统一命名约定”(UNC) 名称。 指定的路径。它不能是另一个磁盘卷或“统一命名约定”(UNC) 名称。
directorySecurity
类型： System.Security.AccessControl DirectorySecurity
要应用的安全性。

返回值

类型： System.IO DirectoryInfo
在 path 中指定的最后一个目录。
异常 | 条件
ArgumentException | path 未指定有效文件路径或包含无效的 DirectoryInfo 字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | 不能创建子目录。 - 或 - 已有文件或目录具有 path 所指定的名称。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。指定的路径、文件名或两者都太长。
SecurityException | 调用方不具有创建目录的代码访问权限。 - 或 - 调用方不具有读取返回的 DirectoryInfo 对象描述的目录的代码访问权限。这可能在 path 参数描述现有目录时发生。 调用方不具有读取返回的 DirectoryInfo 对象描述的目录的代码访问权限。这可能在 path 参数描述现有目录时发生。
NotSupportedException | path 包含一个冒号字符 (:)，该冒号字符不是驱动器标签（“C:\”）的一部分。

除非 path 的某些部分无效，否则，将创建在 path 中指定的所有目录。path 参数指定目录路径，而不是文件路径。如果子目录已经存在，则此方法不执行任何操作。 除非 path 的某些部分无效，否则，将创建在 path 中指定的所有目录。path 参数指定目录路径，而不是文件路径。如果子目录已经存在，则此方法不执行任何操作。 除非 path 的某些部分无效，否则，将创建在 path 中指定的所有目录。path 参数指定目录路径，而不是文件路径。如果子目录已经存在，则此方法不执行任何操作。

说明 说明

路径名称限制为 248 个字符。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
CreateSubdirectory 重载
System.IO 命名空间


DirectoryInfo ..::.Delete 方法

DirectoryInfo
.
.
::
.
Delete 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

从路径中删除 DirectoryInfo 及其内容。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.Delete 方法

DirectoryInfo
.
.
::
.
Delete 方法
DirectoryInfo 类

如果此 DirectoryInfo 为空，则删除它。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Delete
public override void Delete()
public:
virtual void Delete() override
abstract Delete : unit -> unit
override Delete : unit -> unit
异常 | 条件
UnauthorizedAccessException | 目录中包含一个只读文件。
DirectoryNotFoundException | 此 DirectoryInfo 对象描述的目录不存在或未能找到。
IOException | 目录不为空。 - 或 - 该目录为应用程序的当前工作目录。
SecurityException | 调用方没有所要求的权限。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例在尝试删除一个非空目录时引发异常。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di1 As DirectoryInfo = New DirectoryInfo("c:\MyDir")

        Try
            ' Create the directories.
            di1.Create()
            di1.CreateSubdirectory("temp")

            'This operation will not be allowed because there are subdirectories.
            Console.WriteLine("I am about to attempt to delete {0}", di1.Name)
            di1.Delete()
            Console.WriteLine("The Delete operation was successful, which was unexpected.")

        Catch
            Console.WriteLine("The Delete operation was unsuccessful, as expected.")
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di1 = new DirectoryInfo(@"c:\MyDir");

        try
        {
            // Create the directories.
            di1.Create();
            di1.CreateSubdirectory("temp");

            //This operation will not be allowed because there are subdirectories.
            Console.WriteLine("I am about to attempt to delete {0}", di1.Name);
            di1.Delete();
            Console.WriteLine("The Delete operation was successful, which was unexpected.");
        }
        catch (Exception)
        {
            Console.WriteLine("The Delete operation failed as expected.");
        }
        finally {}
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Specify the directories you want to manipulate.
   DirectoryInfo^ di1 = gcnew DirectoryInfo( "c:\\MyDir" );
   try
   {

      // Create the directories.
      di1->Create();
      di1->CreateSubdirectory( "temp" );

      //This operation will not be allowed because there are subdirectories.
      Console::WriteLine( "I am about to attempt to delete {0}", di1->Name );
      di1->Delete();
      Console::WriteLine( "The Delete operation was successful, which was unexpected." );
   }
   catch ( Exception^ )
   {
      Console::WriteLine( "The Delete operation failed as expected." );
   }

}
  • FileIOPermission

    用于写入目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
Delete 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.Delete 方法 (Boolean)

DirectoryInfo
.
.
::
.
Delete 方法 (Boolean)
DirectoryInfo 类

删除 DirectoryInfo 的此实例，指定是否删除子目录和文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Delete ( _
    recursive As Boolean _
)
public void Delete(
    bool recursive
)
public:
void Delete(
    bool recursive
)
member Delete :
        recursive:bool -> unit

参数

recursive
类型： System Boolean
若为 true，则删除此目录、其子目录以及所有文件；否则为 false。
异常 | 条件
UnauthorizedAccessException | 目录中包含一个只读文件。
DirectoryNotFoundException | 此 DirectoryInfo 对象描述的目录不存在或未能找到。
IOException | 目录为只读。 - 或 - 此目录包含一个或多个文件或子目录，且 recursive 为 false。 - 或 - 该目录为应用程序的当前工作目录。
SecurityException | 调用方没有所要求的权限。

如果 DirectoryInfo 没有文件或子目录，则即使 recursive 为 false，此方法也会删除 DirectoryInfo。尝试在 recursive 为 false 时删除不为空的 DirectoryInfo 将引发 IOException。 如果 DirectoryInfo 没有文件或子目录，则即使 recursive 为 false，此方法也会删除 DirectoryInfo。尝试在 recursive 为 false 时删除不为空的 DirectoryInfo 将引发 IOException。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何删除目录。由于该目录被移除，所以要先注释掉 Delete 行，测试目录是否存在。然后取消代码中该行的注释，测试目录是否成功移除。 下面的示例演示如何删除目录。由于该目录被移除，所以要先注释掉 Delete 行，测试目录是否存在。然后取消代码中该行的注释，测试目录是否成功移除。 下面的示例演示如何删除目录。由于该目录被移除，所以要先注释掉 Delete 行，测试目录是否存在。然后取消代码中该行的注释，测试目录是否成功移除。

Imports System
Imports System.IO

Public Class DeleteTest

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("TempDir")

        ' Create the directory only if it does not already exist.
        If di.Exists = False Then
            di.Create()
        End If

        Dim dis As DirectoryInfo = di.CreateSubdirectory("SubDir")
        ' Create a subdirectory in the directory just created.

        ' Process that directory as required.
        ' ...

        ' Delete the subdirectory. The true indicates that if subdirectories
        ' or files are in this directory, they are to be deleted as well.
        dis.Delete(True)

        ' Delete the directory.
        di.Delete(True)
    End Sub 'Main
End Class 'DeleteTest

using System;
using System.IO;

public class DeleteTest
{
    public static void Main()
    {

        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("TempDir");

        // Create the directory only if it does not already exist.
        if (di.Exists == false)
            di.Create();

        // Create a subdirectory in the directory just created.
        DirectoryInfo dis = di.CreateSubdirectory("SubDir");

        // Process that directory as required.
        // ...

        // Delete the subdirectory. The true indicates that if subdirectories
        // or files are in this directory, they are to be deleted as well.
        dis.Delete(true);

        // Delete the directory.
        di.Delete(true);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "TempDir" );

   // Create the directory only if it does not already exist.
   if (  !di->Exists )
      di->Create();

   // Create a subdirectory in the directory just created.
   DirectoryInfo^ dis = di->CreateSubdirectory( "SubDir" );

   // Process that directory as required.
   // ...
   // Delete the subdirectory. The true indicates that if subdirectories
   // or files are in this directory, they are to be deleted as well.
   dis->Delete( true );

   // Delete the directory.
   di->Delete( true );
}
  • FileIOPermissionAccess

    要删除的 DirectoryInfo 和子目录的写入权限所需的写标志。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
Delete 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.EnumerateDirectories 方法

DirectoryInfo
.
.
::
.
EnumerateDirectories 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

返回当前目录中的目录信息的可枚举集合。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.EnumerateDirectories 方法

DirectoryInfo
.
.
::
.
EnumerateDirectories 方法
DirectoryInfo 类

返回当前目录中的目录信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateDirectories As IEnumerable(Of DirectoryInfo)
public IEnumerable<DirectoryInfo> EnumerateDirectories()
public:
IEnumerable<DirectoryInfo^>^ EnumerateDirectories()
member EnumerateDirectories : unit -> IEnumerable<DirectoryInfo>

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
DirectoryInfo
>
)
>
)

当前目录中的目录的可枚举集合。
异常 | 条件
DirectoryNotFoundException | 封装在 DirectoryInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories时，您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合；当您使用 GetDirectories 时，则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。 EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories时，您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合；当您使用 GetDirectories 时，则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。

下面的示例枚举在 C:\Program Files 目录中的子目录，并使用 LINQ 查询通过检查 CreationTimeUtc 属性的值返回在 2009 年之前创建的所有目录的名称。

如果您只需要子目录的名称，则使用静态 Directory 类以获得更好的性能。有关示例，请参见 EnumerateDirectories(String) 方法。 如果您只需要子目录的名称，则使用静态 Directory 类以获得更好的性能。有关示例，请参见 EnumerateDirectories(String) 方法。

' Create a DirectoryInfo of the Program Files directory.
Dim dirPrograms As New DirectoryInfo("c:\program files")

Dim StartOf2009 As New DateTime(2009, 1, 1)

' LINQ query for all directories created before 2009.
Dim dirs = From dir In dirPrograms.EnumerateDirectories()
            Where dir.CreationTimeUtc < StartOf2009

' Show results.
For Each di As DirectoryInfo In dirs
    Console.WriteLine("{0}", di.Name)
Next

// Create a DirectoryInfo of the Program Files directory.
DirectoryInfo dirPrograms = new DirectoryInfo(@"c:\program files");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all directories created before 2009.
var dirs = from dir in dirPrograms.EnumerateDirectories()
            where dir.CreationTimeUtc < StartOf2009
            select new
            {
                ProgDir = dir,
            };
// Show results.
foreach (var di in dirs)
{
    Console.WriteLine("{0}", di.ProgDir.Name);
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateDirectories 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateDirectories 方法 (String)

DirectoryInfo
.
.
::
.
EnumerateDirectories 方法 (String)
DirectoryInfo 类

返回与指定的搜索模式匹配的目录信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateDirectories ( _
    searchPattern As String _
) As IEnumerable(Of DirectoryInfo)
public IEnumerable<DirectoryInfo> EnumerateDirectories(
    string searchPattern
)
public:
IEnumerable<DirectoryInfo^>^ EnumerateDirectories(
    String^ searchPattern
)
member EnumerateDirectories :
        searchPattern:string -> IEnumerable<DirectoryInfo>

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有目录。 搜索字符串。默认模式为“*”，该模式返回所有目录。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
DirectoryInfo
>
)
>
)

与 searchPattern 匹配的目录的可枚举集合。
异常 | 条件
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 封装在 DirectoryInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories时，您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合；当您使用 GetDirectories 时，则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。 EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories时，您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合；当您使用 GetDirectories 时，则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateDirectories 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateDirectories 方法 (String, SearchOption)

DirectoryInfo
.
.
::
.
EnumerateDirectories 方法 (String, SearchOption)
DirectoryInfo 类

返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateDirectories ( _
    searchPattern As String, _
    searchOption As SearchOption _
) As IEnumerable(Of DirectoryInfo)
public IEnumerable<DirectoryInfo> EnumerateDirectories(
    string searchPattern,
    SearchOption searchOption
)
public:
IEnumerable<DirectoryInfo^>^ EnumerateDirectories(
    String^ searchPattern,
    SearchOption searchOption
)
member EnumerateDirectories :
        searchPattern:string *
        searchOption:SearchOption -> IEnumerable<DirectoryInfo>

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有目录。 搜索字符串。默认模式为“*”，该模式返回所有目录。
searchOption
类型： System.IO SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。 用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
DirectoryInfo
>
)
>
)

与 searchPattern 和 searchOption 匹配的目录的可枚举集合。
异常 | 条件
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | 封装在 DirectoryInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories时，您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合；当您使用 GetDirectories 时，则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。 EnumerateDirectories 和 GetDirectories 方法不同点在于：当使用 EnumerateDirectories时，您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合；当您使用 GetDirectories 时，则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateDirectories 可能更高效。

下面的示例从指定目录开始使用此方法和 EnumerateFiles 方法为扩展名为 .txt 的文件枚举目录和文件。然后，使用 ReadLines 方法读取该文件的每一行并将其显示（如果它包含单词 "Microsoft"）。 下面的示例从指定目录开始使用此方法和 EnumerateFiles 方法为扩展名为 .txt 的文件枚举目录和文件。然后，使用 ReadLines 方法读取该文件的每一行并将其显示（如果它包含单词 "Microsoft"）。

Imports System
Imports System.IO

Class Program
    Private Shared Sub Main(ByVal args As String())
        ' Create a DirectoryInfo object of the starting directory.
        Dim diTop As New DirectoryInfo("d:\")
        Try
            ' Enumerate the files just in the top directory.
            For Each fi In diTop.EnumerateFiles()
                Try
                    ' Display each file over 10 MB;
                    If fi.Length > 10000000 Then
                        Console.WriteLine("{0}" & vbTab & vbTab & "{1}",
                        fi.FullName, fi.Length.ToString("N0"))
                    End If
                ' Catch unauthorized access to a file.
                Catch UnAuthTop As UnauthorizedAccessException
                    Console.WriteLine("{0}", UnAuthTop.Message)
                End Try
            Next
            ' Enumerate all subdirectories.
            For Each di In diTop.EnumerateDirectories("*",
                                SearchOption.AllDirectories)
                Try
                    ' Enumerate each file in each subdirectory.
                    For Each fi In di.EnumerateFiles("*",
                                SearchOption.AllDirectories)
                        Try
                            ' // Display each file over 10 MB;
                            If fi.Length > 10000000 Then
                                Console.WriteLine("{0}" & vbTab &
                                vbTab & "{1}",
                                fi.FullName, fi.Length.ToString("N0"))
                            End If
                        ' Catch unauthorized access to a file.
                        Catch UnAuthFile As UnauthorizedAccessException
                            Console.WriteLine("UnAuthFile: {0}",
                                                UnAuthFile.Message)
                        End Try
                    Next
                ' Catch unauthorized access to a subdirectory.
                Catch UnAuthSubDir As UnauthorizedAccessException
                    Console.WriteLine("UnAuthSubDir: {0}",
                                            UnAuthSubDir.Message)
                End Try
            Next
        ' Catch error in directory path.
        Catch DirNotFound As DirectoryNotFoundException
            Console.WriteLine("{0}", DirNotFound.Message)

        ' Catch unauthorized access to a first tier directory.
        Catch UnAuthDir As UnauthorizedAccessException
            Console.WriteLine("UnAuthDir: {0}", UnAuthDir.Message)

        End Try
    End Sub
End Class

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // Create a DirectoryInfo object of the starting directory.
        DirectoryInfo diTop = new DirectoryInfo(@"d:\");
        try
        {
            // Enumerate the files just in the top directory.
            foreach (var fi in diTop.EnumerateFiles())
            {
                try
                {
                    // Display each file over 10 MB;
                    if (fi.Length > 10000000)
                    {
                        Console.WriteLine("{0}\t\t{1}", fi.FullName,
                                        fi.Length.ToString("N0"));
                    }
                }
                // Catch unauthorized access to a file.
                catch (UnauthorizedAccessException UnAuthTop)
                {
                    Console.WriteLine("{0}", UnAuthTop.Message);
                }
            }
            // Enumerate all subdirectories.
            foreach (var di in diTop.EnumerateDirectories("*",
                                    SearchOption.AllDirectories))
            {
                try
                {
                    // Enumerate each file in each subdirectory.
                    foreach (var fi in di.EnumerateFiles("*",
                                    SearchOption.AllDirectories))
                    {
                        try
                        {
                            // Display each file over 10 MB;
                            if (fi.Length > 10000000)
                            {
                                Console.WriteLine("{0}\t\t{1}",
                                  fi.FullName, fi.Length.ToString("N0"));
                            }
                        }
                         // Catch unauthorized access to a file.
                        catch (UnauthorizedAccessException UnAuthFile)
                        {
                            Console.WriteLine("UnAuthFile: {0}",
                                            UnAuthFile.Message);
                        }
                    }
                }
                // Catch unauthorized access to a subdirectory.
                catch (UnauthorizedAccessException UnAuthSubDir)
                {
                    Console.WriteLine("UnAuthSubDir: {0}",
                                            UnAuthSubDir.Message);
                }
            }
        }
        // Catch error in directory path.
        catch (DirectoryNotFoundException DirNotFound)
        {
            Console.WriteLine("{0}", DirNotFound.Message);

        }
        // Catch unauthorized access to a first tier directory.
        catch (UnauthorizedAccessException UnAuthDir)
        {
            Console.WriteLine("UnAuthDir: {0}", UnAuthDir.Message);

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateDirectories 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateFiles 方法

DirectoryInfo
.
.
::
.
EnumerateFiles 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

返回当前目录中的文件信息的可枚举集合。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.EnumerateFiles 方法

DirectoryInfo
.
.
::
.
EnumerateFiles 方法
DirectoryInfo 类

返回当前目录中的文件信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateFiles As IEnumerable(Of FileInfo)
public IEnumerable<FileInfo> EnumerateFiles()
public:
IEnumerable<FileInfo^>^ EnumerateFiles()
member EnumerateFiles : unit -> IEnumerable<FileInfo>

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
FileInfo
>
)
>
)

当前目录中的文件的可枚举集合。
异常 | 条件
DirectoryNotFoundException | 封装在 FileInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFiles 时，则必须等待整个 FileInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFiles 时，则必须等待整个 FileInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

下面的示例枚举在指定目录中的文件，并使用 LINQ 查询通过检查 CreationTimeUtc 属性的值返回在 2009 年之前创建的所有文件的名称。

如果您只需要该文件的名称，则使用静态 Directory 类以获得更好的性能。有关示例，请参见 Directory..::.EnumerateFiles(String) 方法。 如果您只需要该文件的名称，则使用静态 Directory 类以获得更好的性能。有关示例，请参见 Directory..::.EnumerateFiles(String) 方法。

' Create a DirectoryInfo of the directory of the files to enumerate.
Dim DirInfo As New DirectoryInfo("\\archives1\library\")

Dim StartOf2009 As New DateTime(2009, 1, 1)

' LINQ query for all files created before 2009.
Dim files = From dir In DirInfo.EnumerateFiles()
            Where dir.CreationTimeUtc < StartOf2009

' Show results.
For Each fi As FileInfo In files
    Console.WriteLine("{0}", fi.Name)
Next

 // Create a DirectoryInfo of the directory of the files to enumerate.
DirectoryInfo DirInfo = new DirectoryInfo(@"\\archives1\library\");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all files created before 2009.
var dirs = from dir in DirInfo.EnumerateFiles()
           where DirInfo.CreationTimeUtc < StartOf2009
           select dir;

// Show results.
foreach (var dir in dirs)
{
    Console.WriteLine("{0}", dir.Name);
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateFiles 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateFiles 方法 (String)

DirectoryInfo
.
.
::
.
EnumerateFiles 方法 (String)
DirectoryInfo 类

返回与搜索模式匹配的文件信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateFiles ( _
    searchPattern As String _
) As IEnumerable(Of FileInfo)
public IEnumerable<FileInfo> EnumerateFiles(
    string searchPattern
)
public:
IEnumerable<FileInfo^>^ EnumerateFiles(
    String^ searchPattern
)
member EnumerateFiles :
        searchPattern:string -> IEnumerable<FileInfo>

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有文件。 搜索字符串。默认模式为“*”，该模式返回所有文件。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
FileInfo
>
)
>
)

与 searchPattern 匹配的文件的可枚举集合。
异常 | 条件
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 封装在 FileInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFiles 时，则必须等待整个 FileInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFiles 时，则必须等待整个 FileInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateFiles 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateFiles 方法 (String, SearchOption)

DirectoryInfo
.
.
::
.
EnumerateFiles 方法 (String, SearchOption)
DirectoryInfo 类

返回与指定的搜索模式和搜索子目录选项匹配的文件信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateFiles ( _
    searchPattern As String, _
    searchOption As SearchOption _
) As IEnumerable(Of FileInfo)
public IEnumerable<FileInfo> EnumerateFiles(
    string searchPattern,
    SearchOption searchOption
)
public:
IEnumerable<FileInfo^>^ EnumerateFiles(
    String^ searchPattern,
    SearchOption searchOption
)
member EnumerateFiles :
        searchPattern:string *
        searchOption:SearchOption -> IEnumerable<FileInfo>

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有文件。 搜索字符串。默认模式为“*”，该模式返回所有文件。
searchOption
类型： System.IO SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。 用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
FileInfo
>
)
>
)

与 searchPattern 和 searchOption 匹配的文件的可枚举集合。
异常 | 条件
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | 封装在 FileInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFiles 时，则必须等待整个 FileInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。 EnumerateFiles 和 GetFiles 方法不同点在于：当使用 EnumerateFiles时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFiles 时，则必须等待整个 FileInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFiles 可能更高效。

下面的示例从指定目录开始使用此方法和 EnumerateDirectories 方法为扩展名为 .txt 的文件枚举目录和文件。然后，使用 ReadLines 方法读取该文件的每一行并将其显示（如果它包含单词 "Microsoft"）。 下面的示例从指定目录开始使用此方法和 EnumerateDirectories 方法为扩展名为 .txt 的文件枚举目录和文件。然后，使用 ReadLines 方法读取该文件的每一行并将其显示（如果它包含单词 "Microsoft"）。

如果您有权限访问搜索中的所有文件，您可以获得与 LINQ 查询相同的结果。有关示例，请参见 Directory..::.EnumerateFiles(String, String, SearchOption) 方法。 如果您有权限访问搜索中的所有文件，您可以获得与 LINQ 查询相同的结果。有关示例，请参见 Directory..::.EnumerateFiles(String, String, SearchOption) 方法。

Imports System
Imports System.IO

Class Program
    Private Shared Sub Main(ByVal args As String())
        ' Create a DirectoryInfo object of the starting directory.
        Dim diTop As New DirectoryInfo("d:\")
        Try
            ' Enumerate the files just in the top directory.
            For Each fi In diTop.EnumerateFiles()
                Try
                    ' Display each file over 10 MB;
                    If fi.Length > 10000000 Then
                        Console.WriteLine("{0}" & vbTab & vbTab & "{1}",
                        fi.FullName, fi.Length.ToString("N0"))
                    End If
                ' Catch unauthorized access to a file.
                Catch UnAuthTop As UnauthorizedAccessException
                    Console.WriteLine("{0}", UnAuthTop.Message)
                End Try
            Next
            ' Enumerate all subdirectories.
            For Each di In diTop.EnumerateDirectories("*",
                                SearchOption.AllDirectories)
                Try
                    ' Enumerate each file in each subdirectory.
                    For Each fi In di.EnumerateFiles("*",
                                SearchOption.AllDirectories)
                        Try
                            ' // Display each file over 10 MB;
                            If fi.Length > 10000000 Then
                                Console.WriteLine("{0}" & vbTab &
                                vbTab & "{1}",
                                fi.FullName, fi.Length.ToString("N0"))
                            End If
                        ' Catch unauthorized access to a file.
                        Catch UnAuthFile As UnauthorizedAccessException
                            Console.WriteLine("UnAuthFile: {0}",
                                                UnAuthFile.Message)
                        End Try
                    Next
                ' Catch unauthorized access to a subdirectory.
                Catch UnAuthSubDir As UnauthorizedAccessException
                    Console.WriteLine("UnAuthSubDir: {0}",
                                            UnAuthSubDir.Message)
                End Try
            Next
        ' Catch error in directory path.
        Catch DirNotFound As DirectoryNotFoundException
            Console.WriteLine("{0}", DirNotFound.Message)

        ' Catch unauthorized access to a first tier directory.
        Catch UnAuthDir As UnauthorizedAccessException
            Console.WriteLine("UnAuthDir: {0}", UnAuthDir.Message)

        End Try
    End Sub
End Class

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // Create a DirectoryInfo object of the starting directory.
        DirectoryInfo diTop = new DirectoryInfo(@"d:\");
        try
        {
            // Enumerate the files just in the top directory.
            foreach (var fi in diTop.EnumerateFiles())
            {
                try
                {
                    // Display each file over 10 MB;
                    if (fi.Length > 10000000)
                    {
                        Console.WriteLine("{0}\t\t{1}", fi.FullName,
                                        fi.Length.ToString("N0"));
                    }
                }
                // Catch unauthorized access to a file.
                catch (UnauthorizedAccessException UnAuthTop)
                {
                    Console.WriteLine("{0}", UnAuthTop.Message);
                }
            }
            // Enumerate all subdirectories.
            foreach (var di in diTop.EnumerateDirectories("*",
                                    SearchOption.AllDirectories))
            {
                try
                {
                    // Enumerate each file in each subdirectory.
                    foreach (var fi in di.EnumerateFiles("*",
                                    SearchOption.AllDirectories))
                    {
                        try
                        {
                            // Display each file over 10 MB;
                            if (fi.Length > 10000000)
                            {
                                Console.WriteLine("{0}\t\t{1}",
                                  fi.FullName, fi.Length.ToString("N0"));
                            }
                        }
                         // Catch unauthorized access to a file.
                        catch (UnauthorizedAccessException UnAuthFile)
                        {
                            Console.WriteLine("UnAuthFile: {0}",
                                            UnAuthFile.Message);
                        }
                    }
                }
                // Catch unauthorized access to a subdirectory.
                catch (UnauthorizedAccessException UnAuthSubDir)
                {
                    Console.WriteLine("UnAuthSubDir: {0}",
                                            UnAuthSubDir.Message);
                }
            }
        }
        // Catch error in directory path.
        catch (DirectoryNotFoundException DirNotFound)
        {
            Console.WriteLine("{0}", DirNotFound.Message);

        }
        // Catch unauthorized access to a first tier directory.
        catch (UnauthorizedAccessException UnAuthDir)
        {
            Console.WriteLine("UnAuthDir: {0}", UnAuthDir.Message);

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateFiles 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateFileSystemInfos 方法

DirectoryInfo
.
.
::
.
EnumerateFileSystemInfos 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

返回当前目录中的文件系统信息的可枚举集合。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.EnumerateFileSystemInfos 方法

DirectoryInfo
.
.
::
.
EnumerateFileSystemInfos 方法
DirectoryInfo 类

返回当前目录中的文件系统信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateFileSystemInfos As IEnumerable(Of FileSystemInfo)
public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos()
public:
IEnumerable<FileSystemInfo^>^ EnumerateFileSystemInfos()
member EnumerateFileSystemInfos : unit -> IEnumerable<FileSystemInfo>

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
FileSystemInfo
>
)
>
)

当前目录中的文件系统信息的可枚举集合。
异常 | 条件
DirectoryNotFoundException | 封装在 FileSystemInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

EnumerateFileSystemInfos 和 GetFileSystemInfos 方法不同点在于：当使用 EnumerateFileSystemInfos时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFileSystemInfos 时，则必须等待整个 FileSystemInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFileSystemInfos 可能更高效。 EnumerateFileSystemInfos 和 GetFileSystemInfos 方法不同点在于：当使用 EnumerateFileSystemInfos时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFileSystemInfos 时，则必须等待整个 FileSystemInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFileSystemInfos 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateFileSystemInfos 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateFileSystemInfos 方法 (String)

DirectoryInfo
.
.
::
.
EnumerateFileSystemInfos 方法 (String)
DirectoryInfo 类

返回与指定的搜索模式匹配的文件系统信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateFileSystemInfos ( _
    searchPattern As String _
) As IEnumerable(Of FileSystemInfo)
public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos(
    string searchPattern
)
public:
IEnumerable<FileSystemInfo^>^ EnumerateFileSystemInfos(
    String^ searchPattern
)
member EnumerateFileSystemInfos :
        searchPattern:string -> IEnumerable<FileSystemInfo>

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有文件和目录。 搜索字符串。默认模式为“*”，该模式返回所有文件和目录。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
FileSystemInfo
>
)
>
)

与 searchPattern 匹配的文件系统信息对象的可枚举集合。
异常 | 条件
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 封装在 FileSystemInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

EnumerateFileSystemInfos 和 GetFileSystemInfos 方法不同点在于：当使用 EnumerateFileSystemInfos时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFileSystemInfos 时，则必须等待整个 FileSystemInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFileSystemInfos 可能更高效。 EnumerateFileSystemInfos 和 GetFileSystemInfos 方法不同点在于：当使用 EnumerateFileSystemInfos时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFileSystemInfos 时，则必须等待整个 FileSystemInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFileSystemInfos 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateFileSystemInfos 重载
System.IO 命名空间


DirectoryInfo ..::.EnumerateFileSystemInfos 方法 (String, SearchOption)

DirectoryInfo
.
.
::
.
EnumerateFileSystemInfos 方法 (String, SearchOption)
DirectoryInfo 类

返回与指定的搜索模式和搜索子目录选项匹配的文件系统信息的可枚举集合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function EnumerateFileSystemInfos ( _
    searchPattern As String, _
    searchOption As SearchOption _
) As IEnumerable(Of FileSystemInfo)
public IEnumerable<FileSystemInfo> EnumerateFileSystemInfos(
    string searchPattern,
    SearchOption searchOption
)
public:
IEnumerable<FileSystemInfo^>^ EnumerateFileSystemInfos(
    String^ searchPattern,
    SearchOption searchOption
)
member EnumerateFileSystemInfos :
        searchPattern:string *
        searchOption:SearchOption -> IEnumerable<FileSystemInfo>

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有文件或目录。 搜索字符串。默认模式为“*”，该模式返回所有文件或目录。
searchOption
类型： System.IO SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。 用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
FileSystemInfo
>
)
>
)

与 searchPattern 和 searchOption 匹配的文件系统信息对象的可枚举集合。
异常 | 条件
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | 封装在 FileSystemInfo 对象中的路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

EnumerateFileSystemInfos 和 GetFileSystemInfos 方法不同点在于：当使用 EnumerateFileSystemInfos时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFileSystemInfos 时，则必须等待整个 FileSystemInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFileSystemInfos 可能更高效。 EnumerateFileSystemInfos 和 GetFileSystemInfos 方法不同点在于：当使用 EnumerateFileSystemInfos时，您可以在返回整个集合之前开始枚举 FileInfo 对象的集合；当您使用 GetFileSystemInfos 时，则必须等待整个 FileSystemInfo 数组都被返回后才能访问数组。因此，在处理许多文件和目录时，EnumerateFileSystemInfos 可能更高效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
EnumerateFileSystemInfos 重载
System.IO 命名空间


DirectoryInfo ..::.GetAccessControl 方法

DirectoryInfo
.
.
::
.
GetAccessControl 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

获取当前目录的访问控制列表 (ACL) 项。

名称 说明
页首

使用 GetAccessControl 方法来检索当前文件的访问控制列表 (ACL) 项。

有关更多信息，请参见如何：添加或移除访问控制列表项。

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.GetAccessControl 方法

DirectoryInfo
.
.
::
.
GetAccessControl 方法
DirectoryInfo 类

获取 DirectorySecurity 对象，该对象封装当前 DirectoryInfo 对象所描述的目录的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetAccessControl As DirectorySecurity
public DirectorySecurity GetAccessControl()
public:
DirectorySecurity^ GetAccessControl()
member GetAccessControl : unit -> DirectorySecurity

返回值

类型： System.Security.AccessControl DirectorySecurity
一个 DirectorySecurity 对象，该对象封装此目录的访问控制规则。
异常 | 条件
SystemException | 未能找到或修改该目录。
UnauthorizedAccessException | 当前进程不具有打开该目录的权限。
IOException | 打开目录时发生 I/O 错误。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows 2000 或更高版本。
UnauthorizedAccessException | 目录为只读。 - 或 - 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

调用此方法重载等效于调用 GetAccessControl 方法重载并指定访问控制节 AccessControlSections..::.Access | AccessControlSections..::.Owner |AccessControlSections..::.Group（在 Visual Basic 中为 AccessControlSections..::.AccessOrAccessControlSections..::.OwnerOrAccessControlSections..::.Group）。 | AccessControlSections Owner | 调用此方法重载等效于调用 GetAccessControl 方法重载并指定访问控制节 AccessControlSections..::.Access | AccessControlSections..::.Owner |AccessControlSections..::.Group（在 Visual Basic 中为 AccessControlSections..::.AccessOrAccessControlSections..::.OwnerOrAccessControlSections..::.Group）。

使用 GetAccessControl 方法检索当前文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

下面的示例使用 GetAccessControl 和 SetAccessControl 方法向目录添加访问控制列表 (ACL) 项，然后将其移除。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module DirectoryExample

    Sub Main()
        Try
            Dim DirectoryName As String = "TestDirectory"

            Console.WriteLine("Adding access control entry for " + DirectoryName)

            ' Add the access control entry to the directory.
            AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " + DirectoryName)

            ' Remove the access control entry from the directory.
            RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub

    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

int main()
{
    String^ directoryName = "TestDirectory";
    String^ accountName = "MYDOMAIN\\MyAccount";
    if (!Directory::Exists(directoryName))
    {
        Console::WriteLine("The directory {0} could not be found.",
            directoryName);
        return 0;
    }
    try
    {
        Console::WriteLine("Adding access control entry for {0}",
            directoryName);

        // Add the access control entry to the directory.
        AddDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from {0}",
            directoryName);

        // Remove the access control entry from the directory.
        RemoveDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("You are not authorised to carry" +
            " out this procedure.");
    }
    catch (System::Security::Principal::
        IdentityNotMappedException^)
    {
        Console::WriteLine("The account {0} could not be found.", accountName);
    }
}
  • FileIOPermission

    表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
GetAccessControl 重载
System.IO 命名空间


DirectoryInfo ..::.GetAccessControl 方法 (AccessControlSections)

DirectoryInfo
.
.
::
.
GetAccessControl 方法 (AccessControlSections)
DirectoryInfo 类

获取 DirectorySecurity 对象，该对象封装当前 DirectoryInfo 对象所描述的目录的指定类型的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetAccessControl ( _ includeSections As AccessControlSections _ ) As DirectorySecurity
public DirectorySecurity GetAccessControl( AccessControlSections includeSections )
public: DirectorySecurity^ GetAccessControl( AccessControlSections includeSections )
member GetAccessControl : includeSections:AccessControlSections -> DirectorySecurity
参数
includeSections
类型： System.Security.AccessControl AccessControlSections
AccessControlSections
值之一，它指定要接收的访问控制列表 (ACL) 信息的类型。
返回值
类型： System.Security.AccessControl DirectorySecurity
一个
DirectorySecurity
对象，该对象封装
path
参数所描述的文件的访问控制规则。
异常
异常类型
条件
SystemException
未能找到或修改该目录。
UnauthorizedAccessException
当前进程不具有打开该目录的权限。
IOException
打开目录时发生 I/O 错误。
PlatformNotSupportedException
当前操作系统不是 Microsoft Windows 2000 或更高版本。
UnauthorizedAccessException
目录为只读。
- 或 -
在当前平台上不支持此操作。
- 或 -
调用方没有所要求的权限。

使用 GetAccessControl 方法检索当前文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

  • FileIOPermission

    表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
GetAccessControl 重载
System.IO 命名空间


DirectoryInfo ..::.GetDirectories 方法

DirectoryInfo
.
.
::
.
GetDirectories 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

返回当前目录的子目录。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.GetDirectories 方法

DirectoryInfo
.
.
::
.
GetDirectories 方法
DirectoryInfo 类

返回当前目录的子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetDirectories As DirectoryInfo()
public DirectoryInfo[] GetDirectories()
public:
array<DirectoryInfo^>^ GetDirectories()
member GetDirectories : unit -> DirectoryInfo[]

返回值

类型：
array<
System.IO DirectoryInfo
>
[]
()
[]

DirectoryInfo 对象的数组。
异常 | 条件
DirectoryNotFoundException | 封装在 DirectoryInfo 对象中的路径无效，比如在未映射的驱动器上。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 调用方没有所要求的权限。

如果不存在子目录，该方法将返回空数组。此方法不是递归方法。 如果不存在子目录，该方法将返回空数组。此方法不是递归方法。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例检索根目录下的所有目录并显示目录的名称。

Imports System
Imports System.IO

Public Class GetDirectoriesTest

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("c:\")
        ' Get a reference to each directory in that directory.
        Dim diArr As DirectoryInfo() = di.GetDirectories()
        ' Display the names of the directories.
        Dim dri As DirectoryInfo
        For Each dri In diArr
            Console.WriteLine(dri.Name)
        Next dri
    End Sub 'Main
End Class 'GetDirectoriesTest

using System;
using System.IO;

public class GetDirectoriesTest
{
    public static void Main()
    {

        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("c:\\");

        // Get a reference to each directory in that directory.
        DirectoryInfo[] diArr = di.GetDirectories();

        // Display the names of the directories.
        foreach (DirectoryInfo dri in diArr)
            Console.WriteLine(dri.Name);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );

   // Get a reference to each directory in that directory.
   array<DirectoryInfo^>^diArr = di->GetDirectories();

   // Display the names of the directories.
   Collections::IEnumerator^ myEnum = diArr->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      DirectoryInfo^ dri = safe_cast<DirectoryInfo^>(myEnum->Current);
      Console::WriteLine( dri->Name );
   }
}
  • FileIOPermission

    允许读取目录。关联的枚举：FileIOPermissionAccess..::.Read 允许读取目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
GetDirectories 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetDirectories 方法 (String)

DirectoryInfo
.
.
::
.
GetDirectories 方法 (String)
DirectoryInfo 类

返回当前 DirectoryInfo 中、与给定搜索条件匹配的目录的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetDirectories ( _
    searchPattern As String _
) As DirectoryInfo()
public DirectoryInfo[] GetDirectories(
    string searchPattern
)
public:
array<DirectoryInfo^>^ GetDirectories(
    String^ searchPattern
)
member GetDirectories :
        searchPattern:string -> DirectoryInfo[]

参数

searchPattern
类型： System String
搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。 搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。

返回值

类型：
array<
System.IO DirectoryInfo
>
[]
()
[]

与 searchPattern 匹配的 DirectoryInfo 类型的数组。
异常 | 条件
ArgumentException | searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 封装在 DirectoryInfo 对象中的路径无效（例如，在未映射的驱动器上）。
UnauthorizedAccessException | 调用方没有所要求的权限。

允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。 允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。 允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。

字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。 字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。

如果不存在子目录，或不存在与 searchPattern 参数匹配的子目录，此方法将返回一个空数组。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例对路径中包含指定字母的目录进行计数。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\")

        Try
            'Get only subdirectories that contain the letter "p."
            Dim dirs As DirectoryInfo() = di.GetDirectories("*p*")
            Console.WriteLine("The number of directories containing the letter p is {0}.", dirs.Length)
            Dim diNext As DirectoryInfo
            For Each diNext In dirs
                Console.WriteLine("The number of files in {0} is {1}", diNext, _
                 diNext.GetFiles().Length)
            Next

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            DirectoryInfo di = new DirectoryInfo(@"c:\");

            // Get only subdirectories that contain the letter "p."
            DirectoryInfo[] dirs = di.GetDirectories("*p*");
            Console.WriteLine("The number of directories containing the letter p is {0}.", dirs.Length);

            foreach (DirectoryInfo diNext in dirs)
            {
                Console.WriteLine("The number of files in {0} is {1}", diNext,
                    diNext.GetFiles().Length);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );

      // Get only subdirectories that contain the letter "p."
      array<DirectoryInfo^>^dirs = di->GetDirectories( "*p*" );
      Console::WriteLine( "The number of directories containing the letter p is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         DirectoryInfo^ diNext = safe_cast<DirectoryInfo^>(myEnum->Current);
         Console::WriteLine( "The number of files in {0} is {1}", diNext, diNext->GetFiles()->Length );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
GetDirectories 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetDirectories 方法 (String, SearchOption)

DirectoryInfo
.
.
::
.
GetDirectories 方法 (String, SearchOption)
DirectoryInfo 类

返回当前 DirectoryInfo 中与给定的搜索条件匹配并使用某个值确定是否在子目录中搜索的目录的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetDirectories ( _
    searchPattern As String, _
    searchOption As SearchOption _
) As DirectoryInfo()
public DirectoryInfo[] GetDirectories(
    string searchPattern,
    SearchOption searchOption
)
public:
array<DirectoryInfo^>^ GetDirectories(
    String^ searchPattern,
    SearchOption searchOption
)
member GetDirectories :
        searchPattern:string *
        searchOption:SearchOption -> DirectoryInfo[]

参数

searchPattern
类型： System String
搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。 搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。
searchOption
类型： System.IO SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。

返回值

类型：
array<
System.IO DirectoryInfo
>
[]
()
[]

与 searchPattern 匹配的 DirectoryInfo 类型的数组。
异常 | 条件
ArgumentException | searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | 封装在 DirectoryInfo 对象中的路径无效（例如，在未映射的驱动器上）。
UnauthorizedAccessException | 调用方没有所要求的权限。

允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。 允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。 允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。

字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。 字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。

如果不存在子目录，或不存在与 searchPattern 参数匹配的子目录，此方法将返回一个空数组。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例列出了“c:\”中以字母“c”开头的所有目录和文件。

Imports System
Imports System.IO

Class App
    Public Shared Sub Main()
        ' Specify the directory you want to manipulate.
        Dim path As String = "c:\\"
        Dim searchPattern As String = "c*"

        Dim di As DirectoryInfo = New DirectoryInfo(path)
        Dim directories() As DirectoryInfo = _
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly)

        Dim files() As FileInfo = _
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly)

        Console.WriteLine( _
            "Directories that begin with the letter 'c' in {0}", path)
        Dim dir As DirectoryInfo
        For Each dir In directories
            Console.WriteLine( _
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime)
        Next dir

        Console.WriteLine()
        Console.WriteLine( _
            "Files that begin with the letter 'c' in {0}", path)
        Dim file As FileInfo
        For Each file In files
            Console.WriteLine( _
                "{0,-25} {1,25}", file.Name, file.LastWriteTime)
        Next file
    End Sub
End Class

using System;
using System.IO;

class App
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\";
        string searchPattern = "c*";

        DirectoryInfo di = new DirectoryInfo(path);
        DirectoryInfo[] directories =
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);

        FileInfo[] files =
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);

        Console.WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        foreach (DirectoryInfo dir in directories)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
        }

        Console.WriteLine();
        Console.WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        foreach (FileInfo file in files)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", file.Name, file.LastWriteTime);
        }
    } // Main()
} // App()

using namespace System;
using namespace System::IO;

ref class App
{
public:
    static void Main()
    {
        // Specify the directory you want to manipulate.
        String^ path = "c:\\";
        String^ searchPattern = "c*";

        DirectoryInfo^ di = gcnew DirectoryInfo(path);
        array<DirectoryInfo^>^ directories =
            di->GetDirectories(searchPattern, SearchOption::TopDirectoryOnly);

        array<FileInfo^>^ files =
            di->GetFiles(searchPattern, SearchOption::TopDirectoryOnly);

        Console::WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        for each (DirectoryInfo^ dir in directories)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", dir->FullName, dir->LastWriteTime);
        }

        Console::WriteLine();
        Console::WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        for each (FileInfo^ file in files)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", file->Name, file->LastWriteTime);
        }
    } // Main()
}; // App()

int main()
{
    App::Main();
}
  • FileIOPermission

    用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
GetDirectories 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetFiles 方法

DirectoryInfo
.
.
::
.
GetFiles 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

返回当前目录的文件列表。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.GetFiles 方法

DirectoryInfo
.
.
::
.
GetFiles 方法
DirectoryInfo 类

返回当前目录的文件列表。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetFiles As FileInfo()
public FileInfo[] GetFiles()
public:
array<FileInfo^>^ GetFiles()
member GetFiles : unit -> FileInfo[]

返回值

类型：
array<
System.IO FileInfo
>
[]
()
[]

FileInfo 类型的数组。
异常 | 条件
DirectoryNotFoundException | 该路径无效，比如在未映射的驱动器上。

如果 DirectoryInfo 中没有文件，则此方法返回一个空数组。

返回文件的名称顺序无法保证；如果需要特定排序顺序，请使用 Sort()()() 方法。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例从指定的目录检索文件。

Imports System
Imports System.IO
Public Class GetFilesTest
    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("c:\")
        ' Get a reference to each file in that directory.
        Dim fiArr As FileInfo() = di.GetFiles()
        ' Display the names of the files.
        Dim fri As FileInfo
        For Each fri In fiArr
            Console.WriteLine(fri.Name)
        Next fri
    End Sub 'Main
End Class 'GetFilesTest

using System;
using System.IO;

public class GetFilesTest
{
    public static void Main()
    {
        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("c:\\");

        // Get a reference to each file in that directory.
        FileInfo[] fiArr = di.GetFiles();

        // Display the names of the files.
        foreach (FileInfo fri in fiArr)
            Console.WriteLine(fri.Name);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );

   // Get a reference to each file in that directory.
   array<FileInfo^>^fiArr = di->GetFiles();

   // Display the names of the files.
   Collections::IEnumerator^ myEnum = fiArr->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      FileInfo^ fri = safe_cast<FileInfo^>(myEnum->Current);
      Console::WriteLine( fri->Name );
   }
}
  • FileIOPermission

    允许读取目录。关联的枚举：FileIOPermissionAccess..::.Read 允许读取目录。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
GetFiles 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetFiles 方法 (String)

DirectoryInfo
.
.
::
.
GetFiles 方法 (String)
DirectoryInfo 类

返回当前目录中与给定的搜索模式匹配的文件列表。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetFiles ( _
    searchPattern As String _
) As FileInfo()
public FileInfo[] GetFiles(
    string searchPattern
)
public:
array<FileInfo^>^ GetFiles(
    String^ searchPattern
)
member GetFiles :
        searchPattern:string -> FileInfo[]

参数

searchPattern
类型： System String
搜索字符串（如“*.txt”）。

返回值

类型：
array<
System.IO FileInfo
>
[]
()
[]

FileInfo 类型的数组。
异常 | 条件
ArgumentException | searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

如果 DirectoryInfo 中没有文件，则此方法返回一个空数组。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

返回文件的名称顺序无法保证；如果需要特定排序顺序，请使用 Sort()()() 方法。

允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。 允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。 允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。 允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。

说明 说明

在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。

以下列表显示了 searchPattern 参数的不同长度的行为：

  • “*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。

  • “*.abcd”只返回扩展名为 .abcd 的文件。

  • “*.abcde”只返回扩展名为 .abcde 的文件。

  • “*.abcdef”只返回扩展名为 .abcdef 的文件。

说明 说明

因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件名格式为“longf~1.txt”。 因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件名格式为“longf~1.txt”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例对包含指定字母的目录及文件进行计数。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim di As DirectoryInfo = New DirectoryInfo("c:\")
            'Get only subdirectories that contain the letter "p."
            Dim dirs As DirectoryInfo() = di.GetDirectories("*p*")
            Console.WriteLine("Number of directories with a p: {0}", dirs.Length)
            Dim diNext As DirectoryInfo
            ' Count all files in each subdirectory that contain the letter "e."
            For Each diNext In dirs
                Console.WriteLine("The number of files in {0} with an e is {1}", _
                 diNext, diNext.GetFiles("*e*").Length)
            Next

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            DirectoryInfo di = new DirectoryInfo(@"c:\");

            // Get only subdirectories that contain the letter "p."
            DirectoryInfo[] dirs = di.GetDirectories("*p*");

            Console.WriteLine("Number of directories with a p: {0}", dirs.Length);

            // Count all the files in each subdirectory that contain the letter "e."
            foreach (DirectoryInfo diNext in dirs)
            {
                Console.WriteLine("The number of files in {0} with an e is {1}", diNext,
                    diNext.GetFiles("*e*").Length);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );

      // Get only subdirectories that contain the letter "p."
      array<DirectoryInfo^>^dirs = di->GetDirectories( "*p*" );
      Console::WriteLine( "Number of directories with a p: {0}", dirs->Length );

      // Count all the files in each subdirectory that contain the letter S"e."
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         DirectoryInfo^ diNext = safe_cast<DirectoryInfo^>(myEnum->Current);
         Console::WriteLine( "The number of files in {0} with an e is {1}", diNext, diNext->GetFiles( "*e*" )->Length );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于访问路径并从文件和目录中进行读取。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于访问路径并从文件和目录中进行读取。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
GetFiles 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetFiles 方法 (String, SearchOption)

DirectoryInfo
.
.
::
.
GetFiles 方法 (String, SearchOption)
DirectoryInfo 类

返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetFiles ( _
    searchPattern As String, _
    searchOption As SearchOption _
) As FileInfo()
public FileInfo[] GetFiles(
    string searchPattern,
    SearchOption searchOption
)
public:
array<FileInfo^>^ GetFiles(
    String^ searchPattern,
    SearchOption searchOption
)
member GetFiles :
        searchPattern:string *
        searchOption:SearchOption -> FileInfo[]

参数

searchPattern
类型： System String
搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。 搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。
searchOption
类型： System.IO SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。

返回值

类型：
array<
System.IO FileInfo
>
[]
()
[]

FileInfo 类型的数组。
异常 | 条件
ArgumentException | searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | 路径无效（例如，在未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

如果 DirectoryInfo 中没有文件，则此方法返回一个空数组。

在 searchPattern 中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

返回文件的名称顺序无法保证；如果需要特定排序顺序，请使用 Sort()()() 方法。

允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。 允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。 允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。 允许使用通配符。例如，searchPattern 字符串“*.txt”搜索扩展名为“txt”的所有文件名称。searchPattern 字符串“s*”会搜索所有以字母“s”开头的文件名。如果 DirectoryInfo 中没有文件或没有与 searchPattern 字符串匹配的文件，则此方法返回一个空数组。

说明 说明

在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。 在 searchPattern 中使用星号通配符时（例如，“*.txt”），匹配行为会根据指定文件扩展名的长度而有所不同。文件扩展名正好是三个字符的 searchPattern 将返回扩展名为三个或更多字符的文件，其中前三个字符与 searchPattern 中指定的文件扩展名匹配。文件扩展名为一个、两个或三个以上字符的 searchPattern 仅返回扩展名长度正好与 searchPattern 中指定的文件扩展名匹配的文件。使用问号通配符字符时，此方法仅返回与指定文件扩展名匹配的文件。例如，假设目录下有两个文件“file1.txt”和“file1.txtother”，使用“file?.txt”搜索模式时只返回第一个文件，而使用“file*.txt”搜索模式时会同时返回这两个文件。

以下列表显示了 searchPattern 参数的不同长度的行为：

  • “*.abc”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。

  • “*.abcd”只返回扩展名为 .abcd 的文件。

  • “*.abcde”只返回扩展名为 .abcde 的文件。

  • “*.abcdef”只返回扩展名为 .abcdef 的文件。

说明 说明

因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件名格式为“longf~1.txt”。 因为此方法仅检查同时具有 8.3 文件名格式和长文件名格式的文件，类似“*1*.txt”的搜索模式可能会返回意外的文件名。例如，使用“*1*.txt”的搜索模式将返回“longfilename.txt”，因为等效的 8.3 文件名格式为“longf~1.txt”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例列出了“c:\”中以字母“c”开头的所有目录和文件。

Imports System
Imports System.IO

Class App
    Public Shared Sub Main()
        ' Specify the directory you want to manipulate.
        Dim path As String = "c:\\"
        Dim searchPattern As String = "c*"

        Dim di As DirectoryInfo = New DirectoryInfo(path)
        Dim directories() As DirectoryInfo = _
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly)

        Dim files() As FileInfo = _
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly)

        Console.WriteLine( _
            "Directories that begin with the letter 'c' in {0}", path)
        Dim dir As DirectoryInfo
        For Each dir In directories
            Console.WriteLine( _
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime)
        Next dir

        Console.WriteLine()
        Console.WriteLine( _
            "Files that begin with the letter 'c' in {0}", path)
        Dim file As FileInfo
        For Each file In files
            Console.WriteLine( _
                "{0,-25} {1,25}", file.Name, file.LastWriteTime)
        Next file
    End Sub
End Class

using System;
using System.IO;

class App
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\";
        string searchPattern = "c*";

        DirectoryInfo di = new DirectoryInfo(path);
        DirectoryInfo[] directories =
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);

        FileInfo[] files =
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);

        Console.WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        foreach (DirectoryInfo dir in directories)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
        }

        Console.WriteLine();
        Console.WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        foreach (FileInfo file in files)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", file.Name, file.LastWriteTime);
        }
    } // Main()
} // App()

using namespace System;
using namespace System::IO;

ref class App
{
public:
    static void Main()
    {
        // Specify the directory you want to manipulate.
        String^ path = "c:\\";
        String^ searchPattern = "c*";

        DirectoryInfo^ di = gcnew DirectoryInfo(path);
        array<DirectoryInfo^>^ directories =
            di->GetDirectories(searchPattern, SearchOption::TopDirectoryOnly);

        array<FileInfo^>^ files =
            di->GetFiles(searchPattern, SearchOption::TopDirectoryOnly);

        Console::WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        for each (DirectoryInfo^ dir in directories)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", dir->FullName, dir->LastWriteTime);
        }

        Console::WriteLine();
        Console::WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        for each (FileInfo^ file in files)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", file->Name, file->LastWriteTime);
        }
    } // Main()
}; // App()

int main()
{
    App::Main();
}
  • FileIOPermission

    用于访问路径并从文件和目录中进行读取。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于访问路径并从文件和目录中进行读取。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
GetFiles 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetFileSystemInfos 方法

DirectoryInfo
.
.
::
.
GetFileSystemInfos 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

检索表示当前目录的文件和子目录的强类型 FileSystemInfo 对象的数组。

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.GetFileSystemInfos 方法

DirectoryInfo
.
.
::
.
GetFileSystemInfos 方法
DirectoryInfo 类

返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetFileSystemInfos As FileSystemInfo()
public FileSystemInfo[] GetFileSystemInfos()
public:
array<FileSystemInfo^>^ GetFileSystemInfos()
member GetFileSystemInfos : unit -> FileSystemInfo[]

返回值

类型：
array<
System.IO FileSystemInfo
>
[]
()
[]

强类型 FileSystemInfo 项的数组。
异常 | 条件
DirectoryNotFoundException | 路径无效（例如，在未映射的驱动器上）。

如果 DirectoryInfo 中没有文件或目录，则此方法返回一个空数组。此方法不是递归方法。 如果 DirectoryInfo 中没有文件或目录，则此方法返回一个空数组。此方法不是递归方法。

对于子目录，此方法返回的 FileSystemInfo 对象可强制转换为派生类 DirectoryInfo。使用 FileSystemInfo..::.Attributes 属性返回的 FileAttributes 值可确定 FileSystemInfo 表示的是文件还是目录。 对于子目录，此方法返回的 FileSystemInfo 对象可强制转换为派生类 DirectoryInfo。使用 FileSystemInfo..::.Attributes 属性返回的 FileAttributes 值可确定 FileSystemInfo 表示的是文件还是目录。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例对指定目录下的文件及目录进行计数。

Imports System
Imports System.IO

Module DirectoryFileCount

    Dim files As Long = 0
    Dim directories As Long = 0

    Sub Main()
        Try
            Console.WriteLine("Enter the path to a directory:")

            Dim directory As String = Console.ReadLine()

            ' Create a new DirectoryInfo object.
            Dim dir As New DirectoryInfo(directory)

            If Not dir.Exists Then
                Throw New DirectoryNotFoundException("The directory does not exist.")
            End If

            ' Call the GetFileSystemInfos method.
            Dim infos As FileSystemInfo() = dir.GetFileSystemInfos()

            Console.WriteLine("Working...")

            ' Pass the result to the ListDirectoriesAndFiles
            ' method defined below.
            ListDirectoriesAndFiles(infos)

            ' Display the results to the console.
            Console.WriteLine("Directories: {0}", directories)
            Console.WriteLine("Files: {0}", files)

        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            Console.ReadLine()
        End Try

    End Sub

    Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo)
        ' Check the FSInfo parameter.
        If FSInfo Is Nothing Then
            Throw New ArgumentNullException("FSInfo")
        End If

        ' Iterate through each item.
        Dim i As FileSystemInfo
        For Each i In FSInfo
            ' Check to see if this is a DirectoryInfo object.
            If TypeOf i Is DirectoryInfo Then
                ' Add one to the directory count.
                directories += 1

                ' Cast the object to a DirectoryInfo object.
                Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)

                ' Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos())
                ' Check to see if this is a FileInfo object.
            ElseIf TypeOf i Is FileInfo Then
                ' Add one to the file count.
                files += 1
            End If
        Next i

    End Sub
End Module

using System;
using System.IO;

class DirectoryFileCount
{

    static long files = 0;
    static long directories = 0;

    static void Main()
    {
        try
        {
            Console.WriteLine("Enter the path to a directory:");

            string directory = Console.ReadLine();

            // Create a new DirectoryInfo object.
            DirectoryInfo dir = new DirectoryInfo(directory);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("The directory does not exist.");
            }

            // Call the GetFileSystemInfos method.
            FileSystemInfo[] infos = dir.GetFileSystemInfos();

            Console.WriteLine("Working...");

            // Pass the result to the ListDirectoriesAndFiles
            // method defined below.
            ListDirectoriesAndFiles(infos);

            // Display the results to the console.
            Console.WriteLine("Directories: {0}", directories);
            Console.WriteLine("Files: {0}", files);

        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {

            Console.ReadLine();
        }
    }

    static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo)
    {
        // Check the FSInfo parameter.
        if (FSInfo == null)
        {
            throw new ArgumentNullException("FSInfo");
        }

        // Iterate through each item.
        foreach (FileSystemInfo i in FSInfo)
        {
            // Check to see if this is a DirectoryInfo object.
            if (i is DirectoryInfo)
            {
                // Add one to the directory count.
                directories++;

                // Cast the object to a DirectoryInfo object.
                DirectoryInfo dInfo = (DirectoryInfo)i;

                // Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos());
            }
            // Check to see if this is a FileInfo object.
            else if (i is FileInfo)
            {
                // Add one to the file count.
                files++;

            }

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
GetFileSystemInfos 重载
System.IO 命名空间
FileSystemInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetFileSystemInfos 方法 (String)

DirectoryInfo
.
.
::
.
GetFileSystemInfos 方法 (String)
DirectoryInfo 类

检索表示与指定的搜索条件匹配的文件和子目录的强类型 FileSystemInfo 对象的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetFileSystemInfos ( _
    searchPattern As String _
) As FileSystemInfo()
public FileSystemInfo[] GetFileSystemInfos(
    string searchPattern
)
public:
array<FileSystemInfo^>^ GetFileSystemInfos(
    String^ searchPattern
)
member GetFileSystemInfos :
        searchPattern:string -> FileSystemInfo[]

参数

searchPattern
类型： System String
搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。 搜索字符串。例如，“System*”可用于搜索所有以单词“System”开头的目录。

返回值

类型：
array<
System.IO FileSystemInfo
>
[]
()
[]

与搜索条件匹配的强类型 FileSystemInfo 对象的数组。
异常 | 条件
ArgumentException | searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

此方法不是递归方法。

对于子目录，此方法返回的 FileSystemInfo 对象可强制转换为派生类 DirectoryInfo。使用 FileSystemInfo..::.Attributes 属性返回的 FileAttributes 值可确定 FileSystemInfo 表示的是文件还是目录。 对于子目录，此方法返回的 FileSystemInfo 对象可强制转换为派生类 DirectoryInfo。使用 FileSystemInfo..::.Attributes 属性返回的 FileAttributes 值可确定 FileSystemInfo 表示的是文件还是目录。

允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。 允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。 允许使用通配符。例如，searchPattern 字符串“*t”会在 path 中搜索所有以字母“t”结尾的目录名。searchPattern 字符串“s*”会在 path 中搜索所有以字母“s”开头的目录名。

字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。如果 DirectoryInfo 中没有文件或目录，或者没有与 searchPattern 字符串匹配的文件或目录，则此方法返回一个空数组。 字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。如果 DirectoryInfo 中没有文件或目录，或者没有与 searchPattern 字符串匹配的文件或目录，则此方法返回一个空数组。 字符串“..”只有在被指定为有效目录名的一部分（如在目录名“a..b”中）时，才能用在 searchPattern 中。它不能用于沿着目录层次结构向上移动。如果 DirectoryInfo 中没有文件或目录，或者没有与 searchPattern 字符串匹配的文件或目录，则此方法返回一个空数组。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例对与指定搜索模式相匹配的文件和目录进行计数。

Imports System
Imports System.IO

Module DirectoryFileCount

    Dim files As Long = 0
    Dim directories As Long = 0

    Sub Main()
        Try
            Console.WriteLine("Enter the path to a directory:")

            Dim directory As String = Console.ReadLine()

            Console.WriteLine("Enter a search string (for example *p*):")

            Dim searchString As String = Console.ReadLine()

            ' Create a new DirectoryInfo object.
            Dim dir As New DirectoryInfo(directory)

            If Not dir.Exists Then
                Throw New DirectoryNotFoundException("The directory does not exist.")
            End If

            ' Call the GetFileSystemInfos method.
            Dim infos As FileSystemInfo() = dir.GetFileSystemInfos(searchString)

            Console.WriteLine("Working...")

            ' Pass the result to the ListDirectoriesAndFiles
            ' method defined below.
            ListDirectoriesAndFiles(infos, searchString)

            ' Display the results to the console.
            Console.WriteLine("Directories: {0}", directories)
            Console.WriteLine("Files: {0}", files)

        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            Console.ReadLine()
        End Try

    End Sub

    Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo, ByVal SearchString As String)
        ' Check the parameters.
        If FSInfo Is Nothing Then
            Throw New ArgumentNullException("FSInfo")
        End If
        If SearchString Is Nothing OrElse SearchString.Length = 0 Then
            Throw New ArgumentNullException("SearchString")
        End If

        ' Iterate through each item.
        Dim i As FileSystemInfo
        For Each i In FSInfo
            ' Check to see if this is a DirectoryInfo object.
            If TypeOf i Is DirectoryInfo Then
                ' Add one to the directory count.
                directories += 1

                ' Cast the object to a DirectoryInfo object.
                Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)

                ' Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString)
                ' Check to see if this is a FileInfo object.
            ElseIf TypeOf i Is FileInfo Then
                ' Add one to the file count.
                files += 1
            End If
        Next i

    End Sub
End Module

using System;
using System.IO;

class DirectoryFileCount
{

    static long files = 0;
    static long directories = 0;

    static void Main()
    {
        try
        {
            Console.WriteLine("Enter the path to a directory:");

            string directory = Console.ReadLine();

            Console.WriteLine("Enter a search string (for example *p*):");

            string searchString = Console.ReadLine();

            // Create a new DirectoryInfo object.
            DirectoryInfo dir = new DirectoryInfo(directory);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("The directory does not exist.");
            }

            // Call the GetFileSystemInfos method.
            FileSystemInfo[] infos = dir.GetFileSystemInfos(searchString);

            Console.WriteLine("Working...");

            // Pass the result to the ListDirectoriesAndFiles
            // method defined below.
            ListDirectoriesAndFiles(infos, searchString);

            // Display the results to the console.
            Console.WriteLine("Directories: {0}", directories);
            Console.WriteLine("Files: {0}", files);

        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {

            Console.ReadLine();
        }
    }

    static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo, string SearchString)
    {
        // Check the parameters.
        if (FSInfo == null)
        {
            throw new ArgumentNullException("FSInfo");
        }
        if (SearchString == null || SearchString.Length == 0)
        {
            throw new ArgumentNullException("SearchString");
        }

        // Iterate through each item.
        foreach (FileSystemInfo i in FSInfo)
        {
            // Check to see if this is a DirectoryInfo object.
            if (i is DirectoryInfo)
            {
                // Add one to the directory count.
                directories++;

                // Cast the object to a DirectoryInfo object.
                DirectoryInfo dInfo = (DirectoryInfo)i;

                // Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString);
            }
            // Check to see if this is a FileInfo object.
            else if (i is FileInfo)
            {
                // Add one to the file count.
                files++;

            }

        }
    }
}
  • FileIOPermission

    用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
GetFileSystemInfos 重载
System.IO 命名空间
FileSystemInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.GetFileSystemInfos 方法 (String, SearchOption)

DirectoryInfo
.
.
::
.
GetFileSystemInfos 方法 (String, SearchOption)
DirectoryInfo 类

检索表示与指定的搜索条件匹配的文件和子目录的 FileSystemInfo 对象的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetFileSystemInfos ( _
    searchPattern As String, _
    searchOption As SearchOption _
) As FileSystemInfo()
public FileSystemInfo[] GetFileSystemInfos(
    string searchPattern,
    SearchOption searchOption
)
public:
array<FileSystemInfo^>^ GetFileSystemInfos(
    String^ searchPattern,
    SearchOption searchOption
)
member GetFileSystemInfos :
        searchPattern:string *
        searchOption:SearchOption -> FileSystemInfo[]

参数

searchPattern
类型： System String
搜索字符串。默认模式为“*”，该模式返回所有文件和目录。 搜索字符串。默认模式为“*”，该模式返回所有文件和目录。
searchOption
类型： System.IO SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。 用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。

返回值

类型：
array<
System.IO FileSystemInfo
>
[]
()
[]

一个数组，包含与搜索条件匹配的文件系统项。
异常 | 条件
ArgumentException | searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException | searchPattern 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
SecurityException | 调用方没有所要求的权限。

在 searchPattern 参数中允许使用以下通配说明符。

通配符 | 说明
* | 零个或多个字符。
? | 正好一个字符。

对于子目录，此方法返回的 FileSystemInfo 对象可强制转换为派生类 DirectoryInfo。使用 FileSystemInfo..::.Attributes 属性返回的 FileAttributes 值可确定 FileSystemInfo 表示的是文件还是目录。 对于子目录，此方法返回的 FileSystemInfo 对象可强制转换为派生类 DirectoryInfo。使用 FileSystemInfo..::.Attributes 属性返回的 FileAttributes 值可确定 FileSystemInfo 表示的是文件还是目录。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
GetFileSystemInfos 重载
System.IO 命名空间


DirectoryInfo ..::.MemberwiseClone 方法

DirectoryInfo
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

名称 说明
页首

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.MoveTo 方法

DirectoryInfo
.
.
::
.
MoveTo 方法
DirectoryInfo 类

将 DirectoryInfo 实例及其内容移动到新路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub MoveTo ( _
    destDirName As String _
)
public void MoveTo(
    string destDirName
)
public:
void MoveTo(
    String^ destDirName
)
member MoveTo :
        destDirName:string -> unit

参数

destDirName
类型： System String
要将此目录移动到的目标位置的名称和路径。目标不能是另一个具有相同名称的磁盘卷或目录。它可以是您要将此目录作为子目录添加到其中的一个现有目录。 要将此目录移动到的目标位置的名称和路径。目标不能是另一个具有相同名称的磁盘卷或目录。它可以是您要将此目录作为子目录添加到其中的一个现有目录。 要将此目录移动到的目标位置的名称和路径。目标不能是另一个具有相同名称的磁盘卷或目录。它可以是您要将此目录作为子目录添加到其中的一个现有目录。
异常 | 条件
ArgumentNullException | destDirName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | destDirName 是空字符串 ("")。
IOException | 尝试将一个目录移到不同的卷。 - 或 - destDirName 已存在。 - 或 - 您无权访问此路径。 - 或 - 被移动的目录与目标目录同名。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 找不到此目标目录。

例如，如果尝试将 c:\mydir 移动到 c:\public，而 c:\public 已经存在，则此方法将引发 IOException。您必须将“c:\\public\\mydir”指定为 destDirName 参数，或者指定新目录名，例如“c:\\newdir”。 例如，如果尝试将 c:\mydir 移动到 c:\public，而 c:\public 已经存在，则此方法将引发 IOException。您必须将“c:\\public\\mydir”指定为 destDirName 参数，或者指定新目录名，例如“c:\\newdir”。

此方法允许将一个目录移到只读目录。两个目录的读/写特性都不会受到影响。 此方法允许将一个目录移到只读目录。两个目录的读/写特性都不会受到影响。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何移动目录。

Imports System
Imports System.IO

Public Class MoveToTest

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("TempDir")
        ' Create the directory only if it does not already exist.
        If di.Exists = False Then
            di.Create()
        End If

        ' Create a subdirectory in the directory just created.
        Dim dis As DirectoryInfo = di.CreateSubdirectory("SubDir")
        If Directory.Exists("NewTempDir") = False Then
            ' Move the main directory. Note that the contents move with the directory.
            di.MoveTo("NewTempDir")
        End If
        Try
            ' Attempt to delete the subdirectory. Note that because it has been
            ' moved, an exception is thrown.
            dis.Delete(True)
        Catch
            ' Handle this exception in some way, such as with the following code:
            ' Console.WriteLine("That directory does not exist.");
            ' Point the DirectoryInfo reference to the new directory.
            ' di = New DirectoryInfo("NewTempDir")
            ' Delete the directory.
            ' di.Delete(True)
        End Try

    End Sub 'Main
End Class 'MoveToTest

using System;
using System.IO;

public class MoveToTest
{
    public static void Main()
    {

        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("TempDir");

        // Create the directory only if it does not already exist.
        if (di.Exists == false)
            di.Create();

        // Create a subdirectory in the directory just created.
        DirectoryInfo dis = di.CreateSubdirectory("SubDir");

        // Move the main directory. Note that the contents move with the directory.
        if (Directory.Exists("NewTempDir") == false)
            di.MoveTo("NewTempDir");

        try
        {
            // Attempt to delete the subdirectory. Note that because it has been
            // moved, an exception is thrown.
            dis.Delete(true);
        }
        catch (Exception)
        {
            // Handle this exception in some way, such as with the following code:
            // Console.WriteLine("That directory does not exist.");
        }

        // Point the DirectoryInfo reference to the new directory.
        //di = new DirectoryInfo("NewTempDir");

        // Delete the directory.
        //di.Delete(true);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "TempDir" );

   // Create the directory only if it does not already exist.
   if (  !di->Exists )
      di->Create();

   // Create a subdirectory in the directory just created.
   DirectoryInfo^ dis = di->CreateSubdirectory( "SubDir" );

   // Move the main directory. Note that the contents move with the directory.
   if (  !Directory::Exists( "NewTempDir" ) )
      di->MoveTo( "NewTempDir" );

   try
   {

      // Attempt to delete the subdirectory. Note that because it has been
      // moved, an exception is thrown.
      dis->Delete( true );
   }
   catch ( Exception^ )
   {

      // Handle this exception in some way, such as with the following code:
      // Console::WriteLine(S"That directory does not exist.");
   }

   // Point the DirectoryInfo reference to the new directory.
   //di = new DirectoryInfo(S"NewTempDir");
   // Delete the directory.
   //di->Delete(true);
}
  • FileIOPermission

    用于读取和写入文件和目录以及用于访问目标目录。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
用于读取和写入文件和目录以及用于访问目标目录。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
用于读取和写入文件和目录以及用于访问目标目录。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.SetAccessControl 方法

DirectoryInfo
.
.
::
.
SetAccessControl 方法
DirectoryInfo 类

将 DirectorySecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 DirectoryInfo 对象所描述的目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub SetAccessControl ( _
    directorySecurity As DirectorySecurity _
)
public void SetAccessControl(
    DirectorySecurity directorySecurity
)
public:
void SetAccessControl(
    DirectorySecurity^ directorySecurity
)
member SetAccessControl :
        directorySecurity:DirectorySecurity -> unit

参数

directorySecurity
类型： System.Security.AccessControl DirectorySecurity
一个对象，该对象描述要应用于 path 参数所描述的目录的 ACL 项。
异常 | 条件
ArgumentNullException | directorySecurity 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SystemException | 未能找到或修改文件。
UnauthorizedAccessException | 当前进程不具有打开该文件的权限。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows 2000 或更高版本。

SetAccessControl 方法将访问控制列表 (ACL) 项应用于表示非继承 ACL 列表的文件。

警告说明 警告

为 directorySecurity 指定的 ACL 替换该目录的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有 ACL 并对其进行修改。 为 directorySecurity 指定的 ACL 替换该目录的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有 ACL 并对其进行修改。

  1. ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件或目录具有或没有执行特定操作的权限的个人和/或组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

SetAccessControl 方法仅存留在对象创建以后被修改过的 DirectorySecurity 对象。 如果没有修改 DirectorySecurity 对象，则不会保留到文件中。 因此，不可能从一个文件中检索 DirectorySecurity 对象并将同一对象应用到另一个文件。

将 ACL 信息从一个文件复制到另一个文件：

  1. 使用 GetAccessControl 方法从源文件检索 DirectorySecurity 对象。

  2. 为目标文件创建新的 DirectorySecurity 对象。

  3. 使用 DirectorySecurity 源对象的 GetSecurityDescriptorBinaryForm 或 GetSecurityDescriptorSddlForm 方法检索 ACL 信息。

  4. 使用 SetSecurityDescriptorBinaryForm 或 SetSecurityDescriptorSddlForm 方法将在步骤 3 中检索到的信息复制到 DirectorySecurity 目标对象。

  5. 使用 SetAccessControl 方法将 DirectorySecurity 目标对象设置为目标文件。

下面的示例使用 GetAccessControl 和 SetAccessControl 方法向目录添加访问控制列表 (ACL) 项，然后将其移除。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module DirectoryExample

    Sub Main()
        Try
            Dim DirectoryName As String = "TestDirectory"

            Console.WriteLine("Adding access control entry for " + DirectoryName)

            ' Add the access control entry to the directory.
            AddDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " + DirectoryName)

            ' Remove the access control entry from the directory.
            RemoveDirectorySecurity(DirectoryName, "MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Adds an ACL entry on the specified directory for the specified account.
    Sub AddDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfoobject.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub

    ' Removes an ACL entry on the specified directory for the specified account.
    Sub RemoveDirectorySecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new DirectoryInfo object.
        Dim dInfo As New DirectoryInfo(FileName)

        ' Get a DirectorySecurity object that represents the
        ' current security settings.
        Dim dSecurity As DirectorySecurity = dInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        dSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        dInfo.SetAccessControl(dSecurity)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class DirectoryExample
    {
        public static void Main()
        {
            try
            {
                string DirectoryName = "TestDirectory";

                Console.WriteLine("Adding access control entry for " + DirectoryName);

                // Add the access control entry to the directory.
                AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + DirectoryName);

                // Remove the access control entry from the directory.
                RemoveDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Adds an ACL entry on the specified directory for the specified account.
        public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }

        // Removes an ACL entry on the specified directory for the specified account.
        public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new DirectoryInfo object.
            DirectoryInfo dInfo = new DirectoryInfo(FileName);

            // Get a DirectorySecurity object that represents the
            // current security settings.
            DirectorySecurity dSecurity = dInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            dInfo.SetAccessControl(dSecurity);

        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified directory for the
// specified account.
void AddDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->AddAccessRule( gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

// Removes an ACL entry on the specified directory for the
// specified account.
void RemoveDirectorySecurity(String^ directoryName, String^ account,
     FileSystemRights rights, AccessControlType controlType)
{
    // Create a new DirectoryInfo object.
    DirectoryInfo^ dInfo = gcnew DirectoryInfo(directoryName);

    // Get a DirectorySecurity object that represents the
    // current security settings.
    DirectorySecurity^ dSecurity = dInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    dSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        rights, controlType));

    // Set the new access settings.
    dInfo->SetAccessControl(dSecurity);
}

int main()
{
    String^ directoryName = "TestDirectory";
    String^ accountName = "MYDOMAIN\\MyAccount";
    if (!Directory::Exists(directoryName))
    {
        Console::WriteLine("The directory {0} could not be found.",
            directoryName);
        return 0;
    }
    try
    {
        Console::WriteLine("Adding access control entry for {0}",
            directoryName);

        // Add the access control entry to the directory.
        AddDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from {0}",
            directoryName);

        // Remove the access control entry from the directory.
        RemoveDirectorySecurity(directoryName, accountName,
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("You are not authorised to carry" +
            " out this procedure.");
    }
    catch (System::Security::Principal::
        IdentityNotMappedException^)
    {
        Console::WriteLine("The account {0} could not be found.", accountName);
    }
}
  • FileIOPermission

    表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
表示枚举目录的访问控制列表 (ACL) 的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间


DirectoryInfo ..::.ToString 方法

DirectoryInfo
.
.
::
.
ToString 方法
DirectoryInfo 类

返回用户所传递的原始路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
返回用户所传递的原始路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo 属性

DirectoryInfo 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryInfo 类

DirectoryInfo 类型公开以下成员。

名称 说明
页首

参考

DirectoryInfo 类
System.IO 命名空间


DirectoryInfo ..::.Exists 属性

DirectoryInfo
.
.
::
.
Exists 属性
DirectoryInfo 类

获取指示目录是否存在的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Exists As Boolean
    Get
public override bool Exists { get; }
public:
virtual property bool Exists {
    bool get () override;
}
abstract Exists : bool
override Exists : bool

属性值

类型： System Boolean
如果目录存在，则为 true；否则为 false。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 Exists 属性在将源目录复制到目标目录时的用法。

Imports System
Imports System.IO

Module Module1
    Public Sub CopyDirectory(ByVal SourceDirectory As String, ByVal TargetDirectory As String)
        Dim source As DirectoryInfo = New DirectoryInfo(SourceDirectory)
        Dim target As DirectoryInfo = New DirectoryInfo(TargetDirectory)

        'Determine whether the source directory exists.
        If (source.Exists = False) Then
            Return
        End If
        If (target.Exists = False) Then
            target.Create()
        End If

        'Copy files.
        Dim sourceFiles As FileInfo() = source.GetFiles()
        Dim i, j As Integer
        For i = 0 To sourceFiles.Length - 1
            File.Copy(sourceFiles(i).FullName, target.FullName + "\\" + sourceFiles(i).Name, True)
        Next i

        'Copy directories.
        Dim sourceDirectories As DirectoryInfo() = source.GetDirectories()
        For j = 0 To sourceDirectories.Length - 1
            CopyDirectory(sourceDirectories(j).FullName, target.FullName + "\\" + sourceDirectories(j).Name)
        Next j
        source = Nothing
        target = Nothing
    End Sub
    Sub Main()
        CopyDirectory("D:\\Tools", "D:\\NewTools")
    End Sub
End Module

using System;
using System.IO;

namespace DirectoryInfoCS2
{
    class Class1
    {
        // Copy a source directory to a target directory.
        static public void CopyDirectory(string SourceDirectory, string TargetDirectory)
        {
            DirectoryInfo	source = new DirectoryInfo(SourceDirectory);
            DirectoryInfo	target = new DirectoryInfo(TargetDirectory);

            //Determine whether the source directory exists.
            if(!source.Exists)
                return;
            if(!target.Exists)
                target.Create();

            //Copy files.
            FileInfo[] sourceFiles = source.GetFiles();
            for(int i = 0; i < sourceFiles.Length; ++i)
                File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name,true);

            //Copy directories.
            DirectoryInfo[] sourceDirectories = source.GetDirectories();
            for(int j = 0; j < sourceDirectories.Length; ++j)
                CopyDirectory(sourceDirectories[j].FullName,target.FullName +"\\" + sourceDirectories[j].Name);
        }

        static void Main(string[] args)
        {
            CopyDirectory("D:\\Tools","D:\\NewTools");
        }
    }
}

using namespace System;
using namespace System::IO;

// Copy a source directory to a target directory.
void CopyDirectory( String^ SourceDirectory, String^ TargetDirectory )
{
   DirectoryInfo^ source = gcnew DirectoryInfo( SourceDirectory );
   DirectoryInfo^ target = gcnew DirectoryInfo( TargetDirectory );

   //Determine whether the source directory exists.
   if (  !source->Exists )
      return;

   if (  !target->Exists )
      target->Create();

   //Copy files.
   array<FileInfo^>^sourceFiles = source->GetFiles();
   for ( int i = 0; i < sourceFiles->Length; ++i )
      File::Copy( sourceFiles[ i ]->FullName, String::Concat( target->FullName, "\\", sourceFiles[ i ]->Name ), true );

   //Copy directories.
   array<DirectoryInfo^>^sourceDirectories = source->GetDirectories();
   for ( int j = 0; j < sourceDirectories->Length; ++j )
      CopyDirectory( sourceDirectories[ j ]->FullName, String::Concat( target->FullName, "\\", sourceDirectories[ j ]->Name ) );
}

int main()
{
   CopyDirectory( "D:\\Tools", "D:\\NewTools" );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.Name 属性

DirectoryInfo
.
.
::
.
Name 属性
DirectoryInfo 类

获取此 DirectoryInfo 实例的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Name As String
    Get
public override string Name { get; }
public:
virtual property String^ Name {
    String^ get () override;
}
abstract Name : string
override Name : string

属性值

类型： System String
目录名称。

此 Name 属性只返回目录的名称，如“Bin”。若要获取完整路径（如“c:\public\Bin”），请使用 FullName 属性。 此 Name 属性只返回目录的名称，如“Bin”。若要获取完整路径（如“c:\public\Bin”），请使用 FullName 属性。

DirectoryInfo 的 Name 属性不需要权限（构造 Exists 所需的此目录的读权限以外的权限）就可以给出目录名。如果有必要将 DirectoryInfo 发给具有密码保护名称的目录，则创建一个虚拟目录以供不受信任的代码使用。 DirectoryInfo 的 Name 属性不需要权限（构造 Exists 所需的此目录的读权限以外的权限）就可以给出目录名。如果有必要将 DirectoryInfo 发给具有密码保护名称的目录，则创建一个虚拟目录以供不受信任的代码使用。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例仅显示当前 DirectoryInfo 实例的名称。

Imports System
Imports System.IO

Class GetAName
    Public Shared Sub Main()
        Dim dir As New DirectoryInfo(".")
        Dim dirName As String = dir.Name
        Console.WriteLine("DirectoryInfo name is {0}.", dirName)
    End Sub

End Class

using System;
using System.IO;

class GetAName
{
    public static void Main(string[] args)
    {
        DirectoryInfo dir = new DirectoryInfo(".");
        String dirName=dir.Name;
        Console.WriteLine("DirectoryInfo name is {0}.", dirName);
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   DirectoryInfo^ dir = gcnew DirectoryInfo( "." );
   String^ dirName = dir->Name;
   Console::WriteLine( "DirectoryInfo name is {0}.", dirName );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间
FullName

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.Parent 属性

DirectoryInfo
.
.
::
.
Parent 属性
DirectoryInfo 类

获取指定子目录的父目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Parent As DirectoryInfo
    Get
public DirectoryInfo Parent { get; }
public:
property DirectoryInfo^ Parent {
    DirectoryInfo^ get ();
}
member Parent : DirectoryInfo

属性值

类型： System.IO DirectoryInfo
父目录；如果路径为 null 或文件路径表示根（如“\”、“C:”或 *“\\server\share”），则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
SecurityException | 调用方没有所要求的权限。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了引用指定目录的父目录的方法。

Imports System
Imports System.IO

Public Class MoveToTest

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("TempDir")
        ' Create the directory only if it does not already exist.
        If di.Exists = False Then
            di.Create()
        End If

        ' Create a subdirectory in the directory just created.
        Dim dis As DirectoryInfo = di.CreateSubdirectory("SubDir")

        ' Get a reference to the parent directory of the subdirectory you just made.
        Dim parentDir As DirectoryInfo = dis.Parent
        Console.WriteLine("The parent directory of '{0}' is '{1}'", dis.Name, parentDir.Name)

        ' Delete the parent directory.
        di.Delete(True)
    End Sub 'Main
End Class 'MoveToTest

using System;
using System.IO;

public class MoveToTest
{
    public static void Main()
    {

        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("TempDir");

        // Create the directory only if it does not already exist.
        if (di.Exists == false)
            di.Create();

        // Create a subdirectory in the directory just created.
        DirectoryInfo dis = di.CreateSubdirectory("SubDir");

        // Get a reference to the parent directory of the subdirectory you just made.
        DirectoryInfo parentDir = dis.Parent;
        Console.WriteLine("The parent directory of '{0}' is '{1}'", dis.Name, parentDir.Name);

        // Delete the parent directory.
        di.Delete(true);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "TempDir" );

   // Create the directory only if it does not already exist.
   if (  !di->Exists )
      di->Create();

   // Create a subdirectory in the directory just created.
   DirectoryInfo^ dis = di->CreateSubdirectory( "SubDir" );

   // Get a reference to the parent directory of the subdirectory you just made.
   DirectoryInfo^ parentDir = dis->Parent;
   Console::WriteLine( "The parent directory of '{0}' is '{1}'", dis->Name, parentDir->Name );

   // Delete the parent directory.
   di->Delete( true );
}
  • FileIOPermission

    用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryInfo ..::.Root 属性

DirectoryInfo
.
.
::
.
Root 属性
DirectoryInfo 类

获取路径的根部分。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Root As DirectoryInfo
    Get
public DirectoryInfo Root { get; }
public:
property DirectoryInfo^ Root {
    DirectoryInfo^ get ();
}
member Root : DirectoryInfo

属性值

类型： System.IO DirectoryInfo
代表路径的根的 DirectoryInfo 对象。
异常 | 条件
SecurityException | 调用方没有所要求的权限。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了如何确定指定目录的根目录位置。

Imports System
Imports System.IO

Public Class MoveToTest

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("TempDir")

        ' Create the directory only if it does not already exist.
        If di.Exists = False Then
            di.Create()
        End If

        ' Create a subdirectory in the directory just created.
        Dim dis As DirectoryInfo = di.CreateSubdirectory("SubDir")
        Console.WriteLine("The root path of '{0}' is '{1}'", dis.Name, dis.Root)

        ' Delete the parent directory.
        di.Delete(True)
    End Sub 'Main
End Class 'MoveToTest

using System;
using System.IO;

public class MoveToTest
{
    public static void Main()
    {

        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("TempDir");

        // Create the directory only if it does not already exist.
        if (di.Exists == false)
            di.Create();

        // Create a subdirectory in the directory just created.
        DirectoryInfo dis = di.CreateSubdirectory("SubDir");
        Console.WriteLine("The root path of '{0}' is '{1}'", dis.Name, dis.Root);

        // Delete the parent directory.
        di.Delete(true);
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "TempDir" );

   // Create the directory only if it does not already exist.
   if (  !di->Exists )
      di->Create();

   // Create a subdirectory in the directory just created.
   DirectoryInfo^ dis = di->CreateSubdirectory( "SubDir" );
   Console::WriteLine( "The root path of '{0}' is '{1}'", dis->Name, dis->Root );

   // Delete the parent directory.
   di->Delete( true );
}
  • FileIOPermission

    用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery 用于从文件和目录读取以及用于路径访问。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryInfo 类
DirectoryInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryNotFoundException 类

DirectoryNotFoundException 类
成员

当找不到文件或目录的一部分时所引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class DirectoryNotFoundException _
    Inherits IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class DirectoryNotFoundException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class DirectoryNotFoundException : public IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type DirectoryNotFoundException =
    class
        inherit IOException
    end

DirectoryNotFoundException 使用包含值 0x80070003 的 HRESULT COR_E_DIRECTORYNOTFOUND。请注意，当 COM 互操作 程序看到包含值 0x80030003 的 HRESULT STG_E_PATHNOTFOUND 时，也会引发 DirectoryNotFoundException。 DirectoryNotFoundException 使用包含值 0x80070003 的 HRESULT COR_E_DIRECTORYNOTFOUND。请注意，当 COM 互操作 程序看到包含值 0x80030003 的 HRESULT STG_E_PATHNOTFOUND 时，也会引发 DirectoryNotFoundException。

如果您的代码不具备 PathDiscovery 权限，此异常的错误消息可能仅包含文件或目录名称而不是完全限定的路径。

下面的实例显示如何强制引发 DirectoryNotFoundException 以及如何从中恢复。

Imports System.IO

Module Module1
    Sub Main()
        Try

            ' Specify a directory name that does not exist for this demo.
            Dim dir As String = "c:\78fe9lk"

            ' If this directory does not exist, a DirectoryNotFoundException is thrown
            ' when attempting to set the current directory.
            Directory.SetCurrentDirectory(dir)

        Catch ex As System.IO.DirectoryNotFoundException

            ' Let the user know that the directory did not exist.
            Console.WriteLine("Directory not found: " + ex.Message)
        End Try
    End Sub
End Module

using System;
using System.IO;

class Program
{

    static void Main(string[] args)
    {
        try
        {

            //  Specify a directory name that does not exist for this demo.
            string dir = @"c:\78fe9lk";

            // If this directory does not exist, a DirectoryNotFoundException is thrown
            // when attempting to set the current directory.
            Directory.SetCurrentDirectory(dir);
        }
        catch (DirectoryNotFoundException dirEx)
        {
            // Let the user know that the directory did not exist.
            Console.WriteLine("Directory not found: " + dirEx.Message);
        }
    }
}

System.IO System.IO..::.DirectoryNotFoundExceptionDirectoryNotFoundException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryNotFoundException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryNotFoundException 成员

DirectoryNotFoundException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryNotFoundException 类

当找不到文件或目录的一部分时所引发的异常。

DirectoryNotFoundException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

DirectoryNotFoundException 类
System.IO 命名空间


DirectoryNotFoundException 构造函数

DirectoryNotFoundException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryNotFoundException 类

用 DirectoryNotFoundException 类的消息字符串初始化它的新实例。

名称 说明
页首

参考

DirectoryNotFoundException 类
DirectoryNotFoundException 成员
System.IO 命名空间


DirectoryNotFoundException 构造函数

DirectoryNotFoundException 构造函数
DirectoryNotFoundException 类

初始化 DirectoryNotFoundException 类的新实例，使其消息字符串设置为系统提供的消息，其 HRESULT 设置为 COR_E_DIRECTORYNOTFOUND。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public DirectoryNotFoundException()
public:
DirectoryNotFoundException()
new : unit -> DirectoryNotFoundException

此构造函数将新实例的 Exception..::.Message 属性初始化为系统提供的用于描述错误（如“未能找到指定目录。”）的消息。此消息将考虑当前系统区域性。

新实例的 Exception..::.InnerException 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何调用 DirectoryNotFoundException 构造函数。

Imports System.IO

Module Module1
    Sub Main()
        Try

            ' Specify a directory name that does not exist for this demo.
            Dim dir As String = "c:\78fe9lk"

            ' If this directory does not exist, a DirectoryNotFoundException is thrown
            ' when attempting to set the current directory.
            Directory.SetCurrentDirectory(dir)

        Catch ex As System.IO.DirectoryNotFoundException

            ' Let the user know that the directory did not exist.
            Console.WriteLine("Directory not found: " + ex.Message)
        End Try
    End Sub
End Module

using System;
using System.IO;

class Program
{

    static void Main(string[] args)
    {
        try
        {

            //  Specify a directory name that does not exist for this demo.
            string dir = @"c:\78fe9lk";

            // If this directory does not exist, a DirectoryNotFoundException is thrown
            // when attempting to set the current directory.
            Directory.SetCurrentDirectory(dir);
        }
        catch (DirectoryNotFoundException dirEx)
        {
            // Let the user know that the directory did not exist.
            Console.WriteLine("Directory not found: " + dirEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryNotFoundException 类
DirectoryNotFoundException 成员
DirectoryNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryNotFoundException 构造函数 (String)

DirectoryNotFoundException 构造函数 (String)
DirectoryNotFoundException 类

初始化 DirectoryNotFoundException 类的新实例，使其消息字符串设置为 message，其 HRESULT 设置为 COR_E_DIRECTORYNOTFOUND。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public DirectoryNotFoundException(
    string message
)
public:
DirectoryNotFoundException(
    String^ message
)
new :
        message:string -> DirectoryNotFoundException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

此构造函数使用 message 初始化新实例的 Exception..::.Message 属性。

新实例的 Exception..::.InnerException 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

DirectoryNotFoundException 类
DirectoryNotFoundException 成员
DirectoryNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryNotFoundException 构造函数 (SerializationInfo, StreamingContext)

DirectoryNotFoundException 构造函数 (SerializationInfo, StreamingContext)
DirectoryNotFoundException 类

用指定的序列化和上下文信息初始化 DirectoryNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected DirectoryNotFoundException(
    SerializationInfo info,
    StreamingContext context
)
protected:
DirectoryNotFoundException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> DirectoryNotFoundException

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryNotFoundException 类
DirectoryNotFoundException 成员
DirectoryNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryNotFoundException 构造函数 (String, Exception)

DirectoryNotFoundException 构造函数 (String, Exception)
DirectoryNotFoundException 类

使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 DirectoryNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public DirectoryNotFoundException(
    string message,
    Exception innerException
)
public:
DirectoryNotFoundException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> DirectoryNotFoundException

参数

message
类型： System String
解释异常原因的错误信息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 DirectoryNotFoundException 实例的初始属性值。

属性 | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

DirectoryNotFoundException 类
DirectoryNotFoundException 成员
DirectoryNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DirectoryNotFoundException 方法

DirectoryNotFoundException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryNotFoundException 类

DirectoryNotFoundException 类型公开以下成员。

名称 说明
页首

参考

DirectoryNotFoundException 类
System.IO 命名空间


DirectoryNotFoundException 属性

DirectoryNotFoundException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryNotFoundException 类

DirectoryNotFoundException 类型公开以下成员。

名称 说明
页首

参考

DirectoryNotFoundException 类
System.IO 命名空间


DirectoryNotFoundException 事件

DirectoryNotFoundException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DirectoryNotFoundException 类

DirectoryNotFoundException 类型公开以下成员。

名称 说明
页首

参考

DirectoryNotFoundException 类
System.IO 命名空间


DriveInfo 类

DriveInfo 类
成员

提供对有关驱动器的信息的访问。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class DriveInfo _
    Implements ISerializable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DriveInfo : ISerializable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class DriveInfo sealed : ISerializable
[<SealedAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type DriveInfo =
    class
        interface ISerializable
    end

此类对驱动器进行建模，并提供方法和属性以查询驱动器信息。使用 DriveInfo 来确定哪些驱动器可用，以及这些驱动器的类型。还可以通过查询来确定驱动器的容量和可用空闲空间。 此类对驱动器进行建模，并提供方法和属性以查询驱动器信息。使用 DriveInfo 来确定哪些驱动器可用，以及这些驱动器的类型。还可以通过查询来确定驱动器的容量和可用空闲空间。 此类对驱动器进行建模，并提供方法和属性以查询驱动器信息。使用 DriveInfo 来确定哪些驱动器可用，以及这些驱动器的类型。还可以通过查询来确定驱动器的容量和可用空闲空间。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/
  • FileIOPermission

    用于访问目录信息。类构造函数需要此权限。关联的枚举：PathDiscovery。 用于访问目录信息。类构造函数需要此权限。关联的枚举：PathDiscovery。 用于访问目录信息。类构造函数需要此权限。关联的枚举：PathDiscovery。

System.IO System.IO..::.DriveInfoDriveInfo
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 成员
System.IO 命名空间


DriveInfo 成员

DriveInfo 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveInfo 类

提供对有关驱动器的信息的访问。

DriveInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

DriveInfo 类
System.IO 命名空间


DriveInfo 构造函数

DriveInfo 构造函数
DriveInfo 类

提供对有关指定驱动器的信息的访问。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    driveName As String _
)
public DriveInfo(
    string driveName
)
public:
DriveInfo(
    String^ driveName
)
new :
        driveName:string -> DriveInfo

参数

driveName
类型： System String
有效驱动器路径或驱动器号。它可以是从“a”到“z”的大写或小写字母。Null 值无效。 有效驱动器路径或驱动器号。它可以是从“a”到“z”的大写或小写字母。Null 值无效。 有效驱动器路径或驱动器号。它可以是从“a”到“z”的大写或小写字母。Null 值无效。
异常 | 条件
ArgumentNullException | 驱动器号不能为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | driveName 的第一个字母不能是从“a”到“z”的大写或小写字母。 - 或 - driveName 未引用有效的驱动器。

使用此类获取有关驱动器的信息。驱动器名称必须是从“a”到“z”的大写或小写字母。不能使用此方法获取有关为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或使用 UNC (\\server\share) 路径的驱动器名称的信息。 使用此类获取有关驱动器的信息。驱动器名称必须是从“a”到“z”的大写或小写字母。不能使用此方法获取有关为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或使用 UNC (\\server\share) 路径的驱动器名称的信息。 使用此类获取有关驱动器的信息。驱动器名称必须是从“a”到“z”的大写或小写字母。不能使用此方法获取有关为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或使用 UNC (\\server\share) 路径的驱动器名称的信息。

  • FileIOPermission

    用于访问目录信息。类构造函数需要此权限。关联的枚举：PathDiscovery。 用于访问目录信息。类构造函数需要此权限。关联的枚举：PathDiscovery。 用于访问目录信息。类构造函数需要此权限。关联的枚举：PathDiscovery。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo 方法

DriveInfo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveInfo 类

DriveInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

DriveInfo 类
System.IO 命名空间


DriveInfo ..::.GetDrives 方法

DriveInfo
.
.
::
.
GetDrives 方法
DriveInfo 类

检索计算机上的所有逻辑驱动器的驱动器名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetDrives As DriveInfo()
public static DriveInfo[] GetDrives()
public:
static array<DriveInfo^>^ GetDrives()
static member GetDrives : unit -> DriveInfo[]

返回值

类型：
array<
System.IO DriveInfo
>
[]
()
[]

DriveInfo 类型的数组，表示计算机上的逻辑驱动器。
异常 | 条件
IOException | 发生了 I/O 错误（例如，磁盘错误或驱动器未准备好）。
UnauthorizedAccessException | 调用方没有所要求的权限。

此方法检索计算机上的所有逻辑驱动器名称。可以使用此信息循环访问数组，使用其他 DriveInfo 方法和属性获取有关驱动器的信息。使用 IsReady 属性测试驱动器是否已准备好，因为在未准备好的驱动器上使用此方法会引发 IOException。 此方法检索计算机上的所有逻辑驱动器名称。可以使用此信息循环访问数组，使用其他 DriveInfo 方法和属性获取有关驱动器的信息。使用 IsReady 属性测试驱动器是否已准备好，因为在未准备好的驱动器上使用此方法会引发 IOException。 此方法检索计算机上的所有逻辑驱动器名称。可以使用此信息循环访问数组，使用其他 DriveInfo 方法和属性获取有关驱动器的信息。使用 IsReady 属性测试驱动器是否已准备好，因为在未准备好的驱动器上使用此方法会引发 IOException。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/
  • SecurityPermission

    用于调用非托管代码，例如，使用平台调用或 COM 互操作调用本机代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode 用于调用非托管代码，例如，使用平台调用或 COM 互操作调用本机代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O


DriveInfo ..::.ISerializable ..::.GetObjectData 方法

DriveInfo
.
.
::
.
ISerializable
.
.
::
.
GetObjectData 方法
DriveInfo 类

使用序列化目标对象所需的数据填充 SerializationInfo 对象。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Private Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
) Implements ISerializable.GetObjectData
void ISerializable.GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
private:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) sealed = ISerializable::GetObjectData
private abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
private override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
要填充数据的对象。
context
类型： System.Runtime.Serialization StreamingContext
此序列化的目标（请参见 StreamingContext）。

实现

格式化程序会自动跟踪和序列化包含在 SerializationInfo 对象中的任何对象。

此成员是显式的接口成员实现。只能在 DriveInfo 实例强制转换为 ISerializable 接口时使用它。 此成员是显式的接口成员实现。只能在 DriveInfo 实例强制转换为 ISerializable 接口时使用它。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.ToString 方法

DriveInfo
.
.
::
.
ToString 方法
DriveInfo 类

将驱动器名称作为字符串返回。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
驱动器的名称。

此方法返回 Name 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo 属性

DriveInfo 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveInfo 类

DriveInfo 类型公开以下成员。

名称 说明
页首

参考

DriveInfo 类
System.IO 命名空间


DriveInfo ..::.AvailableFreeSpace 属性

DriveInfo
.
.
::
.
AvailableFreeSpace 属性
DriveInfo 类

指示驱动器上的可用空闲空间量。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property AvailableFreeSpace As Long
    Get
public long AvailableFreeSpace { get; }
public:
property long long AvailableFreeSpace {
    long long get ();
}
member AvailableFreeSpace : int64

属性值

类型： System Int64
驱动器上的可用空闲空间量（以字节为单位）。
异常 | 条件
UnauthorizedAccessException | 拒绝访问驱动器信息。
IOException | 发生了 I/O 错误（例如，磁盘错误或驱动器未准备好）。

此属性指示驱动器上的可用空闲空间量。请注意，因为此属性将磁盘配额考虑在内，所以此数量可能与 TotalFreeSpace 数量不同。 此属性指示驱动器上的可用空闲空间量。请注意，因为此属性将磁盘配额考虑在内，所以此数量可能与 TotalFreeSpace 数量不同。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.DriveFormat 属性

DriveInfo
.
.
::
.
DriveFormat 属性
DriveInfo 类

获取文件系统的名称，例如 NTFS 或 FAT32。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property DriveFormat As String
    Get
public string DriveFormat { get; }
public:
property String^ DriveFormat {
    String^ get ();
}
member DriveFormat : string

属性值

类型： System String
指定驱动器上文件系统的名称。
异常 | 条件
UnauthorizedAccessException | 拒绝访问驱动器信息。
IOException | 发生了 I/O 错误（例如，磁盘错误或驱动器未准备好）。

使用 DriveFormat 确定驱动器使用的格式。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.DriveType 属性

DriveInfo
.
.
::
.
DriveType 属性
DriveInfo 类

获取驱动器类型。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property DriveType As DriveType
    Get
public DriveType DriveType { get; }
public:
property DriveType DriveType {
    DriveType get ();
}
member DriveType : DriveType

属性值

类型： System.IO DriveType
DriveType 值之一。
异常 | 条件
IOException | 发生了 I/O 错误。

DriveType 属性指示驱动器是否是以下任意类型：CDRom、Fixed、Unknown、Network、NoRootDirectory、Ram、Removable 或 Unknown。值在 DriveType 枚举中列出。 DriveType 属性指示驱动器是否是以下任意类型：CDRom、Fixed、Unknown、Network、NoRootDirectory、Ram、Removable 或 Unknown。值在 DriveType 枚举中列出。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.IsReady 属性

DriveInfo
.
.
::
.
IsReady 属性
DriveInfo 类

获取一个指示驱动器是否已准备好的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property IsReady As Boolean
    Get
public bool IsReady { get; }
public:
property bool IsReady {
    bool get ();
}
member IsReady : bool

属性值

类型： System Boolean
如果驱动器已准备好，则为 true；如果驱动器未准备好，则为 false。

IsReady 指示驱动器是否已准备好。例如，它指示 CD 是否在 CD 驱动器中，或者可移动存储设备是否已准备好执行读/写操作。如果您未测试驱动器是否已准备好，而它没有准备好，则使用 DriveInfo 查询驱动器会引发 IOException。 IsReady 指示驱动器是否已准备好。例如，它指示 CD 是否在 CD 驱动器中，或者可移动存储设备是否已准备好执行读/写操作。如果您未测试驱动器是否已准备好，而它没有准备好，则使用 DriveInfo 查询驱动器会引发 IOException。 IsReady 指示驱动器是否已准备好。例如，它指示 CD 是否在 CD 驱动器中，或者可移动存储设备是否已准备好执行读/写操作。如果您未测试驱动器是否已准备好，而它没有准备好，则使用 DriveInfo 查询驱动器会引发 IOException。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.Name 属性

DriveInfo
.
.
::
.
Name 属性
DriveInfo 类

获取驱动器的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Name As String
    Get
public string Name { get; }
public:
property String^ Name {
    String^ get ();
}
member Name : string

属性值

类型： System String
驱动器的名称。

此属性是分配给驱动器的名称，例如 C:\ 或 E:\。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.RootDirectory 属性

DriveInfo
.
.
::
.
RootDirectory 属性
DriveInfo 类

获取驱动器的根目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property RootDirectory As DirectoryInfo
    Get
public DirectoryInfo RootDirectory { get; }
public:
property DirectoryInfo^ RootDirectory {
    DirectoryInfo^ get ();
}
member RootDirectory : DirectoryInfo

属性值

类型： System.IO DirectoryInfo
包含驱动器根目录的 DirectoryInfo 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.TotalFreeSpace 属性

DriveInfo
.
.
::
.
TotalFreeSpace 属性
DriveInfo 类

获取驱动器上的可用空闲空间总量。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property TotalFreeSpace As Long
    Get
public long TotalFreeSpace { get; }
public:
property long long TotalFreeSpace {
    long long get ();
}
member TotalFreeSpace : int64

属性值

类型： System Int64
驱动器上的可用空闲空间总量（以字节为单位）。
异常 | 条件
UnauthorizedAccessException | 拒绝访问驱动器信息。
IOException | 发生了 I/O 错误（例如，磁盘错误或驱动器未准备好）。

此属性指示驱动器上的可用空闲空间总量，而不只是当前用户可用的空闲空间量。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.TotalSize 属性

DriveInfo
.
.
::
.
TotalSize 属性
DriveInfo 类

获取驱动器上存储空间的总大小。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property TotalSize As Long
    Get
public long TotalSize { get; }
public:
property long long TotalSize {
    long long get ();
}
member TotalSize : int64

属性值

类型： System Int64
驱动器的总大小（以字节为单位）。
异常 | 条件
UnauthorizedAccessException | 拒绝访问驱动器信息。
IOException | 发生了 I/O 错误（例如，磁盘错误或驱动器未准备好）。

此属性指示驱动器的总大小（以字节为单位），而不只是当前用户可用的驱动器大小。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveInfo ..::.VolumeLabel 属性

DriveInfo
.
.
::
.
VolumeLabel 属性
DriveInfo 类

获取或设置驱动器的卷标。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Property VolumeLabel As String
    Get
    Set
public string VolumeLabel { get; set; }
public:
property String^ VolumeLabel {
    String^ get ();
    void set (String^ value);
}
member VolumeLabel : string with get, set

属性值

类型： System String
卷标。
异常 | 条件
IOException | 发生了 I/O 错误（例如，磁盘错误或驱动器未准备好）。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 正在网络或 CD-ROM 驱动器上设置卷标。 - 或 - 拒绝访问驱动器信息。

卷标的长度由操作系统确定。例如，NTFS 允许卷标最长达到 32 个字符。注意，nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 是有效的 VolumeLabel。 卷标的长度由操作系统确定。例如，NTFS 允许卷标最长达到 32 个字符。注意，nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 是有效的 VolumeLabel。 卷标的长度由操作系统确定。例如，NTFS 允许卷标最长达到 32 个字符。注意，nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 是有效的 VolumeLabel。

下面的代码示例演示如何使用 DriveInfo 类显示有关当前系统中所有驱动器的信息。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Dim allDrives() As DriveInfo = DriveInfo.GetDrives()

        Dim d As DriveInfo
        For Each d In allDrives
            Console.WriteLine("Drive {0}", d.Name)
            Console.WriteLine("  File type: {0}", d.DriveType)
            If d.IsReady = True Then
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel)
                Console.WriteLine("  File system: {0}", d.DriveFormat)
                Console.WriteLine( _
                    "  Available space to current user:{0, 15} bytes", _
                    d.AvailableFreeSpace)

                Console.WriteLine( _
                    "  Total available space:          {0, 15} bytes", _
                    d.TotalFreeSpace)

                Console.WriteLine( _
                    "  Total size of drive:            {0, 15} bytes ", _
                    d.TotalSize)
            End If
        Next
    End Sub
End Class
'This code produces output similar to the following:
'
'Drive A:\
'  File type: Removable
'Drive C:\
'  File type: Fixed
'  Volume label:
'  File system: FAT32
'  Available space to current user:     4770430976 bytes
'  Total available space:               4770430976 bytes
'  Total size of drive:                10731683840 bytes
'Drive D:\
'  File type: Fixed
'  Volume label:
'  File system: NTFS
'  Available space to current user:    15114977280 bytes
'  Total available space:              15114977280 bytes
'  Total size of drive:                25958948864 bytes
'Drive E:\
'  File type: CDRom
'
'The actual output of this code will vary based on machine and the permissions
'granted to the user executing it.

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        DriveInfo[] allDrives = DriveInfo.GetDrives();

        foreach (DriveInfo d in allDrives)
        {
            Console.WriteLine("Drive {0}", d.Name);
            Console.WriteLine("  File type: {0}", d.DriveType);
            if (d.IsReady == true)
            {
                Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                Console.WriteLine("  File system: {0}", d.DriveFormat);
                Console.WriteLine(
                    "  Available space to current user:{0, 15} bytes",
                    d.AvailableFreeSpace);

                Console.WriteLine(
                    "  Total available space:          {0, 15} bytes",
                    d.TotalFreeSpace);

                Console.WriteLine(
                    "  Total size of drive:            {0, 15} bytes ",
                    d.TotalSize);
            }
        }
    }
}
/*
This code produces output similar to the following:

Drive A:\
  File type: Removable
Drive C:\
  File type: Fixed
  Volume label:
  File system: FAT32
  Available space to current user:     4770430976 bytes
  Total available space:               4770430976 bytes
  Total size of drive:                10731683840 bytes
Drive D:\
  File type: Fixed
  Volume label:
  File system: NTFS
  Available space to current user:    15114977280 bytes
  Total available space:              15114977280 bytes
  Total size of drive:                25958948864 bytes
Drive E:\
  File type: CDRom

The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/
  • FileIOPermission

    用于设置卷标。关联的枚举：Write。 用于设置卷标。关联的枚举：Write。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveInfo 类
DriveInfo 成员
System.IO 命名空间


DriveNotFoundException 类

DriveNotFoundException 类
成员

当尝试访问的驱动器或共享不可用时引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class DriveNotFoundException _
    Inherits IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class DriveNotFoundException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class DriveNotFoundException : public IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type DriveNotFoundException =
    class
        inherit IOException
    end

DriveNotFoundException 类使用 HRESULT COR_E_DIRECTORYNOTFOUND。当遇到 Win32 ERROR_PATH_NOT_FOUND HRESULT 错误时可能引发此异常。 DriveNotFoundException 类使用 HRESULT COR_E_DIRECTORYNOTFOUND。当遇到 Win32 ERROR_PATH_NOT_FOUND HRESULT 错误时可能引发此异常。

System.IO System.IO..::.DriveNotFoundExceptionDriveNotFoundException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveNotFoundException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DriveNotFoundException 成员

DriveNotFoundException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveNotFoundException 类

当尝试访问的驱动器或共享不可用时引发的异常。

DriveNotFoundException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

DriveNotFoundException 类
System.IO 命名空间


DriveNotFoundException 构造函数

DriveNotFoundException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveNotFoundException 类

初始化 DriveNotFoundException 类的新实例。

名称 说明
页首

参考

DriveNotFoundException 类
DriveNotFoundException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DriveNotFoundException 构造函数

DriveNotFoundException 构造函数
DriveNotFoundException 类

初始化 DriveNotFoundException 类的新实例，使其消息字符串设置为系统提供的消息，其 HRESULT 设置为 COR_E_DIRECTORYNOTFOUND。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public DriveNotFoundException()
public:
DriveNotFoundException()
new : unit -> DriveNotFoundException

此构造函数将新实例的 Exception..::.Message 属性初始化为系统提供的用于描述错误（如“未能找到指定目录。”）的消息。此消息将根据当前系统区域性进行本地化。

新实例的 Exception..::.InnerException 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveNotFoundException 类
DriveNotFoundException 成员
DriveNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DriveNotFoundException 构造函数 (String)

DriveNotFoundException 构造函数 (String)
DriveNotFoundException 类

用指定的消息字符串和设置为 COR_E_DIRECTORYNOTFOUND 的 HRESULT 初始化 DriveNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public DriveNotFoundException(
    string message
)
public:
DriveNotFoundException(
    String^ message
)
new :
        message:string -> DriveNotFoundException

参数

message
类型： System String
描述错误的 String 对象。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述错误的 String 对象。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

此构造函数用 message 参数初始化新实例的 Exception..::.Message 属性。

新实例的 Exception..::.InnerException 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveNotFoundException 类
DriveNotFoundException 成员
DriveNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DriveNotFoundException 构造函数 (SerializationInfo, StreamingContext)

DriveNotFoundException 构造函数 (SerializationInfo, StreamingContext)
DriveNotFoundException 类

使用指定的序列化和上下文信息初始化 DriveNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected DriveNotFoundException(
    SerializationInfo info,
    StreamingContext context
)
protected:
DriveNotFoundException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> DriveNotFoundException

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo 对象，包含有关所引发异常的序列化对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext 对象，包含有关所引发异常的源或目标的上下文信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveNotFoundException 类
DriveNotFoundException 成员
DriveNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DriveNotFoundException 构造函数 (String, Exception)

DriveNotFoundException 构造函数 (String, Exception)
DriveNotFoundException 类

用指定的错误消息和对导致此异常的内部异常的引用来初始化 DriveNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public DriveNotFoundException(
    string message,
    Exception innerException
)
public:
DriveNotFoundException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> DriveNotFoundException

参数

message
类型： System String
解释异常原因的错误信息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 DirectoryNotFoundException 实例的初始属性值。

属性 | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

DriveNotFoundException 类
DriveNotFoundException 成员
DriveNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


DriveNotFoundException 方法

DriveNotFoundException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveNotFoundException 类

DriveNotFoundException 类型公开以下成员。

名称 说明
页首

参考

DriveNotFoundException 类
System.IO 命名空间


DriveNotFoundException 属性

DriveNotFoundException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveNotFoundException 类

DriveNotFoundException 类型公开以下成员。

名称 说明
页首

参考

DriveNotFoundException 类
System.IO 命名空间


DriveNotFoundException 事件

DriveNotFoundException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DriveNotFoundException 类

DriveNotFoundException 类型公开以下成员。

名称 说明
页首

参考

DriveNotFoundException 类
System.IO 命名空间


DriveType 枚举

DriveType 枚举

定义驱动器类型常数，包括 CDRom、Fixed、Network、NoRootDirectory、Ram、Removable 和 Unknown。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration DriveType
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum DriveType
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class DriveType
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type DriveType
成员名称 | 说明
Unknown | 驱动器类型未知。
NoRootDirectory | 此驱动器没有根目录。
Removable | 此驱动器是一个可移动存储设备，如软盘驱动器或 USB 闪存驱动器。
Fixed | 此驱动器是一个固定磁盘。
Network | 此驱动器是一个网络驱动器。
CDRom | 此驱动器是一个光盘设备，如 CD 或 DVD-ROM。
Ram | 此驱动器是一个 RAM 磁盘。

DriveType 供 DriveInfo 类使用，指示驱动器类型。它可以与 DriveType 属性一起使用。 DriveType 供 DriveInfo 类使用，指示驱动器类型。它可以与 DriveType 属性一起使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间


EndOfStreamException 类

EndOfStreamException 类
成员

读操作尝试超出流的末尾时引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class EndOfStreamException _
    Inherits IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class EndOfStreamException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class EndOfStreamException : public IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type EndOfStreamException =
    class
        inherit IOException
    end

EndOfStreamException 使用值为 0x80070026 的 HRESULT COR_E_ENDOFSTREAM。

下面的代码示例说明如何通过在 MemoryStream 类之上使用 BinaryReader 和 BinaryWriter 两个类，在内存中读写 Double 数据。

Imports System
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()

        Dim i As Integer
        Const upperBound As Integer = 1000

        ' Create random data to write to the stream.
        Dim dataArray(upperBound) As Double
        Dim randomGenerator As New Random()
        For i = 0 To upperBound
            dataArray(i) = 100.1 * randomGenerator.NextDouble()
        Next i

        Dim binWriter As New BinaryWriter(New MemoryStream())
        Try

            ' Write data to the stream.
            Console.WriteLine("Writing data to the stream.")

            For i = 0 To upperBound
                binWriter.Write(dataArray(i))
            Next i

            ' Create a reader using the stream from the writer.
            Dim binReader As New BinaryReader(binWriter.BaseStream)

            ' Return to the beginning of the stream.
            binReader.BaseStream.Position = 0

            ' Read and verify the data.
            Try
                Console.WriteLine("Verifying the written data.")
                For i = 0 To upperBound
                    If binReader.ReadDouble() <> dataArray(i) Then
                        Console.WriteLine("Error writing data.")
                        Exit For
                    End If
                Next i
                Console.WriteLine("The data was written and verified.")
            Catch ex As EndOfStreamException
                Console.WriteLine("Error writing data: {0}.", _
                    ex.GetType().Name)
            End Try
        Finally
            binWriter.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i;
        const int arrayLength = 1000;

        // Create random data to write to the stream.
        Random randomGenerator = new Random();
        double[] dataArray = new double[arrayLength];
        for(i = 0; i < arrayLength; i++)
        {
            dataArray[i] = 100.1 * randomGenerator.NextDouble();
        }

        using(BinaryWriter binWriter =
            new BinaryWriter(new MemoryStream()))
        {
            // Write the data to the stream.
            Console.WriteLine("Writing data to the stream.");
            for(i = 0; i < arrayLength; i++)
            {
                binWriter.Write(dataArray[i]);
            }

            // Create a reader using the stream from the writer.
            using(BinaryReader binReader =
                new BinaryReader(binWriter.BaseStream))
            {
                try
                {
                    // Return to the beginning of the stream.
                    binReader.BaseStream.Position = 0;

                    // Read and verify the data.
                    Console.WriteLine("Verifying the written data.");
                    for(i = 0; i < arrayLength; i++)
                    {
                        if(binReader.ReadDouble() != dataArray[i])
                        {
                            Console.WriteLine("Error writing data.");
                            break;
                        }
                    }
                    Console.WriteLine("The data was written " +
                        "and verified.");
                }
                catch(EndOfStreamException e)
                {
                    Console.WriteLine("Error writing data: {0}.",
                        e.GetType().Name);
                }
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   int i;
   const int arrayLength = 1000;

   // Create random data to write to the stream.
   array<double>^dataArray = gcnew array<double>(arrayLength);
   Random^ randomGenerator = gcnew Random;
   for ( i = 0; i < arrayLength; i++ )
   {
      dataArray[ i ] = 100.1 * randomGenerator->NextDouble();

   }
   BinaryWriter^ binWriter = gcnew BinaryWriter( gcnew MemoryStream );
   try
   {

      // Write data to the stream.
      Console::WriteLine( "Writing data to the stream." );
      i = 0;
      for ( i = 0; i < arrayLength; i++ )
      {
         binWriter->Write( dataArray[ i ] );

      }

      // Create a reader using the stream from the writer.
      BinaryReader^ binReader = gcnew BinaryReader( binWriter->BaseStream );

      // Return to the beginning of the stream.
      binReader->BaseStream->Position = 0;
      try
      {

         // Read and verify the data.
         i = 0;
         Console::WriteLine( "Verifying the written data." );
         for ( i = 0; i < arrayLength; i++ )
         {
            if ( binReader->ReadDouble() != dataArray[ i ] )
            {
               Console::WriteLine( "Error writing data." );
               break;
            }

         }
         Console::WriteLine( "The data was written and verified." );
      }
      catch ( EndOfStreamException^ e )
      {
         Console::WriteLine( "Error writing data: {0}.", e->GetType()->Name );
      }

   }
   finally
   {
      binWriter->Close();
   }

}

System.IO System.IO..::.EndOfStreamExceptionEndOfStreamException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

EndOfStreamException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


EndOfStreamException 成员

EndOfStreamException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EndOfStreamException 类

读操作尝试超出流的末尾时引发的异常。

EndOfStreamException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

EndOfStreamException 类
System.IO 命名空间


EndOfStreamException 构造函数

EndOfStreamException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EndOfStreamException 类

初始化 EndOfStreamException 类的新实例。

名称 说明
页首

参考

EndOfStreamException 类
EndOfStreamException 成员
System.IO 命名空间


EndOfStreamException 构造函数

EndOfStreamException 构造函数
EndOfStreamException 类

初始化 EndOfStreamException 类的新实例，将其消息字符串设置为系统提供的消息，其 HRESULT 设置为 COR_E_ENDOFSTREAM。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public EndOfStreamException()
public:
EndOfStreamException()
new : unit -> EndOfStreamException

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

EndOfStreamException 类
EndOfStreamException 成员
EndOfStreamException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


EndOfStreamException 构造函数 (String)

EndOfStreamException 构造函数 (String)
EndOfStreamException 类

初始化 EndOfStreamException 类的新实例，使其消息字符串设置为 message，其 HRESULT 设置为 COR_E_ENDOFSTREAM。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public EndOfStreamException(
    string message
)
public:
EndOfStreamException(
    String^ message
)
new :
        message:string -> EndOfStreamException

参数

message
类型： System String
描述错误的字符串。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述错误的字符串。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述错误的字符串。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

EndOfStreamException 类
EndOfStreamException 成员
EndOfStreamException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


EndOfStreamException 构造函数 (SerializationInfo, StreamingContext)

EndOfStreamException 构造函数 (SerializationInfo, StreamingContext)
EndOfStreamException 类

使用指定的序列化和上下文信息初始化 EndOfStreamException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected EndOfStreamException(
    SerializationInfo info,
    StreamingContext context
)
protected:
EndOfStreamException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> EndOfStreamException

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

EndOfStreamException 类
EndOfStreamException 成员
EndOfStreamException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


EndOfStreamException 构造函数 (String, Exception)

EndOfStreamException 构造函数 (String, Exception)
EndOfStreamException 类

使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 EndOfStreamException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public EndOfStreamException(
    string message,
    Exception innerException
)
public:
EndOfStreamException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> EndOfStreamException

参数

message
类型： System String
描述错误的字符串。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述错误的字符串。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述错误的字符串。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 EndOfStreamException 实例的初始属性值。

属性 | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

EndOfStreamException 类
EndOfStreamException 成员
EndOfStreamException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


EndOfStreamException 方法

EndOfStreamException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EndOfStreamException 类

EndOfStreamException 类型公开以下成员。

名称 说明
页首

参考

EndOfStreamException 类
System.IO 命名空间


EndOfStreamException 属性

EndOfStreamException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EndOfStreamException 类

EndOfStreamException 类型公开以下成员。

名称 说明
页首

参考

EndOfStreamException 类
System.IO 命名空间


EndOfStreamException 事件

EndOfStreamException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EndOfStreamException 类

EndOfStreamException 类型公开以下成员。

名称 说明
页首

参考

EndOfStreamException 类
System.IO 命名空间


ErrorEventArgs 类

ErrorEventArgs 类
成员

为 Error 事件提供数据。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Class ErrorEventArgs _
    Inherits EventArgs
public class ErrorEventArgs : EventArgs
public ref class ErrorEventArgs : public EventArgs
type ErrorEventArgs =
    class
        inherit EventArgs
    end

ErrorEventArgs 包含导致 Error 事件的 Exception。此类提供检索异常的 GetException 方法。 ErrorEventArgs 包含导致 Error 事件的 Exception。此类提供检索异常的 GetException 方法。

下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。 下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。 下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。

Overloads Public Shared Sub Main(args() As String)
    ' Creates an exception with an error message.
    Dim myException As New Exception("This is an exception test")

    ' Creates an ErrorEventArgs with the exception.
    Dim myErrorEventArgs As New ErrorEventArgs(myException)

    ' Extracts the exception from the ErrorEventArgs and display it.
    Dim myReturnedException As Exception = myErrorEventArgs.GetException()
    MessageBox.Show(("The returned exception is: " & myReturnedException.Message))
End Sub 'Main

public static void Main(string[] args) {
    // Creates an exception with an error message.
    Exception myException= new Exception("This is an exception test");

    // Creates an ErrorEventArgs with the exception.
    ErrorEventArgs myErrorEventArgs = new ErrorEventArgs(myException);

    // Extracts the exception from the ErrorEventArgs and display it.
    Exception myReturnedException = myErrorEventArgs.GetException();
    MessageBox.Show("The returned exception is: " + myReturnedException.Message);
 }

int main()
{

   // Creates an exception with an error message.
   Exception^ myException = gcnew Exception( "This is an exception test" );

   // Creates an ErrorEventArgs with the exception.
   ErrorEventArgs^ myErrorEventArgs = gcnew ErrorEventArgs( myException );

   // Extracts the exception from the ErrorEventArgs and display it.
   Exception^ myReturnedException = myErrorEventArgs->GetException();
   MessageBox::Show( String::Concat( "The returned exception is: ", myReturnedException->Message ) );
}

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

System.IO System.IO..::.ErrorEventArgsErrorEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

ErrorEventArgs 成员
System.IO 命名空间
ErrorEventHandler
FileSystemWatcher
OnError


ErrorEventArgs 成员

ErrorEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ErrorEventArgs 类

为 Error 事件提供数据。

ErrorEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

ErrorEventArgs 类
System.IO 命名空间


ErrorEventArgs 构造函数

ErrorEventArgs 构造函数
ErrorEventArgs 类

初始化 ErrorEventArgs 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    exception As Exception _
)
public ErrorEventArgs(
    Exception exception
)
public:
ErrorEventArgs(
    Exception^ exception
)
new :
        exception:Exception -> ErrorEventArgs

参数

exception
类型： System Exception
表示已发生的错误的 Exception。

下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。 下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。 下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。

Public Shared Sub Main()
    'Creates an exception with an error message.
    Dim myException As New Exception("This is an exception test")

    'Creates an ErrorEventArgs with the exception.
    Dim myErrorEventArgs As New ErrorEventArgs(myException)

    'Extracts the exception from the ErrorEventArgs and display it.
    Dim myReturnedException As Exception = myErrorEventArgs.GetException()
    MessageBox.Show("The returned exception is: " _
       + myReturnedException.Message)
End Sub

public static void Main(string[] args) {
   //Creates an exception with an error message.
   Exception myException= new Exception("This is an exception test");

   //Creates an ErrorEventArgs with the exception.
   ErrorEventArgs myErrorEventArgs = new ErrorEventArgs(myException);

   //Extracts the exception from the ErrorEventArgs and display it.
   Exception myReturnedException = myErrorEventArgs.GetException();
   MessageBox.Show("The returned exception is: " + myReturnedException.Message);
}

int main()
{

   //Creates an exception with an error message.
   Exception^ myException = gcnew Exception( "This is an exception test" );

   //Creates an ErrorEventArgs with the exception.
   ErrorEventArgs^ myErrorEventArgs = gcnew ErrorEventArgs( myException );

   //Extracts the exception from the ErrorEventArgs and display it.
   Exception^ myReturnedException = myErrorEventArgs->GetException();
   MessageBox::Show( String::Concat( "The returned exception is: ", myReturnedException->Message ) );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

ErrorEventArgs 类
ErrorEventArgs 成员
System.IO 命名空间


ErrorEventArgs 方法

ErrorEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ErrorEventArgs 类

ErrorEventArgs 类型公开以下成员。

名称 说明
页首

参考

ErrorEventArgs 类
System.IO 命名空间


ErrorEventArgs ..::.GetException 方法

ErrorEventArgs
.
.
::
.
GetException 方法
ErrorEventArgs 类

获取表示已发生的错误的 Exception。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Overridable Function GetException As Exception
public virtual Exception GetException()
public:
virtual Exception^ GetException()
abstract GetException : unit -> Exception
override GetException : unit -> Exception

返回值

类型： System Exception
表示已发生的错误的 Exception。

下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。 下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。 下面的示例创建 ErrorEventArgs 的新实例，并使用 Exception 对其进行初始化。然后，该示例调用 GetException 来检索 Exception 并显示错误信息。没有与此代码相关联的窗体。

Public Shared Sub Main()
    'Creates an exception with an error message.
    Dim myException As New Exception("This is an exception test")

    'Creates an ErrorEventArgs with the exception.
    Dim myErrorEventArgs As New ErrorEventArgs(myException)

    'Extracts the exception from the ErrorEventArgs and display it.
    Dim myReturnedException As Exception = myErrorEventArgs.GetException()
    MessageBox.Show("The returned exception is: " _
       + myReturnedException.Message)
End Sub

public static void Main(string[] args) {
   //Creates an exception with an error message.
   Exception myException= new Exception("This is an exception test");

   //Creates an ErrorEventArgs with the exception.
   ErrorEventArgs myErrorEventArgs = new ErrorEventArgs(myException);

   //Extracts the exception from the ErrorEventArgs and display it.
   Exception myReturnedException = myErrorEventArgs.GetException();
   MessageBox.Show("The returned exception is: " + myReturnedException.Message);
}

int main()
{

   //Creates an exception with an error message.
   Exception^ myException = gcnew Exception( "This is an exception test" );

   //Creates an ErrorEventArgs with the exception.
   ErrorEventArgs^ myErrorEventArgs = gcnew ErrorEventArgs( myException );

   //Extracts the exception from the ErrorEventArgs and display it.
   Exception^ myReturnedException = myErrorEventArgs->GetException();
   MessageBox::Show( String::Concat( "The returned exception is: ", myReturnedException->Message ) );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

ErrorEventArgs 类
ErrorEventArgs 成员
System.IO 命名空间


ErrorEventHandler 委托

ErrorEventHandler 委托

表示将处理 FileSystemWatcher 对象的 Error 事件的方法。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Delegate Sub ErrorEventHandler ( _
    sender As Object, _
    e As ErrorEventArgs _
)
public delegate void ErrorEventHandler(
    Object sender,
    ErrorEventArgs e
)
public delegate void ErrorEventHandler(
    Object^ sender,
    ErrorEventArgs^ e
)
type ErrorEventHandler =
    delegate of
        sender:Object *
        e:ErrorEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.IO ErrorEventArgs
包含事件数据的 ErrorEventArgs 对象。

创建 ErrorEventHandler 委托时，标识将处理事件的方法。若要使事件与事件处理方法相关联，请将委托的实例添加到该事件中。除非移除委托，否则每当事件发生时都会调用该事件处理方法。有关事件处理程序委托的更多信息，请参见 事件和委托。 创建 ErrorEventHandler 委托时，标识将处理事件的方法。若要使事件与事件处理方法相关联，请将委托的实例添加到该事件中。除非移除委托，否则每当事件发生时都会调用该事件处理方法。有关事件处理程序委托的更多信息，请参见 事件和委托。 创建 ErrorEventHandler 委托时，标识将处理事件的方法。若要使事件与事件处理方法相关联，请将委托的实例添加到该事件中。除非移除委托，否则每当事件发生时都会调用该事件处理方法。有关事件处理程序委托的更多信息，请参见 事件和委托。 创建 ErrorEventHandler 委托时，标识将处理事件的方法。若要使事件与事件处理方法相关联，请将委托的实例添加到该事件中。除非移除委托，否则每当事件发生时都会调用该事件处理方法。有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的代码示例演示如何创建 FileSystemWatcher 对象，以监视磁盘驱动器上发生的文件更改（创建、删除、重命名、更改）。此示例还演示如何正确接收错误通知。 下面的代码示例演示如何创建 FileSystemWatcher 对象，以监视磁盘驱动器上发生的文件更改（创建、删除、重命名、更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间
ErrorEventArgs
FileSystemWatcher


File 类

File 类
成员

提供用于创建、复制、删除、移动和打开文件的静态方法，并协助创建 FileStream 对象。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(True)> _
Public NotInheritable Class File
[ComVisibleAttribute(true)]
public static class File
[ComVisibleAttribute(true)]
public ref class File abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
[<ComVisibleAttribute(true)>]
type File =  class end

将 File 类用于典型的操作，如复制、移动、重命名、创建、打开、删除和追加到文件。也可将 File 类用于获取和设置文件特性或有关文件创建、访问及写入操作的 DateTime 信息。 将 File 类用于典型的操作，如复制、移动、重命名、创建、打开、删除和追加到文件。也可将 File 类用于获取和设置文件特性或有关文件创建、访问及写入操作的 DateTime 信息。

许多 File 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。有关更多信息，请参见特定的 File 成员，如 OpenText、CreateText 或 Create。 许多 File 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。有关更多信息，请参见特定的 File 成员，如 OpenText、CreateText 或 Create。 许多 File 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。有关更多信息，请参见特定的 File 成员，如 OpenText、CreateText 或 Create。

由于所有的 File 方法都是静态的，所以如果只想执行一个操作，那么使用 File 方法的效率比使用相应的 FileInfo 实例方法可能更高。所有的 File 方法都要求当前所操作的文件的路径。 由于所有的 File 方法都是静态的，所以如果只想执行一个操作，那么使用 File 方法的效率比使用相应的 FileInfo 实例方法可能更高。所有的 File 方法都要求当前所操作的文件的路径。

File 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象，可考虑改用 FileInfo 的相应实例方法，因为并不总是需要安全检查。 File 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象，可考虑改用 FileInfo 的相应实例方法，因为并不总是需要安全检查。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。

下表描述了用于自定义各种 File 方法的行为的枚举。

Enumeration | Description
FileAccess | 指定对文件的读取和写入访问。
FileShare | 为已在使用中的文件指定允许的访问级别。
FileMode | 指定是保留还是覆盖现有文件的内容，并指定创建现有文件的请求是否会导致异常。
说明 说明

在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。

在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径：

  • C# 中的“c:\\MyDir\\MyFile.txt”或 Visual Basic 中的“c:\MyDir\MyFile.txt”。

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 File 类的一些主要成员。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        If File.Exists(path) = False Then
            ' Create a file to write to.
            Using sw As StreamWriter = File.CreateText(path)
                sw.WriteLine("Hello")
                sw.WriteLine("And")
                sw.WriteLine("Welcome")
                sw.Flush()
           End Using
        End If

        ' Open the file to read from.
        Using sr As StreamReader = File.OpenText(path)
            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
        End Using
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path))
        {
            // Create a file to write to.
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        // Open the file to read from.
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   if (  !File::Exists( path ) )
   {

      // Create a file to write to.
      StreamWriter^ sw = File::CreateText( path );
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
                  delete (IDisposable^)(sw);
      }
   }

   // Open the file to read from.
   StreamReader^ sr = File::OpenText( path );
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
            delete (IDisposable^)(sr);
   }

   try
   {
      String^ path2 = String::Concat( path, "temp" );

      // Ensure that the target does not exist.
      File::Delete( path2 );

      // Copy the file.
      File::Copy( path, path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      // Delete the newly created file.
      File::Delete( path2 );
      Console::WriteLine( "{0} was successfully deleted.", path2 );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

System.IO System.IO..::.FileFile
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 成员
System.IO 命名空间
DriveInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File 成员

File 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

提供用于创建、复制、删除、移动和打开文件的静态方法，并协助创建 FileStream 对象。

File 类型公开以下成员。

名称 说明
页首

参考

File 类
System.IO 命名空间


File 方法

File 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

File 类型公开以下成员。

名称 说明
页首

参考

File 类
System.IO 命名空间


File ..::.AppendAllLines 方法

File
.
.
::
.
AppendAllLines 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

在一个文件中追加文本行，然后关闭该文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.AppendAllLines 方法 (String, IEnumerable <(Of <(String >)>))

File
.
.
::
.
AppendAllLines 方法 (String, IEnumerable
<
(Of
<
(
String
>
)
>
)
)
File 类

在一个文件中追加文本行，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub AppendAllLines ( _
    path As String, _
    contents As IEnumerable(Of String) _
)
public static void AppendAllLines(
    string path,
    IEnumerable<string> contents
)
public:
static void AppendAllLines(
    String^ path,
    IEnumerable<String^>^ contents
)
static member AppendAllLines :
        path:string *
        contents:IEnumerable<string> -> unit

参数

path
类型： System String
要向其中追加文本行的文件。如果文件尚不存在，则创建该文件。 要向其中追加文本行的文件。如果文件尚不存在，则创建该文件。
contents
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

要追加到文件中的文本行。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 方法中已定义一个或多个无效字符。
ArgumentNullException | path 或 contents 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效（例如，在未映射的驱动器上）。
FileNotFoundException | 未找 path 中指定的文件。
IOException | 打开文件时发生了 I/O 错误。
PathTooLongException | path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有写入到文件的权限。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 是一个目录。 - 或 - 调用方没有所要求的权限。

如果目标文件不存在，则创建该文件。

下面的示例将示例数据文件中的选定行写入一个文件，然后再追加更多行。

Imports System
Imports System.IO
Imports System.Linq

Class Program
    Shared dataPath As String = "c:\temp\timestamps.txt"

    Public Shared Sub Main(ByVal args As String())
        CreateSampleFile()

        Dim JulyWeekends = From line In File.ReadLines(dataPath) _
            Where (line.StartsWith("Saturday") OrElse _
            line.StartsWith("Sunday")) And line.Contains("July") _
            Select line

        File.WriteAllLines("C:\temp\selectedDays.txt", JulyWeekends)

        Dim MarchMondays = From line In File.ReadLines(dataPath) _
            Where line.StartsWith("Monday") AndAlso line.Contains("March") _
            Select line

        File.AppendAllLines("C:\temp\selectedDays.txt", MarchMondays)
    End Sub

    Private Shared Sub CreateSampleFile()
        Dim TimeStamp As New DateTime(1700, 1, 1)

        Using sw As New StreamWriter(dataPath)
            For i As Integer = 0 To 499
                Dim TS1 As DateTime = TimeStamp.AddYears(i)
                Dim TS2 As DateTime = TS1.AddMonths(i)
                Dim TS3 As DateTime = TS2.AddDays(i)

                sw.WriteLine(TS3.ToLongDateString())
            Next
        End Using
    End Sub
End Class

using System;
using System.IO;
using System.Linq;

class Program
{
    static string dataPath = @"c:\temp\timestamps.txt";

    static void Main(string[] args)
    {
        CreateSampleFile();

        var JulyWeekends = from line in File.ReadLines(dataPath)
                           where (line.StartsWith("Saturday") ||
                           line.StartsWith("Sunday")) &
                           line.Contains("July")
                           select line;

        File.WriteAllLines(@"C:\temp\selectedDays.txt", JulyWeekends);

        var MarchMondays = from line in File.ReadLines(dataPath)
                           where line.StartsWith("Monday") &&
                           line.Contains("March")
                           select line;

        File.AppendAllLines(@"C:\temp\selectedDays.txt", MarchMondays);
    }

    static void CreateSampleFile()
    {
        DateTime TimeStamp = new DateTime(1700, 1, 1);

        using (StreamWriter sw = new StreamWriter(dataPath))
        {
            for (int i = 0; i < 500; i++)
            {
                DateTime TS1 = TimeStamp.AddYears(i);
                DateTime TS2 = TS1.AddMonths(i);
                DateTime TS3 = TS2.AddDays(i);
                sw.WriteLine(TS3.ToLongDateString());
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
AppendAllLines 重载
System.IO 命名空间


File ..::.AppendAllLines 方法 (String, IEnumerable <(Of <(String >)>), Encoding)

File
.
.
::
.
AppendAllLines 方法 (String, IEnumerable
<
(Of
<
(
String
>
)
>
)
, Encoding)
File 类

使用指定的编码向一个文件中追加文本行，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub AppendAllLines ( _
    path As String, _
    contents As IEnumerable(Of String), _
    encoding As Encoding _
)
public static void AppendAllLines(
    string path,
    IEnumerable<string> contents,
    Encoding encoding
)
public:
static void AppendAllLines(
    String^ path,
    IEnumerable<String^>^ contents,
    Encoding^ encoding
)
static member AppendAllLines :
        path:string *
        contents:IEnumerable<string> *
        encoding:Encoding -> unit

参数

path
类型： System String
要向其中追加文本行的文件。
contents
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

要追加到文件中的文本行。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 方法中已定义一个或多个无效字符。
ArgumentNullException | path、contents 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效（例如，在未映射的驱动器上）。
FileNotFoundException | 未找 path 中指定的文件。
IOException | 打开文件时发生了 I/O 错误。
PathTooLongException | path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 是一个目录。 - 或 - 调用方没有所要求的权限。

如果目标文件不存在，则创建该文件。

您可以使用此方法创建包含以下内容的文件：

  • 对文件的行执行 LINQ to Objects 查询的结果，与使用 ReadLines 方法获得的结果相同。

  • 实现字符串 IEnumerable<(Of <(T>)>) 的集合的内容。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
AppendAllLines 重载
System.IO 命名空间


File ..::.AppendAllText 方法

File
.
.
::
.
AppendAllText 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

将指定的字符串追加到文件中，如果文件还不存在则创建该文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.AppendAllText 方法 (String, String)

File
.
.
::
.
AppendAllText 方法 (String, String)
File 类

打开一个文件，向其中追加指定的字符串，然后关闭该文件。如果文件不存在，此方法创建一个文件，将指定的字符串写入文件，然后关闭该文件。 打开一个文件，向其中追加指定的字符串，然后关闭该文件。如果文件不存在，此方法创建一个文件，将指定的字符串写入文件，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub AppendAllText ( _
    path As String, _
    contents As String _
)
public static void AppendAllText(
    string path,
    string contents
)
public:
static void AppendAllText(
    String^ path,
    String^ contents
)
static member AppendAllText :
        path:string *
        contents:string -> unit

参数

path
类型： System String
要将指定的字符串追加到的文件。
contents
类型： System String
要追加到文件中的字符串。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

已知字符串和文件路径，此方法打开指定的文件，将字符串追加到文件末尾，然后关闭文件。即使会引发异常，也使用此方法保证文件句柄已关闭。 已知字符串和文件路径，此方法打开指定的文件，将字符串追加到文件末尾，然后关闭文件。即使会引发异常，也使用此方法保证文件句柄已关闭。

下面的代码示例演示如何使用 AppendAllText 方法将额外的文本添加到文件末尾。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 AppendAllText 方法将额外的文本添加到文件末尾。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText As String = "Hello and Welcome" + Environment.NewLine
            File.WriteAllText(path, createText)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText)

        ' Open the file to read from.
        Dim readText As String = File.ReadAllText(path)
        Console.WriteLine(readText)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}
  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Append 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Append

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
AppendAllText 重载
System.IO 命名空间


File ..::.AppendAllText 方法 (String, String, Encoding)

File
.
.
::
.
AppendAllText 方法 (String, String, Encoding)
File 类

将指定的字符串追加到文件中，如果文件还不存在则创建该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub AppendAllText ( _
    path As String, _
    contents As String, _
    encoding As Encoding _
)
public static void AppendAllText(
    string path,
    string contents,
    Encoding encoding
)
public:
static void AppendAllText(
    String^ path,
    String^ contents,
    Encoding^ encoding
)
static member AppendAllText :
        path:string *
        contents:string *
        encoding:Encoding -> unit

参数

path
类型： System String
要将指定的字符串追加到的文件。
contents
类型： System String
要追加到文件中的字符串。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

已知字符串和文件路径，此方法打开指定的文件，使用指定的编码将字符串追加到文件末尾，然后关闭文件。即使会引发异常，也使用此方法保证文件句柄已关闭。 已知字符串和文件路径，此方法打开指定的文件，使用指定的编码将字符串追加到文件末尾，然后关闭文件。即使会引发异常，也使用此方法保证文件句柄已关闭。

下面的代码示例演示如何使用 AppendAllText 方法将额外的文本添加到文件末尾。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 AppendAllText 方法将额外的文本添加到文件末尾。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText As String = "Hello and Welcome" + Environment.NewLine
            File.WriteAllText(path, createText, Encoding.UTF8)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText, Encoding.UTF8)

        ' Open the file to read from.
        Dim readText As String = File.ReadAllText(path)
        Console.WriteLine(readText)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText, Encoding.UTF8);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText, Encoding.UTF8);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}
  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Append 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Append

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
AppendAllText 重载
System.IO 命名空间


File ..::.AppendText 方法

File
.
.
::
.
AppendText 方法
File 类

创建一个 StreamWriter，它将 UTF-8 编码文本追加到现有文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function AppendText ( _
    path As String _
) As StreamWriter
public static StreamWriter AppendText(
    string path
)
public:
static StreamWriter^ AppendText(
    String^ path
)
static member AppendText :
        path:string -> StreamWriter

参数

path
类型： System String
要向其中追加内容的文件的路径。

返回值

类型： System.IO StreamWriter
一个 StreamWriter，它将 UTF-8 编码文本追加到现有文件。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
NotSupportedException | path 的格式无效。

此方法等效于 StreamWriter(String, Boolean) 构造函数重载。如果由 path 指定的文件不存在，则创建该文件。如果该文件存在，则对 StreamWriter 的写入操作将文本追加到该文件。允许其他线程在文件打开后读取该文件。 此方法等效于 StreamWriter(String, Boolean) 构造函数重载。如果由 path 指定的文件不存在，则创建该文件。如果该文件存在，则对 StreamWriter 的写入操作将文本追加到该文件。允许其他线程在文件打开后读取该文件。 此方法等效于 StreamWriter(String, Boolean) 构造函数重载。如果由 path 指定的文件不存在，则创建该文件。如果该文件存在，则对 StreamWriter 的写入操作将文本追加到该文件。允许其他线程在文件打开后读取该文件。 此方法等效于 StreamWriter(String, Boolean) 构造函数重载。如果由 path 指定的文件不存在，则创建该文件。如果该文件存在，则对 StreamWriter 的写入操作将文本追加到该文件。允许其他线程在文件打开后读取该文件。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

path 参数不区分大小写。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将文本追加到文件。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then
            ' Create a file to write to.
            sw = File.CreateText(path)

            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        sw = File.AppendText(path)
        sw.WriteLine("This")
        sw.WriteLine("is Extra")
        sw.WriteLine("Text")
        sw.Flush()
        sw.Close()

        ' Open the file to read from.
        Dim sr As StreamReader = File.OpenText(path)
        Dim s As String
        Do While sr.Peek() >= 0
            s = sr.ReadLine()
            Console.WriteLine(s)
        Loop
        sr.Close()
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        using (StreamWriter sw = File.AppendText(path))
        {
            sw.WriteLine("This");
            sw.WriteLine("is Extra");
            sw.WriteLine("Text");
        }

        // Open the file to read from.
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // This text is added only once to the file.
   if (  !File::Exists( path ) )
   {
      // Create a file to write to.
      StreamWriter^ sw = File::CreateText( path );
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
            delete (IDisposable^)sw;
      }
   }

   // This text is always added, making the file longer over time
   // if it is not deleted.
   StreamWriter^ sw = File::AppendText( path );
   try
   {
      sw->WriteLine( "This" );
      sw->WriteLine( "is Extra" );
      sw->WriteLine( "Text" );
   }
   finally
   {
      if ( sw )
         delete (IDisposable^)sw;
   }

   // Open the file to read from.
   StreamReader^ sr = File::OpenText( path );
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }
}
  • FileIOPermission

    用于追加到指定的文件。关联的枚举：FileIOPermissionAccess..::.Append 用于追加到指定的文件。关联的枚举：FileIOPermissionAccess..::.Append

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间
StreamWriter

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.Copy 方法

File
.
.
::
.
Copy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

将现有文件复制到新文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.Copy 方法 (String, String)

File
.
.
::
.
Copy 方法 (String, String)
File 类

将现有文件复制到新文件。不允许覆盖同名的文件。 将现有文件复制到新文件。不允许覆盖同名的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Copy ( _
    sourceFileName As String, _
    destFileName As String _
)
public static void Copy(
    string sourceFileName,
    string destFileName
)
public:
static void Copy(
    String^ sourceFileName,
    String^ destFileName
)
static member Copy :
        sourceFileName:string *
        destFileName:string -> unit

参数

sourceFileName
类型： System String
要复制的文件。
destFileName
类型： System String
目标文件的名称。它不能是一个目录或现有文件。 目标文件的名称。它不能是一个目录或现有文件。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | sourceFileName 或 destFileName 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - sourceFileName 或 destFileName 指定目录。
ArgumentNullException | sourceFileName 或 destFileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 在 sourceFileName 或 destFileName 中指定的路径无效（例如，它位于未映射的驱动器上）。
FileNotFoundException | 未找到 sourceFileName。
IOException | destFileName 存在。 - 或 - 出现 I/O 错误。
NotSupportedException | sourceFileName 或 destFileName 的格式无效。

此方法与将 overwrite 参数设置为 false 的 Copy(String, String, Boolean) 方法重载等效。

sourceFileName 和 destFileName 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 Directory..::.GetCurrentDirectory 方法。
sourceFileName 和 destFileName 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 Directory..::.GetCurrentDirectory 方法。
sourceFileName 和 destFileName 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 Directory..::.GetCurrentDirectory 方法。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将文件复制到 C:\archives\2008 备份文件夹。它使用 Copy 方法的两个重载，如下所述： 下面的示例将文件复制到 C:\archives\2008 备份文件夹。它使用 Copy 方法的两个重载，如下所述：

  • 首先，使用 File..::.Copy(String, String) 方法重载来复制文本 (.txt) 文件。该代码演示了此重载不允许覆盖已复制的文件。 首先，使用 File..::.Copy(String, String) 方法重载来复制文本 (.txt) 文件。该代码演示了此重载不允许覆盖已复制的文件。

  • 然后，它使用 File..::.Copy(String, String, Boolean) 方法重载来复制图片 (.jpg) 文件。该代码演示了此重载不允许覆盖已复制的文件。 然后，它使用 File..::.Copy(String, String, Boolean) 方法重载来复制图片 (.jpg) 文件。该代码演示了此重载不允许覆盖已复制的文件。

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}
  • FileIOPermission

    用于从 sourceFileName 中读取并写入到 destFileName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于从 sourceFileName 中读取并写入到 destFileName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Copy 重载
System.IO 命名空间
Move
Move

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.Copy 方法 (String, String, Boolean)

File
.
.
::
.
Copy 方法 (String, String, Boolean)
File 类

将现有文件复制到新文件。允许覆盖同名的文件。 将现有文件复制到新文件。允许覆盖同名的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Copy ( _
    sourceFileName As String, _
    destFileName As String, _
    overwrite As Boolean _
)
public static void Copy(
    string sourceFileName,
    string destFileName,
    bool overwrite
)
public:
static void Copy(
    String^ sourceFileName,
    String^ destFileName,
    bool overwrite
)
static member Copy :
        sourceFileName:string *
        destFileName:string *
        overwrite:bool -> unit

参数

sourceFileName
类型： System String
要复制的文件。
destFileName
类型： System String
目标文件的名称。不能是目录。 目标文件的名称。不能是目录。
overwrite
类型： System Boolean
如果可以覆盖目标文件，则为 true；否则为 false。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - destFileName 是只读的。
ArgumentException | sourceFileName 或 destFileName 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - sourceFileName 或 destFileName 指定目录。
ArgumentNullException | sourceFileName 或 destFileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 在 sourceFileName 或 destFileName 中指定的路径无效（例如，它位于未映射的驱动器上）。
FileNotFoundException | 未找到 sourceFileName。
IOException | destFileName 存在并且 overwrite 为 false. - 或 - 出现 I/O 错误。
NotSupportedException | sourceFileName 或 destFileName 的格式无效。

sourceFileName 和 destFileName 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。 sourceFileName 和 destFileName 参数可以指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将文件复制到 C:\archives\2008 备份文件夹。它使用 Copy 方法的两个重载，如下所述： 下面的示例将文件复制到 C:\archives\2008 备份文件夹。它使用 Copy 方法的两个重载，如下所述：

  • 首先，使用 File..::.Copy(String, String) 方法重载来复制文本 (.txt) 文件。该代码演示了此重载不允许覆盖已复制的文件。 首先，使用 File..::.Copy(String, String) 方法重载来复制文本 (.txt) 文件。该代码演示了此重载不允许覆盖已复制的文件。

然后，它使用 File..::.Copy(String, String, Boolean) 方法重载来复制图片 (.jpg) 文件。该代码演示了此重载不允许覆盖已复制的文件。 然后，它使用 File..::.Copy(String, String, Boolean) 方法重载来复制图片 (.jpg) 文件。该代码演示了此重载不允许覆盖已复制的文件。

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}
  • FileIOPermission

    用于从 sourceFileName 中读取并写入到 destFileName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于从 sourceFileName 中读取并写入到 destFileName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Copy 重载
System.IO 命名空间
Move
Move

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.Create 方法

File
.
.
::
.
Create 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

在指定路径中创建文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.Create 方法 (String)

File
.
.
::
.
Create 方法 (String)
File 类

在指定路径中创建或覆盖文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Create ( _
    path As String _
) As FileStream
public static FileStream Create(
    string path
)
public:
static FileStream^ Create(
    String^ path
)
static member Create :
        path:string -> FileStream

参数

path
类型： System String
要创建的文件的路径及名称。

返回值

类型： System.IO FileStream
一个 FileStream，它提供对 path 中指定的文件的读/写访问。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 创建文件时发生 I/O 错误。
NotSupportedException | path 的格式无效。

由此方法创建的 FileStream 对象的 FileShare 值默认为 None；直到关闭原始文件句柄后，其他进程或代码才能访问这个创建的文件。

此方法等效于使用默认缓冲区大小的 Create(String, Int32) 方法重载。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。 默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例在指定路径中创建一个文件，将一些信息写入该文件，再从文件中读取。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                ' Note that no lock is put on the
                ' file and the possibility exists
                ' that another process could do
                ' something with it between
                ' the calls to Exists and Delete.
                File.Delete(path)
            End If
            ' Create the file.
            Dim fs As FileStream = File.Create(path)
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")

            ' Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()

            ' Open the stream and read it back.
            Dim sr As StreamReader = File.OpenText(path)
            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
        Catch ex As Exception
            Console.WriteLine(ex)
        End Try
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {

            // Delete the file if it exists.
            if (File.Exists(path))
            {
                // Note that no lock is put on the
                // file and the possibility exists
                // that another process could do
                // something with it between
                // the calls to Exists and Delete.
                File.Delete(path);
            }

            // Create the file.
            using (FileStream fs = File.Create(path))
            {
                Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
                // Add some information to the file.
                fs.Write(info, 0, info.Length);
            }

            // Open the stream and read it back.
            using (StreamReader sr = File.OpenText(path))
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                    Console.WriteLine(s);
                }
            }
        }

        catch (Exception Ex)
        {
            Console.WriteLine(Ex.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Delete the file if it exists.
   if ( File::Exists( path ) )
   {
      File::Delete( path );
   }

   // Create the file.
   FileStream^ fs = File::Create( path );
   try
   {
      array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

      // Add some information to the file.
      fs->Write( info, 0, info->Length );
   }
   finally
   {
      if ( fs )
            delete (IDisposable^)fs;
   }

   // Open the stream and read it back.
   StreamReader^ sr = File::OpenText( path );
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
            delete (IDisposable^)sr;
   }
}
  • FileIOPermission

    表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Create 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.Create 方法 (String, Int32)

File
.
.
::
.
Create 方法 (String, Int32)
File 类

创建或覆盖指定的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Create ( _
    path As String, _
    bufferSize As Integer _
) As FileStream
public static FileStream Create(
    string path,
    int bufferSize
)
public:
static FileStream^ Create(
    String^ path,
    int bufferSize
)
static member Create :
        path:string *
        bufferSize:int -> FileStream

参数

path
类型： System String
文件名。
bufferSize
类型： System Int32
用于读取和写入文件的已放入缓冲区的字节数。

返回值

类型： System.IO FileStream
一个具有指定缓冲大小的 FileStream，它提供对 path 中指定的文件的读/写访问。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 创建文件时发生 I/O 错误。
NotSupportedException | path 的格式无效。

由此方法创建的 FileStream 对象的 FileShare 值默认为 None；直到关闭原始文件句柄后，其他进程或代码才能访问这个创建的文件。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

此方法等效于 FileStream(String, FileMode, FileAccess, FileShare, Int32) 构造函数重载。如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。 此方法等效于 FileStream(String, FileMode, FileAccess, FileShare, Int32) 构造函数重载。如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。 默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例创建一个具有指定缓冲区大小的文件。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' Delete the file if it exists.
        If File.Exists(path) Then
            File.Delete(path)
        End If

        ' Create the file.
        Dim fs As FileStream = File.Create(path, 1024)
        Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")

        ' Add some information to the file.
        fs.Write(info, 0, info.Length)
        fs.Close()

        ' Open the stream and read it back.
        Dim sr As StreamReader = File.OpenText(path)
        Do While sr.Peek() >= 0
            Console.WriteLine(sr.ReadLine())
        Loop
        sr.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        // Create the file.
        using (FileStream fs = File.Create(path, 1024))
        {
            Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
            // Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

        // Open the stream and read it back.
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Delete the file if it exists.
   if ( File::Exists( path ) )
   {
      File::Delete( path );
   }

   // Create the file.
   FileStream^ fs = File::Create( path, 1024 );
   try
   {
      array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

      // Add some information to the file.
      fs->Write( info, 0, info->Length );
   }
   finally
   {
      if ( fs )
            delete (IDisposable^)fs;
   }

   // Open the stream and read it back.
   StreamReader^ sr = File::OpenText( path );
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
            delete (IDisposable^)sr;
   }
}
  • FileIOPermission

    表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Create 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.Create 方法 (String, Int32, FileOptions)

File
.
.
::
.
Create 方法 (String, Int32, FileOptions)
File 类

创建或覆盖指定的文件，并指定缓冲区大小和一个描述如何创建或覆盖该文件的 FileOptions 值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Create ( _
    path As String, _
    bufferSize As Integer, _
    options As FileOptions _
) As FileStream
public static FileStream Create(
    string path,
    int bufferSize,
    FileOptions options
)
public:
static FileStream^ Create(
    String^ path,
    int bufferSize,
    FileOptions options
)
static member Create :
        path:string *
        bufferSize:int *
        options:FileOptions -> FileStream

参数

path
类型： System String
文件名。
bufferSize
类型： System Int32
用于读取和写入文件的已放入缓冲区的字节数。
options
类型： System.IO FileOptions
FileOptions 值之一，它描述如何创建或覆盖该文件。

返回值

类型： System.IO FileStream
具有指定缓冲区大小的新文件。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。 - 或 - 为 options 指定了 Encrypted，但当前平台不支持文件加密。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 创建文件时发生 I/O 错误。
NotSupportedException | path 的格式无效。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

此方法等效于 FileStream(String, FileMode, FileAccess, FileShare, Int32) 构造函数重载。如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。 此方法等效于 FileStream(String, FileMode, FileAccess, FileShare, Int32) 构造函数重载。如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。 默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
Create 重载
System.IO 命名空间


File ..::.Create 方法 (String, Int32, FileOptions, FileSecurity)

File
.
.
::
.
Create 方法 (String, Int32, FileOptions, FileSecurity)
File 类

创建或覆盖具有指定的缓冲区大小、文件选项和文件安全性的指定文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Create ( _
    path As String, _
    bufferSize As Integer, _
    options As FileOptions, _
    fileSecurity As FileSecurity _
) As FileStream
public static FileStream Create(
    string path,
    int bufferSize,
    FileOptions options,
    FileSecurity fileSecurity
)
public:
static FileStream^ Create(
    String^ path,
    int bufferSize,
    FileOptions options,
    FileSecurity^ fileSecurity
)
static member Create :
        path:string *
        bufferSize:int *
        options:FileOptions *
        fileSecurity:FileSecurity -> FileStream

参数

path
类型： System String
文件名。
bufferSize
类型： System Int32
用于读取和写入文件的已放入缓冲区的字节数。
options
类型： System.IO FileOptions
FileOptions 值之一，它描述如何创建或覆盖该文件。
fileSecurity
类型： System.Security.AccessControl FileSecurity
FileSecurity 值之一，它确定文件的访问控制和审核安全性。

返回值

类型： System.IO FileStream
具有指定的缓冲区大小、文件选项和文件安全性的新文件。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。 - 或 - 为 options 指定了 Encrypted，但当前平台不支持文件加密。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 创建文件时发生 I/O 错误。
NotSupportedException | path 的格式无效。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了一个只读文件。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

此方法等效于 FileStream(String, FileMode, FileAccess, FileShare, Int32) 构造函数重载。如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。 此方法等效于 FileStream(String, FileMode, FileAccess, FileShare, Int32) 构造函数重载。如果指定的文件不存在，则创建该文件；如果存在并且不是只读的，则将覆盖其内容。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。 默认情况下，将向所有用户授予对新文件的完全读/写访问权限。文件是用读/写访问权限打开的，必须关闭后才能由其他应用程序打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
Create 重载
System.IO 命名空间


File ..::.CreateText 方法

File
.
.
::
.
CreateText 方法
File 类

创建或打开一个文件用于写入 UTF-8 编码的文本。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function CreateText ( _
    path As String _
) As StreamWriter
public static StreamWriter CreateText(
    string path
)
public:
static StreamWriter^ CreateText(
    String^ path
)
static member CreateText :
        path:string -> StreamWriter

参数

path
类型： System String
要打开以进行写入的文件。

返回值

类型： System.IO StreamWriter
一个 StreamWriter，它使用 UTF-8 编码写入指定的文件。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
NotSupportedException | path 的格式无效。

此方法与将 append 参数设置为 false 的 StreamWriter(String, Boolean) 构造函数重载等效。如果由 path 指定的文件不存在，则创建该文件。如果该文件确实存在，则覆盖其内容。允许其他线程在文件打开后读取该文件。 此方法与将 append 参数设置为 false 的 StreamWriter(String, Boolean) 构造函数重载等效。如果由 path 指定的文件不存在，则创建该文件。如果该文件确实存在，则覆盖其内容。允许其他线程在文件打开后读取该文件。 此方法与将 append 参数设置为 false 的 StreamWriter(String, Boolean) 构造函数重载等效。如果由 path 指定的文件不存在，则创建该文件。如果该文件确实存在，则覆盖其内容。允许其他线程在文件打开后读取该文件。 此方法与将 append 参数设置为 false 的 StreamWriter(String, Boolean) 构造函数重载等效。如果由 path 指定的文件不存在，则创建该文件。如果该文件确实存在，则覆盖其内容。允许其他线程在文件打开后读取该文件。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例创建一个文件，用于写入和读取文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        If File.Exists(path) = False Then
            ' Create a file to write to.
            Dim sw As StreamWriter = File.CreateText(path)
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        ' Open the file to read from.
        Dim sr As StreamReader = File.OpenText(path)
        Do While sr.Peek() >= 0
            Console.WriteLine(sr.ReadLine())
        Loop
        sr.Close()
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path))
        {
            // Create a file to write to.
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        // Open the file to read from.
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   if ( !File::Exists( path ) )
   {

      // Create a file to write to.
      StreamWriter^ sw = File::CreateText( path );
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
                  delete (IDisposable^)sw;
      }
   }

   // Open the file to read from.
   StreamReader^ sr = File::OpenText( path );
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
            delete (IDisposable^)sr;
   }
}
  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.Decrypt 方法

File
.
.
::
.
Decrypt 方法
File 类

解密由当前帐户使用 Encrypt 方法加密的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Decrypt ( _
    path As String _
)
public static void Decrypt(
    string path
)
public:
static void Decrypt(
    String^ path
)
static member Decrypt :
        path:string -> unit

参数

path
类型： System String
描述要解密的文件的路径。
异常 | 条件
ArgumentException | path 参数是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DriveNotFoundException | 指定了无效的驱动器。
FileNotFoundException | 未能找到 path 参数所描述的文件。
IOException | 打开文件时发生了 I/O 错误。例如，加密的文件已经打开。 打开文件时发生了 I/O 错误。例如，加密的文件已经打开。 - 或 - 在当前平台上不支持此操作。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
NotSupportedException | 文件系统不是 NTFS。
UnauthorizedAccessException | path 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 参数指定了一个目录。 - 或 - 调用方没有所要求的权限。

Decrypt 方法允许解密使用 Encrypt 方法加密的文件。Decrypt 方法只能解密使用当前用户帐户加密的文件。 Decrypt 方法允许解密使用 Encrypt 方法加密的文件。Decrypt 方法只能解密使用当前用户帐户加密的文件。

Decrypt 方法要求独占访问被解密的文件，如果有其他进程正在使用该文件，此方法将引发异常。如果文件没有加密，则 Decrypt 将返回一个非零值，这表示成功。 Decrypt 方法要求独占访问被解密的文件，如果有其他进程正在使用该文件，此方法将引发异常。如果文件没有加密，则 Decrypt 将返回一个非零值，这表示成功。

Encrypt 方法和 Decrypt 方法都使用计算机上安装的加密服务提供程序 (CSP) 和调用方法的进程的文件加密密钥。

当前文件系统必须格式化为 NTFS，当前操作系统必须是 Windows NT 或更高版本。

下面的代码示例使用 Encrypt 方法和 Decrypt 方法来加密然后解密文件。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "test.xml"

            Console.WriteLine("Encrypt " + FileName)

            ' Encrypt the file.
            AddEncryption(FileName)

            Console.WriteLine("Decrypt " + FileName)

            ' Decrypt the file.
            RemoveEncryption(FileName)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Encrypt a file.
    Sub AddEncryption(ByVal FileName As String)

        File.Encrypt(FileName)

    End Sub

    ' Decrypt the file.
    Sub RemoveEncryption(ByVal FileName As String)

        File.Decrypt(FileName)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "test.xml";

                Console.WriteLine("Encrypt " + FileName);

                // Encrypt the file.
                AddEncryption(FileName);

                Console.WriteLine("Decrypt " + FileName);

                // Decrypt the file.
                RemoveEncryption(FileName);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Encrypt a file.
        public static void AddEncryption(string FileName)
        {

            File.Encrypt(FileName);

        }

        // Decrypt a file.
        public static void RemoveEncryption(string FileName)
        {
            File.Decrypt(FileName);
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
    String^ fileName = "test.xml";
    if (!File::Exists(fileName))
    {
        Console::WriteLine("The file " + fileName
            + " does not exist.");
        return 0;
    }
    try
    {
        Console::WriteLine("Encrypt " + fileName);

        // Encrypt the file.
        File::Encrypt(fileName);

        Console::WriteLine("Decrypt " + fileName);

        // Decrypt the file.
        File::Decrypt(fileName);

        Console::WriteLine("Done");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine("There was an IO problem.");
        Console::WriteLine(ex->Message);
    }
    catch (PlatformNotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (NotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("The operation could not be "
            + "carried out.");
    }
}
  • FileIOPermission

    表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间


File ..::.Delete 方法

File
.
.
::
.
Delete 方法
File 类

删除指定的文件。如果指定的文件不存在，则不引发异常。 删除指定的文件。如果指定的文件不存在，则不引发异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Delete ( _
    path As String _
)
public static void Delete(
    string path
)
public:
static void Delete(
    String^ path
)
static member Delete :
        path:string -> unit

参数

path
类型： System String
要删除的文件的名称。通配符不受支持。 要删除的文件的名称。通配符不受支持。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 指定的文件正在使用中。
NotSupportedException | path 的格式无效。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 是一个目录。 - 或 - path 指定一个只读文件。

为 path 参数指定包含任何相对或绝对路径信息的文件名。不能包含通配符字符。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 为 path 参数指定包含任何相对或绝对路径信息的文件名。不能包含通配符字符。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 为 path 参数指定包含任何相对或绝对路径信息的文件名。不能包含通配符字符。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 为 path 参数指定包含任何相对或绝对路径信息的文件名。不能包含通配符字符。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows NT 4.0 平台说明： Windows NT 4.0 平台说明：Delete 不删除为正常 I/O 打开的文件或已在内存中映射的文件。

下面的示例将文件组复制到 C:\archives\2008 备份文件夹，然后将它们从源文件夹删除。

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}
  • FileIOPermission

    用于删除指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于删除指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.Encrypt 方法

File
.
.
::
.
Encrypt 方法
File 类

将某个文件加密，使得只有加密该文件的帐户才能将其解密。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Encrypt ( _
    path As String _
)
public static void Encrypt(
    string path
)
public:
static void Encrypt(
    String^ path
)
static member Encrypt :
        path:string -> unit

参数

path
类型： System String
描述要加密的文件的路径。
异常 | 条件
ArgumentException | path 参数是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DriveNotFoundException | 指定了无效的驱动器。
FileNotFoundException | 未能找到 path 参数所描述的文件。
IOException | 打开文件时发生了 I/O 错误。 - 或 - 在当前平台上不支持此操作。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
NotSupportedException | 文件系统不是 NTFS。
UnauthorizedAccessException | path 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 参数指定了一个目录。 - 或 - 调用方没有所要求的权限。

Encrypt 方法允许加密文件，使得只有用于调用此方法的帐户才能解密文件。使用 Decrypt 方法可解密用 Encrypt 方法加密的文件。 Encrypt 方法允许加密文件，使得只有用于调用此方法的帐户才能解密文件。使用 Decrypt 方法可解密用 Encrypt 方法加密的文件。

Encrypt 方法要求独占访问被加密的文件，如果有其他进程正在使用该文件，此方法将失败。

Encrypt 方法和 Decrypt 方法都使用计算机上安装的加密服务提供程序 (CSP) 和调用方法的进程的文件加密密钥。

当前文件系统必须格式化为 NTFS，当前操作系统必须是 Windows NT 或更高版本。

下面的代码示例使用 Encrypt 方法和 Decrypt 方法来加密然后解密文件。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "test.xml"

            Console.WriteLine("Encrypt " + FileName)

            ' Encrypt the file.
            AddEncryption(FileName)

            Console.WriteLine("Decrypt " + FileName)

            ' Decrypt the file.
            RemoveEncryption(FileName)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Encrypt a file.
    Sub AddEncryption(ByVal FileName As String)

        File.Encrypt(FileName)

    End Sub

    ' Decrypt the file.
    Sub RemoveEncryption(ByVal FileName As String)

        File.Decrypt(FileName)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "test.xml";

                Console.WriteLine("Encrypt " + FileName);

                // Encrypt the file.
                AddEncryption(FileName);

                Console.WriteLine("Decrypt " + FileName);

                // Decrypt the file.
                RemoveEncryption(FileName);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Encrypt a file.
        public static void AddEncryption(string FileName)
        {

            File.Encrypt(FileName);

        }

        // Decrypt a file.
        public static void RemoveEncryption(string FileName)
        {
            File.Decrypt(FileName);
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
    String^ fileName = "test.xml";
    if (!File::Exists(fileName))
    {
        Console::WriteLine("The file " + fileName
            + " does not exist.");
        return 0;
    }
    try
    {
        Console::WriteLine("Encrypt " + fileName);

        // Encrypt the file.
        File::Encrypt(fileName);

        Console::WriteLine("Decrypt " + fileName);

        // Decrypt the file.
        File::Decrypt(fileName);

        Console::WriteLine("Done");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine("There was an IO problem.");
        Console::WriteLine(ex->Message);
    }
    catch (PlatformNotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (NotSupportedException^)
    {
        Console::WriteLine("Encryption is not supported on " +
            "this system.");
    }
    catch (UnauthorizedAccessException^)
    {
        Console::WriteLine("The operation could not be "
            + "carried out.");
    }
}
  • FileIOPermission

    表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 path 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间


File ..::.Exists 方法

File
.
.
::
.
Exists 方法
File 类

确定指定的文件是否存在。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Exists ( _
    path As String _
) As Boolean
public static bool Exists(
    string path
)
public:
static bool Exists(
    String^ path
)
static member Exists :
        path:string -> bool

参数

path
类型： System String
要检查的文件。

返回值

类型： System Boolean
如果调用方具有要求的权限并且 path 包含现有文件的名称，则为 true；否则为 false。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）、无效路径或零长度字符串，则此方法也将返回 false。如果调用方不具有读取指定文件所需的足够权限，则不引发异常并且该方法返回 false，这与 path 是否存在无关。 如果调用方具有要求的权限并且 path 包含现有文件的名称，则为 true；否则为 false。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）、无效路径或零长度字符串，则此方法也将返回 false。如果调用方不具有读取指定文件所需的足够权限，则不引发异常并且该方法返回 false，这与 path 是否存在无关。 如果调用方具有要求的权限并且 path 包含现有文件的名称，则为 true；否则为 false。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）、无效路径或零长度字符串，则此方法也将返回 false。如果调用方不具有读取指定文件所需的足够权限，则不引发异常并且该方法返回 false，这与 path 是否存在无关。

不应使用 Exists 方法来验证路径，此方法仅检查 path 中指定的文件是否存在。将无效路径传递到 Exists 将返回 false。 不应使用 Exists 方法来验证路径，此方法仅检查 path 中指定的文件是否存在。将无效路径传递到 Exists 将返回 false。

请注意，在您调用 Exists 方法和对文件执行其他操作（如 Delete）之间，其他进程可能会对文件进行一些处理。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

如果 path 描述一个目录，则此方法返回 false。在确定文件是否存在之前，从 path 参数中移除尾随空格。 如果 path 描述一个目录，则此方法返回 false。在确定文件是否存在之前，从 path 参数中移除尾随空格。

下面的示例确定文件是否存在。

Dim curFile As String = "c:\temp\test.txt"
Console.WriteLine(If(File.Exists(curFile), "File exists.", "File does not exist."))

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetAccessControl 方法

File
.
.
::
.
GetAccessControl 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

获取一个 FileSecurity 对象，它封装指定文件的访问控制列表 (ACL) 条目。

名称 说明
页首

使用 GetAccessControl 方法检索指定文件的访问控制列表 (ACL) 条目。

参考

File 类
File 成员
System.IO 命名空间


File ..::.GetAccessControl 方法 (String)

File
.
.
::
.
GetAccessControl 方法 (String)
File 类

获取一个 FileSecurity 对象，它封装指定文件的访问控制列表 (ACL) 条目。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetAccessControl ( _
    path As String _
) As FileSecurity
public static FileSecurity GetAccessControl(
    string path
)
public:
static FileSecurity^ GetAccessControl(
    String^ path
)
static member GetAccessControl :
        path:string -> FileSecurity

参数

path
类型： System String
一个文件的路径，该文件包含描述文件的访问控制列表 (ACL) 信息的 FileSecurity 对象。

返回值

类型： System.Security.AccessControl FileSecurity
一个 FileSecurity 对象，它封装由 path 参数描述的文件的访问控制规则。
异常 | 条件
IOException | 打开文件时发生了 I/O 错误。
SEHException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SystemException | 未能找到文件。
UnauthorizedAccessException | path 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 参数指定了一个目录。 - 或 - 调用方没有所要求的权限。

使用 GetAccessControl 方法检索文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。 在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。

下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法在文件中添加然后移除访问控制列表 (ACL) 项。您必须提供有效的用户或组帐户才能运行此示例。 下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法在文件中添加然后移除访问控制列表 (ACL) 项。您必须提供有效的用户或组帐户才能运行此示例。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim fileName As String = "test.xml"

            Console.WriteLine("Adding access control entry for " & fileName)

            ' Add the access control entry to the file.
            AddFileSecurity(fileName, "DomainName\AccountName", _
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " & fileName)

            ' Remove the access control entry from the file.
            RemoveFileSecurity(fileName, "DomainName\AccountName", _
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Add the FileSystemAccessRule to the security settings.
        Dim accessRule As FileSystemAccessRule = _
            New FileSystemAccessRule(account, rights, controlType)

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub

    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Remove the FileSystemAccessRule from the security settings.
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account, _
            rights, controlType))

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string fileName = "test.xml";

                Console.WriteLine("Adding access control entry for "
                    + fileName);

                // Add the access control entry to the file.
                AddFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from "
                    + fileName);

                // Remove the access control entry from the file.
                RemoveFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Remove the FileSystemAccessRule from the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified file for the specified account.

void AddFileSecurity(String^ fileName, String^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    // Add the FileSystemAccessRule to the security settings.
    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

// Removes an ACL entry on the specified file for the specified account.

void RemoveFileSecurity(String^ fileName, String^ account,
                        FileSystemRights rights, AccessControlType controlType)
{

    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    // Remove the FileSystemAccessRule from the security settings.
    fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule
                                      (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.xml";

        Console::WriteLine("Adding access control entry for " + fileName);

        // Add the access control entry to the file.
        AddFileSecurity(fileName, "MYDOMAIN\\MyAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " + fileName);

        // Remove the access control entry from the file.
        RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
  • FileIOPermission

    读取访问控制列表的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
读取访问控制列表的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
读取访问控制列表的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
GetAccessControl 重载
System.IO 命名空间


File ..::.GetAccessControl 方法 (String, AccessControlSections)

File
.
.
::
.
GetAccessControl 方法 (String, AccessControlSections)
File 类

获取一个 FileSecurity 对象，它封装特定文件的指定类型的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetAccessControl ( _
    path As String, _
    includeSections As AccessControlSections _
) As FileSecurity
public static FileSecurity GetAccessControl(
    string path,
    AccessControlSections includeSections
)
public:
static FileSecurity^ GetAccessControl(
    String^ path,
    AccessControlSections includeSections
)
static member GetAccessControl :
        path:string *
        includeSections:AccessControlSections -> FileSecurity

参数

path
类型： System String
一个文件的路径，该文件包含描述文件的访问控制列表 (ACL) 信息的 FileSecurity 对象。
includeSections
类型： System.Security.AccessControl AccessControlSections
AccessControlSections 值之一，它指定要接收的访问控制列表 (ACL) 信息的类型。

返回值

类型： System.Security.AccessControl FileSecurity
一个 FileSecurity 对象，它封装由 path 参数描述的文件的访问控制规则。
异常 | 条件
IOException | 打开文件时发生了 I/O 错误。
SEHException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SystemException | 未能找到文件。
UnauthorizedAccessException | path 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 参数指定了一个目录。 - 或 - 调用方没有所要求的权限。

使用 GetAccessControl 方法检索文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。 在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。

  • FileIOPermission

    读取访问控制列表的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
读取访问控制列表的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View
读取访问控制列表的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.View

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
GetAccessControl 重载
System.IO 命名空间


File ..::.GetAttributes 方法

File
.
.
::
.
GetAttributes 方法
File 类

获取在此路径上的文件的 FileAttributes。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetAttributes ( _
    path As String _
) As FileAttributes
public static FileAttributes GetAttributes(
    string path
)
public:
static FileAttributes GetAttributes(
    String^ path
)
static member GetAttributes :
        path:string -> FileAttributes

参数

path
类型： System String
该文件的路径。

返回值

类型： System.IO FileAttributes
路径上文件的 FileAttributes。
异常 | 条件
ArgumentException | path 为空，仅包含空白，或包含无效字符。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
FileNotFoundException | path 表示一个文件且它是无效的，例如，位于未映射的驱动器上或无法找到文件。
DirectoryNotFoundException | path 表示一个目录且它是无效的，例如，位于未映射的驱动器上或无法找到目录。
IOException | 此文件正由另一个进程使用。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例通过将 Archive 和 Hidden 特性应用于文件，演示了 GetAttributes 和 SetAttributes 方法。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        ' Create the file if it exists.
        If File.Exists(path) = False Then
            File.Create(path)
        End If

        If (File.GetAttributes(path) And FileAttributes.Hidden) = FileAttributes.Hidden Then
            ' Show the file.
            File.SetAttributes(path, FileAttributes.Archive)
            Console.WriteLine("The {0} file is no longer hidden.", path)
        Else
            ' Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) Or FileAttributes.Hidden)
            Console.WriteLine("The {0} file is now hidden.", path)
        End If
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Create the file if it exists.
        if (!File.Exists(path))
        {
            File.Create(path);
        }

        if ((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden)
        {
            // Show the file.
            File.SetAttributes(path, FileAttributes.Archive);
            Console.WriteLine("The {0} file is no longer hidden.", path);
        }
        else
        {
            // Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
            Console.WriteLine("The {0} file is now hidden.", path);
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Create the file if it exists.
   if (  !File::Exists( path ) )
   {
      File::Create( path );
   }

   if ( (File::GetAttributes( path ) & FileAttributes::Hidden) == FileAttributes::Hidden )
   {

      // Show the file.
      File::SetAttributes( path, FileAttributes::Archive );
      Console::WriteLine( "The {0} file is no longer hidden.", path );
   }
   else
   {

      // Hide the file.
      File::SetAttributes( path, static_cast<FileAttributes>(File::GetAttributes( path ) | FileAttributes::Hidden) );
      Console::WriteLine( "The {0} file is now hidden.", path );
   }
}
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetCreationTime 方法

File
.
.
::
.
GetCreationTime 方法
File 类

返回指定文件或目录的创建日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetCreationTime ( _
    path As String _
) As DateTime
public static DateTime GetCreationTime(
    string path
)
public:
static DateTime GetCreationTime(
    String^ path
)
static member GetCreationTime :
        path:string -> DateTime

参数

path
类型： System String
要获取其创建日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它被设置为指定文件或目录的创建日期和时间。该值用本地时间表示。 一个 DateTime 结构，它被设置为指定文件或目录的创建日期和时间。该值用本地时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间，这称为“文件隧道”。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明 GetCreationTime。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Try
            ' Get the creation time of a well-known directory.
            Dim dt As DateTime = Directory.GetCreationTime(Environment.CurrentDirectory)

            ' Give feedback to the user.
            If (DateTime.Now.Subtract(dt).TotalDays > 364) Then
                Console.WriteLine("This directory is over a year old.")
            ElseIf (DateTime.Now.Subtract(dt).TotalDays > 30) Then
                Console.WriteLine("This directory is over a month old.")
            ElseIf (DateTime.Now.Subtract(dt).TotalDays <= 1) Then
                Console.WriteLine("This directory is less than a day old.")
            Else
                Console.WriteLine("This directory was created on {0}.", dt)
            End If

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Get the creation time of a well-known directory.
            DateTime dt = Directory.GetCreationTime(
                Environment.CurrentDirectory);

            // Give feedback to the user.
            if (DateTime.Now.Subtract(dt).TotalDays > 364)
            {
                Console.WriteLine("This directory is over a year old.");
            }
            else if (DateTime.Now.Subtract(dt).TotalDays > 30)
            {
                Console.WriteLine("This directory is over a month old.");
            }
            else if (DateTime.Now.Subtract(dt).TotalDays <= 1)
            {
                Console.WriteLine("This directory is less than a day old.");
            }
            else
            {
                Console.WriteLine("This directory was created on {0}.", dt);
            }
        }

        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {

      // Get the creation time of a well-known directory.
      DateTime dt = Directory::GetCreationTime( Environment::CurrentDirectory );

      // Give feedback to the user.
      if ( DateTime::Now.Subtract( dt ).TotalDays > 364 )
      {
         Console::WriteLine( "This directory is over a year old." );
      }
      else
      if ( DateTime::Now.Subtract( dt ).TotalDays > 30 )
      {
         Console::WriteLine( "This directory is over a month old." );
      }
      else
      if ( DateTime::Now.Subtract( dt ).TotalDays <= 1 )
      {
         Console::WriteLine( "This directory is less than a day old." );
      }
      else
      {
         Console::WriteLine( "This directory was created on {0}.", dt );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetCreationTimeUtc 方法

File
.
.
::
.
GetCreationTimeUtc 方法
File 类

返回指定的文件或目录的创建日期及时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetCreationTimeUtc ( _
    path As String _
) As DateTime
public static DateTime GetCreationTimeUtc(
    string path
)
public:
static DateTime GetCreationTimeUtc(
    String^ path
)
static member GetCreationTimeUtc :
        path:string -> DateTime

参数

path
类型： System String
要获取其创建日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它被设置为指定文件或目录的创建日期和时间。该值用 UTC 时间表示。 一个 DateTime 结构，它被设置为指定文件或目录的创建日期和时间。该值用 UTC 时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间，这称为“文件隧道”。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetLastAccessTime 方法

File
.
.
::
.
GetLastAccessTime 方法
File 类

返回上次访问指定文件或目录的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastAccessTime ( _
    path As String _
) As DateTime
public static DateTime GetLastAccessTime(
    string path
)
public:
static DateTime GetLastAccessTime(
    String^ path
)
static member GetLastAccessTime :
        path:string -> DateTime

参数

path
类型： System String
要获取其访问日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它被设置为上次访问指定文件或目录的日期和时间。该值用本地时间表示。 一个 DateTime 结构，它被设置为上次访问指定文件或目录的日期和时间。该值用本地时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明 GetLastAccessTime。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\Temp\MyTest.txt"
            If File.Exists(path) = False Then
                File.Create(path)
            End If
            File.SetLastAccessTime(path, New DateTime(1985, 5, 4))

            ' Get the creation time of a well-known directory.
            Dim dt As DateTime = File.GetLastAccessTime(path)

            Console.WriteLine("The last access time for this file was {0}.", dt)

            ' Update the last access time.
            File.SetLastAccessTime(path, DateTime.Now)
            dt = File.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this file was {0}.", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\Temp\MyTest.txt";

            if (!File.Exists(path))
            {
                File.Create(path);
            }
            File.SetLastAccessTime(path, new DateTime(1985,5,4));

            // Get the creation time of a well-known directory.
            DateTime dt = File.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this file was {0}.", dt);

            // Update the last access time.
            File.SetLastAccessTime(path, DateTime.Now);
            dt = File.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this file was {0}.", dt);
        }

        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\Temp\\MyTest.txt";
      if (  !File::Exists( path ) )
      {
         File::Create( path );
      }
      File::SetLastAccessTime( path, DateTime(1985,5,4) );

      // Get the creation time of a well-known directory.
      DateTime dt = File::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this file was {0}.", dt );

      // Update the last access time.
      File::SetLastAccessTime( path, DateTime::Now );
      dt = File::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this file was {0}.", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetLastAccessTimeUtc 方法

File
.
.
::
.
GetLastAccessTimeUtc 方法
File 类

返回上次访问指定的文件或目录的日期及时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastAccessTimeUtc ( _
    path As String _
) As DateTime
public static DateTime GetLastAccessTimeUtc(
    string path
)
public:
static DateTime GetLastAccessTimeUtc(
    String^ path
)
static member GetLastAccessTimeUtc :
        path:string -> DateTime

参数

path
类型： System String
要获取其访问日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它被设置为上次访问指定文件或目录的日期和时间。该值用 UTC 时间表示。 一个 DateTime 结构，它被设置为上次访问指定文件或目录的日期和时间。该值用 UTC 时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetLastWriteTime 方法

File
.
.
::
.
GetLastWriteTime 方法
File 类

返回上次写入指定文件或目录的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastWriteTime ( _
    path As String _
) As DateTime
public static DateTime GetLastWriteTime(
    string path
)
public:
static DateTime GetLastWriteTime(
    String^ path
)
static member GetLastWriteTime :
        path:string -> DateTime

参数

path
类型： System String
要获取其写入日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它被设置为上次写入指定文件或目录的日期和时间。该值用本地时间表示。 一个 DateTime 结构，它被设置为上次写入指定文件或目录的日期和时间。该值用本地时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明 GetLastWriteTime。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\Temp\MyTest.txt"
            If File.Exists(path) = False Then
                File.Create(path)
            Else
                ' Take some action that will affect the write time.
                File.SetLastWriteTime(path, New DateTime(1985, 4, 3))
            End If

            'Get the creation time of a well-known directory.
            Dim dt As DateTime = File.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this file was {0}.", dt)

            'Update the last write time.
            File.SetLastWriteTime(path, DateTime.Now)
            dt = File.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this file was {0}.", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\Temp\MyTest.txt";
            if (!File.Exists(path))
            {
                File.Create(path);
            }
            else
            {
                // Take an action that will affect the write time.
                File.SetLastWriteTime(path, new DateTime(1985,4,3));
            }

            // Get the creation time of a well-known directory.
            DateTime dt = File.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this file was {0}.", dt);

            // Update the last write time.
            File.SetLastWriteTime(path, DateTime.Now);
            dt = File.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this file was {0}.", dt);

        }

        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\Temp\\MyTest.txt";
      if (  !File::Exists( path ) )
      {
         File::Create( path );
      }
      else
      {

         // Take an action that will affect the write time.
         File::SetLastWriteTime( path, DateTime(1985,4,3) );
      }

      // Get the creation time of a well-known directory.
      DateTime dt = File::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this file was {0}.", dt );

      // Update the last write time.
      File::SetLastWriteTime( path, DateTime::Now );
      dt = File::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this file was {0}.", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.GetLastWriteTimeUtc 方法

File
.
.
::
.
GetLastWriteTimeUtc 方法
File 类

返回上次写入指定的文件或目录的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetLastWriteTimeUtc ( _
    path As String _
) As DateTime
public static DateTime GetLastWriteTimeUtc(
    string path
)
public:
static DateTime GetLastWriteTimeUtc(
    String^ path
)
static member GetLastWriteTimeUtc :
        path:string -> DateTime

参数

path
类型： System String
要获取其写入日期和时间信息的文件或目录。

返回值

类型： System DateTime
一个 DateTime 结构，它被设置为上次写入指定文件或目录的日期和时间。该值用 UTC 时间表示。 一个 DateTime 结构，它被设置为上次写入指定文件或目录的日期和时间。该值用 UTC 时间表示。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
说明 说明

此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 path 参数中描述的文件不存在，则此方法将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.Move 方法

File
.
.
::
.
Move 方法
File 类

将指定文件移到新位置，并提供指定新文件名的选项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Move ( _
    sourceFileName As String, _
    destFileName As String _
)
public static void Move(
    string sourceFileName,
    string destFileName
)
public:
static void Move(
    String^ sourceFileName,
    String^ destFileName
)
static member Move :
        sourceFileName:string *
        destFileName:string -> unit

参数

sourceFileName
类型： System String
要移动的文件的名称。
destFileName
类型： System String
文件的新路径。
异常 | 条件
IOException | 目标文件已经存在。 - 或 - 未找到 sourceFileName。
ArgumentNullException | sourceFileName 或 destFileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | sourceFileName 或 destFileName 是零长度字符串、只包含空白或者包含在 InvalidPathChars 中定义的无效字符。
UnauthorizedAccessException | 调用方没有所要求的权限。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | sourceFileName 或 destFileName 中指定的路径无效（例如，它位于未映射的驱动器上）。
NotSupportedException | sourceFileName 或 destFileName 的格式无效。

此方法对整个磁盘卷工作；并且如果源和目标相同，它不会引发异常。请注意，如果尝试通过将一个同名文件移到该目录中来替换文件，将发生 IOException。不能使用 Move 方法覆盖现有文件。 此方法对整个磁盘卷工作；并且如果源和目标相同，它不会引发异常。请注意，如果尝试通过将一个同名文件移到该目录中来替换文件，将发生 IOException。不能使用 Move 方法覆盖现有文件。 此方法对整个磁盘卷工作；并且如果源和目标相同，它不会引发异常。请注意，如果尝试通过将一个同名文件移到该目录中来替换文件，将发生 IOException。不能使用 Move 方法覆盖现有文件。

允许 sourceFileName 和 destFileName 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 sourceFileName 和 destFileName 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 sourceFileName 和 destFileName 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例移动一个文件。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim path2 As String = "c:\temp2\MyTest.txt"

        Try
            If File.Exists(path) = False Then
                ' This statement ensures that the file is created,
                ' but the handle is not kept.
                Dim fs As FileStream = File.Create(path)
                fs.Close()
            End If

            ' Ensure that the target does not exist.
            If File.Exists(path2) Then
                File.Delete(path2)
            End If

            ' Move the file.
            File.Move(path, path2)
            Console.WriteLine("{0} moved to {1}", path, path2)

            ' See if the original file exists now.
            If File.Exists(path) Then
                Console.WriteLine("The original file still exists, which is unexpected.")
            Else
                Console.WriteLine("The original file no longer exists, which is expected.")
            End If
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp2\MyTest.txt";
        try
        {
            if (!File.Exists(path))
            {
                // This statement ensures that the file is created,
                // but the handle is not kept.
                using (FileStream fs = File.Create(path)) {}
            }

            // Ensure that the target does not exist.
            if (File.Exists(path2))
            File.Delete(path2);

            // Move the file.
            File.Move(path, path2);
            Console.WriteLine("{0} was moved to {1}.", path, path2);

            // See if the original exists now.
            if (File.Exists(path))
            {
                Console.WriteLine("The original file still exists, which is unexpected.");
            }
            else
            {
                Console.WriteLine("The original file no longer exists, which is expected.");
            }

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   String^ path2 = "c:\\temp2\\MyTest.txt";
   try
   {
      if (  !File::Exists( path ) )
      {

         // This statement ensures that the file is created,
         // but the handle is not kept.
         FileStream^ fs = File::Create( path );
         if ( fs )
                  delete (IDisposable^)fs;
      }

      // Ensure that the target does not exist.
      if ( File::Exists( path2 ) )
            File::Delete( path2 );

      // Move the file.
      File::Move( path, path2 );
      Console::WriteLine( "{0} was moved to {1}.", path, path2 );

      // See if the original exists now.
      if ( File::Exists( path ) )
      {
         Console::WriteLine( "The original file still exists, which is unexpected." );
      }
      else
      {
         Console::WriteLine( "The original file no longer exists, which is expected." );
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
  • FileIOPermission

    用于从 sourceFileName 中读取并写入到 destFileName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于从 sourceFileName 中读取并写入到 destFileName。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.Open 方法

File
.
.
::
.
Open 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

打开指定路径上的 FileStream。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.Open 方法 (String, FileMode)

File
.
.
::
.
Open 方法 (String, FileMode)
File 类

打开指定路径上的 FileStream，具有读/写访问权限。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Open ( _
    path As String, _
    mode As FileMode _
) As FileStream
public static FileStream Open(
    string path,
    FileMode mode
)
public:
static FileStream^ Open(
    String^ path,
    FileMode mode
)
static member Open :
        path:string *
        mode:FileMode -> FileStream

参数

path
类型： System String
要打开的文件。
mode
类型： System.IO FileMode
FileMode 值，用于指定在文件不存在时是否创建该文件，并确定是保留还是覆盖现有文件的内容。

返回值

类型： System.IO FileStream
以指定模式打开的指定路径上的 FileStream，具有读/写访问权限并且不共享。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。 - 或 - mode 为 Create，指定文件为隐藏文件。
ArgumentOutOfRangeException | mode 指定了一个无效值。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例创建一个临时文件并在该文件中写入一些文本。此示例然后使用 T:System.IO.FileMode.Open 打开文件。也就是说，如果文件尚不存在，不会创建该文件。 下面的代码示例创建一个临时文件并在该文件中写入一些文本。此示例然后使用 T:System.IO.FileMode.Open 打开文件。也就是说，如果文件尚不存在，不会创建该文件。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        ' Create a temporary file, and put some data into it.
        Dim path1 As String = Path.GetTempFileName()
        Dim fs As FileStream = File.Open(path1, _
            FileMode.Open, _
            FileAccess.Write, _
            FileShare.None)
        Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
        ' Add some information to the file.
        fs.Write(info, 0, info.Length)
        fs.Close()

        '
        ' Open the stream and read it back.
        '
        fs = File.Open(path1, FileMode.Open)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)
        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
        fs.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        // Create a temporary file, and put some data into it.
        string path = Path.GetTempFileName();
        using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.None))
        {
            Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
            // Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

        // Open the stream and read it back.
        using (FileStream fs = File.Open(path, FileMode.Open))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   // Create a temporary file, and put some data into it.
   String^ path = Path::GetTempFileName();
   FileStream^ fs = File::Open( path, FileMode::Open, FileAccess::Write, FileShare::None );
   try
   {
      array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

      // Add some information to the file.
      fs->Write( info, 0, info->Length );
   }
   finally
   {
      if ( fs )
            delete (IDisposable^)fs;
   }

   // Open the stream and read it back.
   fs = File::Open( path, FileMode::Open );
   try
   {
      array<Byte>^b = gcnew array<Byte>(1024);
      UTF8Encoding^ temp = gcnew UTF8Encoding( true );
      while ( fs->Read( b, 0, b->Length ) > 0 )
      {
         Console::WriteLine( temp->GetString( b ) );
      }
   }
   finally
   {
      if ( fs )
            delete (IDisposable^)fs;
   }
}
  • FileIOPermission

    用于读取和写入指定的文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入指定的文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Open 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.Open 方法 (String, FileMode, FileAccess)

File
.
.
::
.
Open 方法 (String, FileMode, FileAccess)
File 类

以指定的模式和访问权限打开指定路径上的 FileStream。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Open ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess _
) As FileStream
public static FileStream Open(
    string path,
    FileMode mode,
    FileAccess access
)
public:
static FileStream^ Open(
    String^ path,
    FileMode mode,
    FileAccess access
)
static member Open :
        path:string *
        mode:FileMode *
        access:FileAccess -> FileStream

参数

path
类型： System String
要打开的文件。
mode
类型： System.IO FileMode
FileMode 值，用于指定在文件不存在时是否创建该文件，并确定是保留还是覆盖现有文件的内容。
access
类型： System.IO FileAccess
FileAccess 值，指定可以对文件执行的操作。

返回值

类型： System.IO FileStream
一个非共享的 FileStream，它提供对指定文件的访问，并且具有指定的模式和访问权限。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - access 指定了 Read，而 mode 指定了 Create、CreateNew、Truncate 或 Append。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件，而 access 不为 Read。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。 - 或 - mode 为 Create，指定文件为隐藏文件。
ArgumentOutOfRangeException | mode 或 access 指定了一个无效值。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

下面的示例以只读访问方式打开一个文件。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        ' This sample assumes that you have a folder named "c:\temp" on your computer.
        Dim filePath As String = "c:\temp\MyTest.txt"
        Dim fs As FileStream

        ' Delete the file if it exists.
        If File.Exists(filePath) = True Then
            File.Delete(filePath)
        End If

        ' Create the file.
        fs = File.Create(filePath)
        Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")

        ' Add some information to the file.
        fs.Write(info, 0, info.Length)
        fs.Close()

        ' Open the stream and read it back.
        fs = File.Open(filePath, FileMode.Open, FileAccess.Read)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        ' Display the information on the console.
        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop

        Try
            ' Try to write to the file
            fs.Write(b, 0, b.Length)

        Catch e As Exception
            Console.WriteLine("Writing was disallowed, as expected: " & e.ToString())

        End Try

        fs.Close()

    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        // This sample assumes that you have a folder named "c:\temp" on your computer.
        string filePath = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(filePath))
        {
            File.Delete(filePath);
        }

        // Create the file.
        using (FileStream fs = File.Create(filePath))
        {
            Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
            // Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

        // Open the stream and read it back.
        using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }

            try
            {
                // Try to write to the file.
                fs.Write(b,0,b.Length);
            }
            catch (Exception e)
            {
                Console.WriteLine("Writing was disallowed, as expected: {0}", e.ToString());
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
    // This sample assumes that you have a folder named "c:\temp" on your computer.
    String^ filePath = "c:\\temp\\MyTest.txt";
    // Delete the file if it exists.
    if (File::Exists( filePath ))
    {
        File::Delete( filePath );
    }
    // Create the file.
    FileStream^ fs = File::Create( filePath );
    try
    {
        array<Byte>^ info = ( gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

        // Add some information to the file.
        fs->Write( info, 0, info->Length );
    }
    finally
    {
        if ( fs )
            delete (IDisposable^)fs;
    }

    // Open the stream and read it back.
    fs = File::Open( filePath, FileMode::Open, FileAccess::Read );
    try
    {
        array<Byte>^ b = gcnew array<Byte>(1024);
        UTF8Encoding^ temp = gcnew UTF8Encoding( true );
        while ( fs->Read( b, 0, b->Length ) > 0 )
        {
            Console::WriteLine( temp->GetString( b ) );
        }
        try
        {
            // Try to write to the file.
            fs->Write( b, 0, b->Length );
        }
        catch ( Exception^ e )
        {
            Console::WriteLine( "Writing was disallowed, as expected: {0}", e->ToString() );
        }
    }
    finally
    {
        if ( fs )
            delete (IDisposable^)fs;
    }
}
  • FileIOPermission

    用于读取和写入指定的文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入指定的文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Open 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.Open 方法 (String, FileMode, FileAccess, FileShare)

File
.
.
::
.
Open 方法 (String, FileMode, FileAccess, FileShare)
File 类

打开指定路径上的 FileStream，具有指定的读、写或读/写访问模式以及指定的共享选项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Open ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess, _
    share As FileShare _
) As FileStream
public static FileStream Open(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share
)
public:
static FileStream^ Open(
    String^ path,
    FileMode mode,
    FileAccess access,
    FileShare share
)
static member Open :
        path:string *
        mode:FileMode *
        access:FileAccess *
        share:FileShare -> FileStream

参数

path
类型： System String
要打开的文件。
mode
类型： System.IO FileMode
FileMode 值，用于指定在文件不存在时是否创建该文件，并确定是保留还是覆盖现有文件的内容。
access
类型： System.IO FileAccess
FileAccess 值，指定可以对文件执行的操作。
share
类型： System.IO FileShare
FileShare 值，它指定其他线程所具有的对该文件的访问类型。

返回值

类型： System.IO FileStream
指定路径上的 FileStream，具有指定的读、写或读/写访问模式以及指定的共享选项。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。 - 或 - access 指定了 Read，而 mode 指定了 Create、CreateNew、Truncate 或 Append。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件，而 access 不为 Read。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。 - 或 - mode 为 Create，指定文件为隐藏文件。
ArgumentOutOfRangeException | mode、access 或 share 指定了一个无效值。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例以只读访问方式打开一个文件，不允许文件共享。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fs As FileStream

        ' Create the file if it exists.
        If File.Exists(path) = False Then
            ' Create the file.
            fs = File.Create(path)
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")

            ' Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        ' Open the stream and read it back.
        fs = File.Open(path, FileMode.Open, FileAccess.Read)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop

        Try
            ' Try to get another handle to the same file.
            Dim fs2 As FileStream = File.Open(path, FileMode.Open)
            ' Do some task here.
            fs2.Close()
        Catch e As Exception
            Console.Write("Opening the file twice is disallowed.")
            Console.WriteLine(", as expected: {0}", e.ToString())
        End Try

        fs.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Create the file if it exists.
        if (!File.Exists(path))
        {
            // Create the file.
            using (FileStream fs = File.Create(path))
            {
                Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");

                // Add some information to the file.
                fs.Write(info, 0, info.Length);
            }
        }

        // Open the stream and read it back.
        using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }

            try
            {
                // Try to get another handle to the same file.
                using (FileStream fs2 = File.Open(path, FileMode.Open))
                {
                    // Do some task here.
                }
            }
            catch (Exception e)
            {
                Console.Write("Opening the file twice is disallowed.");
                Console.WriteLine(", as expected: {0}", e.ToString());
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Create the file if it exists.
   if (  !File::Exists( path ) )
   {
      // Create the file.
      FileStream^ fs = File::Create( path );
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

         // Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
                  delete (IDisposable^)fs;
      }
   }

   // Open the stream and read it back.
   FileStream^ fs = File::Open( path, FileMode::Open, FileAccess::Read, FileShare::None );
   try
   {
      array<Byte>^b = gcnew array<Byte>(1024);
      UTF8Encoding^ temp = gcnew UTF8Encoding( true );
      while ( fs->Read( b, 0, b->Length ) > 0 )
      {
         Console::WriteLine( temp->GetString( b ) );
      }
      try
      {
         // Try to get another handle to the same file.
         FileStream^ fs2 = File::Open( path, FileMode::Open );
         try
         {
            // Do some task here.
         }
         finally
         {
            if ( fs2 )
                        delete (IDisposable^)fs2;
         }
      }
      catch ( Exception^ e )
      {
         Console::Write( "Opening the file twice is disallowed." );
         Console::WriteLine( ", as expected: {0}", e );
      }
   }
   finally
   {
      if ( fs )
            delete (IDisposable^)fs;
   }
}
  • FileIOPermission

    用于读取和写入指定的文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入指定的文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
Open 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.OpenRead 方法

File
.
.
::
.
OpenRead 方法
File 类

打开现有文件以进行读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function OpenRead ( _
    path As String _
) As FileStream
public static FileStream OpenRead(
    string path
)
public:
static FileStream^ OpenRead(
    String^ path
)
static member OpenRead :
        path:string -> FileStream

参数

path
类型： System String
要打开以进行读取的文件。

返回值

类型： System.IO FileStream
指定路径上的只读 FileStream。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
UnauthorizedAccessException | path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。

此方法与 FileMode 值为 Open、FileAccess 值为 Read 和 FileShare 值为 Read 的 FileStream(String, FileMode, FileAccess, FileShare) 构造函数重载等效。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例打开一个文件以进行读取。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fs As FileStream

        ' Delete the file if it exists.
        If File.Exists(path) = False Then
            ' Create the file.
            fs = File.Create(path)
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")

            ' Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        ' Open the stream and read it back.
        fs = File.OpenRead(path)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
        fs.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (!File.Exists(path))
        {
            // Create the file.
            using (FileStream fs = File.Create(path))
            {
                Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");

                // Add some information to the file.
                fs.Write(info, 0, info.Length);
            }
        }

        // Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Delete the file if it exists.
   if (  !File::Exists( path ) )
   {
      // Create the file.
      FileStream^ fs = File::Create( path );
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

         // Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   // Open the stream and read it back.
   FileStream^ fs = File::OpenRead( path );
   try
   {
      array<Byte>^b = gcnew array<Byte>(1024);
      UTF8Encoding^ temp = gcnew UTF8Encoding( true );
      while ( fs->Read( b, 0, b->Length ) > 0 )
      {
         Console::WriteLine( temp->GetString( b ) );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}
  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.OpenText 方法

File
.
.
::
.
OpenText 方法
File 类

打开现有 UTF-8 编码文本文件以进行读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function OpenText ( _
    path As String _
) As StreamReader
public static StreamReader OpenText(
    string path
)
public:
static StreamReader^ OpenText(
    String^ path
)
static member OpenText :
        path:string -> StreamReader

参数

path
类型： System String
要打开以进行读取的文件。

返回值

类型： System.IO StreamReader
指定路径上的 StreamReader。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。

此方法等效于 StreamReader(String) 构造函数重载。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例打开一个文本文件以进行读取。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fs As FileStream

        ' Delete the file if it exists.
        If File.Exists(path) = False Then
            ' Create the file.
            fs = File.Create(path)
            Dim info As Byte() = _
             New UTF8Encoding(True).GetBytes("This is some text in the file.")

            ' Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        ' Open the stream and read it back.
        Dim sr As StreamReader = File.OpenText(path)

        Do While sr.Peek() >= 0
            Console.WriteLine(sr.ReadLine())
        Loop

        sr.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (!File.Exists(path))
        {
            // Create the file.
            using (FileStream fs = File.Create(path))
            {
                Byte[] info =
                    new UTF8Encoding(true).GetBytes("This is some text in the file.");

                // Add some information to the file.
                fs.Write(info, 0, info.Length);
            }
        }

        // Open the stream and read it back.
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Delete the file if it exists.
   if ( !File::Exists( path ) )
   {
      // Create the file.
      FileStream^ fs = File::Create( path );
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

         // Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   // Open the stream and read it back.
   StreamReader^ sr = File::OpenText( path );
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }
}
  • FileIOPermission

    用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取指定的文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.OpenWrite 方法

File
.
.
::
.
OpenWrite 方法
File 类

打开一个现有文件或创建一个新文件以进行写入。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function OpenWrite ( _
    path As String _
) As FileStream
public static FileStream OpenWrite(
    string path
)
public:
static FileStream^ OpenWrite(
    String^ path
)
static member OpenWrite :
        path:string -> FileStream

参数

path
类型： System String
要打开以进行写入的文件。

返回值

类型： System.IO FileStream
具有 Write 访问权限的指定路径上的非共享 FileStream 对象。
异常 | 条件
UnauthorizedAccessException | 调用方没有所要求的权限。 - 或 - path 指定了只读文件或目录。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。

此方法等效于 FileStream(String, FileMode, FileAccess, FileShare) 构造函数重载。

如果文件存在，那么将在开始时打开以进行写入。现有的文件不会被截断。 如果文件存在，那么将在开始时打开以进行写入。现有的文件不会被截断。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例打开一个文件以进行读取和写入。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fs As FileStream

        ' Create the file if it does not exist.
        If File.Exists(path) = False Then
            ' Create the file.
            fs = File.Create(path)
            fs.Close()
        End If

        ' Open the stream and write to it.
        fs = File.OpenWrite(path)
        Dim info As Byte() = _
         New UTF8Encoding(True).GetBytes("This is to test the OpenWrite method.")

        ' Add some information to the file.
        fs.Write(info, 0, info.Length)
        fs.Close()

        'Open the stream and read it back.
        fs = File.OpenRead(path)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
        fs.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Create the file if it does not exist.
        if (!File.Exists(path))
        {
            // Create the file.
            using (FileStream fs = File.Create(path)) {}
        }

        // Open the stream and write to it.
        using (FileStream fs = File.OpenWrite(path))
        {
            Byte[] info =
                new UTF8Encoding(true).GetBytes("This is to test the OpenWrite method.");

            // Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

        // Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Create the file if it does not exist.
   if (  !File::Exists( path ) )
   {
      // Create the file.
      FileStream^ fs = File::Create( path );
      if ( fs )
            delete (IDisposable^)fs;
   }

   // Open the stream and write to it.
   {
      FileStream^ fs = File::OpenWrite( path );
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->
            GetBytes( "This is to test the OpenWrite method." );

         // Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   // Open the stream and read it back.
   {
      FileStream^ fs = File::OpenRead( path );
      try
      {
         array<Byte>^b = gcnew array<Byte>(1024);
         UTF8Encoding^ temp = gcnew UTF8Encoding( true );
         while ( fs->Read( b, 0, b->Length ) > 0 )
         {
            Console::WriteLine( temp->GetString( b ) );
         }
      }
      finally
      {
         if ( fs )
            delete(IDisposable^)fs;
      }
   }
}
  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.ReadAllBytes 方法

File
.
.
::
.
ReadAllBytes 方法
File 类

打开一个文件，将文件的内容读入一个字符串，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadAllBytes ( _
    path As String _
) As Byte()
public static byte[] ReadAllBytes(
    string path
)
public:
static array<unsigned char>^ ReadAllBytes(
    String^ path
)
static member ReadAllBytes :
        path:string -> byte[]

参数

path
类型： System String
要打开以进行读取的文件。

返回值

类型：
array<
System Byte
>
[]
()
[]

包含文件内容的字节数组。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

已知文件路径，此方法打开文件，将文件的内容读入一个字节数组，然后关闭该文件。

  • FileIOPermission

    从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read 从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.ReadAllLines 方法

File
.
.
::
.
ReadAllLines 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

打开一个文本文件，将文件的所有行都读入一个字符串数组，然后关闭该文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.ReadAllLines 方法 (String)

File
.
.
::
.
ReadAllLines 方法 (String)
File 类

打开一个文本文件，读取文件的所有行，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadAllLines ( _
    path As String _
) As String()
public static string[] ReadAllLines(
    string path
)
public:
static array<String^>^ ReadAllLines(
    String^ path
)
static member ReadAllLines :
        path:string -> string[]

参数

path
类型： System String
要打开以进行读取的文件。

返回值

类型：
array<
System String
>
[]
()
[]

包含文件所有行的字符串数组。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。

此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。 此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。

下面的代码示例演示如何使用 ReadAllLines 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 ReadAllLines 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText() As String = {"Hello", "And", "Welcome"}
            File.WriteAllLines(path, createText)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText)

        ' Open the file to read from.
        Dim readText() As String = File.ReadAllLines(path)
        Dim s As String
        For Each s In readText
            Console.WriteLine(s)
        Next
    End Sub
End Class

using System;
using System.IO;
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string[] createText = { "Hello", "And", "Welcome" };
            File.WriteAllLines(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string[] readText = File.ReadAllLines(path);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }
    }
}
  • FileIOPermission

    从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read 从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
ReadAllLines 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.ReadAllLines 方法 (String, Encoding)

File
.
.
::
.
ReadAllLines 方法 (String, Encoding)
File 类

打开一个文件，使用指定的编码读取文件的所有行，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadAllLines ( _
    path As String, _
    encoding As Encoding _
) As String()
public static string[] ReadAllLines(
    string path,
    Encoding encoding
)
public:
static array<String^>^ ReadAllLines(
    String^ path,
    Encoding^ encoding
)
static member ReadAllLines :
        path:string *
        encoding:Encoding -> string[]

参数

path
类型： System String
要打开以进行读取的文件。
encoding
类型： System.Text Encoding
应用到文件内容的编码。

返回值

类型：
array<
System String
>
[]
()
[]

包含文件所有行的字符串数组。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串数组的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。

此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。 此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。

下面的代码示例演示如何使用 ReadAllLines 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 ReadAllLines 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText() As String = {"Hello", "And", "Welcome"}
            File.WriteAllLines(path, createText, Encoding.UTF8)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText, Encoding.UTF8)

        ' Open the file to read from.
        Dim readText() As String = File.ReadAllLines(path, Encoding.UTF8)
        Dim s As String
        For Each s In readText
            Console.WriteLine(s)
        Next
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string[] createText = { "Hello", "And", "Welcome" };
            File.WriteAllLines(path, createText, Encoding.UTF8);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText, Encoding.UTF8);

        // Open the file to read from.
        string[] readText = File.ReadAllLines(path, Encoding.UTF8);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }
    }
}
  • FileIOPermission

    从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read 从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
ReadAllLines 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.ReadAllText 方法

File
.
.
::
.
ReadAllText 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

打开一个文本文件，将文件的所有行读入一个字符串，然后关闭该文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.ReadAllText 方法 (String)

File
.
.
::
.
ReadAllText 方法 (String)
File 类

打开一个文本文件，读取文件的所有行，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadAllText ( _
    path As String _
) As String
public static string ReadAllText(
    string path
)
public:
static String^ ReadAllText(
    String^ path
)
static member ReadAllText :
        path:string -> string

参数

path
类型： System String
要打开以进行读取的文件。

返回值

类型： System String
包含文件所有行的字符串。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。

此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。 此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。

读取可能包含导入文本的文件时使用 ReadAllText(String, Encoding) 方法重载，因为无法识别的字符可能无法正确读取。

即使会引发异常，也使用此方法保证文件句柄已关闭。

下面的代码示例演示如何使用 ReadAllText 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 ReadAllText 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText As String = "Hello and Welcome" + Environment.NewLine
            File.WriteAllText(path, createText)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText)

        ' Open the file to read from.
        Dim readText As String = File.ReadAllText(path)
        Console.WriteLine(readText)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}
  • FileIOPermission

    从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read 从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
ReadAllText 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.ReadAllText 方法 (String, Encoding)

File
.
.
::
.
ReadAllText 方法 (String, Encoding)
File 类

打开一个文件，使用指定的编码读取文件的所有行，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadAllText ( _
    path As String, _
    encoding As Encoding _
) As String
public static string ReadAllText(
    string path,
    Encoding encoding
)
public:
static String^ ReadAllText(
    String^ path,
    Encoding^ encoding
)
static member ReadAllText :
        path:string *
        encoding:Encoding -> string

参数

path
类型： System String
要打开以进行读取的文件。
encoding
类型： System.Text Encoding
应用到文件内容的编码。

返回值

类型： System String
包含文件所有行的字符串。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。 此方法打开一个文件，读取文件的每一行，然后将每一行添加为字符串的一个元素。然后它关闭文件。根据定义，一行就是一个后面跟有下列符号的字符序列：回车符（“\r”）、换行符（“\n”）或回车符后紧跟一个换行符。所产生的字符串不包含终止回车符和/或换行符。

此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。 此方法尝试根据现存的字节顺序标记来自动检测文件的编码。可检测到编码格式 UTF-8 和 UTF-32（包括 big-endian 和 little-endian）。

即使会引发异常，也使用此方法保证文件句柄已关闭。

若要使用为您的操作系统配置的编码设置，请为 encoding 参数指定 Encoding..::.Default 属性。

下面的代码示例演示如何使用 ReadAllText 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 ReadAllText 方法显示文件的内容。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText As String = "Hello and Welcome" + Environment.NewLine
            File.WriteAllText(path, createText, Encoding.UTF8)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText, Encoding.UTF8)

        ' Open the file to read from.
        Dim readText As String = File.ReadAllText(path)
        Console.WriteLine(readText)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText, Encoding.UTF8);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText, Encoding.UTF8);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}
  • FileIOPermission

    从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read 从文件或目录中读取的访问权限。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
ReadAllText 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


File ..::.ReadLines 方法

File
.
.
::
.
ReadLines 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

读取文件的文本行。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.ReadLines 方法 (String)

File
.
.
::
.
ReadLines 方法 (String)
File 类

读取文件的文本行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadLines ( _
    path As String _
) As IEnumerable(Of String)
public static IEnumerable<string> ReadLines(
    string path
)
public:
static IEnumerable<String^>^ ReadLines(
    String^ path
)
static member ReadLines :
        path:string -> IEnumerable<string>

参数

path
类型： System String
要读取的文件。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

文件的文本行。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 方法中已定义一个或多个无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效（例如，在未映射的驱动器上）。
FileNotFoundException | 未找 path 中指定的文件。
IOException | 打开文件时发生了 I/O 错误。
PathTooLongException | path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 是一个目录。 - 或 - 调用方没有所要求的权限。

ReadLines 和 ReadAllLines 方法不同点在于：当使用 ReadLines 时，您可以在返回整个集合之前开始枚举字符串集合；当您使用 ReadAllLines 时，则必须等待整个字符串数组都被返回后才能访问数组。因此，在处理非常大的文件时，ReadLines 可能更高效。 ReadLines 和 ReadAllLines 方法不同点在于：当使用 ReadLines 时，您可以在返回整个集合之前开始枚举字符串集合；当您使用 ReadAllLines 时，则必须等待整个字符串数组都被返回后才能访问数组。因此，在处理非常大的文件时，ReadLines 可能更高效。

您可以使用 ReadLines 方法执行以下操作：

  • 对文件执行 LINQ to Objects 查询以获取筛选过的行集。

  • 使用 File..::.WriteAllLines(String, IEnumerable<(Of <(String>)>)) 方法将返回的行集合写入文件，使用 File..::.AppendAllLines(String, IEnumerable<(Of <(String>)>)) 方法将它们追加到现有文件。

  • 创建集合立即被填充的实例，该集合采用其构造函数的 IEnumerable<(Of <(T>)>) 集合，例如 IList<(Of <(T>)>) 或 Queue<(Of <(T>)>)。

下面的示例在枚举所有目录中扩展名为 .txt 的文件的 LINQ 查询中使用 ReadLines 方法，读取文件的每一行，然后显示包含字符串 "Microsoft" 的行。

Imports System.IO
Imports System.Xml.Linq
Module Module1

    Sub Main()

        Try
            Dim files = From chkFile In Directory.EnumerateFiles("c:\", "*.txt", _
                                                 SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine("{0}\t{1}", f.curFile, f.curLine)
            Next
            Console.WriteLine("{0} files found.", _
                    files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {

        try
        {
            var files = from file in Directory.EnumerateFiles(@"c:\",
                            "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine("{0}\t{1}", f.File, f.Line);
            }
            Console.WriteLine("{0} files found.",
                files.Count().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
ReadLines 重载
System.IO 命名空间


File ..::.ReadLines 方法 (String, Encoding)

File
.
.
::
.
ReadLines 方法 (String, Encoding)
File 类

读取具有指定编码的文件的文本行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ReadLines ( _
    path As String, _
    encoding As Encoding _
) As IEnumerable(Of String)
public static IEnumerable<string> ReadLines(
    string path,
    Encoding encoding
)
public:
static IEnumerable<String^>^ ReadLines(
    String^ path,
    Encoding^ encoding
)
static member ReadLines :
        path:string *
        encoding:Encoding -> IEnumerable<string>

参数

path
类型： System String
要读取的文件。
encoding
类型： System.Text Encoding
应用到文件内容的编码。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

文件的文本行。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 方法中已定义一个或多个无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效（例如，在未映射的驱动器上）。
FileNotFoundException | 未找 path 中指定的文件。
IOException | 打开文件时发生了 I/O 错误。
PathTooLongException | path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 是一个目录。 - 或 - 调用方没有所要求的权限。

使用此方法指定要用来读取文件的编码。

ReadLines 与 ReadAllLines 方法有如下不同：当使用 ReadLines 时，您可以在返回整个集合之前开始枚举字符串的集合。使用 ReadAllLines 时，必须等待整个字符串数组返回后才能访问该数组。因此，在处理非常大的文件时，ReadLines 可能更高效。 ReadLines 与 ReadAllLines 方法有如下不同：当使用 ReadLines 时，您可以在返回整个集合之前开始枚举字符串的集合。使用 ReadAllLines 时，必须等待整个字符串数组返回后才能访问该数组。因此，在处理非常大的文件时，ReadLines 可能更高效。 ReadLines 与 ReadAllLines 方法有如下不同：当使用 ReadLines 时，您可以在返回整个集合之前开始枚举字符串的集合。使用 ReadAllLines 时，必须等待整个字符串数组返回后才能访问该数组。因此，在处理非常大的文件时，ReadLines 可能更高效。

您可以使用 ReadLines 方法执行以下操作：

  • 对文件执行 LINQ to Objects 查询以获取筛选过的行集。

  • 使用 File..::.WriteAllLines(String, IEnumerable<(Of <(String>)>), Encoding) 方法将返回的行集合写入文件，使用 File..::.AppendAllLines(String, IEnumerable<(Of <(String>)>), Encoding) 方法将它们追加到现有文件。

  • 创建集合立即被填充的实例，该集合采用其构造函数的 IEnumerable<(Of <(T>)>) 集合，例如 IList<(Of <(T>)>) 或 Queue<(Of <(T>)>)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
ReadLines 重载
System.IO 命名空间


File ..::.Replace 方法

File
.
.
::
.
Replace 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

使用其他文件的内容替换指定文件的内容，这一过程将删除原始文件，并创建被替换文件的备份。

名称 说明
页首

Replace 方法用其他文件的内容替换指定文件的内容。它们还创建已替换的文件的备份。 Replace 方法用其他文件的内容替换指定文件的内容。它们还创建已替换的文件的备份。

参考

File 类
File 成员
System.IO 命名空间


File ..::.Replace 方法 (String, String, String)

File
.
.
::
.
Replace 方法 (String, String, String)
File 类

使用其他文件的内容替换指定文件的内容，这一过程将删除原始文件，并创建被替换文件的备份。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Replace ( _
    sourceFileName As String, _
    destinationFileName As String, _
    destinationBackupFileName As String _
)
public static void Replace(
    string sourceFileName,
    string destinationFileName,
    string destinationBackupFileName
)
public:
static void Replace(
    String^ sourceFileName,
    String^ destinationFileName,
    String^ destinationBackupFileName
)
static member Replace :
        sourceFileName:string *
        destinationFileName:string *
        destinationBackupFileName:string -> unit

参数

sourceFileName
类型： System String
替换由 destinationFileName 指定的文件的文件名。
destinationFileName
类型： System String
替换文件的名称。
destinationBackupFileName
类型： System String
备份文件的名称。
异常 | 条件
ArgumentException | destinationFileName 参数描述的路径不是合法的格式。 - 或 - destinationBackupFileName 参数描述的路径不是合法的格式。
ArgumentNullException | destinationFileName 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DriveNotFoundException | 指定了无效的驱动器。
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。 - 或 - 未能找到 destinationBackupFileName 参数所描述的文件。
IOException | 打开文件时发生了 I/O 错误。 - 或 - sourceFileName 和 destinationFileName 参数指定了相同的文件。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
PlatformNotSupportedException | 操作系统是 Windows 98 Second Edition 或更低版本，且文件系统不是 NTFS。
UnauthorizedAccessException | sourceFileName 或 destinationFileName 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - 源参数或目标参数指定的是目录，而不是文件。 - 或 - 调用方没有所要求的权限。

Replace 方法用其他文件的内容替换指定文件的内容。它还创建被替换文件的备份。 Replace 方法用其他文件的内容替换指定文件的内容。它还创建被替换文件的备份。

如果 sourceFileName 和 destinationFileName 在不同的卷上，此方法将引发异常。如果 destinationBackupFileName 与源文件位于不同的卷上，则将删除备份文件。 如果 sourceFileName 和 destinationFileName 在不同的卷上，此方法将引发异常。如果 destinationBackupFileName 与源文件位于不同的卷上，则将删除备份文件。

如果不想创建被替换文件的备份，请将 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 传递给 destinationBackupFileName 参数。

下面的代码示例使用 Replace 方法，用其他文件替换某个文件并创建被替换文件的备份。

Imports System
Imports System.IO

Module FileExample

    Sub Main()
        Try
            Dim OriginalFile As String = "test.xml"
            Dim FileToReplace As String = "test2.xml"
            Dim BackUpOfFileToReplace As String = "test2.xml.bac"

            Console.WriteLine("Move the contents of " + OriginalFile + " into " + FileToReplace + ", delete " + OriginalFile + ", and create a backup of " + FileToReplace + ".")

            ' Replace the file.
            ReplaceFile(OriginalFile, FileToReplace, BackUpOfFileToReplace)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Move a file into another file, delete the original, and create a backup of the replaced file.
    Sub ReplaceFile(ByVal FileToMoveAndDelete As String, ByVal FileToReplace As String, ByVal BackupOfFileToReplace As String)

        ' Replace the file.
        File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, False)

    End Sub
End Module

using System;
using System.IO;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string OriginalFile = "test.xml";
                string FileToReplace = "test2.xml";
                string BackUpOfFileToReplace = "test2.xml.bac";

                Console.WriteLine("Move the contents of " + OriginalFile + " into " + FileToReplace + ", delete " + OriginalFile +
                                   ", and create a backup of " + FileToReplace + ".");

                // Replace the file.
                ReplaceFile(OriginalFile, FileToReplace, BackUpOfFileToReplace);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Move a file into another file, delete the original, and create a backup of the replaced file.
        public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)
        {
            File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);

        }
    }
}

using namespace System;
using namespace System::IO;

// Move a file into another file, delete the original,
// and create a backup of the replaced file.

void ReplaceFile(String^ fileToMoveAndDelete,
                 String^ fileToReplace, String^ backupOfFileToReplace)
{
    File::Replace(fileToMoveAndDelete, fileToReplace,
        backupOfFileToReplace, false);
}

int main()
{
    try
    {
        String^ originalFile = "test.xml";
        String^ fileToReplace = "test2.xml";
        String^ backUpOfFileToReplace = "test2.xml.bac";

        Console::WriteLine("Move the contents of " + originalFile + " into "
            + fileToReplace + ", delete " + originalFile
            + ", and create a backup of " + fileToReplace + ".");

        // Replace the file.
        ReplaceFile(originalFile, fileToReplace, backUpOfFileToReplace);

        Console::WriteLine("Done");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
};
  • FileIOPermission

    表示读取和写入由 sourceFileName 参数描述的文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Read
表示读取和写入由 sourceFileName 参数描述的文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Read
表示读取和写入由 sourceFileName 参数描述的文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Read

  • FileIOPermission

    表示读取和写入由 destinationFileName 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 destinationFileName 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 destinationFileName 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

  • FileIOPermission

    表示写入由 destinationBackupFileName 参数描述的文件（如果指定了一个文件）的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Write
表示写入由 destinationBackupFileName 参数描述的文件（如果指定了一个文件）的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Write
表示写入由 destinationBackupFileName 参数描述的文件（如果指定了一个文件）的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
Replace 重载
System.IO 命名空间


File ..::.Replace 方法 (String, String, String, Boolean)

File
.
.
::
.
Replace 方法 (String, String, String, Boolean)
File 类

用其他文件的内容替换指定文件的内容，删除原始文件，并创建被替换文件的备份和（可选）忽略合并错误。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub Replace ( _
    sourceFileName As String, _
    destinationFileName As String, _
    destinationBackupFileName As String, _
    ignoreMetadataErrors As Boolean _
)
public static void Replace(
    string sourceFileName,
    string destinationFileName,
    string destinationBackupFileName,
    bool ignoreMetadataErrors
)
public:
static void Replace(
    String^ sourceFileName,
    String^ destinationFileName,
    String^ destinationBackupFileName,
    bool ignoreMetadataErrors
)
static member Replace :
        sourceFileName:string *
        destinationFileName:string *
        destinationBackupFileName:string *
        ignoreMetadataErrors:bool -> unit

参数

sourceFileName
类型： System String
替换由 destinationFileName 指定的文件的文件名。
destinationFileName
类型： System String
替换文件的名称。
destinationBackupFileName
类型： System String
备份文件的名称。
ignoreMetadataErrors
类型： System Boolean
如果忽略从被替换文件到替换文件的合并错误（如特性和访问控制列表 (ACL)），则为 true，否则为 false。
异常 | 条件
ArgumentException | destinationFileName 参数描述的路径不是合法的格式。 - 或 - destinationBackupFileName 参数描述的路径不是合法的格式。
ArgumentNullException | destinationFileName 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DriveNotFoundException | 指定了无效的驱动器。
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。 - 或 - 未能找到 destinationBackupFileName 参数所描述的文件。
IOException | 打开文件时发生了 I/O 错误。 - 或 - sourceFileName 和 destinationFileName 参数指定了相同的文件。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
PlatformNotSupportedException | 操作系统是 Windows 98 Second Edition 或更低版本，且文件系统不是 NTFS。
UnauthorizedAccessException | sourceFileName 或 destinationFileName 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - 源参数或目标参数指定的是目录，而不是文件。 - 或 - 调用方没有所要求的权限。

Replace 方法用其他文件的内容替换指定文件的内容。它还创建被替换文件的备份。 Replace 方法用其他文件的内容替换指定文件的内容。它还创建被替换文件的备份。

如果 sourceFileName 和 destinationFileName 在不同的卷上，此方法将引发异常。如果 destinationBackupFileName 与源文件位于不同的卷上，则将删除备份文件。 如果 sourceFileName 和 destinationFileName 在不同的卷上，此方法将引发异常。如果 destinationBackupFileName 与源文件位于不同的卷上，则将删除备份文件。

如果不想创建被替换文件的备份，请将 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 传递给 destinationBackupFileName 参数。

下面的代码示例使用 Replace 方法，用其他文件替换某个文件并创建被替换文件的备份。

Imports System
Imports System.IO

Module FileExample

    Sub Main()
        Try
            Dim OriginalFile As String = "test.xml"
            Dim FileToReplace As String = "test2.xml"
            Dim BackUpOfFileToReplace As String = "test2.xml.bac"

            Console.WriteLine("Move the contents of " + OriginalFile + " into " + FileToReplace + ", delete " + OriginalFile + ", and create a backup of " + FileToReplace + ".")

            ' Replace the file.
            ReplaceFile(OriginalFile, FileToReplace, BackUpOfFileToReplace)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub

    ' Move a file into another file, delete the original, and create a backup of the replaced file.
    Sub ReplaceFile(ByVal FileToMoveAndDelete As String, ByVal FileToReplace As String, ByVal BackupOfFileToReplace As String)

        ' Replace the file.
        File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, False)

    End Sub
End Module

using System;
using System.IO;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string OriginalFile = "test.xml";
                string FileToReplace = "test2.xml";
                string BackUpOfFileToReplace = "test2.xml.bac";

                Console.WriteLine("Move the contents of " + OriginalFile + " into " + FileToReplace + ", delete " + OriginalFile +
                                   ", and create a backup of " + FileToReplace + ".");

                // Replace the file.
                ReplaceFile(OriginalFile, FileToReplace, BackUpOfFileToReplace);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }

        // Move a file into another file, delete the original, and create a backup of the replaced file.
        public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)
        {
            File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);

        }
    }
}

using namespace System;
using namespace System::IO;

// Move a file into another file, delete the original,
// and create a backup of the replaced file.

void ReplaceFile(String^ fileToMoveAndDelete,
                 String^ fileToReplace, String^ backupOfFileToReplace)
{
    File::Replace(fileToMoveAndDelete, fileToReplace,
        backupOfFileToReplace, false);
}

int main()
{
    try
    {
        String^ originalFile = "test.xml";
        String^ fileToReplace = "test2.xml";
        String^ backUpOfFileToReplace = "test2.xml.bac";

        Console::WriteLine("Move the contents of " + originalFile + " into "
            + fileToReplace + ", delete " + originalFile
            + ", and create a backup of " + fileToReplace + ".");

        // Replace the file.
        ReplaceFile(originalFile, fileToReplace, backUpOfFileToReplace);

        Console::WriteLine("Done");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
};
  • FileIOPermission

    表示读取和写入由 sourceFileName 参数描述的文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Read
表示读取和写入由 sourceFileName 参数描述的文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Read
表示读取和写入由 sourceFileName 参数描述的文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Read

  • FileIOPermission

    表示读取和写入由 destinationFileName 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 destinationFileName 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write
表示读取和写入由 destinationFileName 参数描述的文件的权限。安全操作：Demand。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

  • FileIOPermission

    表示写入由 destinationBackupFileName 参数描述的文件（如果指定了一个文件）的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Write
表示写入由 destinationBackupFileName 参数描述的文件（如果指定了一个文件）的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Write
表示写入由 destinationBackupFileName 参数描述的文件（如果指定了一个文件）的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
Replace 重载
System.IO 命名空间


File ..::.SetAccessControl 方法

File
.
.
::
.
SetAccessControl 方法
File 类

对指定的文件应用由 FileSecurity 对象描述的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetAccessControl ( _
    path As String, _
    fileSecurity As FileSecurity _
)
public static void SetAccessControl(
    string path,
    FileSecurity fileSecurity
)
public:
static void SetAccessControl(
    String^ path,
    FileSecurity^ fileSecurity
)
static member SetAccessControl :
        path:string *
        fileSecurity:FileSecurity -> unit

参数

path
类型： System String
在其中添加或移除访问控制列表 (ACL) 项的文件。
fileSecurity
类型： System.Security.AccessControl FileSecurity
一个 FileSecurity 对象，描述应用于由 path 参数描述的文件的 ACL 项。
异常 | 条件
IOException | 打开文件时发生了 I/O 错误。
SEHException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SystemException | 未能找到文件。
UnauthorizedAccessException | path 参数指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 参数指定了一个目录。 - 或 - 调用方没有所要求的权限。
ArgumentNullException | fileSecurity 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SetAccessControl 方法将访问控制列表 (ACL) 项应用于表示非继承 ACL 列表的文件。

警告说明 警告

为 fileSecurity 参数指定的 ACL 替换该文件的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有的 ACL，修改它，然后使用 SetAccessControl 将它应用回文件。 为 fileSecurity 参数指定的 ACL 替换该文件的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有的 ACL，修改它，然后使用 SetAccessControl 将它应用回文件。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

SetAccessControl 方法仅存留在对象创建以后被修改过的 FileSecurity 对象。 如果没有修改 FileSecurity 对象，则不会保留到文件中。 因此，不可能从一个文件中检索 FileSecurity 对象并将同一对象应用到另一个文件。

将 ACL 信息从一个文件复制到另一个文件：

  1. 使用 GetAccessControl 方法从源文件中检索 FileSecurity 对象。

  2. 为目标文件创建一个新的 FileSecurity 对象。

  3. 使用源 FileSecurity 对象的 GetSecurityDescriptorBinaryForm 或 GetSecurityDescriptorSddlForm 方法检索 ACL 信息。

  4. 使用 SetSecurityDescriptorBinaryForm 或 SetSecurityDescriptorSddlForm 方法将在步骤 3 中检索到的信息复制到目标 FileSecurity 对象。

  5. 使用 SetAccessControl 方法将目标 FileSecurity 对象设置为目标文件。

在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。 在 NTFS 环境中，如果用户对父文件夹具有 ListDirectory 权限，则会向该用户授予 ReadAttributes 和 ReadExtendedAttributes 权限。若要拒绝 ReadAttributes 和 ReadExtendedAttributes，请在父目录上拒绝 ListDirectory。

下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法在文件中添加然后移除访问控制列表 (ACL) 项。您必须提供有效的用户或组帐户才能运行此示例。 下面的代码示例使用 GetAccessControl 和 SetAccessControl 方法在文件中添加然后移除访问控制列表 (ACL) 项。您必须提供有效的用户或组帐户才能运行此示例。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim fileName As String = "test.xml"

            Console.WriteLine("Adding access control entry for " & fileName)

            ' Add the access control entry to the file.
            AddFileSecurity(fileName, "DomainName\AccountName", _
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " & fileName)

            ' Remove the access control entry from the file.
            RemoveFileSecurity(fileName, "DomainName\AccountName", _
                FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Add the FileSystemAccessRule to the security settings.
        Dim accessRule As FileSystemAccessRule = _
            New FileSystemAccessRule(account, rights, controlType)

        fSecurity.AddAccessRule(accessRule)

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub

    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)

        ' Remove the FileSystemAccessRule from the security settings.
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account, _
            rights, controlType))

        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)

    End Sub
End Module

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string fileName = "test.xml";

                Console.WriteLine("Adding access control entry for "
                    + fileName);

                // Add the access control entry to the file.
                AddFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from "
                    + fileName);

                // Remove the access control entry from the file.
                RemoveFileSecurity(fileName, @"DomainName\AccountName",
                    FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string fileName, string account,
            FileSystemRights rights, AccessControlType controlType)
        {

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = File.GetAccessControl(fileName);

            // Remove the FileSystemAccessRule from the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(account,
                rights, controlType));

            // Set the new access settings.
            File.SetAccessControl(fileName, fSecurity);

        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

// Adds an ACL entry on the specified file for the specified account.

void AddFileSecurity(String^ fileName, String^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    // Add the FileSystemAccessRule to the security settings.
    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

// Removes an ACL entry on the specified file for the specified account.

void RemoveFileSecurity(String^ fileName, String^ account,
                        FileSystemRights rights, AccessControlType controlType)
{

    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    // Remove the FileSystemAccessRule from the security settings.
    fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule
                                      (account,rights, controlType));

    // Set the new access settings.
    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.xml";

        Console::WriteLine("Adding access control entry for " + fileName);

        // Add the access control entry to the file.
        AddFileSecurity(fileName, "MYDOMAIN\\MyAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " + fileName);

        // Remove the access control entry from the file.
        RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
  • FileIOPermission

    表示访问此文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.Change
表示访问此文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.Change
表示访问此文件的权限。安全操作：Demand。关联的枚举：FileIOPermissionAccess..::.NoAccess、AccessControlActions..::.Change

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间


File ..::.SetAttributes 方法

File
.
.
::
.
SetAttributes 方法
File 类

设置指定路径上文件的指定的 FileAttributes。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetAttributes ( _
    path As String, _
    fileAttributes As FileAttributes _
)
public static void SetAttributes(
    string path,
    FileAttributes fileAttributes
)
public:
static void SetAttributes(
    String^ path,
    FileAttributes fileAttributes
)
static member SetAttributes :
        path:string *
        fileAttributes:FileAttributes -> unit

参数

path
类型： System String
该文件的路径。
fileAttributes
类型： System.IO FileAttributes
枚举值的按位组合。
异常 | 条件
ArgumentException | path 为空、只包含空白、包含无效字符或文件特性无效。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
FileNotFoundException | 无法找到该文件。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

某些文件特性，例如 Hidden 和 ReadOnly，可以组合。其他特性，如 Normal，必须单独使用。 某些文件特性，例如 Hidden 和 ReadOnly，可以组合。其他特性，如 Normal，必须单独使用。

无法使用 SetAttributes 方法来更改 File 对象的压缩状态。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例通过将 Archive 和 Hidden 特性应用于文件，演示了 GetAttributes 和 SetAttributes 方法。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' Create the file if it does not exist.
        If File.Exists(path) = False Then
            File.Create(path)
        End If

        If (File.GetAttributes(path) And FileAttributes.Hidden) = FileAttributes.Hidden Then
            ' Show the file.
            File.SetAttributes(path, FileAttributes.Archive)
            Console.WriteLine("The {0} file is no longer hidden.", path)

        Else
            ' Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) Or FileAttributes.Hidden)
            Console.WriteLine("The {0} file is now hidden.", path)
        End If
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Create the file if it does not exist.
        if (!File.Exists(path))
        {
            File.Create(path);
        }

        if ((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden)
        {
            // Show the file.
            File.SetAttributes(path, FileAttributes.Archive);
            Console.WriteLine("The {0} file is no longer hidden.", path);

        }
        else
        {
            // Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
            Console.WriteLine("The {0} file is now hidden.", path);
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Create the file if it does not exist.
   if (  !File::Exists( path ) )
   {
      File::Create( path );
   }

   if ( (File::GetAttributes( path ) & FileAttributes::Hidden) == FileAttributes::Hidden )
   {

      // Show the file.
      File::SetAttributes( path, FileAttributes::Archive );
      Console::WriteLine( "The {0} file is no longer hidden.", path );
   }
   else
   {

      // Hide the file.
      File::SetAttributes( path, static_cast<FileAttributes>(File::GetAttributes( path ) | FileAttributes::Hidden) );
      Console::WriteLine( "The {0} file is now hidden.", path );
   }
}
  • FileIOPermission

    用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Write 用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.SetCreationTime 方法

File
.
.
::
.
SetCreationTime 方法
File 类

设置创建该文件的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetCreationTime ( _
    path As String, _
    creationTime As DateTime _
)
public static void SetCreationTime(
    string path,
    DateTime creationTime
)
public:
static void SetCreationTime(
    String^ path,
    DateTime creationTime
)
static member SetCreationTime :
        path:string *
        creationTime:DateTime -> unit

参数

path
类型： System String
要设置其创建日期和时间信息的文件。
creationTime
类型： System DateTime
DateTime，它包含要为 path 的创建日期和时间设置的值。该值用本地时间表示。 DateTime，它包含要为 path 的创建日期和时间设置的值。该值用本地时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | 执行操作时发生 I/O 错误。
ArgumentOutOfRangeException | creationTime 指定的值超出了该操作所允许的日期范围或时间范围，或同时超出了日期范围和时间范围。
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | path 的格式无效。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间，这称为“文件隧道”。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.SetCreationTimeUtc 方法

File
.
.
::
.
SetCreationTimeUtc 方法
File 类

设置文件创建的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetCreationTimeUtc ( _
    path As String, _
    creationTimeUtc As DateTime _
)
public static void SetCreationTimeUtc(
    string path,
    DateTime creationTimeUtc
)
public:
static void SetCreationTimeUtc(
    String^ path,
    DateTime creationTimeUtc
)
static member SetCreationTimeUtc :
        path:string *
        creationTimeUtc:DateTime -> unit

参数

path
类型： System String
要设置其创建日期和时间信息的文件。
creationTimeUtc
类型： System DateTime
DateTime，它包含要为 path 的创建日期和时间设置的值。该值用 UTC 时间表示。 DateTime，它包含要为 path 的创建日期和时间设置的值。该值用 UTC 时间表示。
异常 | 条件
FileNotFoundException | 未找到指定的路径。
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | 执行操作时发生 I/O 错误。
ArgumentOutOfRangeException | creationTime 指定的值超出了该操作所允许的日期范围或时间范围，或同时超出了日期范围和时间范围。
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | path 的格式无效。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间，这称为“文件隧道”。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.SetLastAccessTime 方法

File
.
.
::
.
SetLastAccessTime 方法
File 类

设置上次访问指定文件的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastAccessTime ( _
    path As String, _
    lastAccessTime As DateTime _
)
public static void SetLastAccessTime(
    string path,
    DateTime lastAccessTime
)
public:
static void SetLastAccessTime(
    String^ path,
    DateTime lastAccessTime
)
static member SetLastAccessTime :
        path:string *
        lastAccessTime:DateTime -> unit

参数

path
类型： System String
要设置其访问日期和时间信息的文件。
lastAccessTime
类型： System DateTime
DateTime，它包含要为 path 的上次访问日期和时间设置的值。该值用本地时间表示。 DateTime，它包含要为 path 的上次访问日期和时间设置的值。该值用本地时间表示。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
FileNotFoundException | 未找到指定的路径。
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | path 的格式无效。
ArgumentOutOfRangeException | lastAccessTime 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例检查文件系统中是否有指定的文件，如需要则创建该文件，然后设置并获取上次访问时间。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\Temp\MyTest.txt"

            If File.Exists(path) = False Then
                File.Create(path)
            End If
            File.SetLastAccessTime(path, New DateTime(1985, 5, 4))

            ' Get the creation time of a well-known directory.
            Dim dt As DateTime = File.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this file was {0}.", dt)

            ' Update the last access time.
            File.SetLastAccessTime(path, DateTime.Now)
            dt = File.GetLastAccessTime(path)
            Console.WriteLine("The last access time for this file was {0}.", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\Temp\MyTest.txt";

            if (!File.Exists(path))
            {
                File.Create(path);
                // Update the last access time.
            }
            File.SetLastAccessTime(path, new DateTime(1985,5,4));

            // Get the creation time of a well-known directory.
            DateTime dt = File.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this file was {0}.", dt);

            // Update the last access time.
            File.SetLastAccessTime(path, DateTime.Now);
            dt = File.GetLastAccessTime(path);
            Console.WriteLine("The last access time for this file was {0}.", dt);

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\Temp\\MyTest.txt";
      if (  !File::Exists( path ) )
      {
         File::Create( path );

         // Update the last access time.
      }
      File::SetLastAccessTime( path, DateTime(1985,5,4) );

      // Get the creation time of a well-known directory.
      DateTime dt = File::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this file was {0}.", dt );

      // Update the last access time.
      File::SetLastAccessTime( path, DateTime::Now );
      dt = File::GetLastAccessTime( path );
      Console::WriteLine( "The last access time for this file was {0}.", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.SetLastAccessTimeUtc 方法

File
.
.
::
.
SetLastAccessTimeUtc 方法
File 类

设置上次访问指定的文件的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastAccessTimeUtc ( _
    path As String, _
    lastAccessTimeUtc As DateTime _
)
public static void SetLastAccessTimeUtc(
    string path,
    DateTime lastAccessTimeUtc
)
public:
static void SetLastAccessTimeUtc(
    String^ path,
    DateTime lastAccessTimeUtc
)
static member SetLastAccessTimeUtc :
        path:string *
        lastAccessTimeUtc:DateTime -> unit

参数

path
类型： System String
要设置其访问日期和时间信息的文件。
lastAccessTimeUtc
类型： System DateTime
DateTime，它包含要为 path 的上次访问日期和时间设置的值。该值用 UTC 时间表示。 DateTime，它包含要为 path 的上次访问日期和时间设置的值。该值用 UTC 时间表示。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
FileNotFoundException | 未找到指定的路径。
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | path 的格式无效。
ArgumentOutOfRangeException | lastAccessTimeUtc 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.SetLastWriteTime 方法

File
.
.
::
.
SetLastWriteTime 方法
File 类

设置上次写入指定文件的日期和时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastWriteTime ( _
    path As String, _
    lastWriteTime As DateTime _
)
public static void SetLastWriteTime(
    string path,
    DateTime lastWriteTime
)
public:
static void SetLastWriteTime(
    String^ path,
    DateTime lastWriteTime
)
static member SetLastWriteTime :
        path:string *
        lastWriteTime:DateTime -> unit

参数

path
类型： System String
要设置其日期和时间信息的文件。
lastWriteTime
类型： System DateTime
DateTime，它包含要为 path 的上次写入日期和时间设置的值。该值用本地时间表示。 DateTime，它包含要为 path 的上次写入日期和时间设置的值。该值用本地时间表示。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
FileNotFoundException | 未找到指定的路径。
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | path 的格式无效。
ArgumentOutOfRangeException | lastWriteTime 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例检查文件系统中是否有指定的文件，如需要则创建该文件，然后设置并获取文件的上次写入时间。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Try
            Dim path As String = "c:\Temp\MyTest.txt"

            If File.Exists(path) = False Then
                File.Create(path)
            Else
                ' Take an action that will affect the write time.
                File.SetLastWriteTime(path, New DateTime(1985, 4, 3))
            End If

            ' Get the creation time of a well-known directory.
            Dim dt As DateTime = File.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this file was {0}.", dt)

            ' Update the last write time.
            File.SetLastWriteTime(path, DateTime.Now)
            dt = File.GetLastWriteTime(path)
            Console.WriteLine("The last write time for this file was {0}.", dt)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            string path = @"c:\Temp\MyTest.txt";
            if (!File.Exists(path))
            {
                File.Create(path);
            }
            else
            {
                // Take an action that will affect the write time.
                File.SetLastWriteTime(path, new DateTime(1985,4,3));
            }

            // Get the creation time of a well-known directory.
            DateTime dt = File.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this file was {0}.", dt);

            // Update the last write time.
            File.SetLastWriteTime(path, DateTime.Now);
            dt = File.GetLastWriteTime(path);
            Console.WriteLine("The last write time for this file was {0}.", dt);

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      String^ path = "c:\\Temp\\MyTest.txt";
      if (  !File::Exists( path ) )
      {
         File::Create( path );
      }
      else
      {

         // Take an action that will affect the write time.
         File::SetLastWriteTime( path, DateTime(1985,4,3) );
      }

      // Get the creation time of a well-known directory.
      DateTime dt = File::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this file was {0}.", dt );

      // Update the last write time.
      File::SetLastWriteTime( path, DateTime::Now );
      dt = File::GetLastWriteTime( path );
      Console::WriteLine( "The last write time for this file was {0}.", dt );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.SetLastWriteTimeUtc 方法

File
.
.
::
.
SetLastWriteTimeUtc 方法
File 类

设置上次写入指定的文件的日期和时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub SetLastWriteTimeUtc ( _
    path As String, _
    lastWriteTimeUtc As DateTime _
)
public static void SetLastWriteTimeUtc(
    string path,
    DateTime lastWriteTimeUtc
)
public:
static void SetLastWriteTimeUtc(
    String^ path,
    DateTime lastWriteTimeUtc
)
static member SetLastWriteTimeUtc :
        path:string *
        lastWriteTimeUtc:DateTime -> unit

参数

path
类型： System String
要设置其日期和时间信息的文件。
lastWriteTimeUtc
类型： System DateTime
DateTime，它包含要为 path 的上次写入日期和时间设置的值。该值用 UTC 时间表示。 DateTime，它包含要为 path 的上次写入日期和时间设置的值。该值用 UTC 时间表示。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
FileNotFoundException | 未找到指定的路径。
UnauthorizedAccessException | 调用方没有所要求的权限。
NotSupportedException | path 的格式无效。
ArgumentOutOfRangeException | lastWriteTimeUtc 指定超出该操作允许的日期或时间范围的值。

允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。 允许 path 参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。若要获取当前工作目录，请参见 GetCurrentDirectory。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write 用于写入到指定的文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


File ..::.WriteAllBytes 方法

File
.
.
::
.
WriteAllBytes 方法
File 类

创建一个新文件，在其中写入指定的字节数组，然后关闭该文件。如果目标文件已存在，则覆盖该文件。 创建一个新文件，在其中写入指定的字节数组，然后关闭该文件。如果目标文件已存在，则覆盖该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllBytes ( _
    path As String, _
    bytes As Byte() _
)
public static void WriteAllBytes(
    string path,
    byte[] bytes
)
public:
static void WriteAllBytes(
    String^ path,
    array<unsigned char>^ bytes
)
static member WriteAllBytes :
        path:string *
        bytes:byte[] -> unit

参数

path
类型： System String
要写入的文件。
bytes
类型：
array<
System Byte
>
[]
()
[]

要写入文件的字节。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或字节数组为空。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

已知字节数组和文件路径，此方法打开指定的文件，将字节数组的内容写入该文件，然后关闭该文件。

  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
System.IO 命名空间


File ..::.WriteAllLines 方法

File
.
.
::
.
WriteAllLines 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

创建一个新文件，在其中写入一个或多个字符串，然后关闭该文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.WriteAllLines 方法 (String, IEnumerable <(Of <(String >)>))

File
.
.
::
.
WriteAllLines 方法 (String, IEnumerable
<
(Of
<
(
String
>
)
>
)
)
File 类

创建一个新文件，在其中写入一组字符串，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllLines ( _
    path As String, _
    contents As IEnumerable(Of String) _
)
public static void WriteAllLines(
    string path,
    IEnumerable<string> contents
)
public:
static void WriteAllLines(
    String^ path,
    IEnumerable<String^>^ contents
)
static member WriteAllLines :
        path:string *
        contents:IEnumerable<string> -> unit

参数

path
类型： System String
要写入的文件。
contents
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

要写入到文件中的文本行。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 方法中已定义一个或多个无效字符。
ArgumentNullException | path 或 contents 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效（例如，在未映射的驱动器上）。
FileNotFoundException | 未找 path 中指定的文件。
IOException | 打开文件时发生了 I/O 错误。
PathTooLongException | path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 是一个目录。 - 或 - 调用方没有所要求的权限。

如果目标文件已存在，则覆盖该文件。

您可以使用此方法为构造函数中采用 IEnumerable<(Of <(T>)>) 的集合类创建内容，如 List<(Of <(T>)>)、HashSet<(Of <(T>)>) 或 SortedSet<(Of <(T>)>) 类。

下面的示例将示例数据文件中的选定行写入一个文件。

Imports System
Imports System.IO
Imports System.Linq

Class Program
    Shared dataPath As String = "c:\temp\timestamps.txt"

    Public Shared Sub Main(ByVal args As String())
        CreateSampleFile()

        Dim JulyWeekends = From line In File.ReadLines(dataPath) _
            Where (line.StartsWith("Saturday") OrElse _
            line.StartsWith("Sunday")) And line.Contains("July") _
            Select line

        File.WriteAllLines("C:\temp\selectedDays.txt", JulyWeekends)

        Dim MarchMondays = From line In File.ReadLines(dataPath) _
            Where line.StartsWith("Monday") AndAlso line.Contains("March") _
            Select line

        File.AppendAllLines("C:\temp\selectedDays.txt", MarchMondays)
    End Sub

    Private Shared Sub CreateSampleFile()
        Dim TimeStamp As New DateTime(1700, 1, 1)

        Using sw As New StreamWriter(dataPath)
            For i As Integer = 0 To 499
                Dim TS1 As DateTime = TimeStamp.AddYears(i)
                Dim TS2 As DateTime = TS1.AddMonths(i)
                Dim TS3 As DateTime = TS2.AddDays(i)

                sw.WriteLine(TS3.ToLongDateString())
            Next
        End Using
    End Sub
End Class

using System;
using System.IO;
using System.Linq;

class Program
{
    static string dataPath = @"c:\temp\timestamps.txt";

    static void Main(string[] args)
    {
        CreateSampleFile();

        var JulyWeekends = from line in File.ReadLines(dataPath)
                           where (line.StartsWith("Saturday") ||
                           line.StartsWith("Sunday")) &
                           line.Contains("July")
                           select line;

        File.WriteAllLines(@"C:\temp\selectedDays.txt", JulyWeekends);

        var MarchMondays = from line in File.ReadLines(dataPath)
                           where line.StartsWith("Monday") &&
                           line.Contains("March")
                           select line;

        File.AppendAllLines(@"C:\temp\selectedDays.txt", MarchMondays);
    }

    static void CreateSampleFile()
    {
        DateTime TimeStamp = new DateTime(1700, 1, 1);

        using (StreamWriter sw = new StreamWriter(dataPath))
        {
            for (int i = 0; i < 500; i++)
            {
                DateTime TS1 = TimeStamp.AddYears(i);
                DateTime TS2 = TS1.AddMonths(i);
                DateTime TS3 = TS2.AddDays(i);
                sw.WriteLine(TS3.ToLongDateString());
            }
        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
WriteAllLines 重载
System.IO 命名空间


File ..::.WriteAllLines 方法 (String, array<String >[]()[])

File
.
.
::
.
WriteAllLines 方法 (String,
array<
String
>
[]
()
[]
)
File 类

创建一个新文件，在其中写入指定的字符串数组，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllLines ( _
    path As String, _
    contents As String() _
)
public static void WriteAllLines(
    string path,
    string[] contents
)
public:
static void WriteAllLines(
    String^ path,
    array<String^>^ contents
)
static member WriteAllLines :
        path:string *
        contents:string[] -> unit

参数

path
类型： System String
要写入的文件。
contents
类型：
array<
System String
>
[]
()
[]

要写入文件的字符串数组。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 或 contents 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

如果目标文件已存在，则覆盖该文件。

WriteAllLines 方法的默认行为是使用无字节顺序标记 (BOM) 的 UTF-8 编码写出数据。如果需要在文件开头包括一个 UTF-8 标识符（例如字节顺序标记），请使用 UTF8 编码的 WriteAllLines(String, array<String>[]()[], Encoding) 方法重载。 WriteAllLines 方法的默认行为是使用无字节顺序标记 (BOM) 的 UTF-8 编码写出数据。如果需要在文件开头包括一个 UTF-8 标识符（例如字节顺序标记），请使用 UTF8 编码的 WriteAllLines(String, array<String>[]()[], Encoding) 方法重载。

已知字符串数组和文件路径，此方法打开指定的文件，将字符串数组写入文件，然后关闭文件。

下面的代码示例演示如何使用 WriteAllLines 方法将文本写入文件。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 WriteAllLines 方法将文本写入文件。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText() As String = {"Hello", "And", "Welcome"}
            File.WriteAllLines(path, createText)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText)

        ' Open the file to read from.
        Dim readText() As String = File.ReadAllLines(path)
        Dim s As String
        For Each s In readText
            Console.WriteLine(s)
        Next
    End Sub
End Class

using System;
using System.IO;
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string[] createText = { "Hello", "And", "Welcome" };
            File.WriteAllLines(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string[] readText = File.ReadAllLines(path);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }
    }
}
  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
WriteAllLines 重载
System.IO 命名空间


File ..::.WriteAllLines 方法 (String, IEnumerable <(Of <(String >)>), Encoding)

File
.
.
::
.
WriteAllLines 方法 (String, IEnumerable
<
(Of
<
(
String
>
)
>
)
, Encoding)
File 类

使用指定的编码创建一个新文件，在其中写入一组字符串，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllLines ( _
    path As String, _
    contents As IEnumerable(Of String), _
    encoding As Encoding _
)
public static void WriteAllLines(
    string path,
    IEnumerable<string> contents,
    Encoding encoding
)
public:
static void WriteAllLines(
    String^ path,
    IEnumerable<String^>^ contents,
    Encoding^ encoding
)
static member WriteAllLines :
        path:string *
        contents:IEnumerable<string> *
        encoding:Encoding -> unit

参数

path
类型： System String
要写入的文件。
contents
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
String
>
)
>
)

要写入到文件中的文本行。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 方法中已定义一个或多个无效字符。
ArgumentNullException | path、 contents 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | path 无效（例如，在未映射的驱动器上）。
FileNotFoundException | 未找 path 中指定的文件。
IOException | 打开文件时发生了 I/O 错误。
PathTooLongException | path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 path 超过了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 是一个目录。 - 或 - 调用方没有所要求的权限。

如果目标文件已存在，则覆盖该文件。

您可以使用此方法创建包含以下内容的文件：

  • 对文件的行执行 LINQ to Objects 查询的结果，与使用 ReadLines 方法获得的结果相同。

  • 实现字符串 IEnumerable<(Of <(T>)>) 的集合的内容。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
WriteAllLines 重载
System.IO 命名空间


File ..::.WriteAllLines 方法 (String, array<String >[]()[], Encoding)

File
.
.
::
.
WriteAllLines 方法 (String,
array<
String
>
[]
()
[]
, Encoding)
File 类

创建一个新文件，使用指定的编码在其中写入指定的字符串数组，然后关闭该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllLines ( _
    path As String, _
    contents As String(), _
    encoding As Encoding _
)
public static void WriteAllLines(
    string path,
    string[] contents,
    Encoding encoding
)
public:
static void WriteAllLines(
    String^ path,
    array<String^>^ contents,
    Encoding^ encoding
)
static member WriteAllLines :
        path:string *
        contents:string[] *
        encoding:Encoding -> unit

参数

path
类型： System String
要写入的文件。
contents
类型：
array<
System String
>
[]
()
[]

要写入文件的字符串数组。
encoding
类型： System.Text Encoding
一个 Encoding 对象，表示应用于字符串数组的字符编码。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 或 contents 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

如果目标文件已存在，则覆盖该文件。

已知字符串数组和文件路径，此方法打开指定的文件，使用指定的编码将字符串数组写入文件，然后关闭文件。

下面的代码示例演示如何使用 WriteAllLines 方法将文本写入文件。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 WriteAllLines 方法将文本写入文件。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText() As String = {"Hello", "And", "Welcome"}
            File.WriteAllLines(path, createText, Encoding.UTF8)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText, Encoding.UTF8)

        ' Open the file to read from.
        Dim readText() As String = File.ReadAllLines(path, Encoding.UTF8)
        Dim s As String
        For Each s In readText
            Console.WriteLine(s)
        Next
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string[] createText = { "Hello", "And", "Welcome" };
            File.WriteAllLines(path, createText, Encoding.UTF8);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText, Encoding.UTF8);

        // Open the file to read from.
        string[] readText = File.ReadAllLines(path, Encoding.UTF8);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }
    }
}
  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
WriteAllLines 重载
System.IO 命名空间


File ..::.WriteAllText 方法

File
.
.
::
.
WriteAllText 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
File 类

创建一个新文件，在文件中写入内容，然后关闭文件。如果目标文件已存在，则覆盖该文件。 创建一个新文件，在文件中写入内容，然后关闭文件。如果目标文件已存在，则覆盖该文件。

名称 说明
页首

参考

File 类
File 成员
System.IO 命名空间


File ..::.WriteAllText 方法 (String, String)

File
.
.
::
.
WriteAllText 方法 (String, String)
File 类

创建一个新文件，在其中写入指定的字符串，然后关闭文件。如果目标文件已存在，则覆盖该文件。 创建一个新文件，在其中写入指定的字符串，然后关闭文件。如果目标文件已存在，则覆盖该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllText ( _
    path As String, _
    contents As String _
)
public static void WriteAllText(
    string path,
    string contents
)
public:
static void WriteAllText(
    String^ path,
    String^ contents
)
static member WriteAllText :
        path:string *
        contents:string -> unit

参数

path
类型： System String
要写入的文件。
contents
类型： System String
要写入文件的字符串。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或 contents 为空。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

此方法使用无字节顺序标记 (BOM) 的 UTF-8 编码，所以使用 GetPreamble 方法将返回一个空字节数组。如果需要在文件开头包括一个 UTF-8 标识符（例如字节顺序标记），请使用 UTF8 编码的 WriteAllText(String, String, Encoding) 方法重载。 此方法使用无字节顺序标记 (BOM) 的 UTF-8 编码，所以使用 GetPreamble 方法将返回一个空字节数组。如果需要在文件开头包括一个 UTF-8 标识符（例如字节顺序标记），请使用 UTF8 编码的 WriteAllText(String, String, Encoding) 方法重载。

已知字符串和文件路径，此方法打开指定的文件，将字符串写入文件，然后关闭该文件。

下面的代码示例演示如何使用 WriteAllText 方法在文件中写入文本。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 WriteAllText 方法在文件中写入文本。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText As String = "Hello and Welcome" + Environment.NewLine
            File.WriteAllText(path, createText)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText)

        ' Open the file to read from.
        Dim readText As String = File.ReadAllText(path)
        Console.WriteLine(readText)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}
  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
WriteAllText 重载
System.IO 命名空间


File ..::.WriteAllText 方法 (String, String, Encoding)

File
.
.
::
.
WriteAllText 方法 (String, String, Encoding)
File 类

创建一个新文件，在其中写入指定的字符串，然后关闭文件。如果目标文件已存在，则覆盖该文件。 创建一个新文件，在其中写入指定的字符串，然后关闭文件。如果目标文件已存在，则覆盖该文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Sub WriteAllText ( _
    path As String, _
    contents As String, _
    encoding As Encoding _
)
public static void WriteAllText(
    string path,
    string contents,
    Encoding encoding
)
public:
static void WriteAllText(
    String^ path,
    String^ contents,
    Encoding^ encoding
)
static member WriteAllText :
        path:string *
        contents:string *
        encoding:Encoding -> unit

参数

path
类型： System String
要写入的文件。
contents
类型： System String
要写入文件的字符串。
encoding
类型： System.Text Encoding
应用于字符串的编码。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含一个或多个由 InvalidPathChars 定义的无效字符。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或 contents 为空。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
DirectoryNotFoundException | 指定的路径无效（例如，它位于未映射的驱动器上）。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | path 指定了一个只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - path 指定了一个目录。 - 或 - 调用方没有所要求的权限。
FileNotFoundException | 未找到 path 中指定的文件。
NotSupportedException | path 的格式无效。
SecurityException | 调用方没有所要求的权限。

已知字符串和文件路径，此方法打开指定的文件，使用指定的编码将字符串写入文件，然后关闭该文件。即使会引发异常，也使用此方法保证文件句柄已关闭。 已知字符串和文件路径，此方法打开指定的文件，使用指定的编码将字符串写入文件，然后关闭该文件。即使会引发异常，也使用此方法保证文件句柄已关闭。

下面的代码示例演示如何使用 WriteAllText 方法在文件中写入文本。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。 下面的代码示例演示如何使用 WriteAllText 方法在文件中写入文本。在此示例中，如果文件尚不存在，则创建一个文件，并向其中添加文本。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText As String = "Hello and Welcome" + Environment.NewLine
            File.WriteAllText(path, createText, Encoding.UTF8)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText, Encoding.UTF8)

        ' Open the file to read from.
        Dim readText As String = File.ReadAllText(path)
        Console.WriteLine(readText)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText, Encoding.UTF8);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText, Encoding.UTF8);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}
  • FileIOPermission

    用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write 用于对文件或目录进行写访问。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

File 类
File 成员
WriteAllText 重载
System.IO 命名空间


FileAccess 枚举

FileAccess 枚举

定义用于控制对文件的读访问、写访问或读/写访问的常数。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration FileAccess
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum FileAccess
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum class FileAccess
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
[<FlagsAttribute>]
type FileAccess
 | 成员名称 | 说明
由 XNA Framework 提供支持 | Read | 对文件的读访问。可从文件中读取数据。同 Write 组合即构成读写访问权。 对文件的读访问。可从文件中读取数据。同 Write 组合即构成读写访问权。 对文件的读访问。可从文件中读取数据。同 Write 组合即构成读写访问权。
由 XNA Framework 提供支持 | Write | 文件的写访问。可将数据写入文件。同 Read 组合即构成读/写访问权。 文件的写访问。可将数据写入文件。同 Read 组合即构成读/写访问权。 文件的写访问。可将数据写入文件。同 Read 组合即构成读/写访问权。
由 XNA Framework 提供支持 | ReadWrite | 对文件的读访问和写访问。可从文件读取数据和将数据写入文件。 对文件的读访问和写访问。可从文件读取数据和将数据写入文件。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

在 File、FileInfo 和 FileStream 的许多构造函数中以及在其他有必要控制用户对文件的访问类型的构造函数中都指定了 FileAccess 参数。

下面的 FileStream 构造函数授予对现有文件的只读访问 (FileAccess.Read)。

Dim s2 As New FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read)

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);

FileStream^ s2 = gcnew FileStream( name, FileMode::Open, FileAccess::Read, FileShare::Read );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

System.IO 命名空间
File
FileInfo
FileStream
IsolatedStorageFileStream

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileAttributes 枚举

FileAttributes 枚举

提供文件和目录的特性。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration FileAttributes
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum FileAttributes
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum class FileAttributes
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
[<FlagsAttribute>]
type FileAttributes
 | 成员名称 | 说明
由 XNA Framework 提供支持 | ReadOnly | 文件为只读。
由 XNA Framework 提供支持 | Hidden | 文件是隐藏的，因此没有包括在普通的目录列表中。
由 XNA Framework 提供支持 | System | 文件为系统文件。文件是操作系统的一部分或由操作系统以独占方式使用。 文件为系统文件。文件是操作系统的一部分或由操作系统以独占方式使用。
由 XNA Framework 提供支持 | Directory | 文件为一个目录。
由 XNA Framework 提供支持 | Archive | 文件的存档状态。应用程序使用此特性为文件加上备份或移除标记。 文件的存档状态。应用程序使用此特性为文件加上备份或移除标记。
由 XNA Framework 提供支持 | Device | 保留供将来使用。
由 XNA Framework 提供支持 | Normal | 文件正常，没有设置其他的特性。此特性仅在单独使用时有效。 文件正常，没有设置其他的特性。此特性仅在单独使用时有效。
由 XNA Framework 提供支持 | Temporary | 文件是临时文件。文件系统尝试将所有数据保留在内存中以便更快地访问，而不是将数据刷新回大容量存储器中。不再需要临时文件时，应用程序会立即将其删除。 文件是临时文件。文件系统尝试将所有数据保留在内存中以便更快地访问，而不是将数据刷新回大容量存储器中。不再需要临时文件时，应用程序会立即将其删除。 文件是临时文件。文件系统尝试将所有数据保留在内存中以便更快地访问，而不是将数据刷新回大容量存储器中。不再需要临时文件时，应用程序会立即将其删除。
由 XNA Framework 提供支持 | SparseFile | 文件为稀疏文件。稀疏文件一般是数据通常为零的大文件。 文件为稀疏文件。稀疏文件一般是数据通常为零的大文件。
由 XNA Framework 提供支持 | ReparsePoint | 文件包含一个重新分析点，它是一个与文件或目录关联的用户定义的数据块。
由 XNA Framework 提供支持 | Compressed | 文件已压缩。
由 XNA Framework 提供支持 | Offline | 文件已脱机。文件数据不能立即供使用。 文件已脱机。文件数据不能立即供使用。
由 XNA Framework 提供支持 | NotContentIndexed | 操作系统的内容索引服务不会创建此文件的索引。
由 XNA Framework 提供支持 | Encrypted | 该文件或目录是加密的。对于文件来说，表示文件中的所有数据都是加密的。对于目录来说，表示新创建的文件和目录在默认情况下是加密的。 该文件或目录是加密的。对于文件来说，表示文件中的所有数据都是加密的。对于目录来说，表示新创建的文件和目录在默认情况下是加密的。 该文件或目录是加密的。对于文件来说，表示文件中的所有数据都是加密的。对于目录来说，表示新创建的文件和目录在默认情况下是加密的。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

所有这些特性都与 WinNT.h 中的特性相对应。并不是所有特性都同时适用于文件和目录。 所有这些特性都与 WinNT.h 中的特性相对应。并不是所有特性都同时适用于文件和目录。

无法使用 SetAttributes 方法来更改 File 对象的压缩状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileFormatException 类

FileFormatException 类
成员

应该符合一定文件格式规范的输入文件或数据流的格式不正确时引发的异常。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
<SerializableAttribute> _
Public Class FileFormatException _
    Inherits FormatException _
    Implements ISerializable
[SerializableAttribute]
public class FileFormatException : FormatException,
    ISerializable
[SerializableAttribute]
public ref class FileFormatException : public FormatException,
    ISerializable
[<SerializableAttribute>]
type FileFormatException =
    class
        inherit FormatException
        interface ISerializable
    end

System.IO System.IO..::.FileFormatExceptionFileFormatException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 成员
System.IO 命名空间


FileFormatException 成员

FileFormatException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileFormatException 类

应该符合一定文件格式规范的输入文件或数据流的格式不正确时引发的异常。

FileFormatException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileFormatException 类
System.IO 命名空间


FileFormatException 构造函数

FileFormatException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileFormatException 类

创建 FileFormatException 类的一个新实例。

名称 说明
页首

参考

FileFormatException 类
FileFormatException 成员
System.IO 命名空间


FileFormatException 构造函数

FileFormatException 构造函数
FileFormatException 类

创建 FileFormatException 类的新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New
public FileFormatException()
public:
FileFormatException()
new : unit -> FileFormatException

此构造函数使用描述错误的默认系统消息，如“输入文件或数据流不符合要求的文件格式规范”。此消息将考虑当前系统区域性。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (String)

FileFormatException 构造函数 (String)
FileFormatException 类

使用指定的错误消息创建 FileFormatException 类的一个新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New ( _
    message As String _
)
public FileFormatException(
    string message
)
public:
FileFormatException(
    String^ message
)
new :
        message:string -> FileFormatException

参数

message
类型： System String
一个表示错误消息的 String 值。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (Uri)

FileFormatException 构造函数 (Uri)
FileFormatException 类

使用源 URI 值创建 FileFormatException 类的一个新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New ( _
    sourceUri As Uri _
)
public FileFormatException(
    Uri sourceUri
)
public:
FileFormatException(
    Uri^ sourceUri
)
new :
        sourceUri:Uri -> FileFormatException

参数

sourceUri
类型： System Uri
导致此错误的文件的 Uri 值。

此构造函数将新的 FileFormatException 实例的 Message 属性初始化为系统提供的消息，该消息描述错误并且包含文件名，如：“文件 sourceUri 不符合要求的文件格式规范”。此消息将考虑当前系统区域性。

使用 sourceUri 参数初始化 SourceUri 属性。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (SerializationInfo, StreamingContext)

FileFormatException 构造函数 (SerializationInfo, StreamingContext)
FileFormatException 类

使用序列化数据创建 FileFormatException 类的一个新实例，并对其进行初始化。在反序列化过程中调用该构造函数来重建通过流传输的异常对象。 使用序列化数据创建 FileFormatException 类的一个新实例，并对其进行初始化。在反序列化过程中调用该构造函数来重建通过流传输的异常对象。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected FileFormatException(
    SerializationInfo info,
    StreamingContext context
)
protected:
FileFormatException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> FileFormatException

参数

info
类型： System.Runtime.Serialization SerializationInfo
保存序列化对象数据的对象。
context
类型： System.Runtime.Serialization StreamingContext
有关源或目标的上下文信息。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (String, Exception)

FileFormatException 构造函数 (String, Exception)
FileFormatException 类

使用指定的错误消息和异常类型创建 FileFormatException 类的一个新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public FileFormatException(
    string message,
    Exception innerException
)
public:
FileFormatException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> FileFormatException

参数

message
类型： System String
一个表示错误消息的 String 值。
innerException
类型： System Exception
InnerException 属性的值，表示当前异常的原因。

此构造函数使用由 message 表示的指定错误消息初始化新的 FileFormatException 实例的 Message 属性。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (Uri, Exception)

FileFormatException 构造函数 (Uri, Exception)
FileFormatException 类

使用源 URI 值和异常类型创建 FileFormatException 类的一个新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New ( _
    sourceUri As Uri, _
    innerException As Exception _
)
public FileFormatException(
    Uri sourceUri,
    Exception innerException
)
public:
FileFormatException(
    Uri^ sourceUri,
    Exception^ innerException
)
new :
        sourceUri:Uri *
        innerException:Exception -> FileFormatException

参数

sourceUri
类型： System Uri
导致此错误的文件的 Uri 值。
innerException
类型： System Exception
InnerException 属性的值，表示当前异常的原因。

此构造函数将新实例的消息属性初始化为系统提供的消息，该消息描述错误并且包含文件名，如：“文件 sourceUri 不符合要求的文件格式规范”。此消息将考虑当前系统区域性。

使用 sourceUri 参数初始化 SourceUri 属性。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (Uri, String)

FileFormatException 构造函数 (Uri, String)
FileFormatException 类

使用源 URI 值和指定的错误消息创建 FileFormatException 类的一个新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New ( _
    sourceUri As Uri, _
    message As String _
)
public FileFormatException(
    Uri sourceUri,
    string message
)
public:
FileFormatException(
    Uri^ sourceUri,
    String^ message
)
new :
        sourceUri:Uri *
        message:string -> FileFormatException

参数

sourceUri
类型： System Uri
导致此错误的文件的 Uri 值。
message
类型： System String
一个表示错误消息的 String 值。

此构造函数使用由 message 表示的指定错误消息初始化新的 FileFormatException 实例的 Message 属性。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 此构造函数使用由 message 表示的指定错误消息初始化新的 FileFormatException 实例的 Message 属性。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

使用 sourceUri 参数初始化 SourceUri 属性。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 构造函数 (Uri, String, Exception)

FileFormatException 构造函数 (Uri, String, Exception)
FileFormatException 类

使用源 URI 值、指定的错误消息和异常类型创建 FileFormatException 类的一个新实例。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public Sub New ( _
    sourceUri As Uri, _
    message As String, _
    innerException As Exception _
)
public FileFormatException(
    Uri sourceUri,
    string message,
    Exception innerException
)
public:
FileFormatException(
    Uri^ sourceUri,
    String^ message,
    Exception^ innerException
)
new :
        sourceUri:Uri *
        message:string *
        innerException:Exception -> FileFormatException

参数

sourceUri
类型： System Uri
导致此错误的文件的 Uri 值。
message
类型： System String
一个表示错误消息的 String 值。
innerException
类型： System Exception
InnerException 属性的值，表示当前异常的原因。

此构造函数使用消息参数初始化新实例的消息属性。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 此构造函数使用消息参数初始化新实例的消息属性。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

使用 sourceUri 参数初始化 SourceUri 属性。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
FileFormatException 重载
System.IO 命名空间


FileFormatException 方法

FileFormatException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileFormatException 类

FileFormatException 类型公开以下成员。

名称 说明
页首

参考

FileFormatException 类
System.IO 命名空间


FileFormatException ..::.GetObjectData 方法

FileFormatException
.
.
::
.
GetObjectData 方法
FileFormatException 类

设置带有文件名和附加异常信息的 SerializationInfo 对象。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, Flags := SecurityPermissionFlag.SerializationFormatter)> _
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.SerializationFormatter)]
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
[SecurityPermissionAttribute(SecurityAction::Demand, Flags = SecurityPermissionFlag::SerializationFormatter)]
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
[<SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.SerializationFormatter)>]
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
[<SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.SerializationFormatter)>]
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
保存序列化对象数据的对象。
context
类型： System.Runtime.Serialization StreamingContext
有关源或目标的上下文信息。

实现

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
System.IO 命名空间


FileFormatException 属性

FileFormatException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileFormatException 类

FileFormatException 类型公开以下成员。

名称 说明
页首

参考

FileFormatException 类
System.IO 命名空间


FileFormatException ..::.SourceUri 属性

FileFormatException
.
.
::
.
SourceUri 属性
FileFormatException 类

获取导致 FileFormatException 的文件的名称。

命名空间： System.IO
程序集： WindowsBase（在 WindowsBase.dll 中）
Public ReadOnly Property SourceUri As Uri
    Get
public Uri SourceUri { get; }
public:
property Uri^ SourceUri {
    Uri^ get ();
}
member SourceUri : Uri

属性值

类型： System Uri
一个 Uri，表示导致此异常的文件的名称。

如果获取导致异常的文件的名称时出现错误，则返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），并且 SourceUri.ToString 返回一个空字符串。

Windows 7, Windows Vista, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileFormatException 类
FileFormatException 成员
System.IO 命名空间


FileFormatException 事件

FileFormatException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileFormatException 类

FileFormatException 类型公开以下成员。

名称 说明
页首

参考

FileFormatException 类
System.IO 命名空间


FileInfo 类

FileInfo 类
成员

提供创建、复制、删除、移动和打开文件的实例方法，并且帮助创建 FileStream 对象。此类不能被继承。 提供创建、复制、删除、移动和打开文件的实例方法，并且帮助创建 FileStream 对象。此类不能被继承。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class FileInfo _
    Inherits FileSystemInfo
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class FileInfo : FileSystemInfo
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class FileInfo sealed : public FileSystemInfo
[<SealedAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type FileInfo =
    class
        inherit FileSystemInfo
    end

将 FileInfo 类用于典型的操作，如复制、移动、重命名、创建、打开、删除和追加到文件。

许多 FileInfo 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。有关更多信息，请参见特定的 FileInfo 成员，如 Open、OpenRead、OpenText、CreateText 或 Create。 许多 FileInfo 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。有关更多信息，请参见特定的 FileInfo 成员，如 Open、OpenRead、OpenText、CreateText 或 Create。 许多 FileInfo 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。有关更多信息，请参见特定的 FileInfo 成员，如 Open、OpenRead、OpenText、CreateText 或 Create。

如果打算多次重用某个对象，可考虑使用 FileInfo 的实例方法，而不是 File 类的相应静态方法，因为并不总是需要安全检查。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。

下表描述了用于自定义各种 FileInfo 方法的行为的枚举。

枚举 | 说明
FileAccess | 指定对文件的读取和写入访问。
FileShare | 为已在使用中的文件指定允许的访问级别。
FileMode | 指定是保留还是覆盖现有文件的内容，并指定创建现有文件的请求是否会导致异常。
说明 说明

在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。

在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径：

  • C# 中的“c:\\MyDir\\MyFile.txt”或 Visual Basic 中的“c:\MyDir\MyFile.txt”。

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 FileInfo 类的一些主要成员。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path1 As String = Path.GetTempFileName()
        Dim path2 As String = Path.GetTempFileName()
        Dim fi As FileInfo = New FileInfo(path1)

        If fi.Exists = False Then
            'Create a file to write to.
            Dim sw As StreamWriter = fi.CreateText()

            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        Try
            'Open the file to read from.
            Dim sr As StreamReader = fi.OpenText()

            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
            Dim fi2 As FileInfo = New FileInfo(path2)

            'Ensure that the target does not exist.
            fi2.Delete()

            'Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine("{0} was copied to {1}.", path1, path2)

            'Delete the newly created file.
            fi2.Delete()
            Console.WriteLine("{0} was successfully deleted.", path2)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}.", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = Path.GetTempFileName();
        FileInfo fi1 = new FileInfo(path);

        if (!fi1.Exists)
        {
            //Create a file to write to.
            using (StreamWriter sw = fi1.CreateText())
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        //Open the file to read from.
        using (StreamReader sr = fi1.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }

        try
        {
            string path2 = Path.GetTempFileName();
            FileInfo fi2 = new FileInfo(path2);

            //Ensure that the target does not exist.
            fi2.Delete();

            //Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            //Delete the newly created file.
            fi2.Delete();
            Console.WriteLine("{0} was successfully deleted.", path2);

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = Path::GetTempFileName();
   FileInfo^ fi1 = gcnew FileInfo( path );
   if (  !fi1->Exists )
   {
      //Create a file to write to.
      StreamWriter^ sw = fi1->CreateText();
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
            delete (IDisposable^)sw;
      }
   }

   //Open the file to read from.
   StreamReader^ sr = fi1->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }

   try
   {
      String^ path2 = Path::GetTempFileName();
      FileInfo^ fi2 = gcnew FileInfo( path2 );

      //Ensure that the target does not exist.
      fi2->Delete();

      //Copy the file.
      fi1->CopyTo( path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      //Delete the newly created file.
      fi2->Delete();
      Console::WriteLine( "{0} was successfully deleted.", path2 );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

System.IO System.IO..::.FileInfoFileInfo
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 成员
System.IO 命名空间
DriveInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo 成员

FileInfo 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

提供创建、复制、删除、移动和打开文件的实例方法，并且帮助创建 FileStream 对象。此类不能被继承。 提供创建、复制、删除、移动和打开文件的实例方法，并且帮助创建 FileStream 对象。此类不能被继承。

FileInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileInfo 类
System.IO 命名空间


FileInfo 构造函数

FileInfo 构造函数
FileInfo 类

初始化 FileInfo 类的新实例，它作为文件路径的包装。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    fileName As String _
)
public FileInfo(
    string fileName
)
public:
FileInfo(
    String^ fileName
)
new :
        fileName:string -> FileInfo

参数

fileName
类型： System String
新文件的完全限定名或相对文件名。路径不要以目录分隔符结尾。 新文件的完全限定名或相对文件名。路径不要以目录分隔符结尾。
异常 | 条件
ArgumentNullException | fileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SecurityException | 调用方没有所要求的权限。
ArgumentException | 文件名为空，只包含空白，或包含无效字符。
UnauthorizedAccessException | 对 fileName 的访问被拒绝。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | fileName 字符串中间有一个冒号 (:)。

可以指定完全限定文件名或相对文件名，但是安全检查获取完全限定名。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例使用此构造函数创建两个文件，并接着对其进行写入、读取、复制和删除操作。

Imports System
Imports System.IO

Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fi1 As FileInfo = New FileInfo(path)

        If fi1.Exists = False Then
            'Create a file to write to.
            Dim sw As StreamWriter = fi1.CreateText()
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        'Open the file to read from.
        Dim sr As StreamReader = fi1.OpenText()

        Do While sr.Peek() >= 0
            Console.WriteLine(sr.ReadLine())
        Loop

        Try
            Dim path2 As String = path + "temp"
            Dim fi2 As FileInfo = New FileInfo(path2)

            'Ensure that the target does not exist.
            fi2.Delete()

            'Copy the file.
            fi1.CopyTo(path2)
            Console.WriteLine("{0} was copied to {1}.", path, path2)

            'Delete the newly created file.
            fi2.Delete()
            Console.WriteLine("{0} was successfully deleted.", path2)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Hello
'And
'Welcome
'c:\MyTest.txt was copied to c:\MyTest.txttemp.
'c:\MyTest.txttemp was successfully deleted.

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        FileInfo fi1 = new FileInfo(path);

        if (!fi1.Exists)
        {
            //Create a file to write to.
            using (StreamWriter sw = fi1.CreateText())
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        //Open the file to read from.
        using (StreamReader sr = fi1.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }

        try
        {
            string path2 = path + "temp";
            FileInfo fi2 = new FileInfo(path2);

            //Ensure that the target does not exist.
            fi2.Delete();

            //Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            //Delete the newly created file.
            fi2.Delete();
            Console.WriteLine("{0} was successfully deleted.", path2);

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Hello
//And
//Welcome
//c:\MyTest.txt was copied to c:\MyTest.txttemp.
//c:\MyTest.txttemp was successfully deleted.

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi1 = gcnew FileInfo( path );
   if (  !fi1->Exists )
   {
      //Create a file to write to.
      StreamWriter^ sw = fi1->CreateText();
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
            delete (IDisposable^)sw;
      }
   }

   //Open the file to read from.
   StreamReader^ sr = fi1->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }

   try
   {
      String^ path2 = String::Concat( path, "temp" );
      FileInfo^ fi2 = gcnew FileInfo( path2 );

      //Ensure that the target does not exist.
      fi2->Delete();

      //Copy the file.
      fi1->CopyTo( path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      //Delete the newly created file.
      fi2->Delete();
      Console::WriteLine( "{0} was successfully deleted.", path2 );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Hello
//And
//Welcome
//c:\MyTest.txt was copied to c:\MyTest.txttemp.
//c:\MyTest.txttemp was successfully deleted.

下面的示例打开一个现有文件或创建一个文件，将文本追加到此文件并显示结果。

Imports System
Imports System.IO

Public Class FileInfoMainTest

    Public Shared Sub Main()
        ' Open an existing file, or create a new one.
        Dim fi As New FileInfo("temp.txt")
        ' Create a writer, ready to add entries to the file.
        Dim sw As StreamWriter = fi.AppendText()
        sw.WriteLine("This is a new entry to add to the file")
        sw.WriteLine("This is yet another line to add...")
        sw.Flush()
        sw.Close()
        Dim sr As New StreamReader(fi.OpenRead())
        ' Get the information out of the file and display it.
        While sr.Peek() <> -1
            Console.WriteLine(sr.ReadLine())
        End While
    End Sub 'Main
End Class 'FileInfoMainTest
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is a new entry to add to the file
'This is yet another line to add...

using System;
using System.IO;

public class FileInfoMainTest
{
    public static void Main()
    {
        // Open an existing file, or create a new one.
        FileInfo fi = new FileInfo("temp.txt");
        // Create a writer, ready to add entries to the file.
        StreamWriter sw = fi.AppendText();
        sw.WriteLine("This is a new entry to add to the file");
        sw.WriteLine("This is yet another line to add...");
        sw.Flush();
        sw.Close();
        // Get the information out of the file and display it.
        StreamReader sr = new StreamReader( fi.OpenRead() );
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Add as many lines as you like...
//Add another line to the output...
//This is a new entry to add to the file
//This is yet another line to add...

using namespace System;
using namespace System::IO;
int main()
{

   // Open an existing file, or create a new one.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Create a writer, ready to add entries to the file.
   StreamWriter^ sw = fi->AppendText();
   sw->WriteLine( "This is a new entry to add to the file" );
   sw->WriteLine( "This is yet another line to add..." );
   sw->Flush();
   sw->Close();

   // Get the information out of the file and display it.
   StreamReader^ sr = gcnew StreamReader( fi->OpenRead() );
   while ( sr->Peek() != -1 )
      Console::WriteLine( sr->ReadLine() );
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is a new entry to add to the file
//This is yet another line to add...
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo 字段

FileInfo 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

FileInfo 类型公开以下成员。

名称 说明
页首

参考

FileInfo 类
System.IO 命名空间


FileInfo 方法

FileInfo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

FileInfo 类型公开以下成员。

名称 说明
页首

参考

FileInfo 类
System.IO 命名空间


FileInfo ..::.AppendText 方法

FileInfo
.
.
::
.
AppendText 方法
FileInfo 类

创建一个 StreamWriter，它向 FileInfo 的此实例表示的文件追加文本。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function AppendText As StreamWriter
public StreamWriter AppendText()
public:
StreamWriter^ AppendText()
member AppendText : unit -> StreamWriter

返回值

类型： System.IO StreamWriter
新的 StreamWriter。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将文本追加到一个文件并从此文件中读取。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim fi As FileInfo = New FileInfo("c:\temp\MyTest.txt")
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If fi.Exists = False Then
            'Create a file to write to.
            sw = fi.CreateText()
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        ' This text will always be added, making the file longer over time
        ' if it is not deleted.
        sw = fi.AppendText()

        sw.WriteLine("This")
        sw.WriteLine("is Extra")
        sw.WriteLine("Text")
        sw.Flush()
        sw.Close()

        'Open the file to read from.
        Dim sr As StreamReader = fi.OpenText()
        Dim s As String
        Do While sr.Peek() >= 0
            s = sr.ReadLine()
            Console.WriteLine(s)
        Loop
        sr.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Hello
'And
'Welcome
'This
'is Extra
'Text

'When you run this application a second time, you will see the following output:
'
'Hello
'And
'Welcome
'This
'is Extra
'Text
'This
'is Extra
'Text

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        FileInfo fi = new FileInfo(@"c:\MyTest.txt");

        // This text is added only once to the file.
        if (!fi.Exists)
        {
            //Create a file to write to.
            using (StreamWriter sw = fi.CreateText())
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        // This text will always be added, making the file longer over time
        // if it is not deleted.
        using (StreamWriter sw = fi.AppendText())
        {
            sw.WriteLine("This");
            sw.WriteLine("is Extra");
            sw.WriteLine("Text");
        }

        //Open the file to read from.
        using (StreamReader sr = fi.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Hello
//And
//Welcome
//This
//is Extra
//Text

//When you run this application a second time, you will see the following output:
//
//Hello
//And
//Welcome
//This
//is Extra
//Text
//This
//is Extra
//Text

using namespace System;
using namespace System::IO;

int main()
{
   FileInfo^ fi = gcnew FileInfo( "c:\\MyTest.txt" );

   // This text is added only once to the file.
   if (  !fi->Exists )
   {
      //Create a file to write to.
      StreamWriter^ sw = fi->CreateText();
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
            delete (IDisposable^)sw;
      }
   }

   // This text will always be added, making the file longer over time
   // if it is not deleted.
   StreamWriter^ sw = fi->AppendText();
   try
   {
      sw->WriteLine( "This" );
      sw->WriteLine( "is Extra" );
      sw->WriteLine( "Text" );
   }
   finally
   {
      if ( sw )
         delete (IDisposable^)sw;
   }

   //Open the file to read from.
   StreamReader^ sr = fi->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Hello
//And
//Welcome
//This
//is Extra
//Text
//
//When you run this application a second time, you will see the following output:
//
//Hello
//And
//Welcome
//This
//is Extra
//Text
//This
//is Extra
//Text

下面的示例说明如何将文本追加到文件末尾并在控制台显示追加操作的结果。第一次调用此例程时，如果文件不存在则创建该文件。然后，将指定的文本追加到该文件。 下面的示例说明如何将文本追加到文件末尾并在控制台显示追加操作的结果。第一次调用此例程时，如果文件不存在则创建该文件。然后，将指定的文本追加到该文件。 下面的示例说明如何将文本追加到文件末尾并在控制台显示追加操作的结果。第一次调用此例程时，如果文件不存在则创建该文件。然后，将指定的文本追加到该文件。

Imports System
Imports System.IO

Public Class AppendTextTest
    Public Shared Sub Main()
        Dim fi As New FileInfo("temp.txt")
        Dim sw As StreamWriter = fi.AppendText()
        sw.WriteLine("Add as many lines as you like...")
        sw.WriteLine("Add another line to the output...")
        sw.Flush()
        sw.Close()
        Dim sr As New StreamReader(fi.OpenRead())
        ' Get the information out of the file and display it.
        ' Remember that the file might have other lines if it already existed.
        While sr.Peek() <> -1
            Console.WriteLine(sr.ReadLine())
        End While
    End Sub 'Main
End Class 'AppendTextTest
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'Add as many lines as you like...
'Add another line to the output...

using System;
using System.IO;

public class AppendTextTest
{
    public static void Main()
    {
        FileInfo fi = new FileInfo("temp.txt");
        // Create a writer, ready to add entries to the file.
        StreamWriter sw = fi.AppendText();
        sw.WriteLine("Add as many lines as you like...");
        sw.WriteLine("Add another line to the output...");
        sw.Flush();
        sw.Close();
        // Get the information out of the file and display it.
        // Remember that the file might have other lines if it already existed.
        StreamReader sr = new StreamReader(fi.OpenRead());
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//Add as many lines as you like...
//Add another line to the output...

using namespace System;
using namespace System::IO;
int main()
{

   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Create a writer, ready to add entries to the file.
   StreamWriter^ sw = fi->AppendText();
   sw->WriteLine( "Add as many lines as you like..." );
   sw->WriteLine( "Add another line to the output..." );
   sw->Flush();
   sw->Close();

   // Get the information out of the file and display it.
   // Remember that the file might have other lines if it already existed.
   StreamReader^ sr = gcnew StreamReader( fi->OpenRead() );
   while ( sr->Peek() != -1 )
      Console::WriteLine( sr->ReadLine() );
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//Add as many lines as you like...
//Add another line to the output...

}
  • FileIOPermission

    用于读取文件和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Append 用于读取文件和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Append

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间
StreamWriter

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.CopyTo 方法

FileInfo
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

将现有文件复制到新文件。

名称 说明
页首

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.CopyTo 方法 (String)

FileInfo
.
.
::
.
CopyTo 方法 (String)
FileInfo 类

将现有文件复制到新文件，不允许覆盖现有文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function CopyTo ( _
    destFileName As String _
) As FileInfo
public FileInfo CopyTo(
    string destFileName
)
public:
FileInfo^ CopyTo(
    String^ destFileName
)
member CopyTo :
        destFileName:string -> FileInfo

参数

destFileName
类型： System String
要复制到的新文件的名称。

返回值

类型： System.IO FileInfo
带有完全限定路径的新文件。
异常 | 条件
ArgumentException | destFileName 为空，仅包含空白，或包含无效字符。
IOException | 发生错误或目标文件已经存在。
SecurityException | 调用方没有所要求的权限。
ArgumentNullException | destFileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
UnauthorizedAccessException | 传入了一个目录路径，或者正在将文件移动到另一个驱动器。
DirectoryNotFoundException | destFileName 中指定的目录不存在。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | destFileName 在字符串内包含一个冒号 (:)，但未指定卷。

使用 CopyTo 方法以允许覆盖现有文件。

警告说明 警告

在使用此方法时尽量避免使用短文件名（例如 XXXXXX~1.XXX）。如果两个文件的短文件名等效，则此方法可能失败并引发异常，并且（或者）导致不需要的行为。 在使用此方法时尽量避免使用短文件名（例如 XXXXXX~1.XXX）。如果两个文件的短文件名等效，则此方法可能失败并引发异常，并且（或者）导致不需要的行为。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 CopyTo 方法的两个重载。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        'Specify the directories you want to manipulate.
        Dim path As String = "c:\SourceFile.txt"
        Dim path2 As String = "c:\NewFile.txt"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fi2 As FileInfo = New FileInfo(path2)

        Try
            Using fs As FileStream = fi.Create()
            End Using

            'Ensure that the target does not exist.
            If File.Exists(path2) Then
                fi2.Delete()
            End If

            'Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine("{0} was copied to {1}.", path, path2)

        Catch ioex As IOException
            Console.WriteLine(ioex.Message)
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\SoureFile.txt";
        string path2 = @"c:\NewFile.txt";
        FileInfo fi1 = new FileInfo(path);
        FileInfo fi2 = new FileInfo(path2);

        try
        {
            // Create the source file.
            using (FileStream fs = fi1.Create()) { }

            //Ensure that the target file does not exist.
            if (File.Exists(path2))
            {
                fi2.Delete();
            }

            //Copy the file.f
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);
        }
        catch (IOException ioex)
        {
            Console.WriteLine(ioex.Message);
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\MyTest.txt";
   String^ path2 = "c:\\MyTest.txttemp";
   FileInfo^ fi1 = gcnew FileInfo( path );
   FileInfo^ fi2 = gcnew FileInfo( path2 );
   try
   {
      // Create the file and clean up handles.
      FileStream^ fs = fi1->Create();
      if ( fs )
         delete (IDisposable^)fs;

      //Ensure that the target does not exist.
      fi2->Delete();

      //Copy the file.
      fi1->CopyTo( path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      //Try to copy it again, which should succeed.
      fi1->CopyTo( path2, true );
      Console::WriteLine( "The second Copy operation succeeded, which is expected." );
   }
   catch ( Exception^ )
   {
      Console::WriteLine( "Double copying was not allowed, which is not expected." );
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The second Copy operation succeeded, which is expected.

下面的示例演示了如何将一个文件复制到另一文件，如果目标文件已存在则引发异常。

Imports System
Imports System.IO

Public Class CopyToTest
    Public Shared Sub Main()
        Try
            ' Create a reference to a file, which might or might not exist.
            ' If it does not exist, it is not yet created.
            Dim fi As New FileInfo("temp.txt")
            ' Create a writer, ready to add entries to the file.
            Dim sw As StreamWriter = fi.AppendText()
            sw.WriteLine("Add as many lines as you like...")
            sw.WriteLine("Add another line to the output...")
            sw.Flush()
            sw.Close()
            ' Get the information out of the file and display it.
            Dim sr As New StreamReader(fi.OpenRead())
            Console.WriteLine("This is the information in the first file:")
            While sr.Peek() <> -1
                Console.WriteLine(sr.ReadLine())
            End While
            ' Copy this file to another file.
            Dim newfi As FileInfo = fi.CopyTo("newTemp.txt")
            ' Get the information out of the new file and display it.
            sr = New StreamReader(newfi.OpenRead())
            Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine)
            While sr.Peek() <> -1
                Console.WriteLine(sr.ReadLine())
            End While
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub 'Main
End Class 'CopyToTest
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is the information in the first file:
'Add as many lines as you like...
'Add another line to the output...
'
'This is the information in the second file:
'Add as many lines as you like...
'Add another line to the output...

using System;
using System.IO;

public class CopyToTest
{
    public static void Main()
    {
        try
        {
            // Create a reference to a file, which might or might not exist.
            // If it does not exist, it is not yet created.
            FileInfo fi = new FileInfo("temp.txt");
            // Create a writer, ready to add entries to the file.
            StreamWriter sw = fi.AppendText();
            sw.WriteLine("Add as many lines as you like...");
            sw.WriteLine("Add another line to the output...");
            sw.Flush();
            sw.Close();
            // Get the information out of the file and display it.
            StreamReader sr = new StreamReader(fi.OpenRead());
            Console.WriteLine("This is the information in the first file:");
            while (sr.Peek() != -1)
                Console.WriteLine(sr.ReadLine());
            // Copy this file to another file. The file will not be overwritten if it already exists.
            FileInfo newfi = fi.CopyTo("newTemp.txt");
            // Get the information out of the new file and display it.
            sr = new StreamReader(newfi.OpenRead());
            Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine);
            while (sr.Peek() != -1)
                Console.WriteLine(sr.ReadLine());
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is the information in the first file:
//Add as many lines as you like...
//Add another line to the output...

//This is the information in the second file:
//Add as many lines as you like...
//Add another line to the output...

using namespace System;
using namespace System::IO;
int main()
{
   try
   {

      // Create a reference to a file, which might or might not exist.
      // If it does not exist, it is not yet created.
      FileInfo^ fi = gcnew FileInfo( "temp.txt" );

      // Create a writer, ready to add entries to the file.
      StreamWriter^ sw = fi->AppendText();
      sw->WriteLine( "Add as many lines as you like..." );
      sw->WriteLine( "Add another line to the output..." );
      sw->Flush();
      sw->Close();

      // Get the information out of the file and display it.
      StreamReader^ sr = gcnew StreamReader( fi->OpenRead() );
      Console::WriteLine( "This is the information in the first file:" );
      while ( sr->Peek() != -1 )
            Console::WriteLine( sr->ReadLine() );

      // Copy this file to another file. The file will not be overwritten if it already exists.
      FileInfo^ newfi = fi->CopyTo( "newTemp.txt" );

      // Get the information out of the new file and display it.* sr = new StreamReader(newfi->OpenRead());
      Console::WriteLine( "{0}This is the information in the second file:", Environment::NewLine );
      while ( sr->Peek() != -1 )
            Console::WriteLine( sr->ReadLine() );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( e->Message );
   }

}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is the information in the first file:
//Add as many lines as you like...
//Add another line to the output...
//
//This is the information in the second file:
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
CopyTo 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.CopyTo 方法 (String, Boolean)

FileInfo
.
.
::
.
CopyTo 方法 (String, Boolean)
FileInfo 类

将现有文件复制到新文件，允许覆盖现有文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function CopyTo ( _
    destFileName As String, _
    overwrite As Boolean _
) As FileInfo
public FileInfo CopyTo(
    string destFileName,
    bool overwrite
)
public:
FileInfo^ CopyTo(
    String^ destFileName,
    bool overwrite
)
member CopyTo :
        destFileName:string *
        overwrite:bool -> FileInfo

参数

destFileName
类型： System String
要复制到的新文件的名称。
overwrite
类型： System Boolean
若为 true，则允许覆盖现有文件；否则为 false。

返回值

类型： System.IO FileInfo
新文件，或者如果 overwrite 为 true，则为现有文件的覆盖。如果文件存在，且 overwrite 为 false，则会发生 IOException。 新文件，或者如果 overwrite 为 true，则为现有文件的覆盖。如果文件存在，且 overwrite 为 false，则会发生 IOException。
异常 | 条件
ArgumentException | destFileName 为空，仅包含空白，或包含无效字符。
IOException | 发生错误，或者目标文件已经存在，并且 overwrite 为 false。
SecurityException | 调用方没有所要求的权限。
ArgumentNullException | destFileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | destFileName 中指定的目录不存在。
UnauthorizedAccessException | 传入了一个目录路径，或者正在将文件移动到另一个驱动器。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | destFileName 的字符串中间包含一个冒号 (:)。

使用此方法可以允许或防止覆盖现有文件。默认情况下，使用 CopyTo 方法来防止覆盖现有文件。 使用此方法可以允许或防止覆盖现有文件。默认情况下，使用 CopyTo 方法来防止覆盖现有文件。

警告说明 警告

在使用此方法时尽量避免使用短文件名（例如 XXXXXX~1.XXX）。如果两个文件的短文件名等效，则此方法可能失败并引发异常，并且（或者）导致不需要的行为。 在使用此方法时尽量避免使用短文件名（例如 XXXXXX~1.XXX）。如果两个文件的短文件名等效，则此方法可能失败并引发异常，并且（或者）导致不需要的行为。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 CopyTo 方法的两个重载。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        'Specify the directories you want to manipulate.
        Dim path As String = "c:\SourceFile.txt"
        Dim path2 As String = "c:\NewFile.txt"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fi2 As FileInfo = New FileInfo(path2)

        Try
            Using fs As FileStream = fi.Create()
            End Using

            'Ensure that the target does not exist.
            If File.Exists(path2) Then
                fi2.Delete()
            End If

            'Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine("{0} was copied to {1}.", path, path2)

        Catch ioex As IOException
            Console.WriteLine(ioex.Message)
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\SoureFile.txt";
        string path2 = @"c:\NewFile.txt";
        FileInfo fi1 = new FileInfo(path);
        FileInfo fi2 = new FileInfo(path2);

        try
        {
            // Create the source file.
            using (FileStream fs = fi1.Create()) { }

            //Ensure that the target file does not exist.
            if (File.Exists(path2))
            {
                fi2.Delete();
            }

            //Copy the file.f
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);
        }
        catch (IOException ioex)
        {
            Console.WriteLine(ioex.Message);
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\MyTest.txt";
   String^ path2 = "c:\\MyTest.txttemp";
   FileInfo^ fi1 = gcnew FileInfo( path );
   FileInfo^ fi2 = gcnew FileInfo( path2 );
   try
   {
      // Create the file and clean up handles.
      FileStream^ fs = fi1->Create();
      if ( fs )
         delete (IDisposable^)fs;

      //Ensure that the target does not exist.
      fi2->Delete();

      //Copy the file.
      fi1->CopyTo( path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      //Try to copy it again, which should succeed.
      fi1->CopyTo( path2, true );
      Console::WriteLine( "The second Copy operation succeeded, which is expected." );
   }
   catch ( Exception^ )
   {
      Console::WriteLine( "Double copying was not allowed, which is not expected." );
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The second Copy operation succeeded, which is expected.

下面的示例演示了如何将一个文件复制到另一文件，指定是否覆盖已存在的文件。

Imports System
Imports System.IO

Public Class CopyToTest
    Public Shared Sub Main()
        ' Create a reference to a file, which might or might not exist.
        ' If it does not exist, it is not yet created.
        Dim fi As New FileInfo("temp.txt")
        ' Create a writer, ready to add entries to the file.
        Dim sw As StreamWriter = fi.AppendText()
        sw.WriteLine("Add as many lines as you like...")
        sw.WriteLine("Add another line to the output...")
        sw.Flush()
        sw.Close()
        ' Get the information out of the file and display it.
        Dim sr As New StreamReader(fi.OpenRead())
        Console.WriteLine("This is the information in the first file:")
        While sr.Peek() <> -1
            Console.WriteLine(sr.ReadLine())
        End While
        ' Copy this file to another file. The true parameter specifies
        ' that the file will be overwritten if it already exists.
        Dim newfi As FileInfo = fi.CopyTo("newTemp.txt", True)
        ' Get the information out of the new file and display it.
        sr = New StreamReader(newfi.OpenRead())
        Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine)
        While sr.Peek() <> -1
            Console.WriteLine(sr.ReadLine())
        End While
    End Sub 'Main
End Class 'CopyToTest
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is the information in the first file:
'Add as many lines as you like...
'Add another line to the output...
'
'This is the information in the second file:
'Add as many lines as you like...
'Add another line to the output...
'

using System;
using System.IO;

public class CopyToTest
{
    public static void Main()
    {
        // Create a reference to a file, which might or might not exist.
        // If it does not exist, it is not yet created.
        FileInfo fi = new FileInfo("temp.txt");
        // Create a writer, ready to add entries to the file.
        StreamWriter sw = fi.AppendText();
        sw.WriteLine("Add as many lines as you like...");
        sw.WriteLine("Add another line to the output...");
        sw.Flush();
        sw.Close();
        // Get the information out of the file and display it.
        StreamReader sr = new StreamReader( fi.OpenRead() );
        Console.WriteLine("This is the information in the first file:");
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
        // Copy this file to another file. The true parameter specifies
        // that the file will be overwritten if it already exists.
        FileInfo newfi = fi.CopyTo("newTemp.txt", true);
        // Get the information out of the new file and display it.
        sr = new StreamReader( newfi.OpenRead() );
        Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine);
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is the information in the first file:
//Add as many lines as you like...
//Add another line to the output...
//Add as many lines as you like...
//Add another line to the output...

//This is the information in the second file:
//Add as many lines as you like...
//Add another line to the output...
//Add as many lines as you like...
//Add another line to the output...

using namespace System;
using namespace System::IO;
int main()
{

   // Create a reference to a file, which might or might not exist.
   // If it does not exist, it is not yet created.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Create a writer, ready to add entries to the file.
   StreamWriter^ sw = fi->AppendText();
   sw->WriteLine( "Add as many lines as you like..." );
   sw->WriteLine( "Add another line to the output..." );
   sw->Flush();
   sw->Close();

   // Get the information out of the file and display it.
   StreamReader^ sr = gcnew StreamReader( fi->OpenRead() );
   Console::WriteLine( "This is the information in the first file:" );
   while ( sr->Peek() != -1 )
      Console::WriteLine( sr->ReadLine() );

   // Copy this file to another file. The true parameter specifies
   // that the file will be overwritten if it already exists.
   FileInfo^ newfi = fi->CopyTo( "newTemp.txt", true );

   // Get the information out of the new file and display it.* sr = new StreamReader( newfi->OpenRead() );
   Console::WriteLine( "{0}This is the information in the second file:", Environment::NewLine );
   while ( sr->Peek() != -1 )
      Console::WriteLine( sr->ReadLine() );
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is the information in the first file:
//Add as many lines as you like...
//Add another line to the output...
//This is the information in the second file:
//
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
CopyTo 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.Create 方法

FileInfo
.
.
::
.
Create 方法
FileInfo 类

创建文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function Create As FileStream
public FileStream Create()
public:
FileStream^ Create()
member Create : unit -> FileStream

返回值

类型： System.IO FileStream
新文件。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。

此方法是由 File..::.Create 提供的功能的包装。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例创建对文件的引用，然后使用 FileInfo.Create() 在磁盘上创建此文件。

Imports System
Imports System.IO

Public Class DeleteTest
    Public Shared Sub Main()
        ' Create a reference to a file.
        Dim fi As New FileInfo("temp.txt")
        ' Actually create the file.
        Dim fs As FileStream = fi.Create()
        ' Modify the file as required, and then close the file.
        fs.Close()
        ' Delete the file.
        fi.Delete()
    End Sub 'Main
End Class 'DeleteTest

using System;
using System.IO;

public class DeleteTest
{
    public static void Main()
    {
        // Create a reference to a file.
        FileInfo fi = new FileInfo("temp.txt");
        // Actually create the file.
        FileStream fs = fi.Create();
        // Modify the file as required, and then close the file.
        fs.Close();
        // Delete the file.
        fi.Delete();
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Create a reference to a file.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Actually create the file.
   FileStream^ fs = fi->Create();

   // Modify the file as required, and then close the file.
   fs->Close();

   // Delete the file.
   fi->Delete();
}

下面的示例创建一个文件，向其中添加一些文本，然后从此文件中读取。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)

        ' Delete the file if it exists.
        If fi.Exists() Then
            fi.Delete()
        End If

        'Create the file.
        Dim fs As FileStream = fi.Create()
        Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")

        'Add some information to the file.
        fs.Write(info, 0, info.Length)
        fs.Close()

        'Open the stream and read it back.
        Dim sr As StreamReader = fi.OpenText()

        Do While sr.Peek() >= 0
            Console.WriteLine(sr.ReadLine())
        Loop
        sr.Close()
    End Sub
End Class

'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);

        // Delete the file if it exists.
        if (fi.Exists)
        {
            fi.Delete();
        }

        //Create the file.
        using (FileStream fs = fi.Create())
        {
            Byte[] info =
                new UTF8Encoding(true).GetBytes("This is some text in the file.");

            //Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

        //Open the stream and read it back.
        using (StreamReader sr = fi.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );

   // Delete the file if it exists.
   if ( fi->Exists )
   {
      fi->Delete();
   }

   //Create the file.
   FileStream^ fs = fi->Create();
   try
   {
      array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

      //Add some information to the file.
      fs->Write( info, 0, info->Length );
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }

   //Open the stream and read it back.
   StreamReader^ sr = fi->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.CreateText 方法

FileInfo
.
.
::
.
CreateText 方法
FileInfo 类

创建写入新文本文件的 StreamWriter。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function CreateText As StreamWriter
public StreamWriter CreateText()
public:
StreamWriter^ CreateText()
member CreateText : unit -> StreamWriter

返回值

类型： System.IO StreamWriter
新的 StreamWriter。
异常 | 条件
UnauthorizedAccessException | 文件名为目录。
IOException | 磁盘为只读。
SecurityException | 调用方没有所要求的权限。

默认情况下，将向所有用户授予对新文件的完全读/写访问权限。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明 CreateText 方法。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)

        If fi.Exists = False Then
            'Create a file to write to.
            Dim sw As StreamWriter = fi.CreateText()
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        'Open the file to read from.
        Dim sr As StreamReader = fi.OpenText()

        Do While sr.Peek() >= 0
            Console.WriteLine(sr.ReadLine())
        Loop
        sr.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Hello
'And
'Welcome

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        FileInfo fi = new FileInfo(path);

        if (!fi.Exists)
        {
            //Create a file to write to.
            using (StreamWriter sw = fi.CreateText())
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        //Open the file to read from.
        using (StreamReader sr = fi.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Hello
//And
//Welcome

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );
   if (  !fi->Exists )
   {
      //Create a file to write to.
      StreamWriter^ sw = fi->CreateText();
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
            delete (IDisposable^)sw;
      }
   }

   //Open the file to read from.
   StreamReader^ sr = fi->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Hello
//And
//Welcome
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间
StreamWriter

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.Decrypt 方法

FileInfo
.
.
::
.
Decrypt 方法
FileInfo 类

解密由当前帐户使用 Encrypt 方法加密的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Sub Decrypt
[ComVisibleAttribute(false)]
public void Decrypt()
[ComVisibleAttribute(false)]
public:
void Decrypt()
[<ComVisibleAttribute(false)>]
member Decrypt : unit -> unit

异常 | 条件
DriveNotFoundException | 指定了无效的驱动器。
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。
IOException | 打开文件时发生了 I/O 错误。
NotSupportedException | 文件系统不是 NTFS。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。
UnauthorizedAccessException | 当前 FileInfo 对象描述的文件是只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

Decrypt 方法允许您解密使用 Encrypt 方法加密的文件。Decrypt 方法只能解密使用当前用户帐户加密的文件。 Decrypt 方法允许您解密使用 Encrypt 方法加密的文件。Decrypt 方法只能解密使用当前用户帐户加密的文件。

Encrypt 方法和 Decrypt 方法都使用安装在计算机上的加密服务提供程序 (CSP) 和调用该方法的进程的文件加密密钥。

当前文件系统必须格式化为 NTFS，当前操作系统必须是 Microsoft Windows NT 或更高版本。

下面的代码示例使用 Encrypt 方法和 Decrypt 方法加密某个文件，然后将其解密。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "c:\MyTest.txt"

            Console.WriteLine("Encrypt " + FileName)

            ' Encrypt the file.
            AddEncryption(FileName)

            Console.WriteLine("Decrypt " + FileName)

            ' Decrypt the file.
            RemoveEncryption(FileName)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    Sub AddEncryption(ByVal FileName As String)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)
        If fInfo.Exists = False Then
            fInfo.Create()
        End If
        ' Add encryption.
        fInfo.Encrypt()

    End Sub

    Sub RemoveEncryption(ByVal FileName As String)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)
        If fInfo.Exists = False Then
            fInfo.Create()
        End If
        ' Remove encryption.
        fInfo.Decrypt()

    End Sub
End Module
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Encrypt c:\MyTest.txt
'Decrypt c:\MyTest.txt
'Done

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = @"c:\MyTest.txt";

                Console.WriteLine("Encrypt " + FileName);

                // Encrypt the file.
                AddEncryption(FileName);

                Console.WriteLine("Decrypt " + FileName);

                // Decrypt the file.
                RemoveEncryption(FileName);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        public static void AddEncryption(string FileName)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);
            if (!fInfo.Exists)
            {
                //Create the file.
                fInfo.Create();
            }
            // Add encryption.
            fInfo.Encrypt();
        }

        public static void RemoveEncryption(string FileName)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);
            if (!fInfo.Exists)
            {
                //Create the file.
                fInfo.Create();
            }
            // Remove encryption.
            fInfo.Decrypt();

        }
    }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Encrypt c:\MyTest.txt
//Decrypt c:\MyTest.txt
//Done

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

    static void Addencryption(String^ fileName)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }
    // Add encryption.
    fInfo->Encrypt();

}

    static void Removeencryption(String^ fileName)
{
//    Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }
    // Remove encryption.
    fInfo->Decrypt();
}

int main()
{
    try
    {
        String^ fileName = "c:\\MyTest.txt";
        Console::WriteLine("Encrypt " + fileName);

        // Encrypt the file.

        Addencryption(fileName);
        Console::WriteLine("Decrypt " + fileName);

        // Decrypt the file.
        Removeencryption(fileName);
        Console::WriteLine("Done");
     }
     catch (IOException^ ex)
     {
        Console::WriteLine(ex->Message);
     }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Encrypt c:\MyTest.txt
//Decrypt c:\MyTest.txt
//Done
  • FileIOPermission

    关联枚举：Read、Write

    安全操作：Demand。

    表示读取和写入当前 FileInfo 对象所描述的文件的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.Delete 方法

FileInfo
.
.
::
.
Delete 方法
FileInfo 类

永久删除文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Delete
public override void Delete()
public:
virtual void Delete() override
abstract Delete : unit -> unit
override Delete : unit -> unit
异常 | 条件
IOException | 目标文件已打开或内存映射到运行 Microsoft Windows NT 的计算机上。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 路径是目录。

如果文件不存在，则此方法不执行任何操作。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows NT 4.0 平台说明： Windows NT 4.0 平台说明：Delete 不删除对正常 I/O 打开的文件或映射到内存的文件。

下面的示例说明 Delete 方法。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)

        Try
            Dim sw As StreamWriter = fi.CreateText()
            sw.Close()
            Dim path2 As String = path + "temp"
            Dim fi2 As FileInfo = New FileInfo(path2)

            'Ensure that the target does not exist.
            fi2.Delete()

            'Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine("{0} was copied to {1}.", path, path2)

            'Delete the newly created file.
            fi2.Delete()
            Console.WriteLine("{0} was successfully deleted.", path2)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'c:\MyTest.txt was copied to c:\MyTest.txttemp.
'c:\MyTest.txttemp was successfully deleted.

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi1 = new FileInfo(path);

        try
        {
            using (StreamWriter sw = fi1.CreateText()) {}
            string path2 = path + "temp";
            FileInfo fi2 = new FileInfo(path2);

            //Ensure that the target does not exist.
            fi2.Delete();

            //Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            //Delete the newly created file.
            fi2.Delete();
            Console.WriteLine("{0} was successfully deleted.", path2);

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//c:\MyTest.txt was copied to c:\MyTest.txttemp.
//c:\MyTest.txttemp was successfully deleted.

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi1 = gcnew FileInfo( path );
   try
   {
      StreamWriter^ sw = fi1->CreateText();
      if ( sw )
         delete (IDisposable^)sw;

      String^ path2 = String::Concat( path, "temp" );
      FileInfo^ fi2 = gcnew FileInfo( path2 );

      //Ensure that the target does not exist.
      fi2->Delete();

      //Copy the file.
      fi1->CopyTo( path2 );
      Console::WriteLine( "{0} was copied to {1}.", path, path2 );

      //Delete the newly created file.
      fi2->Delete();
      Console::WriteLine( "{0} was successfully deleted.", path2 );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//c:\MyTest.txt was copied to c:\MyTest.txttemp.
//c:\MyTest.txttemp was successfully deleted.

下面的示例创建、关闭并删除文件。

Imports System
Imports System.IO

Public Class DeleteTest
    Public Shared Sub Main()
        ' Create a reference to a file.
        Dim fi As New FileInfo("temp.txt")
        ' Actually create the file.
        Dim fs As FileStream = fi.Create()
        ' Modify the file as required, and then close the file.
        fs.Close()
        ' Delete the file.
        fi.Delete()
    End Sub 'Main
End Class 'DeleteTest

using System;
using System.IO;

public class DeleteTest
{
    public static void Main()
    {
        // Create a reference to a file.
        FileInfo fi = new FileInfo("temp.txt");
        // Actually create the file.
        FileStream fs = fi.Create();
        // Modify the file as required, and then close the file.
        fs.Close();
        // Delete the file.
        fi.Delete();
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   // Create a reference to a file.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Actually create the file.
   FileStream^ fs = fi->Create();

   // Modify the file as required, and then close the file.
   fs->Close();

   // Delete the file.
   fi->Delete();
}
  • FileIOPermission

    用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Write 用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.Encrypt 方法

FileInfo
.
.
::
.
Encrypt 方法
FileInfo 类

将某个文件加密，使得只有加密该文件的帐户才能将其解密。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Sub Encrypt
[ComVisibleAttribute(false)]
public void Encrypt()
[ComVisibleAttribute(false)]
public:
void Encrypt()
[<ComVisibleAttribute(false)>]
member Encrypt : unit -> unit

异常 | 条件
DriveNotFoundException | 指定了无效的驱动器。
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。
IOException | 打开文件时发生了 I/O 错误。
NotSupportedException | 文件系统不是 NTFS。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。
UnauthorizedAccessException | 当前 FileInfo 对象描述的文件是只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

Encrypt 方法允许您将某个文件加密，使得只有调用此方法的帐户才能将其解密。使用 Decrypt 方法将 Encrypt 方法加密的文件解密。 Encrypt 方法允许您将某个文件加密，使得只有调用此方法的帐户才能将其解密。使用 Decrypt 方法将 Encrypt 方法加密的文件解密。

Encrypt 方法和 Decrypt 方法都使用安装在计算机上的加密服务提供程序 (CSP) 和调用该方法的进程的文件加密密钥。

当前文件系统必须格式化为 NTFS，当前操作系统必须是 Microsoft Windows NT 或更高版本。

下面的代码示例使用 Encrypt 方法和 Decrypt 方法加密某个文件，然后将其解密。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "c:\MyTest.txt"

            Console.WriteLine("Encrypt " + FileName)

            ' Encrypt the file.
            AddEncryption(FileName)

            Console.WriteLine("Decrypt " + FileName)

            ' Decrypt the file.
            RemoveEncryption(FileName)

            Console.WriteLine("Done")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    Sub AddEncryption(ByVal FileName As String)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)
        If fInfo.Exists = False Then
            fInfo.Create()
        End If
        ' Add encryption.
        fInfo.Encrypt()

    End Sub

    Sub RemoveEncryption(ByVal FileName As String)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)
        If fInfo.Exists = False Then
            fInfo.Create()
        End If
        ' Remove encryption.
        fInfo.Decrypt()

    End Sub
End Module
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Encrypt c:\MyTest.txt
'Decrypt c:\MyTest.txt
'Done

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = @"c:\MyTest.txt";

                Console.WriteLine("Encrypt " + FileName);

                // Encrypt the file.
                AddEncryption(FileName);

                Console.WriteLine("Decrypt " + FileName);

                // Decrypt the file.
                RemoveEncryption(FileName);

                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        public static void AddEncryption(string FileName)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);
            if (!fInfo.Exists)
            {
                //Create the file.
                fInfo.Create();
            }
            // Add encryption.
            fInfo.Encrypt();
        }

        public static void RemoveEncryption(string FileName)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);
            if (!fInfo.Exists)
            {
                //Create the file.
                fInfo.Create();
            }
            // Remove encryption.
            fInfo.Decrypt();

        }
    }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Encrypt c:\MyTest.txt
//Decrypt c:\MyTest.txt
//Done

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;

    static void Addencryption(String^ fileName)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }
    // Add encryption.
    fInfo->Encrypt();

}

    static void Removeencryption(String^ fileName)
{
//    Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }
    // Remove encryption.
    fInfo->Decrypt();
}

int main()
{
    try
    {
        String^ fileName = "c:\\MyTest.txt";
        Console::WriteLine("Encrypt " + fileName);

        // Encrypt the file.

        Addencryption(fileName);
        Console::WriteLine("Decrypt " + fileName);

        // Decrypt the file.
        Removeencryption(fileName);
        Console::WriteLine("Done");
     }
     catch (IOException^ ex)
     {
        Console::WriteLine(ex->Message);
     }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Encrypt c:\MyTest.txt
//Decrypt c:\MyTest.txt
//Done
  • FileIOPermission

    关联枚举：Read、Write

    安全操作：Demand。

    表示读取和写入当前 FileInfo 对象所描述的文件的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.GetAccessControl 方法

FileInfo
.
.
::
.
GetAccessControl 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

获取 FileSecurity 对象，该对象封装当前 FileInfo 对象所描述的文件的访问控制列表 (ACL) 项。

名称 说明
页首

使用 GetAccessControl 方法检索当前文件的访问控制列表 (ACL) 项。

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.GetAccessControl 方法

FileInfo
.
.
::
.
GetAccessControl 方法
FileInfo 类

获取 FileSecurity 对象，该对象封装当前 FileInfo 对象所描述的文件的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetAccessControl As FileSecurity
public FileSecurity GetAccessControl()
public:
FileSecurity^ GetAccessControl()
member GetAccessControl : unit -> FileSecurity

返回值

类型： System.Security.AccessControl FileSecurity
一个 FileSecurity 对象，该对象封装当前文件的访问控制规则。
异常 | 条件
IOException | 打开文件时发生了 I/O 错误。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows 2000 或更高版本。
PrivilegeNotHeldException | 当前系统帐户没有管理特权。
SystemException | 未能找到文件。
UnauthorizedAccessException | 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

使用 GetAccessControl 方法检索当前文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

下面的代码示例使用 GetAccessControl 方法和 SetAccessControl 方法向一个文件添加访问控制列表 (ACL) 项，然后将其从该文件中移除。您必须提供有效的用户或组帐户才能运行此示例。 下面的代码示例使用 GetAccessControl 方法和 SetAccessControl 方法向一个文件添加访问控制列表 (ACL) 项，然后将其从该文件中移除。您必须提供有效的用户或组帐户才能运行此示例。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "c:\test.xml"

            Console.WriteLine("Adding access control entry for " & FileName)

            ' Add the access control entry to the file.
            ' Before compiling this snippet, change MyDomain to your
            ' domain name and MyAccessAccount to the name
            ' you use to access your domain.
            AddFileSecurity(FileName, "MyDomain\\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " & FileName)

            ' Remove the access control entry from the file.
            ' Before compiling this snippet, change MyDomain to your
            ' domain name and MyAccessAccount to the name
            ' you use to access your domain.
            RemoveFileSecurity(FileName, "MyDomain\\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = fInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        fSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        fInfo.SetAccessControl(fSecurity)

    End Sub

    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = fInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        fInfo.SetAccessControl(fSecurity)

    End Sub
End Module
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Adding access control entry for c:\test.xml
'Removing access control entry from c:\test.xml
'Done.
'

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "c:/test.xml";

                Console.WriteLine("Adding access control entry for " + FileName);

                // Add the access control entry to the file.
                // Before compiling this snippet, change MyDomain to your
                // domain name and MyAccessAccount to the name
                // you use to access your domain.
                AddFileSecurity(FileName, @"MyDomain\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + FileName);

                // Remove the access control entry from the file.
                // Before compiling this snippet, change MyDomain to your
                // domain name and MyAccessAccount to the name
                // you use to access your domain.
                RemoveFileSecurity(FileName, @"MyDomain\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

        }

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = fInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            fInfo.SetAccessControl(fSecurity);

        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = fInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            fInfo.SetAccessControl(fSecurity);

        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Adding access control entry for c:\test.xml
//Removing access control entry from c:\test.xml
//Done.
//

#using <System.Security.dll>
using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

// Adds an ACL entry on the specified file for the specified account.
static void AddFileSecurity(String^ fileName, String^ account,
                     FileSystemRights^ rights,
                     AccessControlType^ controlType)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }

    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = fInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    fSecurity->AddAccessRule(gcnew FileSystemAccessRule(account,
        *rights, *controlType));

    // Set the new access settings.
    fInfo->SetAccessControl(fSecurity);
}

// Removes an ACL entry on the specified file for the specified account.
static void RemoveFileSecurity(String^ fileName, String^ account,
                        FileSystemRights^ rights,
                        AccessControlType^ controlType)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }

    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = fInfo->GetAccessControl();

    // Remove the FileSystemAccessRule from the security settings.
    fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        *rights, *controlType));

    // Set the new access settings.
    fInfo->SetAccessControl(fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "c:\\test.xml";

        Console::WriteLine("Adding access control entry for " +
            fileName);

        // Add the access control entry to the file.
        // Before compiling this snippet, change MyDomain to your
        // domain name and MyAccessAccount to the name
        // you use to access your domain.
        AddFileSecurity(fileName, "MyDomain\\MyAccessAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " +
            fileName);

        // Remove the access control entry from the file.
        // Before compiling this snippet, change MyDomain to your
        // domain name and MyAccessAccount to the name
        // you use to access your domain.
        RemoveFileSecurity(fileName, "MyDomain\\MyAccessAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ e)
    {
        Console::WriteLine(e);
    }

}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Adding access control entry for c:\test.xml
//Removing access control entry from c:\test.xml
//Done.
//
  • FileIOPermission

    关联枚举：NoAccess、View

    安全操作：Demand。

    读取访问控制列表的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
GetAccessControl 重载
System.IO 命名空间


FileInfo ..::.GetAccessControl 方法 (AccessControlSections)

FileInfo
.
.
::
.
GetAccessControl 方法 (AccessControlSections)
FileInfo 类

获取 FileSecurity 对象，该对象封装当前 FileInfo 对象所描述的文件的指定类型的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetAccessControl ( _
    includeSections As AccessControlSections _
) As FileSecurity
public FileSecurity GetAccessControl(
    AccessControlSections includeSections
)
public:
FileSecurity^ GetAccessControl(
    AccessControlSections includeSections
)
member GetAccessControl :
        includeSections:AccessControlSections -> FileSecurity

参数

includeSections
类型： System.Security.AccessControl AccessControlSections
AccessControlSections 值之一，该值指定要检索的访问控制项组。

返回值

类型： System.Security.AccessControl FileSecurity
一个 FileSecurity 对象，该对象封装当前文件的访问控制规则。
异常 | 条件
IOException | 打开文件时发生了 I/O 错误。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows 2000 或更高版本。
PrivilegeNotHeldException | 当前系统帐户没有管理特权。
SystemException | 未能找到文件。
UnauthorizedAccessException | 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

使用 GetAccessControl 方法检索当前文件的访问控制列表 (ACL) 项。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

  • FileIOPermission

    关联枚举：NoAccess、View

    安全操作：Demand。

    读取访问控制列表的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
GetAccessControl 重载
System.IO 命名空间


FileInfo ..::.MemberwiseClone 方法

FileInfo
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

名称 说明
页首

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.MoveTo 方法

FileInfo
.
.
::
.
MoveTo 方法
FileInfo 类

将指定文件移到新位置，并提供指定新文件名的选项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub MoveTo ( _
    destFileName As String _
)
public void MoveTo(
    string destFileName
)
public:
void MoveTo(
    String^ destFileName
)
member MoveTo :
        destFileName:string -> unit

参数

destFileName
类型： System String
要将文件移动到的路径，可以指定另一个文件名。
异常 | 条件
IOException | 发生 I/O 错误，如目标文件已经存在或目标设备未准备好。
ArgumentNullException | destFileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | destFileName 为空，仅包含空白，或包含无效字符。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | destFileName 为只读，或者是一个目录。
FileNotFoundException | 找不到该文件。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
NotSupportedException | destFileName 的字符串中间包含一个冒号 (:)。

此方法可以跨磁盘卷工作。例如，可以将 c:\MyFile.txt 文件移动到 d:\public，并重命名为 NewFile.txt。 此方法可以跨磁盘卷工作。例如，可以将 c:\MyFile.txt 文件移动到 d:\public，并重命名为 NewFile.txt。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了如何将一个文件移动至另一位置并重命名该文件。

Imports System
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Xml

Module Program

    Private sourcePath As String = Environment.GetFolderPath _
    (Environment.SpecialFolder.MyDocuments) & _
    "\FileInfoTestDirectory\MoveFrom\FromFile.xml"
    '
    Private destPath As String = Environment.GetFolderPath _
    (Environment.SpecialFolder.MyDocuments) & _
    "\FileInfoTestDirectory\DestFile.xml"
    '
    ' The main entry point for the application.
    '
    <STAThread()> Sub Main()
        ' Change Console properties to make it obvious that
        ' the application is starting.
        Console.Clear()
        ' Move it to the upper left corner of the screen.
        Console.SetWindowPosition(0, 0)
        ' Make it very large.
        Console.SetWindowSize(Console.LargestWindowWidth - 24, _
            Console.LargestWindowHeight - 16)
        Console.WriteLine("Welcome.")
        Console.WriteLine("This application demonstrates the FileInfo.MoveTo method.")
        Console.WriteLine("Press any key to start.")
        Dim s As String = Console.ReadLine()
        Console.Write("    Checking whether ")
        Console.Write(sourcePath)
        Console.WriteLine(" exists.")
        Dim fInfo As FileInfo = New FileInfo(sourcePath)
        EnsureSourceFileExists()
        DisplayFileProperties(fInfo)
        Console.WriteLine("Preparing to move the file to ")
        Console.Write(destPath)
        Console.WriteLine(".")
        MoveFile(fInfo)
        DisplayFileProperties(fInfo)
        Console.WriteLine("Preparing to delete directories.")
        DeleteFiles()
        Console.WriteLine("Press the ENTER key to close this application.")
        s = Console.ReadLine()
    End Sub
    '
    ' Moves the supplied FileInfo instance to destPath.
    '
    Private Sub MoveFile(ByVal fInfo As FileInfo)
        Try
            fInfo.MoveTo(destPath)
            Console.WriteLine("File moved to ")
            Console.WriteLine(destPath)
        Catch ex As Exception
            DisplayException(ex)
        End Try
    End Sub
    '
    ' Ensures that the test directories
    ' and the file FromFile.xml all exist.
    '
    Private Sub EnsureSourceFileExists()
        ' Create a FileInfo instance, and get the full path
        ' to the parent directory.
        Dim fInfo As FileInfo = New FileInfo(sourcePath)
        Dim dirPath As String = fInfo.Directory.FullName
        ' If the directory does not exist, create it.
        If Not Directory.Exists(dirPath) Then
            Directory.CreateDirectory(dirPath)
        End If
        ' If DestFile.xml exists, delete it.
        If File.Exists(destPath) Then
            File.Delete(destPath)
        End If
        Console.Write("Creating file ")
        Console.Write(fInfo.FullName)
        Console.WriteLine(".")
        Try
            If Not fInfo.Exists Then
                ' Call WriteFileContent to create the file.
                Console.WriteLine("Adding data to the file.")
                WriteFileContent(10)
                Console.WriteLine("Successfully created the file.")
            End If
        Catch ex As Exception
            DisplayException(ex)
        Finally
            dirPath = Nothing
            fInfo = Nothing
        End Try
    End Sub
    '
    ' Creates and saves an Xml file to sourcePath.
    '
    Private Sub WriteFileContent(ByVal totalElements As Integer)
        Dim doc As New XmlDocument()
        doc.PreserveWhitespace = True
        doc.AppendChild(doc.CreateXmlDeclaration("1.0", Nothing, "yes"))
        doc.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
        Dim root As XmlElement = doc.CreateElement("FileInfo.MoveTo")
        Dim index As Integer = 0
        Dim elem As XmlElement
        While index < totalElements
            elem = doc.CreateElement("MyElement")
            elem.SetAttribute("Index", index.ToString())
            elem.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
            elem.AppendChild(doc.CreateTextNode(String.Format _
             ("MyElement at position {0}.", index)))
            elem.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
            root.AppendChild(elem)
            index += 1
        End While
        doc.AppendChild(root)
        doc.AppendChild(doc.CreateWhitespace(ControlChars.CrLf))
        doc.Save(sourcePath)
    End Sub
    '
    ' Displays FullName, CreationTime, and LastWriteTime of the supplied
    ' FileInfo instance, then displays the text of the file.
    '
    Private Sub DisplayFileProperties(ByVal fInfo As FileInfo)
        Console.WriteLine("The FileInfo instance shows these property values.")
        Dim reader As StreamReader = Nothing
        Try
            Console.Write("FullName: ")
            Console.WriteLine(fInfo.FullName)
            Console.Write("CreationTime: ")
            Console.WriteLine(fInfo.CreationTime)
            Console.Write("LastWriteTime: ")
            Console.WriteLine(fInfo.LastWriteTime)
            Console.WriteLine()
            Console.WriteLine("File contents:")
            Console.WriteLine()
            reader = New StreamReader(fInfo.FullName)
            While Not reader.EndOfStream
                Console.WriteLine(reader.ReadLine())
            End While
            Console.WriteLine()
        Catch ex As Exception
            DisplayException(ex)
        Finally
            If Not reader Is Nothing Then
                reader.Close()
                reader = Nothing
            End If
        End Try
    End Sub
    '
    ' Deletes the test directory and all its files and subdirectories.
    '
    Private Sub DeleteFiles()
        Try
            Dim dInfo As DirectoryInfo = New DirectoryInfo(Environment.GetFolderPath _
              (Environment.SpecialFolder.MyDocuments) + "\FileInfoTestDirectory")
            If dInfo.Exists Then
                dInfo.Delete(True)
                Console.WriteLine("Successfully deleted directories and files.")
            End If
            dInfo = Nothing
        Catch ex As Exception
            DisplayException(ex)
        End Try
    End Sub
    '
    ' Displays information about the supplied Exception. This
    ' code is not suitable for production applications.
    '
    Private Sub DisplayException(ByVal ex As Exception)
        Dim sb As New StringBuilder("An exception of type """)
        sb.Append(ex.GetType().FullName)
        sb.Append(""" has occurred.")
        sb.Append(ControlChars.CrLf)
        sb.Append(ex.Message)
        sb.Append(ControlChars.CrLf)
        sb.Append("Stack trace information:")
        sb.Append(ControlChars.CrLf)
        Dim matchCol As MatchCollection = Regex.Matches(ex.StackTrace, _
        "(at\s)(.+)(\.)([^\.]*)(\()([^\)]*)(\))((\sin\s)(.+)(:line )([\d]*))?")
        Dim L As Integer = matchCol.Count
        Dim y, K As Integer
        Dim argList() As String
        Dim matchObj As Match
        Dim x As Integer = 0
        While x < L
            matchObj = matchCol(x)
            sb.Append(ControlChars.CrLf)
            sb.Append(ControlChars.CrLf)
            sb.Append(matchObj.Result("$1 $2$3$4$5"))
            argList = matchObj.Groups(6).Value.Split(New Char() {","})
            K = argList.Length
            y = 0
            While y < K
                sb.Append(ControlChars.CrLf)
                sb.Append("    ")
                sb.Append(argList(y).Trim().Replace(" ", "        "))
                sb.Append(",")
                y += 1
            End While
            sb.Remove(sb.Length - 1, 1)
            sb.Append(ControlChars.CrLf)
            If 0 < matchObj.Groups(8).Length Then
                sb.Append(ControlChars.CrLf)
                sb.Append(matchObj.Result("$10"))
                sb.Append(ControlChars.CrLf)
                sb.Append(matchObj.Result("line $12"))
            End If
            x += 1
        End While
        argList = Nothing
        matchObj = Nothing
        matchCol = Nothing
        Console.WriteLine(sb.ToString())
        sb = Nothing
        Return
    End Sub
End Module

' Welcome.
' This application demonstrates the FileInfo.MoveTo method.
' Press any key to start.
'
'     Checking whether C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml exists.
' Creating file C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml.
' Adding data to the file.
' Successfully created the file.
' The FileInfo instance shows these property values.
' FullName: C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml
' CreationTime: 4/18/2006 1:38:19 PM
' LastWriteTime: 4/18/2006 1:38:19 PM
'
' File contents:
'
' <?xml version="1.0" standalone="yes"?>
' <FileInfo.MoveTo><MyElement Index="0">
' MyElement at position 0.
' </MyElement><MyElement Index="1">
' MyElement at position 1.
' </MyElement><MyElement Index="2">
' MyElement at position 2.
' </MyElement><MyElement Index="3">
' MyElement at position 3.
' </MyElement><MyElement Index="4">
' MyElement at position 4.
' </MyElement><MyElement Index="5">
' MyElement at position 5.
' </MyElement><MyElement Index="6">
' MyElement at position 6.
' </MyElement><MyElement Index="7">
' MyElement at position 7.
' </MyElement><MyElement Index="8">
' MyElement at position 8.
' </MyElement><MyElement Index="9">
' MyElement at position 9.
' </MyElement></FileInfo.MoveTo>
'
' Preparing to move the file to
' C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\DestFile.xml.
' File moved to
' C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\DestFile.xml
' The FileInfo instance shows these property values.
' FullName: C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\DestFile.xml
' CreationTime: 4/18/2006 1:38:19 PM
' LastWriteTime: 4/18/2006 1:38:19 PM
'
' File contents:
'
' <?xml version="1.0" standalone="yes"?>
' <FileInfo.MoveTo><MyElement Index="0">
' MyElement at position 0.
' </MyElement><MyElement Index="1">
' MyElement at position 1.
' </MyElement><MyElement Index="2">
' MyElement at position 2.
' </MyElement><MyElement Index="3">
' MyElement at position 3.
' </MyElement><MyElement Index="4">
' MyElement at position 4.
' </MyElement><MyElement Index="5">
' MyElement at position 5.
' </MyElement><MyElement Index="6">
' MyElement at position 6.
' </MyElement><MyElement Index="7">
' MyElement at position 7.
' </MyElement><MyElement Index="8">
' MyElement at position 8.
' </MyElement><MyElement Index="9">
' MyElement at position 9.
' </MyElement></FileInfo.MoveTo>
'
' Preparing to delete directories.
' Successfully deleted directories and files.
' Press the ENTER key to close this application.

using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.IO;
using System.Reflection;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;

namespace Microsoft.Samples.MoveTo.CS
{

    class Program
    {
        private static string sourcePath = Environment.GetFolderPath
            (Environment.SpecialFolder.MyDocuments) +
            @"\FileInfoTestDirectory\MoveFrom\FromFile.xml";

        private static string destPath = Environment.GetFolderPath
            (Environment.SpecialFolder.MyDocuments) +
            @"\FileInfoTestDirectory\DestFile.xml";
        //
        // The main entry point for the application.
        //
        [STAThread()] static void Main ()
        {
            // Change Console properties to make it obvious that
            // the application is starting.
            Console.Clear();
            // Move it to the upper left corner of the screen.
            Console.SetWindowPosition(0, 0);
            // Make it very large.
            Console.SetWindowSize(Console.LargestWindowWidth - 24,
                Console.LargestWindowHeight - 16);
            Console.WriteLine("Welcome.");
            Console.WriteLine("This application demonstrates the FileInfo.MoveTo method.");
            Console.WriteLine("Press any key to start.");
            string s = Console.ReadLine();
            Console.Write("    Checking whether ");
            Console.Write(sourcePath);
            Console.WriteLine(" exists.");
            FileInfo fInfo = new FileInfo (sourcePath);
            EnsureSourceFileExists();
            DisplayFileProperties(fInfo);
            Console.WriteLine("Preparing to move the file to ");
            Console.Write(destPath);
            Console.WriteLine(".");
            MoveFile(fInfo);
            DisplayFileProperties(fInfo);
            Console.WriteLine("Preparing to delete directories.");
            DeleteFiles();
            Console.WriteLine("Press the ENTER key to close this application.");
            s = Console.ReadLine();
        }
        //
        // Moves the supplied FileInfo instance to destPath.
        //
        private static void MoveFile(FileInfo fInfo)
        {
            try
            {
                fInfo.MoveTo(destPath);
                Console.WriteLine("File moved to ");
                Console.WriteLine(destPath);
            } catch (Exception ex) {
                DisplayException(ex);
            }
        }
        //
        // Ensures that the test directories
        // and the file FromFile.xml all exist.
        //
        private static void EnsureSourceFileExists()
        {
            FileInfo fInfo = new FileInfo(sourcePath);
            string dirPath = fInfo.Directory.FullName;
            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }
            if (File.Exists(destPath))
            {
                File.Delete(destPath);
            }
            Console.Write("Creating file ");
            Console.Write(fInfo.FullName);
            Console.WriteLine(".");
            try
            {
                if (!fInfo.Exists)
                {
                    Console.WriteLine("Adding data to the file.");
                    WriteFileContent(10);
                    Console.WriteLine("Successfully created the file.");
                }
            }
            catch (Exception ex)
            {
                DisplayException(ex);
            }
            finally
            {
                dirPath = null;
            }
        }
        //
        // Creates and saves an Xml file to sourcePath.
        //
        private static void WriteFileContent(int totalElements)
        {
            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;
            doc.AppendChild(doc.CreateXmlDeclaration("1.0", null, "yes"));
            doc.AppendChild(doc.CreateWhitespace("\r\n"));
            XmlElement root = doc.CreateElement("FileInfo.MoveTo");
            root.AppendChild(doc.CreateWhitespace("\r\n"));
            int index = 0;
            XmlElement elem;
            while (index < totalElements)
            {

                elem = doc.CreateElement("MyElement");
                elem.SetAttribute("Index", index.ToString());
                elem.AppendChild(doc.CreateWhitespace("\r\n"));
                elem.AppendChild(doc.CreateTextNode(String.Format
                    ("MyElement at position {0}.", index)));
                elem.AppendChild(doc.CreateWhitespace("\r\n"));
                root.AppendChild(elem);
                root.AppendChild(doc.CreateWhitespace("\r\n"));
                index++;
            }
            doc.AppendChild(root);
            doc.AppendChild(doc.CreateWhitespace("\r\n"));
            doc.Save(sourcePath);
            elem = null;
            root = null;
            doc = null;
        }
        //
        // Displays FullName, CreationTime, and LastWriteTime of the supplied
        // FileInfo instance, then displays the text of the file.
        //
        private static void DisplayFileProperties(FileInfo fInfo)
        {
            Console.WriteLine("The FileInfo instance shows these property values.");
            StreamReader reader = null;
            try
            {
                Console.Write("FullName: ");
                Console.WriteLine(fInfo.FullName);
                Console.Write("CreationTime: ");
                Console.WriteLine(fInfo.CreationTime);
                Console.Write("LastWriteTime: ");
                Console.WriteLine(fInfo.LastWriteTime);
                Console.WriteLine();
                Console.WriteLine("File contents:");
                Console.WriteLine();
                reader = new StreamReader(fInfo.FullName);
                while (!reader.EndOfStream)
                {
                    Console.WriteLine(reader.ReadLine());
                }
                Console.WriteLine();
            }
            catch (Exception ex)
            {
                DisplayException(ex);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
                reader = null;
            }
        }
        //
        // Deletes the test directory and all its files and subdirectories.
        //
        private static void DeleteFiles()
        {
            try
            {
                DirectoryInfo dInfo = new DirectoryInfo(Environment.GetFolderPath
                    (Environment.SpecialFolder.MyDocuments) + "\\FileInfoTestDirectory");
                if (dInfo.Exists)
                {
                    dInfo.Delete(true);
                    Console.WriteLine("Successfully deleted directories and files.");
                }
                dInfo = null;
            }
            catch (Exception ex)
            {
                DisplayException(ex);
            }
        }
        //
        // Displays information about the supplied Exception. This
        // code is not suitable for production applications.
        //
        private static void DisplayException(Exception ex)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("An exception of type \"");
            sb.Append(ex.GetType().FullName);
            sb.Append("\" has occurred.\r\n");
            sb.Append(ex.Message);
            sb.Append("\r\nStack trace information:\r\n");
            MatchCollection matchCol = Regex.Matches(ex.StackTrace,
@"(at\s)(.+)(\.)([^\.]*)(\()([^\)]*)(\))((\sin\s)(.+)(:line )([\d]*))?");
            int L = matchCol.Count;
            string[] argList;
            Match matchObj;
            int y, K;
            for(int x = 0; x < L; x++)
            {
                matchObj = matchCol[x];
                sb.Append(matchObj.Result("\r\n\r\n$1 $2$3$4$5"));
                argList = matchObj.Groups[6].Value.Split(new char[] { ',' });
                K = argList.Length;
                for (y = 0; y < K; y++)
                {
                    sb.Append("\r\n    ");
                    sb.Append(argList[y].Trim().Replace(" ", "        "));
                    sb.Append(',');
                }
                sb.Remove(sb.Length - 1, 1);
                sb.Append("\r\n)");
                if (0 < matchObj.Groups[8].Length)
                {
                    sb.Append(matchObj.Result("\r\n$10\r\nline $12"));
                }
            }
            argList = null;
            matchObj = null;
            matchCol = null;
            Console.WriteLine(sb.ToString());
            sb = null;
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
// Welcome.
// This application demonstrates the FileInfo.MoveTo method.
// Press any key to start.
//
//     Checking whether C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml exists.
// Creating file C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml.
// Adding data to the file.
// Successfully created the file.
// The FileInfo instance shows these property values.
// FullName: C:\Documents and Settings\MyComputer\My Documents\FileInfoTestDirectory\MoveFrom\FromFile.xml
// CreationTime: 4/18/2006 1:24:19 PM
// LastWriteTime: 4/18/2006 1:24:19 PM
//
// File contents:
//
// <?xml version="1.0" standalone="yes"?>
// <FileInfo.MoveTo>
// <MyElement Index="0">
// MyElement at position 0.
// </MyElement>
// <MyElement Index="1">
// MyElement at position 1.
// </MyElement>
// <MyElement Index="2">
// MyElement at position 2.
// </MyElement>
// <MyElement Index="3">
// MyElement at position 3.
// </MyElement>
// <MyElement Index="4">
// MyElement at position 4.
// </MyElement>
// <MyElement Index="5">
// MyElement at position 5.
// </MyElement>
// <MyElement Index="6">
// MyElement at position 6.
// </MyElement>
// <MyElement Index="7">
// MyElement at position 7.
// </MyElement>
// <MyElement Index="8">
// MyElement at position 8.
// </MyElement>
// <MyElement Index="9">
// MyElement at position 9.
// </MyElement>
// </FileInfo.MoveTo>

// Preparing to move the file to
// C:\Documents and Settings\MYComputer\My Documents\FileInfoTestDirectory\DestFile.xml.
// File moved to
// C:\Documents and Settings\MYComputer\My Documents\FileInfoTestDirectory\DestFile.xml
// The FileInfo instance shows these property values.
// FullName: C:\Documents and Settings\MYComputer\My Documents\FileInfoTestDirectory\DestFile.xml
// CreationTime: 4/18/2006 1:24:19 PM
// LastWriteTime: 4/18/2006 1:24:19 PM
//
// File contents:
//
// <?xml version="1.0" standalone="yes"?>
// <FileInfo.MoveTo>
// <MyElement Index="0">
// MyElement at position 0.
// </MyElement>
// <MyElement Index="1">
// MyElement at position 1.
// </MyElement>
// <MyElement Index="2">
// MyElement at position 2.
// </MyElement>
// <MyElement Index="3">
// MyElement at position 3.
// </MyElement>
// <MyElement Index="4">
// MyElement at position 4.
// </MyElement>
// <MyElement Index="5">
// MyElement at position 5.
// </MyElement>
// <MyElement Index="6">
// MyElement at position 6.
// </MyElement>
// <MyElement Index="7">
// MyElement at position 7.
// </MyElement>
// <MyElement Index="8">
// MyElement at position 8.
// </MyElement>
// <MyElement Index="9">
// MyElement at position 9.
// </MyElement>
// </FileInfo.MoveTo>
//
// Preparing to delete directories.
// Successfully deleted directories and files.
// Press the ENTER key to close this application.
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.Open 方法

FileInfo
.
.
::
.
Open 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

用各种读/写访问权限和共享特权打开文件。

名称 说明
页首

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.Open 方法 (FileMode)

FileInfo
.
.
::
.
Open 方法 (FileMode)
FileInfo 类

在指定的模式中打开文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function Open ( _
    mode As FileMode _
) As FileStream
public FileStream Open(
    FileMode mode
)
public:
FileStream^ Open(
    FileMode mode
)
member Open :
        mode:FileMode -> FileStream

参数

mode
类型： System.IO FileMode
一个 FileMode 常数，它指定打开文件所采用的模式（例如 Open 或 Append）。

返回值

类型： System.IO FileStream
在指定模式中打开、具有读/写访问权限且不共享的文件。
异常 | 条件
FileNotFoundException | 找不到该文件。
UnauthorizedAccessException | 此文件是只读文件，或者是一个目录。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | 该文件已打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例打开一个文件，向其中添加一些信息，然后读取该文件。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fs As FileStream

        ' Delete the file if it exists.
        If fi.Exists = False Then
            'Create the file.
            fs = fi.Create()
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
            'Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        'Open the stream and read it back.
        fs = fi.Open(FileMode.Open)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)
        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.
'
'
'
'
'
'
'
'
'
'
'
'

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);

        // Delete the file if it exists.
        if (!fi.Exists)
        {
            //Create the file.
            using (FileStream fs = fi.Create())
            {
                Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
                //Add some information to the file.
                fs.Write(info, 0, info.Length);
            }
        }

        //Open the stream and read it back.
        using (FileStream fs = fi.Open(FileMode.Open))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );

   // Delete the file if it exists.
   if (  !fi->Exists )
   {
      //Create the file.
      FileStream^ fs = fi->Create();
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

         //Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   //Open the stream and read it back.
   FileStream^ fs = fi->Open( FileMode::Open );
   try
   {
      array<Byte>^b = gcnew array<Byte>(1024);
      UTF8Encoding^ temp = gcnew UTF8Encoding( true );
      while ( fs->Read( b, 0, b->Length ) > 0 )
      {
         Console::WriteLine( temp->GetString( b ) );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//
  • FileIOPermission

    用于写入文件和从文件读取。关联枚举：FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Read 用于写入文件和从文件读取。关联枚举：FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
Open 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.Open 方法 (FileMode, FileAccess)

FileInfo
.
.
::
.
Open 方法 (FileMode, FileAccess)
FileInfo 类

用读、写或读/写访问权限在指定模式下打开文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function Open ( _
    mode As FileMode, _
    access As FileAccess _
) As FileStream
public FileStream Open(
    FileMode mode,
    FileAccess access
)
public:
FileStream^ Open(
    FileMode mode,
    FileAccess access
)
member Open :
        mode:FileMode *
        access:FileAccess -> FileStream

参数

mode
类型： System.IO FileMode
一个 FileMode 常数，它指定打开文件所采用的模式（例如 Open 或 Append）。
access
类型： System.IO FileAccess
一个 FileAccess 常数，它指定是使用 Read、Write 还是 ReadWrite 文件访问权限来打开文件。

返回值

类型： System.IO FileStream
用指定模式和访问权限打开且不共享的 FileStream 对象。
异常 | 条件
SecurityException | 调用方没有所要求的权限。
ArgumentException | path 为空，或者只包含空白。
FileNotFoundException | 找不到该文件。
ArgumentNullException | 一个或多个参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
UnauthorizedAccessException | path 为只读，或者是一个目录。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | 该文件已打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例以只读方式打开一个文件并从中读取。

imports System
imports System.IO
imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\MyTest.txt"
        Dim fi As FileInfo = new FileInfo(path)
        Dim fs As FileStream

        ' Delete the file if it exists.
        If fi.Exists = False
            'Create the file.
            fs = fi.Create()
            Dim info As Byte() = _
                    New UTF8Encoding(true).GetBytes( _
                        "This is some text in the file.")

            'Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        'Open the stream and read it back.
        fs = fi.Open(FileMode.Open, FileAccess.Read)
        Dim b(1024) As byte
        Dim temp As UTF8Encoding = New UTF8Encoding(true)

        Do While fs.Read(b,0,b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
            Try
                fs.Write(b,0,b.Length)
                Catch e As Exception
                Console.WriteLine("Writing was disallowed, as expected: {0}", e.ToString())
            End Try
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.
'
'
'
'
'
'
'
'
'
'
'
'
'Writing was disallowed, as expected: System.NotSupportedException: Stream does
'not support writing.
'   at System.IO.__Error.WriteNotSupported()
'   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
'   at VB_Console_Application.Test.Main() in C:\Documents and Settings\MyComputer
'\My Documents\Visual Studio 2005\Projects\finfo open2\finfo open2\Module1.vb:line 34
'

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);

        // Delete the file if it exists.
        if (!fi.Exists)
        {
            //Create the file.
            using (FileStream fs = fi.Create())
            {
                Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
                //Add some information to the file.
                fs.Write(info, 0, info.Length);
            }
        }

        //Open the stream and read it back.
        using (FileStream fs = fi.Open(FileMode.Open, FileAccess.Read))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }

            try
            {
                //Try to write to the file.
                fs.Write(b,0,b.Length);
            }
            catch (Exception e)
            {
                Console.WriteLine("Writing was disallowed, as expected: {0}",
                    e.ToString());
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//Writing was disallowed, as expected: System.NotSupportedException: Stream does
//not support writing.
//   at System.IO.__Error.WriteNotSupported()
//   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
//   at Test.Main() in C:\Documents and Settings\My Computer\My Documents\
//Visual Studio 2005\Projects\finfo open2\finfo open2\Program.cs:line 39

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );

   // Delete the file if it exists.
   if (  !fi->Exists )
   {

      //Create the file.
      FileStream^ fs = fi->Create();
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

         //Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   //Open the stream and read it back.
   FileStream^ fs = fi->Open( FileMode::Open, FileAccess::Read );
   try
   {
      array<Byte>^b = gcnew array<Byte>(1024);
      UTF8Encoding^ temp = gcnew UTF8Encoding( true );
      while ( fs->Read( b, 0, b->Length ) > 0 )
      {
         Console::WriteLine( temp->GetString( b ) );
      }
      try
      {
         //Try to write to the file.
         fs->Write( b, 0, b->Length );
      }
      catch ( Exception^ e )
      {
         Console::WriteLine( "Writing was disallowed, as expected: {0}", e );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//Writing was disallowed, as expected: System.NotSupportedException: Stream does
//not support writing.
//   at System.IO.__Error.WriteNotSupported()
//   at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count)
//   at main() in c:\documents and settings\MyComputer\my documents\
//visual studio 2005\projects\finfo open2\finfo open2\
//cpp_console_application.cpp:line 46
  • FileIOPermission

    用于写入文件和从文件读取。关联枚举：FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Read 用于写入文件和从文件读取。关联枚举：FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
Open 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.Open 方法 (FileMode, FileAccess, FileShare)

FileInfo
.
.
::
.
Open 方法 (FileMode, FileAccess, FileShare)
FileInfo 类

用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function Open ( _
    mode As FileMode, _
    access As FileAccess, _
    share As FileShare _
) As FileStream
public FileStream Open(
    FileMode mode,
    FileAccess access,
    FileShare share
)
public:
FileStream^ Open(
    FileMode mode,
    FileAccess access,
    FileShare share
)
member Open :
        mode:FileMode *
        access:FileAccess *
        share:FileShare -> FileStream

参数

mode
类型： System.IO FileMode
一个 FileMode 常数，它指定打开文件所采用的模式（例如 Open 或 Append）。
access
类型： System.IO FileAccess
一个 FileAccess 常数，它指定是使用 Read、Write 还是 ReadWrite 文件访问权限来打开文件。
share
类型： System.IO FileShare
一个 FileShare 常数，它指定其他 FileStream 对象对此文件拥有的访问类型。

返回值

类型： System.IO FileStream
用指定的模式、访问权限和共享选项打开的 FileStream 对象。
异常 | 条件
SecurityException | 调用方没有所要求的权限。
ArgumentException | path 为空，或者只包含空白。
FileNotFoundException | 找不到该文件。
ArgumentNullException | 一个或多个参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
UnauthorizedAccessException | path 为只读，或者是一个目录。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | 该文件已打开。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了如何打开一个文件进行读取和写入操作，但不允许其他用户或进程访问。

Imports System
Imports System.IO

Public Class OpenTest

    Public Shared Sub Main()
        ' Open an existing file, or create a new one.
        Dim fi As New FileInfo("temp.txt")

        ' Open the file just specified such that no one else can use it.
        Dim fs As FileStream = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)

        ' Create another reference to the same file.
        Dim nextfi As New FileInfo("temp.txt")

        Try
            ' Try opening the same file, which was locked by the previous process.
            nextfi.Open(FileMode.OpenOrCreate, FileAccess.Read)
            Console.WriteLine("The file was not locked, and was opened by a second process.")
        Catch i as IOException
            Console.WriteLine(i.ToString())
        Catch e As Exception
            Console.WriteLine(e.ToString())
        End Try

        ' Close the file so it can be deleted.
        fs.Close()
    End Sub 'Main
End Class 'OpenTest
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'System.IO.IOException: The process cannot access the file
''C:\Documents and Settings\mydirectory\My Documents\Visual Studio 2005
'\Projects\fileinfoopen\fileinfoopen\obj\Release\temp.txt'
'because it is being used by another process.
'at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
'at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access,
'Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions
'options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
'at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access,
'FileShare share) at System.IO.FileInfo.Open(FileMode mode, FileAccess access)
'at VB_Console_Application.OpenTest.Main() in C:\Documents and Settings
'\mydirectory\My Documents\Visual Studio 2005\Projects\VB_Console_Application
'\VB_Console_Application\Module1.vb:line 19

using System;
using System.IO;

public class OpenTest
{
    public static void Main()
    {
        // Open an existing file, or create a new one.
        FileInfo fi = new FileInfo("temp.txt");

        // Open the file just specified such that no one else can use it.
        FileStream fs = fi.Open( FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None );

        // Create another reference to the same file.
        FileInfo nextfi = new FileInfo("temp.txt");

        try
        {
            // Try opening the same file, which was locked by the previous process.
            nextfi.Open( FileMode.OpenOrCreate, FileAccess.Read );

            Console.WriteLine("The file was not locked, and was opened by a second process.");
        }
        catch (IOException)
        {
            Console.WriteLine("The file could not be opened because it was locked by another process.");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }

        // Close the file so it can be deleted.
        fs.Close();
    }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The file could not be opened because it was locked by another process.

using namespace System;
using namespace System::IO;
int main()
{

   // Open an existing file, or create a new one.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Open the file just specified such that no one else can use it.
   FileStream^ fs = fi->Open( FileMode::OpenOrCreate, FileAccess::ReadWrite, FileShare::None );

   // Create another reference to the same file.
   FileInfo^ nextfi = gcnew FileInfo( "temp.txt" );
   try
   {

      // Try opening the same file, which was locked by the previous process.
      nextfi->Open( FileMode::OpenOrCreate, FileAccess::Read );
      Console::WriteLine( "The file was not locked, and was opened by a second process." );
   }
   catch ( IOException^ )
   {
      Console::WriteLine( "The file could not be opened because it was locked by another process." );
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( e );
   }

   // Close the file so it can be deleted.
   fs->Close();
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The file could not be opened because it was locked by another process.
  • FileIOPermission

    用于写入文件和从文件读取。关联枚举：FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Read 用于写入文件和从文件读取。关联枚举：FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
Open 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.OpenRead 方法

FileInfo
.
.
::
.
OpenRead 方法
FileInfo 类

创建只读 FileStream。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function OpenRead As FileStream
public FileStream OpenRead()
public:
FileStream^ OpenRead()
member OpenRead : unit -> FileStream

返回值

类型： System.IO FileStream
新的只读 FileStream 对象。
异常 | 条件
UnauthorizedAccessException | path 为只读，或者是一个目录。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | 该文件已打开。

该方法返回一个 FileShare 模式设置为 Read 的只读 FileStream 对象。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例以只读方式打开一个文件并从中读取。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fs As FileStream

        ' Delete the file if it exists.
        If fi.Exists = False Then
            'Create the file.
            fs = fi.Create()
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.")
            'Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        'Open the stream and read it back.
        fs = fi.OpenRead()
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.
'
'
'
'
'
'
'
'
'
'
'
'
'

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);

        // Delete the file if it exists.
        if (!fi.Exists)
        {
            //Create the file.
            using (FileStream fs = fi.Create())
            {
                Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
                //Add some information to the file.
                fs.Write(info, 0, info.Length);
            }
        }

        //Open the stream and read it back.
        using (FileStream fs = fi.OpenRead())
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );

   // Delete the file if it exists.
   if (  !fi->Exists )
   {
      //Create the file.
      FileStream^ fs = fi->Create();
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." );

         //Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   //Open the stream and read it back.
   FileStream^ fs = fi->OpenRead();
   try
   {
      array<Byte>^b = gcnew array<Byte>(1024);
      UTF8Encoding^ temp = gcnew UTF8Encoding( true );
      while ( fs->Read( b, 0, b->Length ) > 0 )
      {
         Console::WriteLine( temp->GetString( b ) );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
//
//
//
//
//
//
//
//
//
//
//
//
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.OpenText 方法

FileInfo
.
.
::
.
OpenText 方法
FileInfo 类

创建使用 UTF8 编码、从现有文本文件中进行读取的 StreamReader。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function OpenText As StreamReader
public StreamReader OpenText()
public:
StreamReader^ OpenText()
member OpenText : unit -> StreamReader

返回值

类型： System.IO StreamReader
使用 UTF8 编码的新 StreamReader。
异常 | 条件
SecurityException | 调用方没有所要求的权限。
FileNotFoundException | 找不到该文件。
UnauthorizedAccessException | path 为只读，或者是一个目录。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例从文件中读取文本。

Imports System
Imports System.IO
Imports System.Text

Public Class OpenTextTest
    Public Shared Sub Main()
        Dim path As String = "c:\MyTest.txt"

        Dim fi As New FileInfo(path)

        ' Check for existing file
        If fi.Exists = false Then
            ' Create the file.
            Dim fs As FileStream = fi.Create()
            Dim info() As Byte = _
                    New UTF8Encoding(true).GetBytes("This is some text in the file.")

            ' Add some information to the file.
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If

        ' Open the stream and read it back.
        Dim sr As StreamReader = fi.OpenText()
        Dim s As String = ""
        While sr.EndOfStream = false
            s = sr.ReadLine()
            Console.WriteLine(s)
        End While
        sr.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is some text in the file.
'

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\MyTest.txt";

        FileInfo fi = new FileInfo(path);

        // Check for existing file
        if (!fi.Exists)
        {
            // Create the file.
            using (FileStream fs = fi.Create())
            {
                Byte[] info =
                    new UTF8Encoding(true).GetBytes("This is some text in the file.");

                // Add some information to the file.
                fs.Write(info, 0, info.Length);
                fs.Close();
            }
        }

        // Open the stream and read it back.
        using (StreamReader sr = fi.OpenText())
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//

using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class OpenTextTest
{
public:
    static void Main()
    {
        String^ path = "c:\\MyTest.txt";

        FileInfo^ fi = gcnew FileInfo(path);

        // Check for existing file
        if (!fi->Exists)
        {
            // Create the file.
            FileStream^ fs = fi->Create();
            array<Byte>^ info =
                (gcnew UTF8Encoding(true))->GetBytes("This is some text in the file.");

            // Add some information to the file.
            fs->Write(info, 0, info->Length);
            fs->Close();
        }

        // Open the stream and read it back.
        StreamReader^ sr = fi->OpenText();
        String^ s = "";
        while ((s = sr->ReadLine()) != nullptr)
        {
            Console::WriteLine(s);
        }
    }
};

int main()
{
    OpenTextTest::Main();
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is some text in the file.
//
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间
UTF8
StreamReader

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.OpenWrite 方法

FileInfo
.
.
::
.
OpenWrite 方法
FileInfo 类

创建只写 FileStream。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function OpenWrite As FileStream
public FileStream OpenWrite()
public:
FileStream^ OpenWrite()
member OpenWrite : unit -> FileStream

返回值

类型： System.IO FileStream
新的只写不共享的 FileStream 对象。
异常 | 条件
UnauthorizedAccessException | path 为只读，或者是一个目录。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例打开一个文件进行写入操作，随后从该文件中读取。

Imports System
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\MyTest.txt"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fs As FileStream

        ' Create the file if it does not exist.
        If fi.Exists = False Then
            fi.Create()
        End If

        ' Open the stream for writing.
        fs = fi.OpenWrite()
        Dim info As Byte() = _
            New UTF8Encoding(True).GetBytes("This is to test the OpenWrite method.")

        ' Add some information to the file.
        fs.Write(info, 0, info.Length)
        fs.Close()

        'Open the stream and read it back.
        fs = fi.OpenRead()
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop
        fs.Close()
    End Sub
End Class
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'This is to test the OpenWrite method.
'
'
'
'
'
'
'
'
'
'
'
'

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\MyTest.txt";
        FileInfo fi = new FileInfo(path);

        if (!fi.Exists)
        {
            //Create the file.
            fi.Create();
        }

        // Open the stream for writing.
        using (FileStream fs = fi.OpenWrite())
        {
            Byte[] info =
                new UTF8Encoding(true).GetBytes("This is to test the OpenWrite method.");

            // Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

        // Open the stream and read it back.
        using (FileStream fs = fi.OpenRead())
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);

            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is to test the OpenWrite method.
//
//
//
//
//
//
//
//
//
//
//

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\MyTest.txt";
   FileInfo^ fi = gcnew FileInfo( path );

   // Create the file if it does not exist.
   if ( !fi->Exists )
   {
      fi->Create();
   }

   // Open the stream for writing.
   {
      FileStream^ fs = fi->OpenWrite();
      try
      {
         array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is to test the OpenWrite method." );

         // Add some information to the file.
         fs->Write( info, 0, info->Length );
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   // Open the stream and read it back.
   {
      FileStream^ fs = fi->OpenRead();
      try
      {
         array<Byte>^b = gcnew array<Byte>(1024);
         UTF8Encoding^ temp = gcnew UTF8Encoding( true );
         while ( fs->Read( b, 0, b->Length ) > 0 )
         {
            Console::WriteLine( temp->GetString( b ) );
         }
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//This is to test the OpenWrite method.
//
//
//
//
//
//
//
//
//
//
//
//
  • FileIOPermission

    用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileInfo ..::.Replace 方法

FileInfo
.
.
::
.
Replace 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

使用当前 FileInfo 对象所描述的文件替换指定文件的内容，这一过程将删除原始文件，并创建被替换文件的备份。

名称 说明
页首

当您需要使用当前 FileInfo 对象所描述的文件的内容快速替换某个文件时，请使用 Replace 方法。

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.Replace 方法 (String, String)

FileInfo
.
.
::
.
Replace 方法 (String, String)
FileInfo 类

使用当前 FileInfo 对象所描述的文件替换指定文件的内容，这一过程将删除原始文件，并创建被替换文件的备份。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Function Replace ( _
    destinationFileName As String, _
    destinationBackupFileName As String _
) As FileInfo
[ComVisibleAttribute(false)]
public FileInfo Replace(
    string destinationFileName,
    string destinationBackupFileName
)
[ComVisibleAttribute(false)]
public:
FileInfo^ Replace(
    String^ destinationFileName,
    String^ destinationBackupFileName
)
[<ComVisibleAttribute(false)>]
member Replace :
        destinationFileName:string *
        destinationBackupFileName:string -> FileInfo

参数

destinationFileName
类型： System String
要替换为当前文件的文件的名称。
destinationBackupFileName
类型： System String
文件的名称，该文件用于创建 destFileName 参数所描述的文件的备份。

返回值

类型： System.IO FileInfo
一个 FileInfo 对象，该对象封装有关 destFileName 参数所描述的文件的信息。
异常 | 条件
ArgumentException | destFileName 参数描述的路径不是合法的格式。 - 或 - destBackupFileName 参数描述的路径不是合法的格式。
ArgumentNullException | destFileName 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。 - 或 - 未能找到 destinationFileName 参数所描述的文件。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

Replace 方法用当前 FileInfo 对象所描述的文件的内容替换指定文件的内容。它还创建被替换文件的备份。最后，它返回一个新的描述被覆盖文件的 FileInfo 对象。 Replace 方法用当前 FileInfo 对象所描述的文件的内容替换指定文件的内容。它还创建被替换文件的备份。最后，它返回一个新的描述被覆盖文件的 FileInfo 对象。 Replace 方法用当前 FileInfo 对象所描述的文件的内容替换指定文件的内容。它还创建被替换文件的备份。最后，它返回一个新的描述被覆盖文件的 FileInfo 对象。

警告说明 警告

如果 destFileName 为只读并且不会引发异常，则该方法可用于 Windows 2000 环境。在尝试替换目标文件之前，请使用 IsReadOnly 属性检查该目标文件是否为只读。 如果 destFileName 为只读并且不会引发异常，则该方法可用于 Windows 2000 环境。在尝试替换目标文件之前，请使用 IsReadOnly 属性检查该目标文件是否为只读。

如果不需要创建正在被替换的文件的备份，请将 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 传递给 destBackupFileName 参数。

下面的示例使用 Replace 方法将一个文件替换为另一个文件并创建被替换文件的备份。

Imports System
Imports System.IO

Module FileExample

    Sub Main()
        Try
            ' originalFile and fileToReplace must contain the path to files that already exist in the
            ' file system. backUpOfFileToReplace is created during the execution of the Replace method.

            Dim originalFile As String = "test.xml"
            Dim fileToReplace As String = "test2.xml"
            Dim backUpOfFileToReplace As String = "test2.xml.bak"

            If (File.Exists(originalFile) And (File.Exists(fileToReplace))) Then
                Console.WriteLine("Move the contents of " + originalFile + " into " + fileToReplace + ", delete " + originalFile + ", and create a backup of " + fileToReplace + ".")

                ' Replace the file.
                ReplaceFile(originalFile, fileToReplace, backUpOfFileToReplace)

                Console.WriteLine("Done")

            Else
                Console.WriteLine("Either the file {0} or {1} doesn't " + "exist.", originalFile, fileToReplace)
            End If
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

        Console.ReadLine()

    End Sub

    ' Move a file into another file, delete the original, and create a backup of the replaced file.
    Sub ReplaceFile(ByVal fileToMoveAndDelete As String, ByVal fileToReplace As String, ByVal backupOfFileToReplace As String)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(fileToMoveAndDelete)

        ' Replace the file.
        fInfo.Replace(fileToReplace, backupOfFileToReplace, False)

    End Sub
End Module

' Move the contents of test.txt into test2.txt, delete test.txt, and
' create a backup of test2.txt.
' Done

using System;
using System.IO;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                // originalFile and fileToReplace must contain the path to files that already exist in the
                // file system. backUpOfFileToReplace is created during the execution of the Replace method.

                string originalFile  = "test.txt";
                string fileToReplace = "test2.txt";
                string backUpOfFileToReplace = "test2.txt.bak";

                if (File.Exists(originalFile) && (File.Exists(fileToReplace)))
                {
                    Console.WriteLine("Move the contents of " + originalFile + " into " + fileToReplace + ", delete "
                        + originalFile + ", and create a backup of " + fileToReplace + ".");

                    // Replace the file.
                    ReplaceFile(originalFile, fileToReplace, backUpOfFileToReplace);

                    Console.WriteLine("Done");
                }
                else
                {
                    Console.WriteLine("Either the file {0} or {1} doesn't " + "exist.", originalFile, fileToReplace);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.ReadLine();
        }

        // Move a file into another file, delete the original, and create a backup of the replaced file.
        public static void ReplaceFile(string fileToMoveAndDelete, string fileToReplace, string backupOfFileToReplace)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(fileToMoveAndDelete);

            // replace the file.
            fInfo.Replace(fileToReplace, backupOfFileToReplace, false);
        }
    }
}
//Move the contents of test.txt into test2.txt, delete test.txt, and
//create a backup of test2.txt.
//Done

using namespace System;
using namespace System::IO;

// Move a file into another file, delete the original,
// and create a backup of the replaced file.
void ReplaceFile(String^ fileToMoveAndDelete,
                 String^ fileToReplace, String^ backupOfFileToReplace)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileToMoveAndDelete);

    // replace the file.
    fInfo->Replace(fileToReplace, backupOfFileToReplace, false);
}

int main()
{
    try
    {
        // originalFile and fileToReplace must contain
        // the path to files that already exist in the
        // file system. backUpOfFileToReplace is created
        // during the execution of the Replace method.

        String^ originalFile = "test.xml";
        String^ fileToReplace = "test2.xml";
        String^ backUpOfFileToReplace = "test2.xml.bak";

        if (File::Exists(originalFile) && (File::Exists(fileToReplace)))
        {
            Console::WriteLine("Move the contents of {0} into {1}, " +
                "delete {0}, and create a backup of {1}",
                originalFile, fileToReplace);

            // Replace the file.
            ReplaceFile(originalFile, fileToReplace,
                backUpOfFileToReplace);
            Console::WriteLine("Done");
        }
        else
        {
            Console::WriteLine("Either the file {0} or {1} doesn't " +
                "exist.", originalFile, fileToReplace);
        }
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Move the contents of c:\test1.xml into c:\test2.xml, delete c:\test1.xml,
//and create a backup of c:\test2.xml
//Done
  • FileIOPermission

    关联枚举：Read、Write

    安全操作：Demand。

    用于读取和写入当前文件和 destFileName 参数所描述的文件的权限。

  • FileIOPermission

    关联的枚举：Write

    安全操作：Demand。

    表示写入 destBackupFileName 参数（如果指定一个的话）所描述的文件的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
Replace 重载
System.IO 命名空间


FileInfo ..::.Replace 方法 (String, String, Boolean)

FileInfo
.
.
::
.
Replace 方法 (String, String, Boolean)
FileInfo 类

使用当前 FileInfo 对象所描述的文件替换指定文件的内容，这一过程将删除原始文件，并创建被替换文件的备份。还指定是否忽略合并错误。 使用当前 FileInfo 对象所描述的文件替换指定文件的内容，这一过程将删除原始文件，并创建被替换文件的备份。还指定是否忽略合并错误。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Function Replace ( _
    destinationFileName As String, _
    destinationBackupFileName As String, _
    ignoreMetadataErrors As Boolean _
) As FileInfo
[ComVisibleAttribute(false)]
public FileInfo Replace(
    string destinationFileName,
    string destinationBackupFileName,
    bool ignoreMetadataErrors
)
[ComVisibleAttribute(false)]
public:
FileInfo^ Replace(
    String^ destinationFileName,
    String^ destinationBackupFileName,
    bool ignoreMetadataErrors
)
[<ComVisibleAttribute(false)>]
member Replace :
        destinationFileName:string *
        destinationBackupFileName:string *
        ignoreMetadataErrors:bool -> FileInfo

参数

destinationFileName
类型： System String
要替换为当前文件的文件的名称。
destinationBackupFileName
类型： System String
文件的名称，该文件用于创建 destFileName 参数所描述的文件的备份。
ignoreMetadataErrors
类型： System Boolean
若要忽略从被替换文件到替换文件的合并错误（例如特性和 ACL），请设置为 true；否则设置为 false。

返回值

类型： System.IO FileInfo
一个 FileInfo 对象，该对象封装有关 destFileName 参数所描述的文件的信息。
异常 | 条件
ArgumentException | destFileName 参数描述的路径不是合法的格式。 - 或 - destBackupFileName 参数描述的路径不是合法的格式。
ArgumentNullException | destFileName 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。 - 或 - 未能找到 destinationFileName 参数所描述的文件。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

Replace 方法用当前 FileInfo 对象所描述的文件的内容替换指定文件的内容。它还创建被替换文件的备份。最后，它返回一个新的描述被覆盖文件的 FileInfo 对象。 Replace 方法用当前 FileInfo 对象所描述的文件的内容替换指定文件的内容。它还创建被替换文件的备份。最后，它返回一个新的描述被覆盖文件的 FileInfo 对象。 Replace 方法用当前 FileInfo 对象所描述的文件的内容替换指定文件的内容。它还创建被替换文件的备份。最后，它返回一个新的描述被覆盖文件的 FileInfo 对象。

警告说明 警告

如果 destFileName 为只读并且不会引发异常，则该方法可用于 Windows 2000 环境。在尝试替换目标文件之前，请使用 IsReadOnly 属性检查该目标文件是否为只读。 如果 destFileName 为只读并且不会引发异常，则该方法可用于 Windows 2000 环境。在尝试替换目标文件之前，请使用 IsReadOnly 属性检查该目标文件是否为只读。

如果不需要创建正在被替换的文件的备份，请将 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 传递给 destBackupFileName 参数。

下面的示例使用 Replace 方法将一个文件替换为另一个文件并创建被替换文件的备份。

Imports System
Imports System.IO

Module FileExample

    Sub Main()
        Try
            ' originalFile and fileToReplace must contain the path to files that already exist in the
            ' file system. backUpOfFileToReplace is created during the execution of the Replace method.

            Dim originalFile As String = "test.xml"
            Dim fileToReplace As String = "test2.xml"
            Dim backUpOfFileToReplace As String = "test2.xml.bak"

            If (File.Exists(originalFile) And (File.Exists(fileToReplace))) Then
                Console.WriteLine("Move the contents of " + originalFile + " into " + fileToReplace + ", delete " + originalFile + ", and create a backup of " + fileToReplace + ".")

                ' Replace the file.
                ReplaceFile(originalFile, fileToReplace, backUpOfFileToReplace)

                Console.WriteLine("Done")

            Else
                Console.WriteLine("Either the file {0} or {1} doesn't " + "exist.", originalFile, fileToReplace)
            End If
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

        Console.ReadLine()

    End Sub

    ' Move a file into another file, delete the original, and create a backup of the replaced file.
    Sub ReplaceFile(ByVal fileToMoveAndDelete As String, ByVal fileToReplace As String, ByVal backupOfFileToReplace As String)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(fileToMoveAndDelete)

        ' Replace the file.
        fInfo.Replace(fileToReplace, backupOfFileToReplace, False)

    End Sub
End Module

' Move the contents of test.txt into test2.txt, delete test.txt, and
' create a backup of test2.txt.
' Done

using System;
using System.IO;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                // originalFile and fileToReplace must contain the path to files that already exist in the
                // file system. backUpOfFileToReplace is created during the execution of the Replace method.

                string originalFile  = "test.txt";
                string fileToReplace = "test2.txt";
                string backUpOfFileToReplace = "test2.txt.bak";

                if (File.Exists(originalFile) && (File.Exists(fileToReplace)))
                {
                    Console.WriteLine("Move the contents of " + originalFile + " into " + fileToReplace + ", delete "
                        + originalFile + ", and create a backup of " + fileToReplace + ".");

                    // Replace the file.
                    ReplaceFile(originalFile, fileToReplace, backUpOfFileToReplace);

                    Console.WriteLine("Done");
                }
                else
                {
                    Console.WriteLine("Either the file {0} or {1} doesn't " + "exist.", originalFile, fileToReplace);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.ReadLine();
        }

        // Move a file into another file, delete the original, and create a backup of the replaced file.
        public static void ReplaceFile(string fileToMoveAndDelete, string fileToReplace, string backupOfFileToReplace)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(fileToMoveAndDelete);

            // replace the file.
            fInfo.Replace(fileToReplace, backupOfFileToReplace, false);
        }
    }
}
//Move the contents of test.txt into test2.txt, delete test.txt, and
//create a backup of test2.txt.
//Done

using namespace System;
using namespace System::IO;

// Move a file into another file, delete the original,
// and create a backup of the replaced file.
void ReplaceFile(String^ fileToMoveAndDelete,
                 String^ fileToReplace, String^ backupOfFileToReplace)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileToMoveAndDelete);

    // replace the file.
    fInfo->Replace(fileToReplace, backupOfFileToReplace, false);
}

int main()
{
    try
    {
        // originalFile and fileToReplace must contain
        // the path to files that already exist in the
        // file system. backUpOfFileToReplace is created
        // during the execution of the Replace method.

        String^ originalFile = "test.xml";
        String^ fileToReplace = "test2.xml";
        String^ backUpOfFileToReplace = "test2.xml.bak";

        if (File::Exists(originalFile) && (File::Exists(fileToReplace)))
        {
            Console::WriteLine("Move the contents of {0} into {1}, " +
                "delete {0}, and create a backup of {1}",
                originalFile, fileToReplace);

            // Replace the file.
            ReplaceFile(originalFile, fileToReplace,
                backUpOfFileToReplace);
            Console::WriteLine("Done");
        }
        else
        {
            Console::WriteLine("Either the file {0} or {1} doesn't " +
                "exist.", originalFile, fileToReplace);
        }
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Move the contents of c:\test1.xml into c:\test2.xml, delete c:\test1.xml,
//and create a backup of c:\test2.xml
//Done
  • FileIOPermission

    关联枚举：Read、Write

    安全操作：Demand。

    用于读取和写入当前文件和 destFileName 参数所描述的文件的权限。

  • FileIOPermission

    关联的枚举：Write

    安全操作：Demand。

    表示写入 destBackupFileName 参数（如果指定一个的话）所描述的文件的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
Replace 重载
System.IO 命名空间


FileInfo ..::.SetAccessControl 方法

FileInfo
.
.
::
.
SetAccessControl 方法
FileInfo 类

将 FileSecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 FileInfo 对象所描述的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub SetAccessControl ( _
    fileSecurity As FileSecurity _
)
public void SetAccessControl(
    FileSecurity fileSecurity
)
public:
void SetAccessControl(
    FileSecurity^ fileSecurity
)
member SetAccessControl :
        fileSecurity:FileSecurity -> unit

参数

fileSecurity
类型： System.Security.AccessControl FileSecurity
一个 FileSecurity 对象，该对象描述要应用于当前文件的访问控制列表 (ACL) 项。
异常 | 条件
ArgumentNullException | fileSecurity 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SystemException | 未能找到或修改文件。
UnauthorizedAccessException | 当前进程不具有打开该文件的权限。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows 2000 或更高版本。

SetAccessControl 方法将访问控制列表 (ACL) 项应用于表示非继承 ACL 列表的当前文件。

每当需要对某个文件添加或移除 ACL 项时，请使用 SetAccessControl 方法。

警告说明 警告

为 fileSecurity 参数指定的 ACL 替换该文件的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有的 ACL 并对其进行修改，然后使用 SetAccessControl 将其重新应用于此文件。 为 fileSecurity 参数指定的 ACL 替换该文件的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有的 ACL 并对其进行修改，然后使用 SetAccessControl 将其重新应用于此文件。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

SetAccessControl 方法仅存留在对象创建以后被修改过的 FileSecurity 对象。 如果没有修改 FileSecurity 对象，则不会保留到文件中。 因此，不可能从一个文件中检索 FileSecurity 对象并将同一对象应用到另一个文件。

将 ACL 信息从一个文件复制到另一个文件：

  1. 使用 GetAccessControl 方法从源文件检索 FileSecurity 对象。

  2. 为目标文件创建一个新的 FileSecurity 对象。

  3. 使用源 FileSecurity 对象的 GetSecurityDescriptorBinaryForm 或 GetSecurityDescriptorSddlForm 方法检索 ACL 信息。

  4. 使用 SetSecurityDescriptorBinaryForm 或 SetSecurityDescriptorSddlForm 方法将在步骤 3 中检索到的信息复制到目标 FileSecurity 对象。

  5. 使用 SetAccessControl 方法将 FileSecurity 目标对象设置为目标文件。

下面的代码示例使用 GetAccessControl 方法和 SetAccessControl 方法向一个文件添加 ACL 项，然后将其从该文件移除。您必须提供有效的用户或组帐户才能运行此示例。 下面的代码示例使用 GetAccessControl 方法和 SetAccessControl 方法向一个文件添加 ACL 项，然后将其从该文件移除。您必须提供有效的用户或组帐户才能运行此示例。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Module FileExample

    Sub Main()
        Try
            Dim FileName As String = "c:\test.xml"

            Console.WriteLine("Adding access control entry for " & FileName)

            ' Add the access control entry to the file.
            ' Before compiling this snippet, change MyDomain to your
            ' domain name and MyAccessAccount to the name
            ' you use to access your domain.
            AddFileSecurity(FileName, "MyDomain\\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Removing access control entry from " & FileName)

            ' Remove the access control entry from the file.
            ' Before compiling this snippet, change MyDomain to your
            ' domain name and MyAccessAccount to the name
            ' you use to access your domain.
            RemoveFileSecurity(FileName, "MyDomain\\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow)

            Console.WriteLine("Done.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

    End Sub

    ' Adds an ACL entry on the specified file for the specified account.
    Sub AddFileSecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = fInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        fSecurity.AddAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        fInfo.SetAccessControl(fSecurity)

    End Sub

    ' Removes an ACL entry on the specified file for the specified account.
    Sub RemoveFileSecurity(ByVal FileName As String, ByVal Account As String, ByVal Rights As FileSystemRights, ByVal ControlType As AccessControlType)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)

        ' Get a FileSecurity object that represents the
        ' current security settings.
        Dim fSecurity As FileSecurity = fInfo.GetAccessControl()

        ' Add the FileSystemAccessRule to the security settings.
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(Account, Rights, ControlType))

        ' Set the new access settings.
        fInfo.SetAccessControl(fSecurity)

    End Sub
End Module
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'Adding access control entry for c:\test.xml
'Removing access control entry from c:\test.xml
'Done.
'

using System;
using System.IO;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {
            try
            {
                string FileName = "c:/test.xml";

                Console.WriteLine("Adding access control entry for " + FileName);

                // Add the access control entry to the file.
                // Before compiling this snippet, change MyDomain to your
                // domain name and MyAccessAccount to the name
                // you use to access your domain.
                AddFileSecurity(FileName, @"MyDomain\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Removing access control entry from " + FileName);

                // Remove the access control entry from the file.
                // Before compiling this snippet, change MyDomain to your
                // domain name and MyAccessAccount to the name
                // you use to access your domain.
                RemoveFileSecurity(FileName, @"MyDomain\MyAccessAccount", FileSystemRights.ReadData, AccessControlType.Allow);

                Console.WriteLine("Done.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

        }

        // Adds an ACL entry on the specified file for the specified account.
        public static void AddFileSecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = fInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.AddAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            fInfo.SetAccessControl(fSecurity);

        }

        // Removes an ACL entry on the specified file for the specified account.
        public static void RemoveFileSecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

            // Get a FileSecurity object that represents the
            // current security settings.
            FileSecurity fSecurity = fInfo.GetAccessControl();

            // Add the FileSystemAccessRule to the security settings.
            fSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
                                                            Rights,
                                                            ControlType));

            // Set the new access settings.
            fInfo.SetAccessControl(fSecurity);

        }
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Adding access control entry for c:\test.xml
//Removing access control entry from c:\test.xml
//Done.
//

#using <System.Security.dll>
using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

// Adds an ACL entry on the specified file for the specified account.
static void AddFileSecurity(String^ fileName, String^ account,
                     FileSystemRights^ rights,
                     AccessControlType^ controlType)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }

    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = fInfo->GetAccessControl();

    // Add the FileSystemAccessRule to the security settings.
    fSecurity->AddAccessRule(gcnew FileSystemAccessRule(account,
        *rights, *controlType));

    // Set the new access settings.
    fInfo->SetAccessControl(fSecurity);
}

// Removes an ACL entry on the specified file for the specified account.
static void RemoveFileSecurity(String^ fileName, String^ account,
                        FileSystemRights^ rights,
                        AccessControlType^ controlType)
{
    // Create a new FileInfo object.
    FileInfo^ fInfo = gcnew FileInfo(fileName);
    if (!fInfo->Exists)
    {
        fInfo->Create();
    }

    // Get a FileSecurity object that represents the
    // current security settings.
    FileSecurity^ fSecurity = fInfo->GetAccessControl();

    // Remove the FileSystemAccessRule from the security settings.
    fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule(account,
        *rights, *controlType));

    // Set the new access settings.
    fInfo->SetAccessControl(fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "c:\\test.xml";

        Console::WriteLine("Adding access control entry for " +
            fileName);

        // Add the access control entry to the file.
        // Before compiling this snippet, change MyDomain to your
        // domain name and MyAccessAccount to the name
        // you use to access your domain.
        AddFileSecurity(fileName, "MyDomain\\MyAccessAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Removing access control entry from " +
            fileName);

        // Remove the access control entry from the file.
        // Before compiling this snippet, change MyDomain to your
        // domain name and MyAccessAccount to the name
        // you use to access your domain.
        RemoveFileSecurity(fileName, "MyDomain\\MyAccessAccount",
            FileSystemRights::ReadData, AccessControlType::Allow);

        Console::WriteLine("Done.");
    }
    catch (Exception^ e)
    {
        Console::WriteLine(e);
    }

}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//Adding access control entry for c:\test.xml
//Removing access control entry from c:\test.xml
//Done.
//
  • FileIOPermission

    关联枚举：NoAccess、Change

    安全操作：Demand

    表示访问此文件的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.ToString 方法

FileInfo
.
.
::
.
ToString 方法
FileInfo 类

以字符串形式返回路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
表示路径的字符串。

ToString 方法返回的字符串表示传递给构造函数的路径。当使用构造函数创建 FileInfo 对象时，ToString 方法返回完全限定路径。但是，在某些情况下，ToString 方法返回的字符串并不表示完全限定路径。例如，当使用 GetFiles 方法创建 FileInfo 对象时，ToString 方法并不表示完全限定路径。 ToString 方法返回的字符串表示传递给构造函数的路径。当使用构造函数创建 FileInfo 对象时，ToString 方法返回完全限定路径。但是，在某些情况下，ToString 方法返回的字符串并不表示完全限定路径。例如，当使用 GetFiles 方法创建 FileInfo 对象时，ToString 方法并不表示完全限定路径。 ToString 方法返回的字符串表示传递给构造函数的路径。当使用构造函数创建 FileInfo 对象时，ToString 方法返回完全限定路径。但是，在某些情况下，ToString 方法返回的字符串并不表示完全限定路径。例如，当使用 GetFiles 方法创建 FileInfo 对象时，ToString 方法并不表示完全限定路径。 ToString 方法返回的字符串表示传递给构造函数的路径。当使用构造函数创建 FileInfo 对象时，ToString 方法返回完全限定路径。但是，在某些情况下，ToString 方法返回的字符串并不表示完全限定路径。例如，当使用 GetFiles 方法创建 FileInfo 对象时，ToString 方法并不表示完全限定路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo 属性

FileInfo 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileInfo 类

FileInfo 类型公开以下成员。

名称 说明
页首

参考

FileInfo 类
System.IO 命名空间


FileInfo ..::.Directory 属性

FileInfo
.
.
::
.
Directory 属性
FileInfo 类

获取父目录的实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Directory As DirectoryInfo
    Get
public DirectoryInfo Directory { get; }
public:
property DirectoryInfo^ Directory {
    DirectoryInfo^ get ();
}
member Directory : DirectoryInfo

属性值

类型： System.IO DirectoryInfo
表示此文件父目录的 DirectoryInfo 对象。
异常 | 条件
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
SecurityException | 调用方没有所要求的权限。

若要获取字符串形式的父目录，请使用 DirectoryName 属性。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例打开或创建一个文件，确定其完整路径，确定并显示目录的所有内容。

Imports System
Imports System.IO

Public Class DirectoryTest

    Public Shared Sub Main()
        ' Open an existing file, or create a new one.
        Dim fi As New FileInfo("temp.txt")

        ' Determine the full path of the file just created.
        Dim di As DirectoryInfo = fi.Directory

        ' Figure out what other entries are in that directory.
        Dim fsi As FileSystemInfo() = di.GetFileSystemInfos()

        ' Print the names of all the files and subdirectories of that directory.
        Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName)
        Dim info As FileSystemInfo
        For Each info In fsi
            Console.WriteLine(info.Name)
        Next info
    End Sub 'Main
End Class 'DirectoryTest

'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'The directory 'C:\Visual Studio 2005\release' contains the following files
'and directories:
'TempPE
'fileinfodirectory.exe
'fileinfodirectory.pdb
'fileinfodirectory.Resources.resources
'fileinfodirectory.vbproj.GenerateResource.Cache
'fileinfodirectory.xml
'

using System;
using System.IO;

public class DirectoryTest
{
    public static void Main()
    {

        // Open an existing file, or create a new one.
        FileInfo fi = new FileInfo("temp.txt");

        // Determine the full path of the file just created.
        DirectoryInfo di = fi.Directory;

        // Figure out what other entries are in that directory.
        FileSystemInfo[] fsi = di.GetFileSystemInfos();

        Console.WriteLine("The directory '{0}' contains the following files and directories:", di.FullName);

        // Print the names of all the files and subdirectories of that directory.
        foreach (FileSystemInfo info in fsi)
            Console.WriteLine(info.Name);
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The directory 'C:\Visual Studio 2005\release' contains the following files
//and directories:
//TempPE
//fileinfodirectory.exe
//fileinfodirectory.pdb
//newTemp.txt
//temp.txt

using namespace System;
using namespace System::IO;
int main()
{

   // Open an existing file, or create a new one.
   FileInfo^ fi = gcnew FileInfo( "temp.txt" );

   // Determine the full path of the file just created.
   DirectoryInfo^ di = fi->Directory;

   // Figure out what other entries are in that directory.
   array<FileSystemInfo^>^fsi = di->GetFileSystemInfos();
   Console::WriteLine( "The directory '{0}' contains the following files and directories:", di->FullName );

   // Print the names of all the files and subdirectories of that directory.
   Collections::IEnumerator^ myEnum = fsi->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      FileSystemInfo^ info = safe_cast<FileSystemInfo^>(myEnum->Current);
      Console::WriteLine( info->Name );
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The directory 'C:\Visual Studio 2005\release' contains the following files
//and directories:
//fileinfodirectory.exe
//fileinfodirectory.pdb
//newTemp.txt
//
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.DirectoryName 属性

FileInfo
.
.
::
.
DirectoryName 属性
FileInfo 类

获取表示目录的完整路径的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property DirectoryName As String
    Get
public string DirectoryName { get; }
public:
property String^ DirectoryName {
    String^ get ();
}
member DirectoryName : string

属性值

类型： System String
表示目录的完整路径的字符串。
异常 | 条件
SecurityException | 调用方没有所要求的权限。
ArgumentNullException | 为目录名传入 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

若要获取作为 DirectoryInfo 对象的父目录，请使用 Directory 属性。

首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。 首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例检索指定文件的完整路径。

Dim fileName As String = "C:\TMP\log.txt"
Dim fileInfo As New FileInfo(fileName)
If Not fileInfo.Exists Then
    Return
End If

Console.WriteLine("{0} has a directoryName of {1}", fileName, fileInfo.DirectoryName)
' This code produces output similar to the following,
' though actual results may vary by machine:
'
' C:\TMP\log.txt has a directory name of C:\TMP

string   fileName = @"C:\TMP\log.txt";
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
{
    return;
}

Console.WriteLine("{0} has a directoryName of {1}",
    fileName, fileInfo.DirectoryName);
/* This code produces output similar to the following,
 * though actual results may vary by machine:
 *
 * C:\TMP\log.txt has a directory name of C:\TMP
 */

String^ fileName = "C:\\TMP\\log.txt";
FileInfo^ fileInfo = gcnew FileInfo( fileName );
if (  !fileInfo->Exists )
{
   return;
}

Console::WriteLine( " {0} has a directoryName of {1}",
   fileName, fileInfo->DirectoryName );
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于读取文件。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.Exists 属性

FileInfo
.
.
::
.
Exists 属性
FileInfo 类

获取指示文件是否存在的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Exists As Boolean
    Get
public override bool Exists { get; }
public:
virtual property bool Exists {
    bool get () override;
}
abstract Exists : bool
override Exists : bool

属性值

类型： System Boolean
如果该文件存在，则为 true；如果该文件不存在或如果该文件是目录，则为 false。

首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。 首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例使用 Exists 属性确保文件在打开之前已经存在。可以使用该技术在找不到文件时引发自定义异常。 下面的代码示例使用 Exists 属性确保文件在打开之前已经存在。可以使用该技术在找不到文件时引发自定义异常。

Function OpenDataFile(ByVal FileName As String) As Byte()
    ' Check the FileName argument.
    If FileName Is Nothing OrElse FileName.Length = 0 Then
        Throw New ArgumentNullException("FileName")
    End If

    ' Check to see if the file exists.
    Dim fInfo As New FileInfo(FileName)

    ' You can throw a personalized exception if
    ' the file does not exist.
    If Not fInfo.Exists Then
        Throw New FileNotFoundException("The file was not found.", FileName)
    End If

    ' Open the file.
    Dim fStream As New FileStream(FileName, FileMode.Open)

    ' Create a buffer.
    Dim buffer(fStream.Length) As Byte

    ' Read the file contents to the buffer.
    fStream.Read(buffer, 0, Fix(fStream.Length))

    ' return the buffer.
    Return buffer

End Function

public byte[] OpenDataFile(string FileName)
{
    // Check the FileName argument.
    if (FileName == null || FileName.Length == 0)
    {
        throw new ArgumentNullException("FileName");
    }

    // Check to see if the file exists.
    FileInfo fInfo = new FileInfo(FileName);

    // You can throw a personalized exception if
    // the file does not exist.
    if (!fInfo.Exists)
    {
        throw new FileNotFoundException("The file was not found.", FileName);
    }

    // Open the file.
    FileStream fStream = new FileStream(FileName, FileMode.Open);

    // Create a buffer.
    byte [] buffer = new byte[fStream.Length];

    // Read the file contents to the buffer.
    fStream.Read(buffer, 0, (int)fStream.Length);

    // return the buffer.
    return buffer;

}

array<Byte>^ Openfile(String^ fileName)
{
    // Check the fileName argument.
    if (fileName == nullptr || fileName->Length == 0)
    {
        throw gcnew ArgumentNullException("fileName");
    }

    // Check to see if the file exists.
    FileInfo^ fInfo = gcnew FileInfo(fileName);

    // You can throw a personalized exception if
    // the file does not exist.
    if (!fInfo->Exists)
    {
        throw gcnew FileNotFoundException("The file was not found.",
            fileName);
    }

    try
    {
        // Open the file.
        FileStream^ fStream = gcnew FileStream(fileName, FileMode::Open);

        // Create a buffer.
        array<Byte>^ buffer = gcnew array<Byte>(fStream->Length);

        // Read the file contents to the buffer.
        fStream->Read(buffer, 0, (int)fStream->Length);

        // return the buffer.
        return buffer;
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
        return nullptr;
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.IsReadOnly 属性

FileInfo
.
.
::
.
IsReadOnly 属性
FileInfo 类

获取或设置确定当前文件是否为只读的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Property IsReadOnly As Boolean
    Get
    Set
public bool IsReadOnly { get; set; }
public:
property bool IsReadOnly {
    bool get ();
    void set (bool value);
}
member IsReadOnly : bool with get, set

属性值

类型： System Boolean
如果当前文件为只读，则为 true；否则为 false。
异常 | 条件
FileNotFoundException | 未能找到当前 FileInfo 对象所描述的文件。
IOException | 打开文件时发生了 I/O 错误。
UnauthorizedAccessException | 当前 FileInfo 对象描述的文件是只读文件。 - 或 - 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

使用 IsReadOnly 属性快速确定当前文件是否为只读文件或快速更改其只读状态。

首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。 首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。

下面的示例使用 IsReadOnly 属性将一个文件标记为只读文件，然后将其标记为读写文件。

Imports System
Imports System.IO

Module FileExample

    Sub Main()

        Dim FileName As String = "c:\test.xml"

        ' Get the read-only value for a file.
        Dim isReadOnly As Boolean = IsFileReadOnly(FileName)

        ' Display wether the file is read-only.
        Console.WriteLine("The file read-only value for " & FileName & " is: " & isReadOnly)

        Console.WriteLine("Changing the read-only value for " & FileName & " to true.")

        ' Set the file to read-only.
        SetFileReadAccess(FileName, True)

        ' Get the read-only value for a file.
        isReadOnly = IsFileReadOnly(FileName)

        ' Display that the file is read-only.
        Console.WriteLine("The file read-only value for " & FileName & " is: " & isReadOnly)

    End Sub

    ' Sets the read-only value of a file.
    Sub SetFileReadAccess(ByVal FileName As String, ByVal SetReadOnly As Boolean)
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)

        ' Set the IsReadOnly property.
        fInfo.IsReadOnly = SetReadOnly

    End Sub

    ' Returns wether a file is read-only.
    Function IsFileReadOnly(ByVal FileName As String) As Boolean
        ' Create a new FileInfo object.
        Dim fInfo As New FileInfo(FileName)

        ' Return the IsReadOnly property value.
        Return fInfo.IsReadOnly

    End Function
End Module
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'The file read-only value for c:\test.xml is: True
'Changing the read-only value for c:\test.xml to true.
'The file read-only value for c:\test.xml is: True

using System;
using System.IO;

namespace FileSystemExample
{
    class FileExample
    {
        public static void Main()
        {

            string FileName = @"c:\test.xml";

            // Get the read-only value for a file.
            bool isReadOnly = IsFileReadOnly(FileName);

            // Display wether the file is read-only.
            Console.WriteLine("The file read-only value for " + FileName + " is: " + isReadOnly);

            Console.WriteLine("Changing the read-only value for " + FileName + " to true.");

            // Set the file to read-only.
            SetFileReadAccess(FileName, true);

            // Get the read-only value for a file.
            isReadOnly = IsFileReadOnly(FileName);

            // Display that the file is read-only.
            Console.WriteLine("The file read-only value for " + FileName + " is: " + isReadOnly);

        }

        // Sets the read-only value of a file.
        public static void SetFileReadAccess(string FileName, bool SetReadOnly)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

            // Set the IsReadOnly property.
            fInfo.IsReadOnly = SetReadOnly;

        }

        // Returns wether a file is read-only.
        public static bool IsFileReadOnly(string FileName)
        {
            // Create a new FileInfo object.
            FileInfo fInfo = new FileInfo(FileName);

            // Return the IsReadOnly property value.
            return fInfo.IsReadOnly;

        }

    }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The file read-only value for c:\test.xml is: True
//Changing the read-only value for c:\test.xml to true.
//The file read-only value for c:\test.xml is: True
//

using namespace System;
using namespace System::IO;

namespace FileSystemExample
{
    // Sets the read-only value of a file.
    void SetFileReadAccess(String^ fileName, bool setReadOnly)
    {
        // Create a new FileInfo object.
        FileInfo^ fInfo = gcnew FileInfo(fileName);

        // Set the IsReadOnly property.
        fInfo->IsReadOnly = setReadOnly;
    }

    // Returns whether a file is read-only.
    bool IsFileReadOnly(String^ fileName)
    {
        // Create a new FileInfo object.
        FileInfo^ fInfo = gcnew FileInfo(fileName);

        // Return the IsReadOnly property value.
        return fInfo->IsReadOnly;
    }
}

int main()
{
    try
    {
        String^ fileName = "c:\\test.xml";

        if (File::Exists(fileName))
        {
            // Get the read-only value for a file.
            bool isReadOnly = FileSystemExample::IsFileReadOnly(fileName);

            // Display whether the file is read-only.
            Console::WriteLine("The file read-only value for {0} is:" +
                "{1}", fileName, isReadOnly);

            Console::WriteLine("Changing the read-only value for {0}" +
                " to true.", fileName);

            // Set the file to read-only.
            FileSystemExample::SetFileReadAccess(fileName, true);

            // Get the read-only value for a file.
            isReadOnly = FileSystemExample::IsFileReadOnly(fileName);

            // Display that the file is read-only.
            Console::WriteLine("The file read-only value for {0} is:" +
                "{1}", fileName, isReadOnly);
        }
        else
        {
            Console::WriteLine("The file {0} doesn't exist.", fileName);
        }
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
};
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The file read-only value for c:\test.xml is:False
//Changing the read-only value for c:\test.xml to true.
//The file read-only value for c:\test.xml is:True
  • FileIOPermission

    关联枚举：Read、Write

    安全操作：Demand。

    表示读取和写入当前 FileInfo 对象所描述的文件的权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间


FileInfo ..::.Length 属性

FileInfo
.
.
::
.
Length 属性
FileInfo 类

获取当前文件的大小（字节）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Length As Long
    Get
public long Length { get; }
public:
property long long Length {
    long long get ();
}
member Length : int64

属性值

类型： System Int64
当前文件的大小（字节）。
异常 | 条件
IOException | Refresh 无法更新文件或目录的状态。
FileNotFoundException | 该文件不存在。 - 或 - 为一个目录调用 Length 属性。

首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。 首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例显示指定文件的大小。

' The following example displays the names and sizes
' of the files in the specified directory.
Imports System
Imports System.IO

Public Class FileLength

    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("c:\")
        ' Get a reference to each file in that directory.
        Dim fiArr As FileInfo() = di.GetFiles()
        ' Display the names and sizes of the files.
        Dim f As FileInfo
        Console.WriteLine("The directory {0} contains the following files:", di.Name)
        For Each f In fiArr
            Console.WriteLine("The size of {0} is {1} bytes.", f.Name, f.Length)
        Next f
    End Sub 'Main
End Class 'FileLength

'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'The directory c:\ contains the following files:
'The size of MyComputer.log is 274 bytes.
'The size of AUTOEXEC.BAT is 0 bytes.
'The size of boot.ini is 211 bytes.
'The size of CONFIG.SYS is 0 bytes.
'The size of hiberfil.sys is 1072775168 bytes.
'The size of IO.SYS is 0 bytes.
'The size of MASK.txt is 2700 bytes.
'The size of mfc80.dll is 1093632 bytes.
'The size of mfc80u.dll is 1079808 bytes.
'The size of MSDOS.SYS is 0 bytes.
'The size of NTDETECT.COM is 47564 bytes.
'The size of ntldr is 250032 bytes.
'The size of pagefile.sys is 1610612736 bytes.
'The size of UpdatePatch.log is 22778 bytes.
'The size of UpdatePatch.txt is 30 bytes.
'The size of wt3d.ini is 234 bytes.

// The following example displays the names and sizes
// of the files in the specified directory.
using System;
using System.IO;

public class FileLength
{
    public static void Main()
    {
        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("c:\\");
        // Get a reference to each file in that directory.
        FileInfo[] fiArr = di.GetFiles();
        // Display the names and sizes of the files.
        Console.WriteLine("The directory {0} contains the following files:", di.Name);
        foreach (FileInfo f in fiArr)
            Console.WriteLine("The size of {0} is {1} bytes.", f.Name, f.Length);
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The directory c:\ contains the following files:
//The size of MyComputer.log is 274 bytes.
//The size of AUTOEXEC.BAT is 0 bytes.
//The size of boot.ini is 211 bytes.
//The size of CONFIG.SYS is 0 bytes.
//The size of hiberfil.sys is 1072775168 bytes.
//The size of IO.SYS is 0 bytes.
//The size of MASK.txt is 2700 bytes.
//The size of mfc80.dll is 1093632 bytes.
//The size of mfc80u.dll is 1079808 bytes.
//The size of MSDOS.SYS is 0 bytes.
//The size of NTDETECT.COM is 47564 bytes.
//The size of ntldr is 250032 bytes.
//The size of pagefile.sys is 1610612736 bytes.
//The size of UpdatePatch.log is 22778 bytes.
//The size of UpdatePatch.txt is 30 bytes.
//The size of wt3d.ini is 234 bytes.

// The following example displays the names and sizes
// of the files in the specified directory.
using namespace System;
using namespace System::IO;
int main()
{

   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );

   // Get a reference to each file in that directory.
   array<FileInfo^>^fiArr = di->GetFiles();

   // Display the names and sizes of the files.
   Console::WriteLine( "The directory {0} contains the following files:", di->Name );
   System::Collections::IEnumerator^ myEnum = fiArr->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      FileInfo^ f = safe_cast<FileInfo^>(myEnum->Current);
      Console::WriteLine( "The size of {0} is {1} bytes.", f->Name, f->Length );
   }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The directory c:\ contains the following files:
//The size of MyComputer.log is 274 bytes.
//The size of AUTOEXEC.BAT is 0 bytes.
//The size of boot.ini is 211 bytes.
//The size of CONFIG.SYS is 0 bytes.
//The size of hiberfil.sys is 1072775168 bytes.
//The size of IO.SYS is 0 bytes.
//The size of MASK.txt is 2700 bytes.
//The size of mfc80.dll is 1093632 bytes.
//The size of mfc80u.dll is 1079808 bytes.
//The size of MSDOS.SYS is 0 bytes.
//The size of NTDETECT.COM is 47564 bytes.
//The size of ntldr is 250032 bytes.
//The size of pagefile.sys is 1610612736 bytes.
//The size of UpdatePatch.log is 22778 bytes.
//The size of UpdatePatch.txt is 30 bytes.
//The size of wt3d.ini is 234 bytes.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileInfo ..::.Name 属性

FileInfo
.
.
::
.
Name 属性
FileInfo 类

获取文件名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Name As String
    Get
public override string Name { get; }
public:
virtual property String^ Name {
    String^ get () override;
}
abstract Name : string
override Name : string

属性值

类型： System String
文件名。

首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。 首次调用时，FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时，必须调用 Refresh 以获取信息的最新副本。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例使用 Name 属性显示当前目录中的文件名。

Imports System
Imports System.IO

Public Class NameTest
    Public Shared Sub Main()
        ' Create a reference to the current directory.
        Dim di As New DirectoryInfo(Environment.CurrentDirectory)
        ' Create an array representing the files in the current directory.
        Dim fi As FileInfo() = di.GetFiles()
        Console.WriteLine("The following files exist in the current directory:")
        ' Print out the names of the files in the current directory.
        Dim fiTemp As FileInfo
        For Each fiTemp In fi
            Console.WriteLine(fiTemp.Name)
        Next fiTemp
    End Sub 'Main
End Class 'NameTest
'This code produces output similar to the following;
'results may vary based on the computer/file structure/etc.:
'
'The following files exist in the current directory:
'newTemp.txt
'fileinfoname.exe
'fileinfoname.pdb
'fileinfoname.Resources.resources
'fileinfoname.vbproj.GenerateResource.Cache
'fileinfoname.xml

using System;
using System.IO;

public class NameTest
{
    public static void Main()
    {
        // Create a reference to the current directory.
        DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory);
        // Create an array representing the files in the current directory.
        FileInfo[] fi = di.GetFiles();
        Console.WriteLine("The following files exist in the current directory:");
        // Print out the names of the files in the current directory.
        foreach (FileInfo fiTemp in fi)
            Console.WriteLine(fiTemp.Name);
    }
}
//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The following files exist in the current directory:
//fileinfoname.exe
//fileinfoname.pdb
//newTemp.txt

using namespace System;
using namespace System::IO;
int main()
{

   // Create a reference to the current directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( Environment::CurrentDirectory );

   // Create an array representing the files in the current directory.
   array<FileInfo^>^fi = di->GetFiles();
   Console::WriteLine( "The following files exist in the current directory:" );

   // Print out the names of the files in the current directory.
   Collections::IEnumerator^ myEnum = fi->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      FileInfo^ fiTemp = safe_cast<FileInfo^>(myEnum->Current);
      Console::WriteLine( fiTemp->Name );
   }
}

//This code produces output similar to the following;
//results may vary based on the computer/file structure/etc.:
//
//The following files exist in the current directory:
//fileinfoname.exe
//fileinfoname.pdb
//newTemp.txt

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileInfo 类
FileInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 类

FileLoadException 类
成员

当找到托管程序集却不能加载它时引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class FileLoadException _
    Inherits IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class FileLoadException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class FileLoadException : public IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type FileLoadException =
    class
        inherit IOException
    end

表示一个错误，该错误在找到 Assembly 文件却不能进行加载时发生。

当由于无法定位文件而造成加载文件失败时，会引发 FileNotFoundException 异常。如果文件已定位，但由于没有足够的权限而造成无法加载时，则引发 SecurityException。 当由于无法定位文件而造成加载文件失败时，会引发 FileNotFoundException 异常。如果文件已定位，但由于没有足够的权限而造成无法加载时，则引发 SecurityException。

FileLoadException 的默认 HRESULT 为 COR_E_FILELOAD，其值为 0x80131621，但这不是唯一可能的 HRESULT。

如果您的代码不具备 PathDiscovery 权限，此异常的错误消息可能仅包含文件或目录名称而不是完全限定的路径。

System.IO System.IO..::.FileLoadExceptionFileLoadException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 成员

FileLoadException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileLoadException 类

当找到托管程序集却不能加载它时引发的异常。

FileLoadException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileLoadException 类
System.IO 命名空间


FileLoadException 构造函数

FileLoadException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileLoadException 类

初始化 FileLoadException 类的新实例。

名称 说明
页首

参考

FileLoadException 类
FileLoadException 成员
System.IO 命名空间


FileLoadException 构造函数

FileLoadException 构造函数
FileLoadException 类

初始化 FileLoadException 类的新实例，将新实例的 Message 属性设置为描述错误的系统提供的消息（如“未能加载指定文件”）。此消息将考虑当前系统区域性。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public FileLoadException()
public:
FileLoadException()
new : unit -> FileLoadException

新实例的 InnerException 属性和 FileName 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
FileLoadException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 构造函数 (String)

FileLoadException 构造函数 (String)
FileLoadException 类

使用指定的错误消息初始化 FileLoadException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public FileLoadException(
    string message
)
public:
FileLoadException(
    String^ message
)
new :
        message:string -> FileLoadException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

此构造函数使用 message 初始化新实例的 Message 属性。新实例的 InnerException 属性和 FileName 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 此构造函数使用 message 初始化新实例的 Message 属性。新实例的 InnerException 属性和 FileName 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
FileLoadException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 构造函数 (SerializationInfo, StreamingContext)

FileLoadException 构造函数 (SerializationInfo, StreamingContext)
FileLoadException 类

用序列化数据初始化 FileLoadException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected FileLoadException(
    SerializationInfo info,
    StreamingContext context
)
protected:
FileLoadException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> FileLoadException

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
FileLoadException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 构造函数 (String, Exception)

FileLoadException 构造函数 (String, Exception)
FileLoadException 类

使用指定错误消息和对作为此异常原因的内部异常的引用来初始化 FileLoadException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    inner As Exception _
)
public FileLoadException(
    string message,
    Exception inner
)
public:
FileLoadException(
    String^ message,
    Exception^ inner
)
new :
        message:string *
        inner:Exception -> FileLoadException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
inner
类型： System Exception
导致当前异常的异常。如果 inner 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 inner 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

由上一异常直接引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 由上一异常直接引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 FileLoadException 实例的初始属性值。

Property | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

有关内部异常的更多信息，请参见 InnerException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
FileLoadException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 构造函数 (String, String)

FileLoadException 构造函数 (String, String)
FileLoadException 类

使用指定错误消息和未能加载的文件的名称来初始化 FileLoadException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    fileName As String _
)
public FileLoadException(
    string message,
    string fileName
)
public:
FileLoadException(
    String^ message,
    String^ fileName
)
new :
        message:string *
        fileName:string -> FileLoadException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
fileName
类型： System String
一个 String，它包含未加载的文件的名称。

此构造函数使用 message 初始化新实例的 Message 属性，并使用 fileName 初始化其 FileName 属性。新实例的 InnerException 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 此构造函数使用 message 初始化新实例的 Message 属性，并使用 fileName 初始化其 FileName 属性。新实例的 InnerException 属性被初始化为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

不要求 FileName 必须是存储在磁盘上的文件；它可以是系统中支持流访问的任何部分。例如，根据具体的系统，此类可能能够访问物理设备。 不要求 FileName 必须是存储在磁盘上的文件；它可以是系统中支持流访问的任何部分。例如，根据具体的系统，此类可能能够访问物理设备。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
FileLoadException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 构造函数 (String, String, Exception)

FileLoadException 构造函数 (String, String, Exception)
FileLoadException 类

使用指定的错误消息、未能加载的文件的名称和对作为此异常原因的内部异常的引用来初始化 FileLoadException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    fileName As String, _
    inner As Exception _
)
public FileLoadException(
    string message,
    string fileName,
    Exception inner
)
public:
FileLoadException(
    String^ message,
    String^ fileName,
    Exception^ inner
)
new :
        message:string *
        fileName:string *
        inner:Exception -> FileLoadException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
fileName
类型： System String
一个 String，它包含未加载的文件的名称。
inner
类型： System Exception
导致当前异常的异常。如果 inner 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 inner 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

由上一异常直接引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 由上一异常直接引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

不要求 FileName 必须是存储在磁盘上的文件；它可以是系统中支持流访问的任何部分。例如，根据具体的系统，此类可能能够访问物理设备。 不要求 FileName 必须是存储在磁盘上的文件；它可以是系统中支持流访问的任何部分。例如，根据具体的系统，此类可能能够访问物理设备。

下表显示 FileLoadException 实例的初始属性值。

Property | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

有关内部异常的更多信息，请参见 InnerException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
FileLoadException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 方法

FileLoadException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileLoadException 类

FileLoadException 类型公开以下成员。

名称 说明
页首

参考

FileLoadException 类
System.IO 命名空间


FileLoadException ..::.GetObjectData 方法

FileLoadException
.
.
::
.
GetObjectData 方法
FileLoadException 类

使用文件名和其他异常信息来设置 SerializationInfo。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

实现

异常 | 条件
SecurityException | 调用方没有所要求的权限。
  • SecurityPermission

    用于提供证据及查看和修改策略。关联枚举：SecurityPermissionFlag..::.ControlEvidence 和 SecurityPermissionFlag..::.ControlPolicy。 用于提供证据及查看和修改策略。关联枚举：SecurityPermissionFlag..::.ControlEvidence 和 SecurityPermissionFlag..::.ControlPolicy。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException ..::.ToString 方法

FileLoadException
.
.
::
.
ToString 方法
FileLoadException 类

返回当前异常的完全限定名，还可能返回错误消息、内部异常的名称和堆栈跟踪。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
一个字符串，它包含此异常的完全限定名，还可能包含错误消息、内部异常的名称和堆栈跟踪（取决于所使用的 FileLoadException 构造函数）。

实现

此方法重写 ToString。

此方法返回的字符串表示形式包括该异常的名称、Message 的值、FileName 属性的值以及调用 StackTrace 的结果。如果这些成员中的任何一个是空引用，其值将不会包含在返回的字符串中。 此方法返回的字符串表示形式包括该异常的名称、Message 的值、FileName 属性的值以及调用 StackTrace 的结果。如果这些成员中的任何一个是空引用，其值将不会包含在返回的字符串中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 属性

FileLoadException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileLoadException 类

FileLoadException 类型公开以下成员。

名称 说明
页首

参考

FileLoadException 类
System.IO 命名空间


FileLoadException ..::.FileName 属性

FileLoadException
.
.
::
.
FileName 属性
FileLoadException 类

获取导致该异常的文件的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property FileName As String
    Get
public string FileName { get; }
public:
property String^ FileName {
    String^ get ();
}
member FileName : string

属性值

类型： System String
一个 String，包含具有无效图像的文件的名称；或者，如果没有将文件名传递给当前实例的构造函数，则为空引用。

该属性返回提供给当前实例的构造函数的文件名（如果有的话）。如果没有指定文件名或者是空引用，该属性将返回空引用。 该属性返回提供给当前实例的构造函数的文件名（如果有的话）。如果没有指定文件名或者是空引用，该属性将返回空引用。

此属性为只读。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException ..::.FusionLog 属性

FileLoadException
.
.
::
.
FusionLog 属性
FileLoadException 类

获取描述程序集加载失败的原因的日志文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property FusionLog As String
    Get
public string FusionLog { get; }
public:
property String^ FusionLog {
    String^ get ();
}
member FusionLog : string

属性值

类型： System String
一个 String，包含由程序集缓存报告的错误。
异常 | 条件
SecurityException | 调用方没有所要求的权限。
  • SecurityPermission

    用于提供证据并查看和修改策略。关联的枚举：SecurityPermissionFlag..::.ControlEvidence、SecurityPermissionFlag..::.ControlPolicy。 用于提供证据并查看和修改策略。关联的枚举：SecurityPermissionFlag..::.ControlEvidence、SecurityPermissionFlag..::.ControlPolicy。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
System.IO 命名空间

其他资源

Fuslogvw.exe（程序集绑定日志查看器）
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException ..::.Message 属性

FileLoadException
.
.
::
.
Message 属性
FileLoadException 类

获取错误消息和引发此异常的文件的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Message As String
    Get
public override string Message { get; }
public:
virtual property String^ Message {
    String^ get () override;
}
abstract Message : string
override Message : string

属性值

类型： System String
包含错误消息和引发此异常的文件名称的字符串。

实现

此属性重写 Message。

如果没有向当前异常的构造函数提供消息，则此属性返回系统提供的错误信息。如果 FileName 属性不是空引用，则消息包含文件名，例如“无法加载文件 FileName。”。（FileName 表示 FileName 返回的值。）如果 FileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在系统提供的消息中将其指示为“(null)”。系统提供的消息将当前系统的区域性考虑在内。 如果没有向当前异常的构造函数提供消息，则此属性返回系统提供的错误信息。如果 FileName 属性不是空引用，则消息包含文件名，例如“无法加载文件 FileName。”。（FileName 表示 FileName 返回的值。）如果 FileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在系统提供的消息中将其指示为“(null)”。系统提供的消息将当前系统的区域性考虑在内。 如果没有向当前异常的构造函数提供消息，则此属性返回系统提供的错误信息。如果 FileName 属性不是空引用，则消息包含文件名，例如“无法加载文件 FileName。”。（FileName 表示 FileName 返回的值。）如果 FileName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在系统提供的消息中将其指示为“(null)”。系统提供的消息将当前系统的区域性考虑在内。

此属性为只读。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileLoadException 类
FileLoadException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileLoadException 事件

FileLoadException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileLoadException 类

FileLoadException 类型公开以下成员。

名称 说明
页首

参考

FileLoadException 类
System.IO 命名空间


FileMode 枚举

FileMode 枚举

指定操作系统打开文件的方式。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration FileMode
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum FileMode
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class FileMode
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type FileMode
成员名称 | 说明
由 XNA Framework 提供支持 | CreateNew | 指定操作系统应创建新文件。此操作需要 FileIOPermissionAccess..::.Write。如果文件已存在，则将引发 IOException。 指定操作系统应创建新文件。此操作需要 FileIOPermissionAccess..::.Write。如果文件已存在，则将引发 IOException。 指定操作系统应创建新文件。此操作需要 FileIOPermissionAccess..::.Write。如果文件已存在，则将引发 IOException。
由 XNA Framework 提供支持 | Create | 指定操作系统应创建新文件。如果文件已存在，它将被覆盖。此操作需要 FileIOPermissionAccess..::.Write。System.IO.FileMode.Create 等效于这样的请求：如果文件不存在，则使用 CreateNew；否则使用 Truncate。如果该文件已存在但为隐藏文件，则将引发 UnauthorizedAccessException。 指定操作系统应创建新文件。如果文件已存在，它将被覆盖。此操作需要 FileIOPermissionAccess..::.Write。System.IO.FileMode.Create 等效于这样的请求：如果文件不存在，则使用 CreateNew；否则使用 Truncate。如果该文件已存在但为隐藏文件，则将引发 UnauthorizedAccessException。 指定操作系统应创建新文件。如果文件已存在，它将被覆盖。此操作需要 FileIOPermissionAccess..::.Write。System.IO.FileMode.Create 等效于这样的请求：如果文件不存在，则使用 CreateNew；否则使用 Truncate。如果该文件已存在但为隐藏文件，则将引发 UnauthorizedAccessException。 指定操作系统应创建新文件。如果文件已存在，它将被覆盖。此操作需要 FileIOPermissionAccess..::.Write。System.IO.FileMode.Create 等效于这样的请求：如果文件不存在，则使用 CreateNew；否则使用 Truncate。如果该文件已存在但为隐藏文件，则将引发 UnauthorizedAccessException。 指定操作系统应创建新文件。如果文件已存在，它将被覆盖。此操作需要 FileIOPermissionAccess..::.Write。System.IO.FileMode.Create 等效于这样的请求：如果文件不存在，则使用 CreateNew；否则使用 Truncate。如果该文件已存在但为隐藏文件，则将引发 UnauthorizedAccessException。
由 XNA Framework 提供支持 | Open | 指定操作系统应打开现有文件。打开文件的能力取决于 FileAccess 所指定的值。如果该文件不存在，则引发 System.IO..::.FileNotFoundException。 指定操作系统应打开现有文件。打开文件的能力取决于 FileAccess 所指定的值。如果该文件不存在，则引发 System.IO..::.FileNotFoundException。 指定操作系统应打开现有文件。打开文件的能力取决于 FileAccess 所指定的值。如果该文件不存在，则引发 System.IO..::.FileNotFoundException。
由 XNA Framework 提供支持 | OpenOrCreate | 指定操作系统应打开文件（如果文件存在）；否则，应创建新文件。如果用 FileAccess.Read 打开文件，则需要 FileIOPermissionAccess..::.Read。如果文件访问为 FileAccess.Write，则需要 FileIOPermissionAccess..::.Write。如果用 FileAccess.ReadWrite 打开文件，则同时需要 FileIOPermissionAccess..::.Read 和 FileIOPermissionAccess..::.Write。如果文件访问为 FileAccess.Append，则需要 FileIOPermissionAccess..::.Append。 指定操作系统应打开文件（如果文件存在）；否则，应创建新文件。如果用 FileAccess.Read 打开文件，则需要 FileIOPermissionAccess..::.Read。如果文件访问为 FileAccess.Write，则需要 FileIOPermissionAccess..::.Write。如果用 FileAccess.ReadWrite 打开文件，则同时需要 FileIOPermissionAccess..::.Read 和 FileIOPermissionAccess..::.Write。如果文件访问为 FileAccess.Append，则需要 FileIOPermissionAccess..::.Append。 指定操作系统应打开文件（如果文件存在）；否则，应创建新文件。如果用 FileAccess.Read 打开文件，则需要 FileIOPermissionAccess..::.Read。如果文件访问为 FileAccess.Write，则需要 FileIOPermissionAccess..::.Write。如果用 FileAccess.ReadWrite 打开文件，则同时需要 FileIOPermissionAccess..::.Read 和 FileIOPermissionAccess..::.Write。如果文件访问为 FileAccess.Append，则需要 FileIOPermissionAccess..::.Append。 指定操作系统应打开文件（如果文件存在）；否则，应创建新文件。如果用 FileAccess.Read 打开文件，则需要 FileIOPermissionAccess..::.Read。如果文件访问为 FileAccess.Write，则需要 FileIOPermissionAccess..::.Write。如果用 FileAccess.ReadWrite 打开文件，则同时需要 FileIOPermissionAccess..::.Read 和 FileIOPermissionAccess..::.Write。如果文件访问为 FileAccess.Append，则需要 FileIOPermissionAccess..::.Append。 指定操作系统应打开文件（如果文件存在）；否则，应创建新文件。如果用 FileAccess.Read 打开文件，则需要 FileIOPermissionAccess..::.Read。如果文件访问为 FileAccess.Write，则需要 FileIOPermissionAccess..::.Write。如果用 FileAccess.ReadWrite 打开文件，则同时需要 FileIOPermissionAccess..::.Read 和 FileIOPermissionAccess..::.Write。如果文件访问为 FileAccess.Append，则需要 FileIOPermissionAccess..::.Append。
由 XNA Framework 提供支持 | Truncate | 指定操作系统应打开现有文件。文件一旦打开，就将被截断为零字节大小。此操作需要 FileIOPermissionAccess..::.Write。尝试从使用 Truncate 打开的文件中进行读取将导致异常。 指定操作系统应打开现有文件。文件一旦打开，就将被截断为零字节大小。此操作需要 FileIOPermissionAccess..::.Write。尝试从使用 Truncate 打开的文件中进行读取将导致异常。 指定操作系统应打开现有文件。文件一旦打开，就将被截断为零字节大小。此操作需要 FileIOPermissionAccess..::.Write。尝试从使用 Truncate 打开的文件中进行读取将导致异常。 指定操作系统应打开现有文件。文件一旦打开，就将被截断为零字节大小。此操作需要 FileIOPermissionAccess..::.Write。尝试从使用 Truncate 打开的文件中进行读取将导致异常。
由 XNA Framework 提供支持 | Append | 若存在文件，则打开该文件并查找到文件尾，或者创建一个新文件。FileMode.Append 只能与 FileAccess.Write 一起使用。尝试查找文件尾之前的位置时会引发 IOException，并且任何尝试读取的操作都会失败并引发 NotSupportedException。 若存在文件，则打开该文件并查找到文件尾，或者创建一个新文件。FileMode.Append 只能与 FileAccess.Write 一起使用。尝试查找文件尾之前的位置时会引发 IOException，并且任何尝试读取的操作都会失败并引发 NotSupportedException。 若存在文件，则打开该文件并查找到文件尾，或者创建一个新文件。FileMode.Append 只能与 FileAccess.Write 一起使用。尝试查找文件尾之前的位置时会引发 IOException，并且任何尝试读取的操作都会失败并引发 NotSupportedException。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

FileMode 参数在 FileStream 和 IsolatedStorageFileStream 的许多构造函数中，以及在 File 和 FileInfo 的 Open 方法中指定，用以控制打开文件的方式。

FileMode 参数控制是否对文件执行覆盖、创建、打开等操作，或执行这些操作的组合。使用 Open 打开现有文件。若要追加到文件，请使用 Append。若要截断文件或创建不存在的文件，请使用 Create。 FileMode 参数控制是否对文件执行覆盖、创建、打开等操作，或执行这些操作的组合。使用 Open 打开现有文件。若要追加到文件，请使用 Append。若要截断文件或创建不存在的文件，请使用 Create。 FileMode 参数控制是否对文件执行覆盖、创建、打开等操作，或执行这些操作的组合。使用 Open 打开现有文件。若要追加到文件，请使用 Append。若要截断文件或创建不存在的文件，请使用 Create。 FileMode 参数控制是否对文件执行覆盖、创建、打开等操作，或执行这些操作的组合。使用 Open 打开现有文件。若要追加到文件，请使用 Append。若要截断文件或创建不存在的文件，请使用 Create。

下面的 FileStream 构造函数打开现有文件 (FileMode.Open)。

Dim s2 As New FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read)

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);

FileStream^ s2 = gcnew FileStream( name, FileMode::Open, FileAccess::Read, FileShare::Read );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

System.IO 命名空间
File Open
FileInfo Open
FileStream
IsolatedStorageFileStream

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileNotFoundException 类

FileNotFoundException 类
成员

尝试访问磁盘上不存在的文件失败时引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class FileNotFoundException _
    Inherits IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class FileNotFoundException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class FileNotFoundException : public IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type FileNotFoundException =
    class
        inherit IOException
    end

FileNotFoundException 使用包含值 0x80070002 的 HRESULT COR_E_FILENOTFOUND。

如果您的代码不具备 PathDiscovery 权限，此异常的错误消息可能仅包含文件或目录名称而不是完全限定的路径。

System.IO System.IO..::.FileNotFoundExceptionFileNotFoundException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileNotFoundException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 成员

FileNotFoundException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileNotFoundException 类

尝试访问磁盘上不存在的文件失败时引发的异常。

FileNotFoundException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileNotFoundException 类
System.IO 命名空间


FileNotFoundException 构造函数

FileNotFoundException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileNotFoundException 类

用可选消息字符串和内部 Exception 引用初始化 FileNotFoundException 类的新实例。

名称 说明
页首

参考

FileNotFoundException 类
FileNotFoundException 成员
System.IO 命名空间


FileNotFoundException 构造函数

FileNotFoundException 构造函数
FileNotFoundException 类

初始化 FileNotFoundException 类的新实例，使其消息字符串设置为系统所提供的消息，其 HRESULT 设置为 COR_E_FILENOTFOUND。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public FileNotFoundException()
public:
FileNotFoundException()
new : unit -> FileNotFoundException

此构造函数将新实例的 Message 属性初始化为系统提供的用于描述错误（如“未能找到指定文件。”）的消息。此消息将考虑当前系统区域性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileNotFoundException 类
FileNotFoundException 成员
FileNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 构造函数 (String)

FileNotFoundException 构造函数 (String)
FileNotFoundException 类

初始化 FileNotFoundException 类的新实例，使其消息字符串设置为 message，其 HRESULT 设置为 COR_E_FILENOTFOUND。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public FileNotFoundException(
    string message
)
public:
FileNotFoundException(
    String^ message
)
new :
        message:string -> FileNotFoundException

参数

message
类型： System String
错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

此构造函数使用 message 初始化新实例的 Message 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileNotFoundException 类
FileNotFoundException 成员
FileNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 构造函数 (SerializationInfo, StreamingContext)

FileNotFoundException 构造函数 (SerializationInfo, StreamingContext)
FileNotFoundException 类

使用指定的序列化和上下文信息初始化 FileNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected FileNotFoundException(
    SerializationInfo info,
    StreamingContext context
)
protected:
FileNotFoundException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> FileNotFoundException

参数

info
类型： System.Runtime.Serialization SerializationInfo
保存有关所引发异常的序列化对象数据的对象。
context
类型： System.Runtime.Serialization StreamingContext
一个包含有关源或目标的上下文信息的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
FileNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 构造函数 (String, Exception)

FileNotFoundException 构造函数 (String, Exception)
FileNotFoundException 类

使用指定错误消息和对导致此异常的内部异常的引用来初始化 FileNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public FileNotFoundException(
    string message,
    Exception innerException
)
public:
FileNotFoundException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> FileNotFoundException

参数

message
类型： System String
错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为前一个异常的直接结果而引发的异常应在 InnerException 属性中包括对前一个异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为前一个异常的直接结果而引发的异常应在 InnerException 属性中包括对前一个异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 FileNotFoundException 实例的初始属性值。

Property | Value
InnerException | 内部异常引用。
Message | 错误消息字符串。

有关内部异常的更多信息，请参见 InnerException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
FileNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 构造函数 (String, String)

FileNotFoundException 构造函数 (String, String)
FileNotFoundException 类

初始化 FileNotFoundException 类的新实例，使其消息字符串设置为 message（用于指定无法找到的文件名），其 HRESULT 设置为 COR_E_FILENOTFOUND。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    fileName As String _
)
public FileNotFoundException(
    string message,
    string fileName
)
public:
FileNotFoundException(
    String^ message,
    String^ fileName
)
new :
        message:string *
        fileName:string -> FileNotFoundException

参数

message
类型： System String
错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 错误说明。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
fileName
类型： System String
包含无效图像的文件的全名。

此构造函数使用 message 初始化新实例的 Message 属性，并使用 fileName 初始化 FileName 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
FileNotFoundException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 构造函数 (String, String, Exception)

FileNotFoundException 构造函数 (String, String, Exception)
FileNotFoundException 类

使用指定错误消息和对导致此异常的内部异常的引用来初始化 FileNotFoundException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    fileName As String, _
    innerException As Exception _
)
public FileNotFoundException(
    string message,
    string fileName,
    Exception innerException
)
public:
FileNotFoundException(
    String^ message,
    String^ fileName,
    Exception^ innerException
)
new :
        message:string *
        fileName:string *
        innerException:Exception -> FileNotFoundException

参数

message
类型： System String
解释异常原因的错误消息。
fileName
类型： System String
包含无效图像的文件的全名。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为前一个异常的直接结果而引发的异常应在 InnerException 属性中包括对前一个异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为前一个异常的直接结果而引发的异常应在 InnerException 属性中包括对前一个异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 FileNotFoundException 实例的初始属性值。

Property | Value
InnerException | 内部异常引用。
Message | 错误消息字符串。

有关内部异常的更多信息，请参见 InnerException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
FileNotFoundException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 方法

FileNotFoundException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileNotFoundException 类

FileNotFoundException 类型公开以下成员。

名称 说明
页首

参考

FileNotFoundException 类
System.IO 命名空间


FileNotFoundException ..::.GetObjectData 方法

FileNotFoundException
.
.
::
.
GetObjectData 方法
FileNotFoundException 类

设置带有文件名和附加异常信息的 SerializationInfo 对象。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
保存有关所引发异常的序列化对象数据的对象。
context
类型： System.Runtime.Serialization StreamingContext
包含有关源或目标的上下文信息的对象。

实现

  • SecurityPermission

    用于提供序列化服务。关联枚举：SerializationFormatter 安全操作：LinkDemand 用于提供序列化服务。关联枚举：SerializationFormatter 安全操作：LinkDemand

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException ..::.ToString 方法

FileNotFoundException
.
.
::
.
ToString 方法
FileNotFoundException 类

返回该异常的完全限定名，还可能返回错误消息、内部异常的名称和堆栈跟踪。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
此异常的完全限定名，还可能包含错误消息、内部异常的名称和堆栈跟踪。

实现

此方法重写 ToString。

此方法返回的字符串表示形式包含异常的名称、Message 属性的值、对内部异常调用 ToString 的结果、FileName 属性的值以及调用 StackTrace 的结果。如果这些成员中的任何一个是空引用，其值将不会包含在返回的字符串中。 此方法返回的字符串表示形式包含异常的名称、Message 属性的值、对内部异常调用 ToString 的结果、FileName 属性的值以及调用 StackTrace 的结果。如果这些成员中的任何一个是空引用，其值将不会包含在返回的字符串中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 属性

FileNotFoundException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileNotFoundException 类

FileNotFoundException 类型公开以下成员。

名称 说明
页首

参考

FileNotFoundException 类
System.IO 命名空间


FileNotFoundException ..::.FileName 属性

FileNotFoundException
.
.
::
.
FileName 属性
FileNotFoundException 类

获取无法找到的文件的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property FileName As String
    Get
public string FileName { get; }
public:
property String^ FileName {
    String^ get ();
}
member FileName : string

属性值

类型： System String
文件的名称，如果没有将文件名传递给此实例的构造函数，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此属性为只读。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException ..::.FusionLog 属性

FileNotFoundException
.
.
::
.
FusionLog 属性
FileNotFoundException 类

获取日志文件，该文件描述加载程序集失败的原因。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property FusionLog As String
    Get
public string FusionLog { get; }
public:
property String^ FusionLog {
    String^ get ();
}
member FusionLog : string

属性值

类型： System String
由程序集缓存报告的错误。
异常 | 条件
SecurityException | 调用方没有所要求的权限。
  • SecurityPermission

    用于提供证据及查看和修改策略。关联的枚举：SecurityPermissionFlag..::.ControlEvidence、SecurityPermissionFlag..::.ControlPolicy。 用于提供证据及查看和修改策略。关联的枚举：SecurityPermissionFlag..::.ControlEvidence、SecurityPermissionFlag..::.ControlPolicy。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException ..::.Message 属性

FileNotFoundException
.
.
::
.
Message 属性
FileNotFoundException 类

解释异常原因的错误信息。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Message As String
    Get
public override string Message { get; }
public:
virtual property String^ Message {
    String^ get () override;
}
abstract Message : string
override Message : string

属性值

类型： System String
错误消息。

实现

如果没有向当前异常的构造函数提供消息，则此属性返回系统提供的错误消息。如果 FileName 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则消息包含文件名。 如果没有向当前异常的构造函数提供消息，则此属性返回系统提供的错误消息。如果 FileName 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则消息包含文件名。

此属性为只读。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileNotFoundException 类
FileNotFoundException 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileNotFoundException 事件

FileNotFoundException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileNotFoundException 类

FileNotFoundException 类型公开以下成员。

名称 说明
页首

参考

FileNotFoundException 类
System.IO 命名空间


FileOptions 枚举

FileOptions 枚举

表示用于创建 FileStream 对象的附加选项。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<FlagsAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration FileOptions
[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum FileOptions
[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum class FileOptions
[<SerializableAttribute>]
[<FlagsAttribute>]
[<ComVisibleAttribute(true)>]
type FileOptions
成员名称 | 说明
None | 指示无其他参数。
WriteThrough | 指示系统应通过任何中间缓存、直接写入磁盘。
Asynchronous | 指示文件可用于异步读取和写入。
RandomAccess | 指示随机访问文件。系统可将此选项用作优化文件缓存的提示。 指示随机访问文件。系统可将此选项用作优化文件缓存的提示。
DeleteOnClose | 指示当不再使用某个文件时，自动删除该文件。
SequentialScan | 指示按从头到尾的顺序访问文件。系统可将此选项用作优化文件缓存的提示。如果应用程序移动用于随机访问的文件指针，可能不发生优化缓存，但仍然保证操作的正确性。 指示按从头到尾的顺序访问文件。系统可将此选项用作优化文件缓存的提示。如果应用程序移动用于随机访问的文件指针，可能不发生优化缓存，但仍然保证操作的正确性。 指示按从头到尾的顺序访问文件。系统可将此选项用作优化文件缓存的提示。如果应用程序移动用于随机访问的文件指针，可能不发生优化缓存，但仍然保证操作的正确性。 指定此标志可以提高使用顺序访问读取大文件的应用程序的性能。对于大多数情况下都按顺序读取大文件、但偶尔跳过小的字节范围的应用程序而言，性能提升可能更明显。 指定此标志可以提高使用顺序访问读取大文件的应用程序的性能。对于大多数情况下都按顺序读取大文件、但偶尔跳过小的字节范围的应用程序而言，性能提升可能更明显。
Encrypted | 指示文件是加密的，只能通过用于加密的同一用户帐户来解密。

使用 FileOptions 枚举指定高级文件选项。

下面的代码示例将数据写入文件，然后使用 FileStream 对象读取数据。

Imports System
Imports System.IO
Imports System.Text
Imports System.Security.AccessControl

Module FileStreamExample

    Sub Main()
        Try
            ' Create a file and write data to it.
            ' Create an array of bytes.
            Dim messageByte As Byte() = Encoding.ASCII.GetBytes("Here is some data.")

            ' Specify an access control list (ACL)
            Dim fs As New FileSecurity()

            fs.AddAccessRule(New FileSystemAccessRule("DOMAINNAME\AccountName", FileSystemRights.ReadData, AccessControlType.Allow))

            ' Create a file using the FileStream class.
            Dim fWrite As New FileStream("test.txt", FileMode.Create, FileSystemRights.Modify, FileShare.None, 8, FileOptions.None, fs)

            ' Write the number of bytes to the file.
            fWrite.WriteByte(System.Convert.ToByte(messageByte.Length))

            ' Write the bytes to the file.
            fWrite.Write(messageByte, 0, messageByte.Length)

            ' Close the stream.
            fWrite.Close()

            ' Open a file and read the number of bytes.
            Dim fRead As New FileStream("test.txt", FileMode.Open)

            ' The first byte is the string length.
            Dim length As Integer = Fix(fRead.ReadByte())

            ' Create a new byte array for the data.
            Dim readBytes(length) As Byte

            ' Read the data from the file.
            fRead.Read(readBytes, 0, readBytes.Length)

            ' Close the stream.
            fRead.Close()

            ' Display the data.
            Console.WriteLine(Encoding.ASCII.GetString(readBytes))

            Console.WriteLine("Done writing and reading data.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub
End Module

using System;
using System.IO;
using System.Text;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileStreamExample
    {
        public static void Main()
        {
            try
            {
                // Create a file and write data to it.

                // Create an array of bytes.
                byte[] messageByte = Encoding.ASCII.GetBytes("Here is some data.");

                // Specify an access control list (ACL)
                FileSecurity fs = new FileSecurity();

                fs.AddAccessRule(new FileSystemAccessRule(@"DOMAINNAME\AccountName",
                                                            FileSystemRights.ReadData,
                                                            AccessControlType.Allow));

                // Create a file using the FileStream class.
                FileStream fWrite = new FileStream("test.txt", FileMode.Create, FileSystemRights.Modify, FileShare.None, 8, FileOptions.None, fs);

                // Write the number of bytes to the file.
                fWrite.WriteByte((byte)messageByte.Length);

                // Write the bytes to the file.
                fWrite.Write(messageByte, 0, messageByte.Length);

                // Close the stream.
                fWrite.Close();

                // Open a file and read the number of bytes.

                FileStream fRead = new FileStream("test.txt", FileMode.Open);

                // The first byte is the string length.
                int length = (int)fRead.ReadByte();

                // Create a new byte array for the data.
                byte[] readBytes = new byte[length];

                // Read the data from the file.
                fRead.Read(readBytes, 0, readBytes.Length);

                // Close the stream.
                fRead.Close();

                // Display the data.
                Console.WriteLine(Encoding.ASCII.GetString(readBytes));

                Console.WriteLine("Done writing and reading data.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

int main()
{
    try
    {
        // Create a file and write data to it.

        // Create an array of bytes.
        array<Byte>^ messageByte =
            Encoding::ASCII->GetBytes("Here is some data.");

        // Specify an access control list (ACL)
        FileSecurity^ fs = gcnew FileSecurity();

        fs->AddAccessRule(
            gcnew FileSystemAccessRule("MYDOMAIN\\MyAccount",
            FileSystemRights::Modify, AccessControlType::Allow));

        // Create a file using the FileStream class.
        FileStream^ fWrite = gcnew FileStream("test.txt",
            FileMode::Create, FileSystemRights::Modify,
            FileShare::None, 8, FileOptions::None, fs);

        // Write the number of bytes to the file.
        fWrite->WriteByte((Byte)messageByte->Length);

        // Write the bytes to the file.
        fWrite->Write(messageByte, 0, messageByte->Length);

        // Close the stream.
        fWrite->Close();

        // Open a file and read the number of bytes.

        FileStream^ fRead =
            gcnew FileStream("test.txt", FileMode::Open);

        // The first byte is the string length.
        int length = (int)fRead->ReadByte();

        // Create a new byte array for the data.
        array<Byte>^ readBytes = gcnew array<Byte>(length);

        // Read the data from the file.
        fRead->Read(readBytes, 0, readBytes->Length);

        // Close the stream.
        fRead->Close();

        // Display the data.
        Console::WriteLine(Encoding::ASCII->GetString(readBytes));

        Console::WriteLine("Done writing and reading data.");
    }

    catch (IdentityNotMappedException^)
    {
        Console::WriteLine("You need to use your own credentials " +
            " 'MYDOMAIN\\MyAccount'.");
    }

    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间


FileShare 枚举

FileShare 枚举

包含用于控制其他 FileStream 对象对同一文件可以具有的访问类型的常数。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration FileShare
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum FileShare
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum class FileShare
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
[<FlagsAttribute>]
type FileShare
 | 成员名称 | 说明
由 XNA Framework 提供支持 | None | 谢绝共享当前文件。文件关闭前，打开该文件的任何请求（由此进程或另一进程发出的请求）都将失败。 谢绝共享当前文件。文件关闭前，打开该文件的任何请求（由此进程或另一进程发出的请求）都将失败。
由 XNA Framework 提供支持 | Read | 允许随后打开文件读取。如果未指定此标志，则文件关闭前，任何打开该文件以进行读取的请求（由此进程或另一进程发出的请求）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。 允许随后打开文件读取。如果未指定此标志，则文件关闭前，任何打开该文件以进行读取的请求（由此进程或另一进程发出的请求）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。 允许随后打开文件读取。如果未指定此标志，则文件关闭前，任何打开该文件以进行读取的请求（由此进程或另一进程发出的请求）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。
由 XNA Framework 提供支持 | Write | 允许随后打开文件写入。如果未指定此标志，则文件关闭前，任何打开该文件以进行写入的请求（由此进程或另一进过程发出的请求）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。 允许随后打开文件写入。如果未指定此标志，则文件关闭前，任何打开该文件以进行写入的请求（由此进程或另一进过程发出的请求）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。 允许随后打开文件写入。如果未指定此标志，则文件关闭前，任何打开该文件以进行写入的请求（由此进程或另一进过程发出的请求）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。
由 XNA Framework 提供支持 | ReadWrite | 允许随后打开文件读取或写入。如果未指定此标志，则文件关闭前，任何打开该文件以进行读取或写入的请求（由此进程或另一进程发出）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。 允许随后打开文件读取或写入。如果未指定此标志，则文件关闭前，任何打开该文件以进行读取或写入的请求（由此进程或另一进程发出）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。 允许随后打开文件读取或写入。如果未指定此标志，则文件关闭前，任何打开该文件以进行读取或写入的请求（由此进程或另一进程发出）都将失败。但是，即使指定了此标志，仍可能需要附加权限才能够访问该文件。
 | Delete | 允许随后删除文件。
 | Inheritable | 使文件句柄可由子进程继承。Win32 不直接支持此功能。 使文件句柄可由子进程继承。Win32 不直接支持此功能。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

此枚举的典型用法是定义两个进程是否可同时从同一个文件中读取。例如，如果文件已打开并指定了 Read，则其他用户可打开该文件读取，但不能写入。 此枚举的典型用法是定义两个进程是否可同时从同一个文件中读取。例如，如果文件已打开并指定了 Read，则其他用户可打开该文件读取，但不能写入。

FileShare 参数在 FileStream 和 IsolatedStorageFileStream 的某些构造函数中，以及在 File 和 FileInfo 的某些 Open 方法中指定，用以控制打开文件的方式。

下面的 FileStream 构造函数打开现有文件并将只读访问权限授予其他用户 (Read)。

Dim s2 As New FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read)

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read);

FileStream^ s2 = gcnew FileStream( name, FileMode::Open, FileAccess::Read, FileShare::Read );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

System.IO 命名空间
File Open
FileInfo Open
FileStream
IsolatedStorageFileStream

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileStream 类

FileStream 类
成员

公开以文件为主的 Stream，既支持同步读写操作，也支持异步读写操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(True)> _
Public Class FileStream _
    Inherits Stream
[ComVisibleAttribute(true)]
public class FileStream : Stream
[ComVisibleAttribute(true)]
public ref class FileStream : public Stream
[<ComVisibleAttribute(true)>]
type FileStream =
    class
        inherit Stream
    end

使用 FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作，并对其他与文件相关的操作系统句柄进行操作，如管道、标准输入和标准输出。可以指定读写操作是同步还是异步。FileStream 缓冲输入和输出以获得更好的性能。 使用 FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作，并对其他与文件相关的操作系统句柄进行操作，如管道、标准输入和标准输出。可以指定读写操作是同步还是异步。FileStream 缓冲输入和输出以获得更好的性能。 使用 FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作，并对其他与文件相关的操作系统句柄进行操作，如管道、标准输入和标准输出。可以指定读写操作是同步还是异步。FileStream 缓冲输入和输出以获得更好的性能。

FileStream 对象支持使用 Seek 方法对文件进行随机访问。Seek 允许将读取/写入位置移动到文件中的任意位置。这是通过字节偏移参考点参数完成的。字节偏移量是相对于查找参考点而言的，该参考点可以是基础文件的开始、当前位置或结尾，分别由 SeekOrigin 类的三个属性表示。 FileStream 对象支持使用 Seek 方法对文件进行随机访问。Seek 允许将读取/写入位置移动到文件中的任意位置。这是通过字节偏移参考点参数完成的。字节偏移量是相对于查找参考点而言的，该参考点可以是基础文件的开始、当前位置或结尾，分别由 SeekOrigin 类的三个属性表示。 FileStream 对象支持使用 Seek 方法对文件进行随机访问。Seek 允许将读取/写入位置移动到文件中的任意位置。这是通过字节偏移参考点参数完成的。字节偏移量是相对于查找参考点而言的，该参考点可以是基础文件的开始、当前位置或结尾，分别由 SeekOrigin 类的三个属性表示。 FileStream 对象支持使用 Seek 方法对文件进行随机访问。Seek 允许将读取/写入位置移动到文件中的任意位置。这是通过字节偏移参考点参数完成的。字节偏移量是相对于查找参考点而言的，该参考点可以是基础文件的开始、当前位置或结尾，分别由 SeekOrigin 类的三个属性表示。

说明 说明

磁盘文件始终支持随机访问。在构造时，CanSeek 属性值设置为 true 或 false，具体取决于基础文件类型。具体地说，就是当基础文件类型是 FILE_TYPE_DISK（如 winbase.h 中所定义）时，CanSeek 属性值为 true。否则，CanSeek 属性值为 false。 磁盘文件始终支持随机访问。在构造时，CanSeek 属性值设置为 true 或 false，具体取决于基础文件类型。具体地说，就是当基础文件类型是 FILE_TYPE_DISK（如 winbase.h 中所定义）时，CanSeek 属性值为 true。否则，CanSeek 属性值为 false。 磁盘文件始终支持随机访问。在构造时，CanSeek 属性值设置为 true 或 false，具体取决于基础文件类型。具体地说，就是当基础文件类型是 FILE_TYPE_DISK（如 winbase.h 中所定义）时，CanSeek 属性值为 true。否则，CanSeek 属性值为 false。 磁盘文件始终支持随机访问。在构造时，CanSeek 属性值设置为 true 或 false，具体取决于基础文件类型。具体地说，就是当基础文件类型是 FILE_TYPE_DISK（如 winbase.h 中所定义）时，CanSeek 属性值为 true。否则，CanSeek 属性值为 false。

虽然同步方法 Read 和 Write 以及异步方法 BeginRead、BeginWrite、EndRead 和 EndWrite 在同步或异步模式下都可以工作，但模式会影响这些方法的性能。FileStream 默认为同步打开文件，但提供了 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数以异步方式打开文件。 虽然同步方法 Read 和 Write 以及异步方法 BeginRead、BeginWrite、EndRead 和 EndWrite 在同步或异步模式下都可以工作，但模式会影响这些方法的性能。FileStream 默认为同步打开文件，但提供了 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数以异步方式打开文件。

如果进程因文件的一部分锁定而终止或者关闭具有未解除锁定的文件，则行为是未定义的。

有关目录和其他文件操作的信息，请参见 File、Directory 和 Path 类。File 类是实用工具类，所带静态方法主要用于根据文件路径和标准输入、标准输出以及标准错误设备创建 FileStream 对象。MemoryStream 类通过字节数组创建流，而且功能与 FileStream 类似。 有关目录和其他文件操作的信息，请参见 File、Directory 和 Path 类。File 类是实用工具类，所带静态方法主要用于根据文件路径和标准输入、标准输出以及标准错误设备创建 FileStream 对象。MemoryStream 类通过字节数组创建流，而且功能与 FileStream 类似。 有关目录和其他文件操作的信息，请参见 File、Directory 和 Path 类。File 类是实用工具类，所带静态方法主要用于根据文件路径和标准输入、标准输出以及标准错误设备创建 FileStream 对象。MemoryStream 类通过字节数组创建流，而且功能与 FileStream 类似。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

流位置更改检测

如果 FileStream 对象没有独占持有其句柄，则另一个线程可以并发访问该文件句柄并更改与该文件句柄关联的操作系统的文件指针的位置。在这种情况下，FileStream 对象中的缓存位置和缓冲区中的缓存数据会受到危害。FileStream 对象会对访问缓存缓冲区的方法执行例行检查，以确保操作系统的句柄位置与 FileStream 对象使用的缓存位置相同。 如果 FileStream 对象没有独占持有其句柄，则另一个线程可以并发访问该文件句柄并更改与该文件句柄关联的操作系统的文件指针的位置。在这种情况下，FileStream 对象中的缓存位置和缓冲区中的缓存数据会受到危害。FileStream 对象会对访问缓存缓冲区的方法执行例行检查，以确保操作系统的句柄位置与 FileStream 对象使用的缓存位置相同。 如果 FileStream 对象没有独占持有其句柄，则另一个线程可以并发访问该文件句柄并更改与该文件句柄关联的操作系统的文件指针的位置。在这种情况下，FileStream 对象中的缓存位置和缓冲区中的缓存数据会受到危害。FileStream 对象会对访问缓存缓冲区的方法执行例行检查，以确保操作系统的句柄位置与 FileStream 对象使用的缓存位置相同。

如果在调用 Read 方法时检测到句柄位置发生意外更改，则 .NET Framework 会丢弃缓冲区的内容并从文件重新读取流。根据文件大小和任何其他可能影响文件流位置的进程，这可能会对性能产生影响。 如果在调用 Read 方法时检测到句柄位置发生意外更改，则 .NET Framework 会丢弃缓冲区的内容并从文件重新读取流。根据文件大小和任何其他可能影响文件流位置的进程，这可能会对性能产生影响。

如果在调用 Write 方法时检测到句柄位置发生意外更改，则丢弃缓冲区的内容并引发 IOException。

访问 SafeFileHandle 属性以公开句柄或为 FileStream 对象在其构造函数中提供 SafeFileHandle 属性时，FileStream 对象不会独占持有其句柄。

下面的示例演示一些 FileStream 构造函数的用法。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' Delete the file if it exists.
        If File.Exists(path) Then
            File.Delete(path)
        End If

        'Create the file.
        Dim fs As FileStream = File.Create(path)

        AddText(fs, "This is some text")
        AddText(fs, "This is some more text,")
        AddText(fs, Environment.NewLine & "and this is on a new line")
        AddText(fs, Environment.NewLine & Environment.NewLine)
        AddText(fs, "The following is a subset of characters:" & Environment.NewLine)

        Dim i As Integer

        For i = 1 To 120
            AddText(fs, Convert.ToChar(i).ToString())

        Next

        fs.Close()

        'Open the stream and read it back.
        fs = File.OpenRead(path)
        Dim b(1024) As Byte
        Dim temp As UTF8Encoding = New UTF8Encoding(True)

        Do While fs.Read(b, 0, b.Length) > 0
            Console.WriteLine(temp.GetString(b))
        Loop

        fs.Close()
    End Sub

    Private Shared Sub AddText(ByVal fs As FileStream, ByVal value As String)
        Dim info As Byte() = New UTF8Encoding(True).GetBytes(value)
        fs.Write(info, 0, info.Length)
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            AddText(fs, "This is some text");
            AddText(fs, "This is some more text,");
            AddText(fs, "\r\nand this is on a new line");
            AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

            for (int i=1;i < 120;i++)
            {
                AddText(fs, Convert.ToChar(i).ToString());

            }
        }

        //Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }

    private static void AddText(FileStream fs, string value)
    {
        byte[] info = new UTF8Encoding(true).GetBytes(value);
        fs.Write(info, 0, info.Length);
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

void AddText( FileStream^ fs, String^ value )
{
   array<Byte>^info = (gcnew UTF8Encoding( true ))->GetBytes( value );
   fs->Write( info, 0, info->Length );
}

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Delete the file if it exists.
   if ( File::Exists( path ) )
   {
      File::Delete( path );
   }

   //Create the file.
   {
      FileStream^ fs = File::Create( path );
      try
      {
         AddText( fs, "This is some text" );
         AddText( fs, "This is some more text," );
         AddText( fs, "\r\nand this is on a new line" );
         AddText( fs, "\r\n\r\nThe following is a subset of characters:\r\n" );
         for ( int i = 1; i < 120; i++ )
         {
            AddText( fs, Convert::ToChar( i ).ToString() );

            //Split the output at every 10th character.
            if ( Math::IEEERemainder( Convert::ToDouble( i ), 10 ) == 0 )
            {
               AddText( fs, "\r\n" );
            }
         }
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }

   //Open the stream and read it back.
   {
      FileStream^ fs = File::OpenRead( path );
      try
      {
         array<Byte>^b = gcnew array<Byte>(1024);
         UTF8Encoding^ temp = gcnew UTF8Encoding( true );
         while ( fs->Read( b, 0, b->Length ) > 0 )
         {
            Console::WriteLine( temp->GetString( b ) );
         }
      }
      finally
      {
         if ( fs )
            delete (IDisposable^)fs;
      }
   }
}

下面的示例打开一个文件（如果文件不存在则创建该文件）并将信息追加到文件末尾。

Imports System
Imports System.IO
Imports System.Text

Class FSOpenWrite

    Public Shared Sub Main()
        Dim fs As New FileStream("c:\Variables.txt", FileMode.Append, FileAccess.Write, FileShare.Write)
        fs.Close()
        Dim sw As New StreamWriter("c:\Variables.txt", True, Encoding.ASCII)
        Dim NextLine As String = "This is the appended text."
        sw.Write(NextLine)
        sw.Close()
    End Sub 'Main
End Class 'FSOpenWrite

using System;
using System.IO;
using System.Text;

class FSOpenWrite
{
    public static void Main()
    {
        FileStream fs=new FileStream("c:\\Variables.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
        fs.Close();
        StreamWriter sw=new StreamWriter("c:\\Variables.txt", true, Encoding.ASCII);
        string NextLine="This is the appended line.";
        sw.Write(NextLine);
        sw.Close();
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   FileStream^ fs = gcnew FileStream( "c:\\Variables.txt",FileMode::Append,FileAccess::Write,FileShare::Write );
   fs->Close();
   StreamWriter^ sw = gcnew StreamWriter( "c:\\Variables.txt",true,Encoding::ASCII );
   String^ NextLine = "This is the appended line.";
   sw->Write( NextLine );
   sw->Close();
}

System.IO System.IO..::.FileStreamFileStream

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 成员
System.IO 命名空间
File
FileAccess
FileMode
FileShare

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileStream 成员

FileStream 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

公开以文件为主的 Stream，既支持同步读写操作，也支持异步读写操作。

FileStream 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileStream 类
System.IO 命名空间


FileStream 构造函数

FileStream 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

初始化 FileStream 类的新实例。

名称 说明
页首

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream 构造函数 (IntPtr, FileAccess)

FileStream 构造函数 (IntPtr, FileAccess)
FileStream 类

注意：此 API 现在已过时。

使用指定的读/写权限为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead.  http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Sub New ( _
    handle As IntPtr, _
    access As FileAccess _
)
[ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(
    IntPtr handle,
    FileAccess access
)
[ObsoleteAttribute(L"This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public:
FileStream(
    IntPtr handle,
    FileAccess access
)
[<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
new :
        handle:IntPtr *
        access:FileAccess -> FileStream

参数

handle
类型： System IntPtr
当前 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
一个常数，用于设置 FileStream 对象的 CanRead 和 CanWrite 属性。
异常 | 条件
ArgumentException | access 不是 FileAccess 的字段。
SecurityException | 调用方没有所要求的权限。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

当调用 Close 时，句柄也关闭，而且文件的句柄计数减少。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (SafeFileHandle, FileAccess)

FileStream 构造函数 (SafeFileHandle, FileAccess)
FileStream 类

使用指定的读/写权限为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    handle As SafeFileHandle, _
    access As FileAccess _
)
public FileStream(
    SafeFileHandle handle,
    FileAccess access
)
public:
FileStream(
    SafeFileHandle^ handle,
    FileAccess access
)
new :
        handle:SafeFileHandle *
        access:FileAccess -> FileStream

参数

handle
类型： Microsoft.Win32.SafeHandles SafeFileHandle
当前 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
一个常数，用于设置 FileStream 对象的 CanRead 和 CanWrite 属性。
异常 | 条件
ArgumentException | access 不是 FileAccess 的字段。
SecurityException | 调用方没有所要求的权限。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

当调用 Close 时，句柄也关闭，而且文件的句柄计数减少。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode)

FileStream 构造函数 (String, FileMode)
FileStream 类

使用指定的路径和创建模式初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode _
)
public FileStream(
    string path,
    FileMode mode
)
public:
FileStream(
    String^ path,
    FileMode mode
)
new :
        path:string *
        mode:FileMode -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
异常 | 条件
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SecurityException | 调用方没有所要求的权限。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 流已关闭。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
ArgumentOutOfRangeException | mode 包含无效值。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

此构造函数被授予对文件的读/写访问权限，并且以共享“读”访问的模式打开（即此进程或另一进程打开文件进行写入的请求将失败，直到 FileStream 对象已关闭；但读尝试将成功）。缓冲区大小设置为默认大小 4096 字节 (4 KB)。 此构造函数被授予对文件的读/写访问权限，并且以共享“读”访问的模式打开（即此进程或另一进程打开文件进行写入的请求将失败，直到 FileStream 对象已关闭；但读尝试将成功）。缓冲区大小设置为默认大小 4096 字节 (4 KB)。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

对于没有 FileAccess 参数的构造函数，如果将 mode 参数设置为 Append，则 Write 为默认访问权限。否则，将访问权限设置为 ReadWrite。 对于没有 FileAccess 参数的构造函数，如果将 mode 参数设置为 Append，则 Write 为默认访问权限。否则，将访问权限设置为 ReadWrite。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何逐字节地向文件中写入数据，然后验证数据是否被正确写入。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Text

Class FStream

    Shared Sub Main()

        Const fileName As String = "Test#@@#.dat"

        ' Create random data to write to the file.
        Dim dataArray(100000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(dataArray)

        Dim fileStream As FileStream = _
            new FileStream(fileName, FileMode.Create)
        Try

            ' Write the data to the file, byte by byte.
            For i As Integer = 0 To dataArray.Length - 1
                fileStream.WriteByte(dataArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            fileStream.Seek(0, SeekOrigin.Begin)

            ' Read and verify the data.
            For i As Integer = 0 To _
                CType(fileStream.Length, Integer) - 1

                If dataArray(i) <> fileStream.ReadByte() Then
                    Console.WriteLine("Error writing data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written to {0} " & _
                "and verified.", fileStream.Name)
        Finally
            fileStream.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class FStream
{
    static void Main()
    {
        const string fileName = "Test#@@#.dat";

        // Create random data to write to the file.
        byte[] dataArray = new byte[100000];
        new Random().NextBytes(dataArray);

        using(FileStream
            fileStream = new FileStream(fileName, FileMode.Create))
        {
            // Write the data to the file, byte by byte.
            for(int i = 0; i < dataArray.Length; i++)
            {
                fileStream.WriteByte(dataArray[i]);
            }

            // Set the stream position to the beginning of the file.
            fileStream.Seek(0, SeekOrigin.Begin);

            // Read and verify the data.
            for(int i = 0; i < fileStream.Length; i++)
            {
                if(dataArray[i] != fileStream.ReadByte())
                {
                    Console.WriteLine("Error writing data.");
                    return;
                }
            }
            Console.WriteLine("The data was written to {0} " +
                "and verified.", fileStream.Name);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ fileName =  "Test@##@.dat";

   // Create random data to write to the file.
   array<Byte>^dataArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( dataArray );
   FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
   try
   {

      // Write the data to the file, byte by byte.
      for ( int i = 0; i < dataArray->Length; i++ )
      {
         fileStream->WriteByte( dataArray[ i ] );

      }

      // Set the stream position to the beginning of the file.
      fileStream->Seek( 0, SeekOrigin::Begin );

      // Read and verify the data.
      for ( int i = 0; i < fileStream->Length; i++ )
      {
         if ( dataArray[ i ] != fileStream->ReadByte() )
         {
            Console::WriteLine( "Error writing data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written to {0} "
      "and verified.", fileStream->Name );
   }
   finally
   {
      fileStream->Close();
   }

}
  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间
InvalidPathChars

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (IntPtr, FileAccess, Boolean)

FileStream 构造函数 (IntPtr, FileAccess, Boolean)
FileStream 类

注意：此 API 现在已过时。

使用指定的读/写权限和 FileStream 实例所属权为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Sub New ( _
    handle As IntPtr, _
    access As FileAccess, _
    ownsHandle As Boolean _
)
[ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(
    IntPtr handle,
    FileAccess access,
    bool ownsHandle
)
[ObsoleteAttribute(L"This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")]
public:
FileStream(
    IntPtr handle,
    FileAccess access,
    bool ownsHandle
)
[<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")>]
new :
        handle:IntPtr *
        access:FileAccess *
        ownsHandle:bool -> FileStream

参数

handle
类型： System IntPtr
当前 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
一个常数，用于获取 FileStream 对象的 CanRead 和 CanWrite 属性。
ownsHandle
类型： System Boolean
如果文件句柄将由此 FileStream 实例所有，则为 true；否则为 false。
异常 | 条件
ArgumentException | access 不是 FileAccess 的字段。
SecurityException | 调用方没有所要求的权限。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此进程拥有句柄，对 Close 方法的调用也会关闭该句柄，而且文件的句柄计数减少。给予 FileStream 对象 8192 字节的默认缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此进程拥有句柄，对 Close 方法的调用也会关闭该句柄，而且文件的句柄计数减少。给予 FileStream 对象 8192 字节的默认缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此进程拥有句柄，对 Close 方法的调用也会关闭该句柄，而且文件的句柄计数减少。给予 FileStream 对象 8192 字节的默认缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此进程拥有句柄，对 Close 方法的调用也会关闭该句柄，而且文件的句柄计数减少。给予 FileStream 对象 8192 字节的默认缓冲区大小。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (SafeFileHandle, FileAccess, Int32)

FileStream 构造函数 (SafeFileHandle, FileAccess, Int32)
FileStream 类

使用指定的读/写权限和缓冲区大小为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    handle As SafeFileHandle, _
    access As FileAccess, _
    bufferSize As Integer _
)
public FileStream(
    SafeFileHandle handle,
    FileAccess access,
    int bufferSize
)
public:
FileStream(
    SafeFileHandle^ handle,
    FileAccess access,
    int bufferSize
)
new :
        handle:SafeFileHandle *
        access:FileAccess *
        bufferSize:int -> FileStream

参数

handle
类型： Microsoft.Win32.SafeHandles SafeFileHandle
当前 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
FileAccess 常数，用于获取 FileStream 对象的 CanRead 和 CanWrite 属性。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
异常 | 条件
ArgumentException | handle 参数是无效的句柄。 - 或 - handle 参数是同步句柄，但被异步使用。
ArgumentOutOfRangeException | bufferSize 参数为负数。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

  • SecurityPermission

    调用非托管代码的权限。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode 调用非托管代码的权限。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileAccess)

FileStream 构造函数 (String, FileMode, FileAccess)
FileStream 类

使用指定的路径、创建模式和读/写权限初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess _
)
public FileStream(
    string path,
    FileMode mode,
    FileAccess access
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileAccess access
)
new :
        path:string *
        mode:FileMode *
        access:FileAccess -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
access
类型： System.IO FileAccess
一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
ArgumentOutOfRangeException | mode 包含无效值。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

此构造函数被授予对文件的读/写访问权限，并且以共享“读”访问的模式打开（即此进程或另一进程打开文件进行写入的请求将失败，直到 FileStream 对象已关闭；但读尝试将成功）。缓冲区大小设置为默认大小 8192 字节 (8 KB)。 此构造函数被授予对文件的读/写访问权限，并且以共享“读”访问的模式打开（即此进程或另一进程打开文件进行写入的请求将失败，直到 FileStream 对象已关闭；但读尝试将成功）。缓冲区大小设置为默认大小 8192 字节 (8 KB)。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (IntPtr, FileAccess, Boolean, Int32)

FileStream 构造函数 (IntPtr, FileAccess, Boolean, Int32)
FileStream 类

注意：此 API 现在已过时。

使用指定的读/写权限、FileStream 实例所属权和缓冲区大小为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Sub New ( _
    handle As IntPtr, _
    access As FileAccess, _
    ownsHandle As Boolean, _
    bufferSize As Integer _
)
[ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(
    IntPtr handle,
    FileAccess access,
    bool ownsHandle,
    int bufferSize
)
[ObsoleteAttribute(L"This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")]
public:
FileStream(
    IntPtr handle,
    FileAccess access,
    bool ownsHandle,
    int bufferSize
)
[<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")>]
new :
        handle:IntPtr *
        access:FileAccess *
        ownsHandle:bool *
        bufferSize:int -> FileStream

参数

handle
类型： System IntPtr
此 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
一个常数，用于获取 FileStream 对象的 CanRead 和 CanWrite 属性。
ownsHandle
类型： System Boolean
如果文件句柄将由此 FileStream 实例所有，则为 true；否则为 false。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
异常 | 条件
ArgumentOutOfRangeException | bufferSize 为负数。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (SafeFileHandle, FileAccess, Int32, Boolean)

FileStream 构造函数 (SafeFileHandle, FileAccess, Int32, Boolean)
FileStream 类

使用指定的读/写权限、缓冲区大小和同步或异步状态为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    handle As SafeFileHandle, _
    access As FileAccess, _
    bufferSize As Integer, _
    isAsync As Boolean _
)
public FileStream(
    SafeFileHandle handle,
    FileAccess access,
    int bufferSize,
    bool isAsync
)
public:
FileStream(
    SafeFileHandle^ handle,
    FileAccess access,
    int bufferSize,
    bool isAsync
)
new :
        handle:SafeFileHandle *
        access:FileAccess *
        bufferSize:int *
        isAsync:bool -> FileStream

参数

handle
类型： Microsoft.Win32.SafeHandles SafeFileHandle
此 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
一个常数，用于获取 FileStream 对象的 CanRead 和 CanWrite 属性。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
isAsync
类型： System Boolean
如果异步（即以重叠的 I/O 模式）打开句柄，则为 true；否则为 false。
异常 | 条件
ArgumentException | handle 参数是无效的句柄。 - 或 - handle 参数是同步句柄，但被异步使用。
ArgumentOutOfRangeException | bufferSize 参数为负数。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

  • SecurityPermission

    调用非托管代码的权限。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode 调用非托管代码的权限。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileAccess, FileShare)

FileStream 构造函数 (String, FileMode, FileAccess, FileShare)
FileStream 类

使用指定的路径、创建模式、读/写权限和共享权限创建 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess, _
    share As FileShare _
)
public FileStream(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileAccess access,
    FileShare share
)
new :
        path:string *
        mode:FileMode *
        access:FileAccess *
        share:FileShare -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
access
类型： System.IO FileAccess
一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。
share
类型： System.IO FileShare
一个常数，用于确定文件如何由进程共享。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 系统正在运行 Windows 98 或 Windows 98 Second Edition，并且 share 设置为 FileShare.Delete。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
ArgumentOutOfRangeException | mode 包含无效值。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

此构造函数被授予对文件的读/写访问权限，并且以共享“读”访问的模式打开（即此进程或另一进程打开文件进行写入的请求将失败，直到 FileStream 对象已关闭；但读尝试将成功）。缓冲区大小设置为默认大小 8192 字节 (8 KB)。 此构造函数被授予对文件的读/写访问权限，并且以共享“读”访问的模式打开（即此进程或另一进程打开文件进行写入的请求将失败，直到 FileStream 对象已关闭；但读尝试将成功）。缓冲区大小设置为默认大小 8192 字节 (8 KB)。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例是为 Lock 方法提供的一个更大示例的一部分。

Dim aFileStream As New FileStream( _
    "Test#@@#.dat", FileMode.OpenOrCreate, _
    FileAccess.ReadWrite, FileShare.ReadWrite)

using(FileStream fileStream = new FileStream(
    "Test#@@#.dat", FileMode.OpenOrCreate,
    FileAccess.ReadWrite, FileShare.ReadWrite))

FileStream^ fileStream = gcnew FileStream( "Test#@@#.dat",FileMode::OpenOrCreate,FileAccess::ReadWrite,FileShare::ReadWrite );
  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (IntPtr, FileAccess, Boolean, Int32, Boolean)

FileStream 构造函数 (IntPtr, FileAccess, Boolean, Int32, Boolean)
FileStream 类

注意：此 API 现在已过时。

使用指定的读/写权限、FileStream 实例所属权、缓冲区大小和同步或异步状态为指定的文件句柄初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Sub New ( _
    handle As IntPtr, _
    access As FileAccess, _
    ownsHandle As Boolean, _
    bufferSize As Integer, _
    isAsync As Boolean _
)
[ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(
    IntPtr handle,
    FileAccess access,
    bool ownsHandle,
    int bufferSize,
    bool isAsync
)
[ObsoleteAttribute(L"This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")]
public:
FileStream(
    IntPtr handle,
    FileAccess access,
    bool ownsHandle,
    int bufferSize,
    bool isAsync
)
[<ObsoleteAttribute("This constructor has been deprecated.  Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed.  http://go.microsoft.com/fwlink/?linkid=14202")>]
new :
        handle:IntPtr *
        access:FileAccess *
        ownsHandle:bool *
        bufferSize:int *
        isAsync:bool -> FileStream

参数

handle
类型： System IntPtr
此 FileStream 对象将封装的文件的文件句柄。
access
类型： System.IO FileAccess
一个常数，用于获取 FileStream 对象的 CanRead 和 CanWrite 属性。
ownsHandle
类型： System Boolean
如果文件句柄将由此 FileStream 实例所有，则为 true；否则为 false。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
isAsync
类型： System Boolean
如果异步（即以重叠的 I/O 模式）打开句柄，则为 true；否则为 false。
异常 | 条件
ArgumentOutOfRangeException | access 小于 FileAccess.Read 或大于 FileAccess.ReadWrite，或者 bufferSize 小于或等于 0。
ArgumentException | 句柄无效。
IOException | 发生 I/O 错误，如磁盘错误。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 对于指定的文件句柄，操作系统不允许所请求的 access，例如，当 access 为 Write 或 ReadWrite 而文件句柄设置为只读访问时。

FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。 FileStream 对象被授予对文件的指定访问权。该句柄的所属权将与指定的相同。如果此 FileStream 拥有句柄，则对 Close 方法的调用也将关闭此句柄。特别是文件的句柄计数减小。FileStream 对象被给予指定的缓冲区大小。

FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。 FileStream 假定它对句柄有独占控制权。当 FileStream 也持有句柄时，读取、写入或查找可能会导致数据破坏。为了数据的安全，请在使用句柄前调用 Flush，并避免在使用完句柄后调用 Close 以外的任何方法。也可以在调用此 FileStream 构造函数前读取或写入句柄。

对于那些没有 FileShare 参数的 FileStream 的构造函数，FileShare.Read 是默认值。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • SecurityPermission

    用于访问非托管代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode。 用于访问非托管代码。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileAccess, FileShare, Int32)

FileStream 构造函数 (String, FileMode, FileAccess, FileShare, Int32)
FileStream 类

用指定的路径、创建模式、读/写及共享权限和缓冲区大小初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess, _
    share As FileShare, _
    bufferSize As Integer _
)
public FileStream(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share,
    int bufferSize
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileAccess access,
    FileShare share,
    int bufferSize
)
new :
        path:string *
        mode:FileMode *
        access:FileAccess *
        share:FileShare *
        bufferSize:int -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
access
类型： System.IO FileAccess
一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。
share
类型： System.IO FileShare
一个常数，用于确定文件如何由进程共享。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。
ArgumentOutOfRangeException | bufferSize 为负或为零。 - 或 - mode、access 或 share 包含无效值。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 系统正在运行 Windows 98 或 Windows 98 Second Edition，并且 share 设置为 FileShare.Delete。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileAccess, FileShare, Int32, Boolean)

FileStream 构造函数 (String, FileMode, FileAccess, FileShare, Int32, Boolean)
FileStream 类

使用指定的路径、创建模式、读/写和共享权限、缓冲区大小和同步或异步状态初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess, _
    share As FileShare, _
    bufferSize As Integer, _
    useAsync As Boolean _
)
public FileStream(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share,
    int bufferSize,
    bool useAsync
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileAccess access,
    FileShare share,
    int bufferSize,
    bool useAsync
)
new :
        path:string *
        mode:FileMode *
        access:FileAccess *
        share:FileShare *
        bufferSize:int *
        useAsync:bool -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
access
类型： System.IO FileAccess
一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。
share
类型： System.IO FileShare
一个常数，用于确定文件如何由进程共享。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
useAsync
类型： System Boolean
指定使用异步 I/O 还是同步 I/O。但是，请注意，基础操作系统可能不支持异步 I/O，因此在指定 true 后，根据所用平台，句柄可能同步打开。当异步打开时，BeginRead 和 BeginWrite 方法在执行大量读或写时效果更好，但对于少量的读/写，这些方法速度可能要慢得多。如果应用程序打算利用异步 I/O，将 useAsync 参数设置为 true。正确使用异步 I/O，可以使应用程序的速度加快 10 倍，但是如果在没有为异步 I/O 重新设计应用程序的情况下使用异步 I/O，则可能使性能降低 10 倍。 指定使用异步 I/O 还是同步 I/O。但是，请注意，基础操作系统可能不支持异步 I/O，因此在指定 true 后，根据所用平台，句柄可能同步打开。当异步打开时，BeginRead 和 BeginWrite 方法在执行大量读或写时效果更好，但对于少量的读/写，这些方法速度可能要慢得多。如果应用程序打算利用异步 I/O，将 useAsync 参数设置为 true。正确使用异步 I/O，可以使应用程序的速度加快 10 倍，但是如果在没有为异步 I/O 重新设计应用程序的情况下使用异步 I/O，则可能使性能降低 10 倍。 指定使用异步 I/O 还是同步 I/O。但是，请注意，基础操作系统可能不支持异步 I/O，因此在指定 true 后，根据所用平台，句柄可能同步打开。当异步打开时，BeginRead 和 BeginWrite 方法在执行大量读或写时效果更好，但对于少量的读/写，这些方法速度可能要慢得多。如果应用程序打算利用异步 I/O，将 useAsync 参数设置为 true。正确使用异步 I/O，可以使应用程序的速度加快 10 倍，但是如果在没有为异步 I/O 重新设计应用程序的情况下使用异步 I/O，则可能使性能降低 10 倍。 指定使用异步 I/O 还是同步 I/O。但是，请注意，基础操作系统可能不支持异步 I/O，因此在指定 true 后，根据所用平台，句柄可能同步打开。当异步打开时，BeginRead 和 BeginWrite 方法在执行大量读或写时效果更好，但对于少量的读/写，这些方法速度可能要慢得多。如果应用程序打算利用异步 I/O，将 useAsync 参数设置为 true。正确使用异步 I/O，可以使应用程序的速度加快 10 倍，但是如果在没有为异步 I/O 重新设计应用程序的情况下使用异步 I/O，则可能使性能降低 10 倍。 指定使用异步 I/O 还是同步 I/O。但是，请注意，基础操作系统可能不支持异步 I/O，因此在指定 true 后，根据所用平台，句柄可能同步打开。当异步打开时，BeginRead 和 BeginWrite 方法在执行大量读或写时效果更好，但对于少量的读/写，这些方法速度可能要慢得多。如果应用程序打算利用异步 I/O，将 useAsync 参数设置为 true。正确使用异步 I/O，可以使应用程序的速度加快 10 倍，但是如果在没有为异步 I/O 重新设计应用程序的情况下使用异步 I/O，则可能使性能降低 10 倍。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentOutOfRangeException | bufferSize 为负或为零。 - 或 - mode、access 或 share 包含无效值。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 系统正在运行 Windows 98 或 Windows 98 Second Edition，并且 share 设置为 FileShare.Delete。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何将数据异步写入文件，然后验证数据是否被正确写入。创建一个 State 对象，以将主线程中的信息传递给 EndReadCallback 和 EndWriteCallback 方法。 下面的代码示例说明如何将数据异步写入文件，然后验证数据是否被正确写入。创建一个 State 对象，以将主线程中的信息传递给 EndReadCallback 和 EndWriteCallback 方法。

Imports System
Imports System.IO
Imports System.Threading

Class FStream

    Shared Sub Main()

        ' Create a synchronization object that gets
        ' signaled when verification is complete.
        Dim manualEvent As New ManualResetEvent(False)

        ' Create random data to write to the file.
        Dim writeArray(100000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(writeArray)

        Dim fStream As New FileStream("Test#@@#.dat", _
            FileMode.Create, FileAccess.ReadWrite, _
            FileShare.None, 4096, True)

        ' Check that the FileStream was opened asynchronously.
        If fStream.IsAsync = True
            Console.WriteLine("fStream was opened asynchronously.")
        Else
            Console.WriteLine("fStream was not opened asynchronously.")
        End If

        ' Asynchronously write to the file.
        Dim asyncResult As IAsyncResult = fStream.BeginWrite( _
            writeArray, 0, writeArray.Length, _
            AddressOf EndWriteCallback , _
            New State(fStream, writeArray, manualEvent))

        ' Concurrently do other work and then wait
        ' for the data to be written and verified.
        manualEvent.WaitOne(5000, False)
    End Sub

    ' When BeginWrite is finished writing data to the file, the
    ' EndWriteCallback method is called to end the asynchronous
    ' write operation and then read back and verify the data.
    Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult)
        Dim tempState As State = _
            DirectCast(asyncResult.AsyncState, State)
        Dim fStream As FileStream = tempState.FStream
        fStream.EndWrite(asyncResult)

        ' Asynchronously read back the written data.
        fStream.Position = 0
        asyncResult = fStream.BeginRead( _
            tempState.ReadArray, 0 , tempState.ReadArray.Length, _
            AddressOf EndReadCallback, tempState)

        ' Concurrently do other work, such as
        ' logging the write operation.
    End Sub

    ' When BeginRead is finished reading data from the file, the
    ' EndReadCallback method is called to end the asynchronous
    ' read operation and then verify the data.
   Private Shared Sub EndReadCallback(asyncResult As IAsyncResult)
        Dim tempState As State = _
            DirectCast(asyncResult.AsyncState, State)
        Dim readCount As Integer = _
            tempState.FStream.EndRead(asyncResult)

        Dim i As Integer = 0
        While(i < readCount)
            If(tempState.ReadArray(i) <> tempState.WriteArray(i))
                Console.WriteLine("Error writing data.")
                tempState.FStream.Close()
                Return
            End If
            i += 1
        End While

        Console.WriteLine("The data was written to {0} and " & _
            "verified.", tempState.FStream.Name)
        tempState.FStream.Close()

        ' Signal the main thread that the verification is finished.
        tempState.ManualEvent.Set()
    End Sub

    ' Maintain state information to be passed to
    ' EndWriteCallback and EndReadCallback.
    Private Class State

        ' fStreamValue is used to read and write to the file.
        Dim fStreamValue As FileStream

        ' writeArrayValue stores data that is written to the file.
        Dim writeArrayValue As Byte()

        ' readArrayValue stores data that is read from the file.
        Dim readArrayValue As Byte()

        ' manualEvent signals the main thread
        ' when verification is complete.
        Dim manualEventValue As ManualResetEvent

        Sub New(aStream As FileStream, anArray As Byte(), _
            manualEvent As ManualResetEvent)

            fStreamValue     = aStream
            writeArrayValue  = anArray
            manualEventValue = manualEvent
            readArrayValue   = New Byte(anArray.Length - 1){}
        End Sub

            Public ReadOnly Property FStream() As FileStream
                Get
                    Return fStreamValue
                End Get
            End Property

            Public ReadOnly Property WriteArray() As Byte()
                Get
                    Return writeArrayValue
                End Get
            End Property

            Public ReadOnly Property ReadArray() As Byte()
                Get
                    Return readArrayValue
                End Get
            End Property

            Public ReadOnly Property ManualEvent() As ManualResetEvent
                Get
                    Return manualEventValue
                End Get
            End Property
    End Class

End Class

using System;
using System.IO;
using System.Threading;

class FStream
{
    static void Main()
    {
        // Create a synchronization object that gets
        // signaled when verification is complete.
        ManualResetEvent manualEvent = new ManualResetEvent(false);

        // Create random data to write to the file.
        byte[] writeArray = new byte[100000];
        new Random().NextBytes(writeArray);

        FileStream fStream =
            new FileStream("Test#@@#.dat", FileMode.Create,
            FileAccess.ReadWrite, FileShare.None, 4096, true);

        // Check that the FileStream was opened asynchronously.
        Console.WriteLine("fStream was {0}opened asynchronously.",
            fStream.IsAsync ? "" : "not ");

        // Asynchronously write to the file.
        IAsyncResult asyncResult = fStream.BeginWrite(
            writeArray, 0, writeArray.Length,
            new AsyncCallback(EndWriteCallback),
            new State(fStream, writeArray, manualEvent));

        // Concurrently do other work and then wait
        // for the data to be written and verified.
        manualEvent.WaitOne(5000, false);
    }

    // When BeginWrite is finished writing data to the file, the
    // EndWriteCallback method is called to end the asynchronous
    // write operation and then read back and verify the data.
    static void EndWriteCallback(IAsyncResult asyncResult)
    {
        State tempState = (State)asyncResult.AsyncState;
        FileStream fStream = tempState.FStream;
        fStream.EndWrite(asyncResult);

        // Asynchronously read back the written data.
        fStream.Position = 0;
        asyncResult = fStream.BeginRead(
            tempState.ReadArray, 0 , tempState.ReadArray.Length,
            new AsyncCallback(EndReadCallback), tempState);

        // Concurrently do other work, such as
        // logging the write operation.
    }

    // When BeginRead is finished reading data from the file, the
    // EndReadCallback method is called to end the asynchronous
    // read operation and then verify the data.
    static void EndReadCallback(IAsyncResult asyncResult)
    {
        State tempState = (State)asyncResult.AsyncState;
        int readCount = tempState.FStream.EndRead(asyncResult);

        int i = 0;
        while(i < readCount)
        {
            if(tempState.ReadArray[i] != tempState.WriteArray[i++])
            {
                Console.WriteLine("Error writing data.");
                tempState.FStream.Close();
                return;
            }
        }
        Console.WriteLine("The data was written to {0} and verified.",
            tempState.FStream.Name);
        tempState.FStream.Close();

        // Signal the main thread that the verification is finished.
        tempState.ManualEvent.Set();
    }

    // Maintain state information to be passed to
    // EndWriteCallback and EndReadCallback.
    class State
    {
        // fStream is used to read and write to the file.
        FileStream fStream;

        // writeArray stores data that is written to the file.
        byte[] writeArray;

        // readArray stores data that is read from the file.
        byte[] readArray;

        // manualEvent signals the main thread
        // when verification is complete.
        ManualResetEvent manualEvent;

        public State(FileStream fStream, byte[] writeArray,
            ManualResetEvent manualEvent)
        {
            this.fStream   = fStream;
            this.writeArray = writeArray;
            this.manualEvent = manualEvent;
            readArray = new byte[writeArray.Length];
        }

        public FileStream FStream
        { get{ return fStream; } }

        public byte[] WriteArray
        { get{ return writeArray; } }

        public byte[] ReadArray
        { get{ return readArray; } }

        public ManualResetEvent ManualEvent
        { get{ return manualEvent; } }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Threading;

// Maintain state information to be passed to
// EndWriteCallback and EndReadCallback.
ref class State
{
private:

   // fStream is used to read and write to the file.
   FileStream^ fStream;

   // writeArray stores data that is written to the file.
   array<Byte>^writeArray;

   // readArray stores data that is read from the file.
   array<Byte>^readArray;

   // manualEvent signals the main thread
   // when verification is complete.
   ManualResetEvent^ manualEvent;

public:
   State( FileStream^ fStream, array<Byte>^writeArray, ManualResetEvent^ manualEvent )
   {
      this->fStream = fStream;
      this->writeArray = writeArray;
      this->manualEvent = manualEvent;
      readArray = gcnew array<Byte>(writeArray->Length);
   }

   property FileStream^ FStream
   {
      FileStream^ get()
      {
         return fStream;
      }

   }

   property array<Byte>^ WriteArray
   {
      array<Byte>^ get()
      {
         return writeArray;
      }

   }

   property array<Byte>^ ReadArray
   {
      array<Byte>^ get()
      {
         return readArray;
      }

   }

   property ManualResetEvent^ ManualEvent
   {
      ManualResetEvent^ get()
      {
         return manualEvent;
      }

   }

};

ref class FStream
{
private:

   // When BeginRead is finished reading data from the file, the
   // EndReadCallback method is called to end the asynchronous
   // read operation and then verify the data.
   static void EndReadCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
      int readCount = tempState->FStream->EndRead( asyncResult );
      int i = 0;
      while ( i < readCount )
      {
         if ( tempState->ReadArray[ i ] != tempState->WriteArray[ i++ ] )
         {
            Console::WriteLine( "Error writing data." );
            tempState->FStream->Close();
            return;
         }
      }

      Console::WriteLine( "The data was written to {0} "
      "and verified.", tempState->FStream->Name );
      tempState->FStream->Close();

      // Signal the main thread that the verification is finished.
      tempState->ManualEvent->Set();
   }

public:

   // When BeginWrite is finished writing data to the file, the
   // EndWriteCallback method is called to end the asynchronous
   // write operation and then read back and verify the data.
   static void EndWriteCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
      FileStream^ fStream = tempState->FStream;
      fStream->EndWrite( asyncResult );

      // Asynchronously read back the written data.
      fStream->Position = 0;
      asyncResult = fStream->BeginRead( tempState->ReadArray, 0, tempState->ReadArray->Length, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState );

      // Concurrently do other work, such as
      // logging the write operation.
   }

};

int main()
{

   // Create a synchronization object that gets
   // signaled when verification is complete.
   ManualResetEvent^ manualEvent = gcnew ManualResetEvent( false );

   // Create the data to write to the file.
   array<Byte>^writeArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( writeArray );
   FileStream^ fStream = gcnew FileStream(  "Test#@@#.dat",FileMode::Create,FileAccess::ReadWrite,FileShare::None,4096,true );

   // Check that the FileStream was opened asynchronously.
   Console::WriteLine( "fStream was {0}opened asynchronously.", fStream->IsAsync ? (String^)"" : "not " );

   // Asynchronously write to the file.
   IAsyncResult^ asyncResult = fStream->BeginWrite( writeArray, 0, writeArray->Length, gcnew AsyncCallback( &FStream::EndWriteCallback ), gcnew State( fStream,writeArray,manualEvent ) );

   // Concurrently do other work and then wait
   // for the data to be written and verified.
   manualEvent->WaitOne( 5000, false );
}
  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间
File

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileAccess, FileShare, Int32, FileOptions)

FileStream 构造函数 (String, FileMode, FileAccess, FileShare, Int32, FileOptions)
FileStream 类

使用指定的路径、创建模式、读/写和共享权限、其他 FileStreams 可以具有的对此文件的访问权限、缓冲区大小和附加文件选项初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    access As FileAccess, _
    share As FileShare, _
    bufferSize As Integer, _
    options As FileOptions _
)
public FileStream(
    string path,
    FileMode mode,
    FileAccess access,
    FileShare share,
    int bufferSize,
    FileOptions options
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileAccess access,
    FileShare share,
    int bufferSize,
    FileOptions options
)
new :
        path:string *
        mode:FileMode *
        access:FileAccess *
        share:FileShare *
        bufferSize:int *
        options:FileOptions -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
access
类型： System.IO FileAccess
一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。 一个常数，用于确定 FileStream 对象访问文件的方式。这将获取 FileStream 对象的 CanRead 和 CanWrite 属性。如果 path 指定磁盘文件，则 CanSeek 为 true。
share
类型： System.IO FileShare
一个常数，用于确定文件如何由进程共享。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
options
类型： System.IO FileOptions
一个值，用于指定附加文件选项。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentOutOfRangeException | bufferSize 为负或为零。 - 或 - mode、access 或 share 包含无效值。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。 - 或 - 为 options 指定了 Encrypted，但是当前平台不支持文件加密。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

fileOptions 参数用于提供对更多高级操作的访问，当创建 FileStream 对象时可利用这些操作。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将数据写入一个文件，然后使用 FileStream 对象读取数据。

Imports System
Imports System.IO
Imports System.Text
Imports System.Security.AccessControl

Module FileStreamExample

    Sub Main()
        Try
            ' Create a file and write data to it.
            ' Create an array of bytes.
            Dim messageByte As Byte() = Encoding.ASCII.GetBytes("Here is some data.")

            ' Create a file using the FileStream class.
            Dim fWrite As New FileStream("test.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 8, FileOptions.None)

            ' Write the number of bytes to the file.
            fWrite.WriteByte(System.Convert.ToByte(messageByte.Length))

            ' Write the bytes to the file.
            fWrite.Write(messageByte, 0, messageByte.Length)

            ' Close the stream.
            fWrite.Close()

            ' Open a file and read the number of bytes.
            Dim fRead As New FileStream("test.txt", FileMode.Open)

            ' The first byte is the string length.
            Dim length As Integer = Fix(fRead.ReadByte())

            ' Create a new byte array for the data.
            Dim readBytes(length) As Byte

            ' Read the data from the file.
            fRead.Read(readBytes, 0, readBytes.Length)

            ' Close the stream.
            fRead.Close()

            ' Display the data.
            Console.WriteLine(Encoding.ASCII.GetString(readBytes))

            Console.WriteLine("Done writing and reading data.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub
End Module

using System;
using System.IO;
using System.Text;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileStreamExample
    {
        public static void Main()
        {
            try
            {
                // Create a file and write data to it.

                // Create an array of bytes.
                byte[] messageByte = Encoding.ASCII.GetBytes("Here is some data.");

                // Create a file using the FileStream class.
                FileStream fWrite = new FileStream("test.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 8, FileOptions.None);

                // Write the number of bytes to the file.
                fWrite.WriteByte((byte)messageByte.Length);

                // Write the bytes to the file.
                fWrite.Write(messageByte, 0, messageByte.Length);

                // Close the stream.
                fWrite.Close();

                // Open a file and read the number of bytes.

                FileStream fRead = new FileStream("test.txt", FileMode.Open);

                // The first byte is the string length.
                int length = (int)fRead.ReadByte();

                // Create a new byte array for the data.
                byte[] readBytes = new byte[length];

                // Read the data from the file.
                fRead.Read(readBytes, 0, readBytes.Length);

                // Close the stream.
                fRead.Close();

                // Display the data.
                Console.WriteLine(Encoding.ASCII.GetString(readBytes));

                Console.WriteLine("Done writing and reading data.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }
    }
}

#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Security::AccessControl;

int main()
{
    try
    {
        // Create a file and write data to it.

        // Create an array of bytes.
        array<Byte>^ messageByte =
            Encoding::ASCII->GetBytes("Here is some data.");

        // Create a file using the FileStream class.
        FileStream^ fWrite = gcnew FileStream("test.txt", FileMode::Create,
            FileAccess::ReadWrite, FileShare::None, 8, FileOptions::None);

        // Write the number of bytes to the file.
        fWrite->WriteByte((Byte)messageByte->Length);

        // Write the bytes to the file.
        fWrite->Write(messageByte, 0, messageByte->Length);

        // Close the stream.
        fWrite->Close();

        // Open a file and read the number of bytes.

        FileStream^ fRead = gcnew FileStream("test.txt",
            FileMode::Open);

        // The first byte is the string length.
        int length = (int)fRead->ReadByte();

        // Create a new byte array for the data.
        array<Byte>^ readBytes = gcnew array<Byte>(length);

        // Read the data from the file.
        fRead->Read(readBytes, 0, readBytes->Length);

        // Close the stream.
        fRead->Close();

        // Display the data.
        Console::WriteLine(Encoding::ASCII->GetString(readBytes));

        Console::WriteLine("Done writing and reading data.");
    }
    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)

FileStream 构造函数 (String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)
FileStream 类

使用指定的路径、创建模式、访问权限和共享权限、缓冲区大小和附加文件选项初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    rights As FileSystemRights, _
    share As FileShare, _
    bufferSize As Integer, _
    options As FileOptions _
)
public FileStream(
    string path,
    FileMode mode,
    FileSystemRights rights,
    FileShare share,
    int bufferSize,
    FileOptions options
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileSystemRights rights,
    FileShare share,
    int bufferSize,
    FileOptions options
)
new :
        path:string *
        mode:FileMode *
        rights:FileSystemRights *
        share:FileShare *
        bufferSize:int *
        options:FileOptions -> FileStream

参数

path
类型： System String
当前 FileStream 对象将封装的文件的相对路径或绝对路径。
mode
类型： System.IO FileMode
一个常数，用于确定如何打开或创建文件。
rights
类型： System.Security.AccessControl FileSystemRights
一个常数，用于确定为文件创建访问和审核规则时要使用的访问权。
share
类型： System.IO FileShare
一个常数，用于确定文件如何由进程共享。
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
options
类型： System.IO FileOptions
一个常数，用于指定附加文件选项。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentOutOfRangeException | bufferSize 为负或为零。 - 或 - mode、access 或 share 包含无效值。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。 - 或 - 为 options 指定了 Encrypted，但是当前平台不支持文件加密。
PathTooLongException | 指定的 path、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的 path、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

使用此 FileStream 构造函数在文件的创建点应用访问权限。若要访问或修改现有文件的权限，请考虑使用 GetAccessControl 和 SetAccessControl 方法。 使用此 FileStream 构造函数在文件的创建点应用访问权限。若要访问或修改现有文件的权限，请考虑使用 GetAccessControl 和 SetAccessControl 方法。

fileOptions 参数用于提供对更多高级操作的访问，当创建 FileStream 对象时可利用这些操作。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 构造函数 (String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

FileStream 构造函数 (String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)
FileStream 类

使用指定的路径、创建模式、访问权限和共享权限、缓冲区大小、附加文件选项、访问控制和审核安全初始化 FileStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    mode As FileMode, _
    rights As FileSystemRights, _
    share As FileShare, _
    bufferSize As Integer, _
    options As FileOptions, _
    fileSecurity As FileSecurity _
)
public FileStream(
    string path,
    FileMode mode,
    FileSystemRights rights,
    FileShare share,
    int bufferSize,
    FileOptions options,
    FileSecurity fileSecurity
)
public:
FileStream(
    String^ path,
    FileMode mode,
    FileSystemRights rights,
    FileShare share,
    int bufferSize,
    FileOptions options,
    FileSecurity^ fileSecurity
)
new :
        path:string *
        mode:FileMode *
        rights:FileSystemRights *
        share:FileShare *
        bufferSize:int *
        options:FileOptions *
        fileSecurity:FileSecurity -> FileStream

参数

path
类型： System String
mode
类型： System.IO FileMode
rights
类型： System.Security.AccessControl FileSystemRights
share
类型： System.IO FileShare
bufferSize
类型： System Int32
一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。 一个大于零的正 Int32 值，表示缓冲区大小。对于 1 和 8 之间的 bufferSize 值，缓冲区的实际大小设置为 8 字节。
options
类型： System.IO FileOptions
fileSecurity
类型： System.Security.AccessControl FileSecurity
一个常数，用于确定文件的访问控制和审核安全。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为空字符串 ("")，只包含空格，或者包含一个或多个无效字符。 - 或 - path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在 NTFS 环境中。
NotSupportedException | path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。 path 引用一个非文件设备，例如“con:”、“com1:”、“lpt1:”等。在非 NTFS 环境中。
ArgumentOutOfRangeException | bufferSize 为负或为零。 - 或 - mode、access 或 share 包含无效值。
FileNotFoundException | 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。 找不到文件，比如当 mode 是 FileMode.Truncate 或 FileMode.Open 而 path 指定的文件不存在时。文件必须已经以这些模式存在。
IOException | 发生 I/O 错误，比如指定 FileMode.CreateNew 而 path 指定的文件已存在。 - 或 - 流已关闭。
SecurityException | 调用方没有所要求的权限。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
UnauthorizedAccessException | 对于指定的 path 操作系统不允许所请求的 access，比如当 access 是 Write 或 ReadWrite 而文件或目录设置为只读访问时。 - 或 - 为 options 指定了 Encrypted，但是当前平台不支持文件加密。
PathTooLongException | 指定的 path、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的 path、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
PlatformNotSupportedException | 当前操作系统不是 Windows NT 或更高版本。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

使用此 FileStream 构造函数在文件的创建点应用访问权限。若要访问或修改现有文件的权限，请考虑使用 GetAccessControl 和 SetAccessControl 方法。 使用此 FileStream 构造函数在文件的创建点应用访问权限。若要访问或修改现有文件的权限，请考虑使用 GetAccessControl 和 SetAccessControl 方法。

fileOptions 参数用于提供对更多高级操作的访问，当创建 FileStream 对象时可利用这些操作。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

说明 说明

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。 不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。例如，根据系统的不同，此类可以访问物理设备。

对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。 对于封装文件的所有 FileStream 对象，CanSeek 为 true。如果 path 指示的设备不支持查找，则结果 FileStream 的 CanSeek 属性为 false。有关更多信息，请参见CanSeek。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例将数据写入一个文件，然后使用 FileStream 对象读取数据。

Imports System
Imports System.IO
Imports System.Text
Imports System.Security.AccessControl

Module FileStreamExample

    Sub Main()
        Try
            ' Create a file and write data to it.
            ' Create an array of bytes.
            Dim messageByte As Byte() = Encoding.ASCII.GetBytes("Here is some data.")

            ' Specify an access control list (ACL)
            Dim fs As New FileSecurity()

            fs.AddAccessRule(New FileSystemAccessRule("DOMAINNAME\AccountName", FileSystemRights.ReadData, AccessControlType.Allow))

            ' Create a file using the FileStream class.
            Dim fWrite As New FileStream("test.txt", FileMode.Create, FileSystemRights.Modify, FileShare.None, 8, FileOptions.None, fs)

            ' Write the number of bytes to the file.
            fWrite.WriteByte(System.Convert.ToByte(messageByte.Length))

            ' Write the bytes to the file.
            fWrite.Write(messageByte, 0, messageByte.Length)

            ' Close the stream.
            fWrite.Close()

            ' Open a file and read the number of bytes.
            Dim fRead As New FileStream("test.txt", FileMode.Open)

            ' The first byte is the string length.
            Dim length As Integer = Fix(fRead.ReadByte())

            ' Create a new byte array for the data.
            Dim readBytes(length) As Byte

            ' Read the data from the file.
            fRead.Read(readBytes, 0, readBytes.Length)

            ' Close the stream.
            fRead.Close()

            ' Display the data.
            Console.WriteLine(Encoding.ASCII.GetString(readBytes))

            Console.WriteLine("Done writing and reading data.")
        Catch e As Exception
            Console.WriteLine(e)
        End Try

        Console.ReadLine()

    End Sub
End Module

using System;
using System.IO;
using System.Text;
using System.Security.AccessControl;

namespace FileSystemExample
{
    class FileStreamExample
    {
        public static void Main()
        {
            try
            {
                // Create a file and write data to it.

                // Create an array of bytes.
                byte[] messageByte = Encoding.ASCII.GetBytes("Here is some data.");

                // Specify an access control list (ACL)
                FileSecurity fs = new FileSecurity();

                fs.AddAccessRule(new FileSystemAccessRule(@"DOMAINNAME\AccountName",
                                                            FileSystemRights.ReadData,
                                                            AccessControlType.Allow));

                // Create a file using the FileStream class.
                FileStream fWrite = new FileStream("test.txt", FileMode.Create, FileSystemRights.Modify, FileShare.None, 8, FileOptions.None, fs);

                // Write the number of bytes to the file.
                fWrite.WriteByte((byte)messageByte.Length);

                // Write the bytes to the file.
                fWrite.Write(messageByte, 0, messageByte.Length);

                // Close the stream.
                fWrite.Close();

                // Open a file and read the number of bytes.

                FileStream fRead = new FileStream("test.txt", FileMode.Open);

                // The first byte is the string length.
                int length = (int)fRead.ReadByte();

                // Create a new byte array for the data.
                byte[] readBytes = new byte[length];

                // Read the data from the file.
                fRead.Read(readBytes, 0, readBytes.Length);

                // Close the stream.
                fRead.Close();

                // Display the data.
                Console.WriteLine(Encoding.ASCII.GetString(readBytes));

                Console.WriteLine("Done writing and reading data.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            Console.ReadLine();
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

int main()
{
    try
    {
        // Create a file and write data to it.

        // Create an array of bytes.
        array<Byte>^ messageByte =
            Encoding::ASCII->GetBytes("Here is some data.");

        // Specify an access control list (ACL)
        FileSecurity^ fs = gcnew FileSecurity();

        fs->AddAccessRule(
            gcnew FileSystemAccessRule("MYDOMAIN\\MyAccount",
            FileSystemRights::Modify, AccessControlType::Allow));

        // Create a file using the FileStream class.
        FileStream^ fWrite = gcnew FileStream("test.txt",
            FileMode::Create, FileSystemRights::Modify,
            FileShare::None, 8, FileOptions::None, fs);

        // Write the number of bytes to the file.
        fWrite->WriteByte((Byte)messageByte->Length);

        // Write the bytes to the file.
        fWrite->Write(messageByte, 0, messageByte->Length);

        // Close the stream.
        fWrite->Close();

        // Open a file and read the number of bytes.

        FileStream^ fRead =
            gcnew FileStream("test.txt", FileMode::Open);

        // The first byte is the string length.
        int length = (int)fRead->ReadByte();

        // Create a new byte array for the data.
        array<Byte>^ readBytes = gcnew array<Byte>(length);

        // Read the data from the file.
        fRead->Read(readBytes, 0, readBytes->Length);

        // Close the stream.
        fRead->Close();

        // Display the data.
        Console::WriteLine(Encoding::ASCII->GetString(readBytes));

        Console::WriteLine("Done writing and reading data.");
    }

    catch (IdentityNotMappedException^)
    {
        Console::WriteLine("You need to use your own credentials " +
            " 'MYDOMAIN\\MyAccount'.");
    }

    catch (IOException^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}
  • FileIOPermission

    用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。 用于读取、写入和追加到文件。关联枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 和 FileIOPermissionAccess..::.Append。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
FileStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 方法

FileStream 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

FileStream 类型公开以下成员。

名称 说明
页首

参考

FileStream 类
System.IO 命名空间


FileStream ..::.BeginRead 方法

FileStream
.
.
::
.
BeginRead 方法
FileStream 类

开始异步读。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Overrides Function BeginRead ( _
    array As Byte(), _
    offset As Integer, _
    numBytes As Integer, _
    userCallback As AsyncCallback, _
    stateObject As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public override IAsyncResult BeginRead(
    byte[] array,
    int offset,
    int numBytes,
    AsyncCallback userCallback,
    Object stateObject
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
virtual IAsyncResult^ BeginRead(
    array<unsigned char>^ array,
    int offset,
    int numBytes,
    AsyncCallback^ userCallback,
    Object^ stateObject
) override
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
abstract BeginRead :
        array:byte[] *
        offset:int *
        numBytes:int *
        userCallback:AsyncCallback *
        stateObject:Object -> IAsyncResult
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
override BeginRead :
        array:byte[] *
        offset:int *
        numBytes:int *
        userCallback:AsyncCallback *
        stateObject:Object -> IAsyncResult

参数

array
类型：
array<
System Byte
>
[]
()
[]

要读入数据的缓冲区。
offset
类型： System Int32
array 中的字节偏移量，从此处开始读取。
numBytes
类型： System Int32
最多读取的字节数。
userCallback
类型： System AsyncCallback
异步读操作完成后调用的方法。
stateObject
类型： System Object
一个用户提供的对象，它将该特定的异步读取请求与其他请求区别开来。

返回值

类型： System IAsyncResult
引用异步读取的对象。
异常 | 条件
ArgumentException | 数组长度减去 offset 小于 numBytes。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 numBytes 为负。
IOException | 尝试在文件的末尾之外进行异步读取。

每次调用 BeginRead 时都必须调用一次 EndRead。无法结束一个读取进程就开始另一个读取可能导致死锁等不希望出现的行为。 每次调用 BeginRead 时都必须调用一次 EndRead。无法结束一个读取进程就开始另一个读取可能导致死锁等不希望出现的行为。

FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。

说明 说明

使用 CanRead 属性可确定当前实例是否支持读取。有关更多信息，请参见CanRead。 使用 CanRead 属性可确定当前实例是否支持读取。有关更多信息，请参见CanRead。

如果流已关闭或者传递了无效的参数，将立即从 BeginRead 中引发异常。在异步读取请求过程中出现的错误（例如 IO 请求过程中磁盘出现故障）会在线程池线程上发生，并且在调用 EndRead 时变为可见。 如果流已关闭或者传递了无效的参数，将立即从 BeginRead 中引发异常。在异步读取请求过程中出现的错误（例如 IO 请求过程中磁盘出现故障）会在线程池线程上发生，并且在调用 EndRead 时变为可见。

说明 说明

在 Windows 上，所有小于 64 KB 的 I/O 操作都将同步完成，以获得更高的性能。当缓冲区大小小于 64 KB 时，异步 I/O 可能会妨碍性能。 在 Windows 上，所有小于 64 KB 的 I/O 操作都将同步完成，以获得更高的性能。当缓冲区大小小于 64 KB 时，异步 I/O 可能会妨碍性能。

必须用此 IAsyncResult 调用 EndRead，以确定所读取的字节数。

多个同时进行的异步请求会使请求完成顺序不确定。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult)
    Dim tempState As State = _
        DirectCast(asyncResult.AsyncState, State)
    Dim fStream As FileStream = tempState.FStream
    fStream.EndWrite(asyncResult)

    ' Asynchronously read back the written data.
    fStream.Position = 0
    asyncResult = fStream.BeginRead( _
        tempState.ReadArray, 0 , tempState.ReadArray.Length, _
        AddressOf EndReadCallback, tempState)

    ' Concurrently do other work, such as
    ' logging the write operation.
End Sub

static void EndWriteCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    FileStream fStream = tempState.FStream;
    fStream.EndWrite(asyncResult);

    // Asynchronously read back the written data.
    fStream.Position = 0;
    asyncResult = fStream.BeginRead(
        tempState.ReadArray, 0 , tempState.ReadArray.Length,
        new AsyncCallback(EndReadCallback), tempState);

    // Concurrently do other work, such as
    // logging the write operation.
}

   static void EndWriteCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
      FileStream^ fStream = tempState->FStream;
      fStream->EndWrite( asyncResult );

      // Asynchronously read back the written data.
      fStream->Position = 0;
      asyncResult = fStream->BeginRead( tempState->ReadArray, 0, tempState->ReadArray->Length, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState );

      // Concurrently do other work, such as
      // logging the write operation.
   }

};

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


FileStream ..::.BeginWrite 方法

FileStream
.
.
::
.
BeginWrite 方法
FileStream 类

开始异步写。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Overrides Function BeginWrite ( _
    array As Byte(), _
    offset As Integer, _
    numBytes As Integer, _
    userCallback As AsyncCallback, _
    stateObject As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public override IAsyncResult BeginWrite(
    byte[] array,
    int offset,
    int numBytes,
    AsyncCallback userCallback,
    Object stateObject
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
virtual IAsyncResult^ BeginWrite(
    array<unsigned char>^ array,
    int offset,
    int numBytes,
    AsyncCallback^ userCallback,
    Object^ stateObject
) override
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
abstract BeginWrite :
        array:byte[] *
        offset:int *
        numBytes:int *
        userCallback:AsyncCallback *
        stateObject:Object -> IAsyncResult
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
override BeginWrite :
        array:byte[] *
        offset:int *
        numBytes:int *
        userCallback:AsyncCallback *
        stateObject:Object -> IAsyncResult

参数

array
类型：
array<
System Byte
>
[]
()
[]

包含要写入当前流的数据的缓冲区。
offset
类型： System Int32
array 中的从零开始的字节偏移量，从此处开始将字节复制到当前流。
numBytes
类型： System Int32
最多写入的字节数。
userCallback
类型： System AsyncCallback
异步写操作完成后调用的方法。
stateObject
类型： System Object
一个用户提供的对象，它将该特定的异步写入请求与其他请求区别开来。

返回值

类型： System IAsyncResult
引用异步写入的对象。
异常 | 条件
ArgumentException | array 长度减去 offset 小于 numBytes。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 numBytes 为负。
NotSupportedException | 流不支持写入。
ObjectDisposedException | 流已关闭。
IOException | 发生了 I/O 错误。

对于 BeginWrite 中的每个 IAsyncResult，必须正好调用一次 EndWrite。EndWrite 将一直被阻止到 I/O 操作完成时。 对于 BeginWrite 中的每个 IAsyncResult，必须正好调用一次 EndWrite。EndWrite 将一直被阻止到 I/O 操作完成时。

此方法重写 BeginWrite。

FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。 FileStream 提供了两种不同的操作模式：同步 I/O 和异步 I/O。尽管两者都可使用，但是基础操作系统资源可能只允许采用其中一种模式进行访问。默认情况下，FileStream 同步打开操作系统句柄。在 Windows 中，这将降低异步方法的速度。如果使用异步方法，请使用 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数。

如果流已关闭或者传递了无效的参数，将立即从 BeginWrite 中引发异常。在异步写入请求过程中出现的错误（例如 IO 请求过程中的磁盘失败）会在线程池线程上发生，并且在调用 EndWrite 变为可见。 如果流已关闭或者传递了无效的参数，将立即从 BeginWrite 中引发异常。在异步写入请求过程中出现的错误（例如 IO 请求过程中的磁盘失败）会在线程池线程上发生，并且在调用 EndWrite 变为可见。

说明 说明

在 Windows 上，所有小于 64 KB 的 I/O 操作都将同步完成，以获得更高的性能。当缓冲区大小小于 64 KB 时，异步 I/O 可能会妨碍性能。 在 Windows 上，所有小于 64 KB 的 I/O 操作都将同步完成，以获得更高的性能。当缓冲区大小小于 64 KB 时，异步 I/O 可能会妨碍性能。

多个同时进行的异步请求会使请求完成顺序不确定。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

Shared Sub Main()

    ' Create a synchronization object that gets
    ' signaled when verification is complete.
    Dim manualEvent As New ManualResetEvent(False)

    ' Create random data to write to the file.
    Dim writeArray(100000) As Byte
    Dim randomGenerator As New Random()
    randomGenerator.NextBytes(writeArray)

    Dim fStream As New FileStream("Test#@@#.dat", _
        FileMode.Create, FileAccess.ReadWrite, _
        FileShare.None, 4096, True)

    ' Check that the FileStream was opened asynchronously.
    If fStream.IsAsync = True
        Console.WriteLine("fStream was opened asynchronously.")
    Else
        Console.WriteLine("fStream was not opened asynchronously.")
    End If

    ' Asynchronously write to the file.
    Dim asyncResult As IAsyncResult = fStream.BeginWrite( _
        writeArray, 0, writeArray.Length, _
        AddressOf EndWriteCallback , _
        New State(fStream, writeArray, manualEvent))

    ' Concurrently do other work and then wait
    ' for the data to be written and verified.
    manualEvent.WaitOne(5000, False)
End Sub

static void Main()
{
    // Create a synchronization object that gets
    // signaled when verification is complete.
    ManualResetEvent manualEvent = new ManualResetEvent(false);

    // Create random data to write to the file.
    byte[] writeArray = new byte[100000];
    new Random().NextBytes(writeArray);

    FileStream fStream =
        new FileStream("Test#@@#.dat", FileMode.Create,
        FileAccess.ReadWrite, FileShare.None, 4096, true);

    // Check that the FileStream was opened asynchronously.
    Console.WriteLine("fStream was {0}opened asynchronously.",
        fStream.IsAsync ? "" : "not ");

    // Asynchronously write to the file.
    IAsyncResult asyncResult = fStream.BeginWrite(
        writeArray, 0, writeArray.Length,
        new AsyncCallback(EndWriteCallback),
        new State(fStream, writeArray, manualEvent));

    // Concurrently do other work and then wait
    // for the data to be written and verified.
    manualEvent.WaitOne(5000, false);
}

int main()
{

   // Create a synchronization object that gets
   // signaled when verification is complete.
   ManualResetEvent^ manualEvent = gcnew ManualResetEvent( false );

   // Create the data to write to the file.
   array<Byte>^writeArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( writeArray );
   FileStream^ fStream = gcnew FileStream(  "Test#@@#.dat",FileMode::Create,FileAccess::ReadWrite,FileShare::None,4096,true );

   // Check that the FileStream was opened asynchronously.
   Console::WriteLine( "fStream was {0}opened asynchronously.", fStream->IsAsync ? (String^)"" : "not " );

   // Asynchronously write to the file.
   IAsyncResult^ asyncResult = fStream->BeginWrite( writeArray, 0, writeArray->Length, gcnew AsyncCallback( &FStream::EndWriteCallback ), gcnew State( fStream,writeArray,manualEvent ) );

   // Concurrently do other work and then wait
   // for the data to be written and verified.
   manualEvent->WaitOne( 5000, false );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


FileStream ..::.CopyTo 方法

FileStream
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

将当前流的内容复制到另一个流中。

名称 说明
页首

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream ..::.Dispose 方法

FileStream
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

名称 说明
页首

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream ..::.Dispose 方法 (Boolean)

FileStream
.
.
::
.
Dispose 方法 (Boolean)
FileStream 类

释放由 FileStream 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。

disposing 参数为 true 时，此方法释放此 FileStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 FileStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.EndRead 方法

FileStream
.
.
::
.
EndRead 方法
FileStream 类

等待挂起的异步读取完成。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function EndRead ( _
    asyncResult As IAsyncResult _
) As Integer
public override int EndRead(
    IAsyncResult asyncResult
)
public:
virtual int EndRead(
    IAsyncResult^ asyncResult
) override
abstract EndRead :
        asyncResult:IAsyncResult -> int
override EndRead :
        asyncResult:IAsyncResult -> int

参数

asyncResult
类型： System IAsyncResult
对所等待的挂起异步请求的引用。

返回值

类型： System Int32
从流中读取的字节数，介于 0 和所请求的字节数之间。流仅在流的末尾返回 0；否则应一直阻塞到至少有 1 个字节可用为止。 从流中读取的字节数，介于 0 和所请求的字节数之间。流仅在流的末尾返回 0；否则应一直阻塞到至少有 1 个字节可用为止。
异常 | 条件
ArgumentNullException | asyncResult 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 此 IAsyncResult 对象不是通过对该类调用 BeginRead 来创建的。
InvalidOperationException | EndRead 被多次调用。
IOException | 此流关闭或发生内部错误。

每次调用 BeginRead 时都必须调用 EndRead。无法结束一个读取进程就开始另一个读取可能导致死锁等不希望出现的行为。 每次调用 BeginRead 时都必须调用 EndRead。无法结束一个读取进程就开始另一个读取可能导致死锁等不希望出现的行为。

此方法重写 EndRead。

可针对 BeginRead 的每个 IAsyncResult 调用 EndRead。调用 EndRead 将指出已从流中读取的字节数。EndRead 将一直被阻止到 I/O 操作完成时。 可针对 BeginRead 的每个 IAsyncResult 调用 EndRead。调用 EndRead 将指出已从流中读取的字节数。EndRead 将一直被阻止到 I/O 操作完成时。 可针对 BeginRead 的每个 IAsyncResult 调用 EndRead。调用 EndRead 将指出已从流中读取的字节数。EndRead 将一直被阻止到 I/O 操作完成时。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

Private Shared Sub EndReadCallback(asyncResult As IAsyncResult)
     Dim tempState As State = _
         DirectCast(asyncResult.AsyncState, State)
     Dim readCount As Integer = _
         tempState.FStream.EndRead(asyncResult)

     Dim i As Integer = 0
     While(i < readCount)
         If(tempState.ReadArray(i) <> tempState.WriteArray(i))
             Console.WriteLine("Error writing data.")
             tempState.FStream.Close()
             Return
         End If
         i += 1
     End While

     Console.WriteLine("The data was written to {0} and " & _
         "verified.", tempState.FStream.Name)
     tempState.FStream.Close()

     ' Signal the main thread that the verification is finished.
     tempState.ManualEvent.Set()
 End Sub

static void EndReadCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    int readCount = tempState.FStream.EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState.ReadArray[i] != tempState.WriteArray[i++])
        {
            Console.WriteLine("Error writing data.");
            tempState.FStream.Close();
            return;
        }
    }
    Console.WriteLine("The data was written to {0} and verified.",
        tempState.FStream.Name);
    tempState.FStream.Close();

    // Signal the main thread that the verification is finished.
    tempState.ManualEvent.Set();
}

   static void EndReadCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
      int readCount = tempState->FStream->EndRead( asyncResult );
      int i = 0;
      while ( i < readCount )
      {
         if ( tempState->ReadArray[ i ] != tempState->WriteArray[ i++ ] )
         {
            Console::WriteLine( "Error writing data." );
            tempState->FStream->Close();
            return;
         }
      }

      Console::WriteLine( "The data was written to {0} "
      "and verified.", tempState->FStream->Name );
      tempState->FStream->Close();

      // Signal the main thread that the verification is finished.
      tempState->ManualEvent->Set();
   }

public:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


FileStream ..::.EndWrite 方法

FileStream
.
.
::
.
EndWrite 方法
FileStream 类

结束异步写入，在 I/O 操作完成之前一直阻塞。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub EndWrite ( _
    asyncResult As IAsyncResult _
)
public override void EndWrite(
    IAsyncResult asyncResult
)
public:
virtual void EndWrite(
    IAsyncResult^ asyncResult
) override
abstract EndWrite :
        asyncResult:IAsyncResult -> unit
override EndWrite :
        asyncResult:IAsyncResult -> unit

参数

asyncResult
类型： System IAsyncResult
挂起的异步 I/O 请求。
异常 | 条件
ArgumentNullException | asyncResult 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 此 IAsyncResult 对象不是通过对该类调用 BeginWrite 来创建的。
InvalidOperationException | EndWrite 被多次调用。
IOException | 此流关闭或发生内部错误。

此方法重写 EndWrite。

对于 BeginWrite 中的每个 IAsyncResult，必须正好调用一次 EndWrite。EndWrite 将一直被阻止到 I/O 操作完成时。 对于 BeginWrite 中的每个 IAsyncResult，必须正好调用一次 EndWrite。EndWrite 将一直被阻止到 I/O 操作完成时。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult)
    Dim tempState As State = _
        DirectCast(asyncResult.AsyncState, State)
    Dim fStream As FileStream = tempState.FStream
    fStream.EndWrite(asyncResult)

    ' Asynchronously read back the written data.
    fStream.Position = 0
    asyncResult = fStream.BeginRead( _
        tempState.ReadArray, 0 , tempState.ReadArray.Length, _
        AddressOf EndReadCallback, tempState)

    ' Concurrently do other work, such as
    ' logging the write operation.
End Sub

static void EndWriteCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    FileStream fStream = tempState.FStream;
    fStream.EndWrite(asyncResult);

    // Asynchronously read back the written data.
    fStream.Position = 0;
    asyncResult = fStream.BeginRead(
        tempState.ReadArray, 0 , tempState.ReadArray.Length,
        new AsyncCallback(EndReadCallback), tempState);

    // Concurrently do other work, such as
    // logging the write operation.
}

   static void EndWriteCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
      FileStream^ fStream = tempState->FStream;
      fStream->EndWrite( asyncResult );

      // Asynchronously read back the written data.
      fStream->Position = 0;
      asyncResult = fStream->BeginRead( tempState->ReadArray, 0, tempState->ReadArray->Length, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState );

      // Concurrently do other work, such as
      // logging the write operation.
   }

};

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


FileStream ..::.Finalize 方法

FileStream
.
.
::
.
Finalize 方法
FileStream 类

确保垃圾回收器回收 FileStream 时释放资源并执行其他清理操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Finalize
protected override void Finalize()
protected:
virtual void Finalize() override
abstract Finalize : unit -> unit
override Finalize : unit -> unit

在当前对象即将完成时，垃圾回收器调用 Finalize。Finalize 关闭了 FileStream。 在当前对象即将完成时，垃圾回收器调用 Finalize。Finalize 关闭了 FileStream。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Flush 方法

FileStream
.
.
::
.
Flush 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

清除此流的缓冲区，使得所有缓冲的数据都写入到文件中。

名称 说明
页首

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream ..::.Flush 方法

FileStream
.
.
::
.
Flush 方法
FileStream 类

清除此流的缓冲区，使得所有缓冲的数据都写入到文件中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit
异常 | 条件
IOException | 发生了 I/O 错误。
ObjectDisposedException | 流已关闭。

此方法重写 Stream..::.Flush。

除非显式地调用 Flush 或 Stream..::.Close，否则，刷新流不会刷新其基础编码器。将 StreamWriter..::.AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Stream..::.Close，否则，刷新流不会刷新其基础编码器。将 StreamWriter..::.AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Stream..::.Close，否则，刷新流不会刷新其基础编码器。将 StreamWriter..::.AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Stream..::.Close，否则，刷新流不会刷新其基础编码器。将 StreamWriter..::.AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

因为缓冲区可用于读取或写入，所以 Flush 执行以下两个功能：

  • 以前写入缓冲区的任何数据都复制到文件中，并且缓冲区被清除（其编码器状态除外）。

  • 如果 BufferedStream..::.CanSeek 为 true 而且以前将数据从文件复制到缓冲区以进行读取，则文件内的当前位置会减少缓冲区中未读取的字节数。然后清除缓冲区。 如果 BufferedStream..::.CanSeek 为 true 而且以前将数据从文件复制到缓冲区以进行读取，则文件内的当前位置会减少缓冲区中未读取的字节数。然后清除缓冲区。

若要确保将中间文件缓冲区中的所有缓冲数据均写入磁盘，请使用 Flush(Boolean) 方法重载。

此代码示例是为 Lock 方法提供的一个更大示例的一部分。

' Update the file.
Case "W"C
    Try
        aFileStream.Seek(textLength, _
            SeekOrigin.Begin)
        aFileStream.Read( _
            readText, textLength - 1, byteCount)
        tempString = New String( _
            uniEncoding.GetChars( _
            readText, textLength - 1, byteCount))
        recordNumber = _
            Integer.Parse(tempString) + 1
        aFileStream.Seek( _
            textLength, SeekOrigin.Begin)
        aFileStream.Write(uniEncoding.GetBytes( _
            recordNumber.ToString()), 0, byteCount)
        aFileStream.Flush()
        Console.WriteLine( _
            "Record has been updated.")

// Update the file.
case 'W':
    try
    {
        fileStream.Seek(textLength,
            SeekOrigin.Begin);
        fileStream.Read(
            readText, textLength - 1, byteCount);
        tempString = new String(
            uniEncoding.GetChars(
            readText, textLength - 1, byteCount));
        recordNumber = int.Parse(tempString) + 1;
        fileStream.Seek(
            textLength, SeekOrigin.Begin);
        fileStream.Write(uniEncoding.GetBytes(
            recordNumber.ToString()),
            0, byteCount);
        fileStream.Flush();
        Console.WriteLine(
            "Record has been updated.");
    }

// Update the file.
case 'W':
   try
   {
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Read( readText, textLength - 1, byteCount );
      tempString = gcnew String( uniEncoding->GetChars( readText, textLength - 1, byteCount ) );
      recordNumber = Int32::Parse( tempString ) + 1;
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Write( uniEncoding->GetBytes( recordNumber.ToString() ), 0, byteCount );
      fileStream->Flush();
      Console::WriteLine( "Record has been updated." );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
Flush 重载
System.IO 命名空间
Flush

其他资源

如何：向文件写入文本


FileStream ..::.Flush 方法 (Boolean)

FileStream
.
.
::
.
Flush 方法 (Boolean)
FileStream 类

清除此流的缓冲区，将所有缓冲的数据都写入到文件中，另外也清除所有中间文件缓冲区。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Flush ( _
    flushToDisk As Boolean _
)
public virtual void Flush(
    bool flushToDisk
)
public:
virtual void Flush(
    bool flushToDisk
)
abstract Flush :
        flushToDisk:bool -> unit
override Flush :
        flushToDisk:bool -> unit

参数

flushToDisk
类型： System Boolean
若为 true，则刷新所有中间文件缓冲区；否则为 false。

若要确保将中间文件缓冲区中的所有缓冲数据均写入磁盘，请使用此重载。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
Flush 重载
System.IO 命名空间
Flush


FileStream ..::.GetAccessControl 方法

FileStream
.
.
::
.
GetAccessControl 方法
FileStream 类

获取 FileSecurity 对象，该对象封装当前 FileStream 对象所描述的文件的访问控制列表 (ACL) 项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function GetAccessControl As FileSecurity
public FileSecurity GetAccessControl()
public:
FileSecurity^ GetAccessControl()
member GetAccessControl : unit -> FileSecurity

返回值

类型： System.Security.AccessControl FileSecurity
一个对象，该对象封装当前 FileStream 对象所描述的文件的访问控制设置。
异常 | 条件
ObjectDisposedException | 文件被关闭。
IOException | 打开文件时发生了 I/O 错误。
SystemException | 未能找到文件。
UnauthorizedAccessException | 在当前平台上不支持此操作。 - 或 - 调用方没有所要求的权限。

当可以使用 FileStream 类和 GetAccessControl 检索现有文件的访问控制列表 (ACL) 项时，请考虑使用 File..::.GetAccessControl 方法，因为它的操作更简便。

使用 GetAccessControl 方法检索一个文件的 ACL 项。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream ..::.Lock 方法

FileStream
.
.
::
.
Lock 方法
FileStream 类

防止其他进程读取或写入 FileStream。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Lock ( _
    position As Long, _
    length As Long _
)
public virtual void Lock(
    long position,
    long length
)
public:
virtual void Lock(
    long long position,
    long long length
)
abstract Lock :
        position:int64 *
        length:int64 -> unit
override Lock :
        position:int64 *
        length:int64 -> unit

参数

position
类型： System Int64
要锁定的范围的开始处。此参数的值必须大于或等于零 (0)。 要锁定的范围的开始处。此参数的值必须大于或等于零 (0)。
length
类型： System Int64
要锁定的范围。
异常 | 条件
ArgumentOutOfRangeException | position 或 length 为负。
ObjectDisposedException | 文件被关闭。
IOException | 由于另一个进程已锁定文件的部分内容，因此该进程无法访问该文件。

锁定一个文件流的范围将锁定进程独占访问的线程交给该文件流的范围。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例阐释了如何通过相应地锁定一个文件的某个部分，使其他进程即使对该文件有读/写访问权限也无法访问该文件的这一部分。同时在不同的命令窗口中运行该程序，研究如何使用不同的控制台输入选项。 下面的代码示例阐释了如何通过相应地锁定一个文件的某个部分，使其他进程即使对该文件有读/写访问权限也无法访问该文件的这一部分。同时在不同的命令窗口中运行该程序，研究如何使用不同的控制台输入选项。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Text

Public Class FStreamLock

    Shared Sub Main()

        Dim uniEncoding As New UnicodeEncoding()
        Dim lastRecordText As String = _
            "The last processed record number was: "
        Dim textLength As Integer = _
            uniEncoding.GetByteCount(lastRecordText)
        Dim recordNumber As Integer = 13
        Dim byteCount As Integer = _
            uniEncoding.GetByteCount(recordNumber.ToString())
        Dim tempString As String

        Dim aFileStream As New FileStream( _
            "Test#@@#.dat", FileMode.OpenOrCreate, _
            FileAccess.ReadWrite, FileShare.ReadWrite)

        Try
            ' Write the original file data.
            If aFileStream.Length = 0 Then
                tempString = _
                    lastRecordText + recordNumber.ToString()
                aFileStream.Write(uniEncoding.GetBytes(tempString), _
                    0, uniEncoding.GetByteCount(tempString))
            End If

            ' Allow the user to choose the operation.
            Dim consoleInput As Char = "R"C
            Dim readText(CInt(aFileStream.Length)) As Byte
            While consoleInput <> "X"C

                Console.Write(vbcrLf & _
                    "Enter 'R' to read, 'W' to write, 'L' to " & _
                    "lock, 'U' to unlock, anything else to exit: ")

                tempString = Console.ReadLine()
                If tempString.Length = 0 Then
                    Exit While
                End If
                consoleInput = Char.ToUpper(tempString.Chars(0))
                Select consoleInput

                    ' Read data from the file and
                    ' write it to the console.
                    Case "R"C
                        Try
                            aFileStream.Seek(0, SeekOrigin.Begin)
                            aFileStream.Read( _
                                readText, 0, CInt(aFileStream.Length))
                            tempString = New String( _
                                uniEncoding.GetChars( _
                                readText, 0, readText.Length))
                            Console.WriteLine(tempString)
                            recordNumber = Integer.Parse( _
                                tempString.Substring( _
                                tempString.IndexOf(":"C) + 2))

                        ' Catch the IOException generated if the
                        ' specified part of the file is locked.
                        Catch ex As IOException
                            Console.WriteLine("{0}: The read " & _
                                "operation could not be performed " & _
                                "because the specified part of the" & _
                                " file is locked.", _
                                ex.GetType().Name)
                        End Try
                        Exit Select

                    ' Update the file.
                    Case "W"C
                        Try
                            aFileStream.Seek(textLength, _
                                SeekOrigin.Begin)
                            aFileStream.Read( _
                                readText, textLength - 1, byteCount)
                            tempString = New String( _
                                uniEncoding.GetChars( _
                                readText, textLength - 1, byteCount))
                            recordNumber = _
                                Integer.Parse(tempString) + 1
                            aFileStream.Seek( _
                                textLength, SeekOrigin.Begin)
                            aFileStream.Write(uniEncoding.GetBytes( _
                                recordNumber.ToString()), 0, byteCount)
                            aFileStream.Flush()
                            Console.WriteLine( _
                                "Record has been updated.")

                        ' Catch the IOException generated if the
                        ' specified part of the file is locked.
                        Catch ex As IOException
                            Console.WriteLine( _
                                "{0}: The write operation could " & _
                                "not be performed because the " & _
                                "specified part of the file is " & _
                                "locked.", ex.GetType().Name)
                        End Try
                        Exit Select

                    ' Lock the specified part of the file.
                    Case "L"C
                        Try
                            aFileStream.Lock(textLength - 1, byteCount)
                            Console.WriteLine("The specified part " & _
                                "of file has been locked.")
                        Catch ex As IOException
                            Console.WriteLine( _
                                "{0}: The specified part of file " & _
                                "is already locked.", _
                                ex.GetType().Name)
                        End Try
                        Exit Select

                    ' Unlock the specified part of the file.
                    Case "U"C
                        Try
                            aFileStream.Unlock( _
                                textLength - 1, byteCount)
                            Console.WriteLine("The specified part " & _
                                "of file has been unlocked.")
                        Catch ex As IOException
                            Console.WriteLine( _
                                "{0}: The specified part of file " & _
                                "is not locked by the current " & _
                                "process.", ex.GetType().Name)
                        End Try
                        Exit Select

                    ' Exit the program.
                    Case Else
                        consoleInput = "X"C
                        Exit While
                End Select
            End While

        Finally
            aFileStream.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;
using System.Text;

class FStreamLock
{
    static void Main()
    {
        UnicodeEncoding uniEncoding = new UnicodeEncoding();
        string lastRecordText =
            "The last processed record number was: ";
        int textLength = uniEncoding.GetByteCount(lastRecordText);
        int recordNumber = 13;
        int byteCount =
            uniEncoding.GetByteCount(recordNumber.ToString());
        string tempString;

        using(FileStream fileStream = new FileStream(
            "Test#@@#.dat", FileMode.OpenOrCreate,
            FileAccess.ReadWrite, FileShare.ReadWrite))
        {
            // Write the original file data.
            if(fileStream.Length == 0)
            {
                tempString =
                    lastRecordText + recordNumber.ToString();
                fileStream.Write(uniEncoding.GetBytes(tempString),
                    0, uniEncoding.GetByteCount(tempString));
            }

            // Allow the user to choose the operation.
            char consoleInput = 'R';
            byte[] readText = new byte[fileStream.Length];
            while(consoleInput != 'X')
            {
                Console.Write(
                    "\nEnter 'R' to read, 'W' to write, 'L' to " +
                    "lock, 'U' to unlock, anything else to exit: ");

                if((tempString = Console.ReadLine()).Length == 0)
                {
                    break;
                }
                consoleInput = char.ToUpper(tempString[0]);
                switch(consoleInput)
                {
                    // Read data from the file and
                    // write it to the console.
                    case 'R':
                        try
                        {
                            fileStream.Seek(0, SeekOrigin.Begin);
                            fileStream.Read(
                                readText, 0, (int)fileStream.Length);
                            tempString = new String(
                                uniEncoding.GetChars(
                                readText, 0, readText.Length));
                            Console.WriteLine(tempString);
                            recordNumber = int.Parse(
                                tempString.Substring(
                                tempString.IndexOf(':') + 2));
                        }

                        // Catch the IOException generated if the
                        // specified part of the file is locked.
                        catch(IOException e)
                        {
                            Console.WriteLine("{0}: The read " +
                                "operation could not be performed " +
                                "because the specified part of the " +
                                "file is locked.",
                                e.GetType().Name);
                        }
                        break;

                    // Update the file.
                    case 'W':
                        try
                        {
                            fileStream.Seek(textLength,
                                SeekOrigin.Begin);
                            fileStream.Read(
                                readText, textLength - 1, byteCount);
                            tempString = new String(
                                uniEncoding.GetChars(
                                readText, textLength - 1, byteCount));
                            recordNumber = int.Parse(tempString) + 1;
                            fileStream.Seek(
                                textLength, SeekOrigin.Begin);
                            fileStream.Write(uniEncoding.GetBytes(
                                recordNumber.ToString()),
                                0, byteCount);
                            fileStream.Flush();
                            Console.WriteLine(
                                "Record has been updated.");
                        }

                        // Catch the IOException generated if the
                        // specified part of the file is locked.
                        catch(IOException e)
                        {
                            Console.WriteLine(
                                "{0}: The write operation could not " +
                                "be performed because the specified " +
                                "part of the file is locked.",
                                e.GetType().Name);
                        }
                        break;

                    // Lock the specified part of the file.
                    case 'L':
                        try
                        {
                            fileStream.Lock(textLength - 1, byteCount);
                            Console.WriteLine("The specified part " +
                                "of file has been locked.");
                        }
                        catch(IOException e)
                        {
                            Console.WriteLine(
                                "{0}: The specified part of file is" +
                                " already locked.", e.GetType().Name);
                        }
                        break;

                    // Unlock the specified part of the file.
                    case 'U':
                        try
                        {
                            fileStream.Unlock(
                                textLength - 1, byteCount);
                            Console.WriteLine("The specified part " +
                                "of file has been unlocked.");
                        }
                        catch(IOException e)
                        {
                            Console.WriteLine(
                                "{0}: The specified part of file is " +
                                "not locked by the current process.",
                                e.GetType().Name);
                        }
                        break;

                    // Exit the program.
                    default:
                        consoleInput = 'X';
                        break;
                }
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   UnicodeEncoding^ uniEncoding = gcnew UnicodeEncoding;
   String^ lastRecordText = "The last processed record number was: ";
   int textLength = uniEncoding->GetByteCount( lastRecordText );
   int recordNumber = 13;
   int byteCount = uniEncoding->GetByteCount( recordNumber.ToString() );
   String^ tempString;

   FileStream^ fileStream = gcnew FileStream( "Test#@@#.dat",FileMode::OpenOrCreate,FileAccess::ReadWrite,FileShare::ReadWrite );

   try
   {

      // Write the original file data.
      if ( fileStream->Length == 0 )
      {
         tempString = String::Concat( lastRecordText, recordNumber.ToString() );
         fileStream->Write( uniEncoding->GetBytes( tempString ), 0, uniEncoding->GetByteCount( tempString ) );
      }

      // Allow the user to choose the operation.
      Char consoleInput = 'R';
      array<Byte>^readText = gcnew array<Byte>(fileStream->Length);
      while ( consoleInput != 'X' )
      {
         Console::Write( "\nEnter 'R' to read, 'W' to write, 'L' to "
         "lock, 'U' to unlock, anything else to exit: " );
         if ( (tempString = Console::ReadLine())->Length == 0 )
         {
            break;
         }
         consoleInput = Char::ToUpper( tempString[0] );
         switch ( consoleInput )
         {
            case 'R':
               try
               {
                  fileStream->Seek( 0, SeekOrigin::Begin );
                  fileStream->Read( readText, 0, (int)fileStream->Length );
                  tempString = gcnew String( uniEncoding->GetChars( readText, 0, readText->Length ) );
                  Console::WriteLine( tempString );
                  recordNumber = Int32::Parse( tempString->Substring( tempString->IndexOf( ':' ) + 2 ) );
               }
               // Catch the IOException generated if the
               // specified part of the file is locked.
               catch ( IOException^ e )
               {
                  Console::WriteLine( "{0}: The read "
                  "operation could not be performed "
                  "because the specified part of the "
                  "file is locked.", e->GetType()->Name );
               }

               break;

            // Update the file.
            case 'W':
               try
               {
                  fileStream->Seek( textLength, SeekOrigin::Begin );
                  fileStream->Read( readText, textLength - 1, byteCount );
                  tempString = gcnew String( uniEncoding->GetChars( readText, textLength - 1, byteCount ) );
                  recordNumber = Int32::Parse( tempString ) + 1;
                  fileStream->Seek( textLength, SeekOrigin::Begin );
                  fileStream->Write( uniEncoding->GetBytes( recordNumber.ToString() ), 0, byteCount );
                  fileStream->Flush();
                  Console::WriteLine( "Record has been updated." );
               }
               // Catch the IOException generated if the
               // specified part of the file is locked.
               catch ( IOException^ e )
               {
                  Console::WriteLine( "{0}: The write operation could not "
                  "be performed because the specified "
                  "part of the file is locked.", e->GetType()->Name );
               }

               break;

            // Lock the specified part of the file.
            case 'L':
               try
               {
                  fileStream->Lock( textLength - 1, byteCount );
                  Console::WriteLine( "The specified part "
                  "of file has been locked." );
               }
               catch ( IOException^ e )
               {
                  Console::WriteLine( "{0}: The specified part of file is"
                  " already locked.", e->GetType()->Name );
               }

               break;

            // Unlock the specified part of the file.
            case 'U':
               try
               {
                  fileStream->Unlock( textLength - 1, byteCount );
                  Console::WriteLine( "The specified part "
                  "of file has been unlocked." );
               }
               catch ( IOException^ e )
               {
                  Console::WriteLine( "{0}: The specified part of file is "
                  "not locked by the current process.", e->GetType()->Name );
               }

               break;

            default:

               // Exit the program.
               consoleInput = 'X';
               break;
         }
      }
   }
   finally
   {
      fileStream->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.MemberwiseClone 方法

FileStream
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

名称 说明
页首

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream ..::.Read 方法

FileStream
.
.
::
.
Read 方法
FileStream 类

从流中读取字节块并将该数据写入给定缓冲区中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read ( _
    <OutAttribute> array As Byte(), _
    offset As Integer, _
    count As Integer _
) As Integer
public override int Read(
    byte[] array,
    int offset,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<unsigned char>^ array,
    int offset,
    int count
) override
abstract Read :
        array:byte[] byref *
        offset:int *
        count:int -> int
override Read :
        array:byte[] byref *
        offset:int *
        count:int -> int

参数

array
类型：
array<
System Byte
>
[]
()
[]

此方法返回时包含指定的字节数组，数组中 offset 和 (offset + count - 1) 之间的值由从当前源中读取的字节替换。
offset
类型： System Int32
array 中的字节偏移量，将在此处开始放置读入的字节。
count
类型： System Int32
最多读取的字节数。

返回值

类型： System Int32
读入缓冲区中的总字节数。如果当前的字节数没有所请求那么多，则总字节数可能小于所请求的字节数；如果已到达流的末尾，则为零。 读入缓冲区中的总字节数。如果当前的字节数没有所请求那么多，则总字节数可能小于所请求的字节数；如果已到达流的末尾，则为零。
异常 | 条件
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 count 为负。
NotSupportedException | 流不支持读取。
IOException | 发生了 I/O 错误。
ArgumentException | offset 和 count 描述 array 中的无效范围。
ObjectDisposedException | 在流关闭后调用方法。

此方法重写 Read。

offset 参数给出 array 中字节的偏移量（缓冲区索引），从此处开始读取，count 参数给出从此流最多读取的字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。 offset 参数给出 array 中字节的偏移量（缓冲区索引），从此处开始读取，count 参数给出从此流最多读取的字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。 offset 参数给出 array 中字节的偏移量（缓冲区索引），从此处开始读取，count 参数给出从此流最多读取的字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。 offset 参数给出 array 中字节的偏移量（缓冲区索引），从此处开始读取，count 参数给出从此流最多读取的字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。

只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻止，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻止，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻止，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻止，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。

将 BinaryReader 用于读取基元数据类型。

不支持中断一个正在执行读取操作的线程。尽管这些操作可能会在取消阻止线程后成功，这些操作仍可以降低应用程序的性能和可靠性。 不支持中断一个正在执行读取操作的线程。尽管这些操作可能会在取消阻止线程后成功，这些操作仍可以降低应用程序的性能和可靠性。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例从 FileStream 读取内容，并将其写入到另一个 FileStream。

Imports System
Imports System.IO
Class Test

Public Shared Sub Main()
    ' Specify a file to read from and to create.
    Dim pathSource As String = "c:\tests\source.txt"
    Dim pathNew As String = "c:\tests\newfile.txt"
    Try
        Using fsSource As FileStream = New FileStream(pathSource, _
            FileMode.Open, FileAccess.Read)
            ' Read the source file into a byte array.
                Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
                Dim numBytesToRead As Integer = CType(fsSource.Length,Integer)
                Dim numBytesRead As Integer = 0

                While (numBytesToRead > 0)
                    ' Read may return anything from 0 to numBytesToRead.
                    Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
                        numBytesToRead)
                    ' Break when the end of the file is reached.
                    If (n = 0) Then
                        Exit While
                    End If
                    numBytesRead = (numBytesRead + n)
                    numBytesToRead = (numBytesToRead - n)

                End While
            numBytesToRead = bytes.Length

            ' Write the byte array to the other FileStream.
            Using fsNew As FileStream = New FileStream(pathNew, _
                FileMode.Create, FileAccess.Write)
                fsNew.Write(bytes, 0, numBytesToRead)
            End Using
        End Using
    Catch ioEx As FileNotFoundException
        Console.WriteLine(ioEx.Message)
    End Try
End Sub
End Class

using System;
using System.IO;

class Test
{

public static void Main()
{
    // Specify a file to read from and to create.
    string pathSource = @"c:\tests\source.txt";
    string pathNew = @"c:\tests\newfile.txt";

    try
    {

        using (FileStream fsSource = new FileStream(pathSource,
            FileMode.Open, FileAccess.Read))
        {

            // Read the source file into a byte array.
            byte[] bytes = new byte[fsSource.Length];
            int numBytesToRead = (int)fsSource.Length;
            int numBytesRead = 0;
            while (numBytesToRead > 0)
            {
                // Read may return anything from 0 to numBytesToRead.
                int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);

                // Break when the end of the file is reached.
                if (n == 0)
                    break;

                numBytesRead += n;
                numBytesToRead -= n;
            }
             numBytesToRead = bytes.Length;

            // Write the byte array to the other FileStream.
            using (FileStream fsNew = new FileStream(pathNew,
                FileMode.Create, FileAccess.Write))
            {
                fsNew.Write(bytes, 0, numBytesToRead);
            }
        }
    }
    catch (FileNotFoundException ioEx)
    {
        Console.WriteLine(ioEx.Message);
    }
}
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.ReadByte 方法

FileStream
.
.
::
.
ReadByte 方法
FileStream 类

从文件中读取一个字节，并将读取位置提升一个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadByte As Integer
public override int ReadByte()
public:
virtual int ReadByte() override
abstract ReadByte : unit -> int
override ReadByte : unit -> int

返回值

类型： System Int32
强制转换为 Int32 的字节；如果已到达流的末尾，则为 -1。
异常 | 条件
NotSupportedException | 当前流不支持读取。
ObjectDisposedException | 当前流已关闭。

此方法重写 ReadByte。

说明 说明

使用 CanRead 属性可确定当前实例是否支持读取。有关更多信息，请参见CanRead。 使用 CanRead 属性可确定当前实例是否支持读取。有关更多信息，请参见CanRead。

对实现者的说明

Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何逐字节地向文件中写入数据，然后验证数据是否被正确写入。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Text

Class FStream

    Shared Sub Main()

        Const fileName As String = "Test#@@#.dat"

        ' Create random data to write to the file.
        Dim dataArray(100000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(dataArray)

        Dim fileStream As FileStream = _
            new FileStream(fileName, FileMode.Create)
        Try

            ' Write the data to the file, byte by byte.
            For i As Integer = 0 To dataArray.Length - 1
                fileStream.WriteByte(dataArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            fileStream.Seek(0, SeekOrigin.Begin)

            ' Read and verify the data.
            For i As Integer = 0 To _
                CType(fileStream.Length, Integer) - 1

                If dataArray(i) <> fileStream.ReadByte() Then
                    Console.WriteLine("Error writing data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written to {0} " & _
                "and verified.", fileStream.Name)
        Finally
            fileStream.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class FStream
{
    static void Main()
    {
        const string fileName = "Test#@@#.dat";

        // Create random data to write to the file.
        byte[] dataArray = new byte[100000];
        new Random().NextBytes(dataArray);

        using(FileStream
            fileStream = new FileStream(fileName, FileMode.Create))
        {
            // Write the data to the file, byte by byte.
            for(int i = 0; i < dataArray.Length; i++)
            {
                fileStream.WriteByte(dataArray[i]);
            }

            // Set the stream position to the beginning of the file.
            fileStream.Seek(0, SeekOrigin.Begin);

            // Read and verify the data.
            for(int i = 0; i < fileStream.Length; i++)
            {
                if(dataArray[i] != fileStream.ReadByte())
                {
                    Console.WriteLine("Error writing data.");
                    return;
                }
            }
            Console.WriteLine("The data was written to {0} " +
                "and verified.", fileStream.Name);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ fileName =  "Test@##@.dat";

   // Create random data to write to the file.
   array<Byte>^dataArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( dataArray );
   FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
   try
   {

      // Write the data to the file, byte by byte.
      for ( int i = 0; i < dataArray->Length; i++ )
      {
         fileStream->WriteByte( dataArray[ i ] );

      }

      // Set the stream position to the beginning of the file.
      fileStream->Seek( 0, SeekOrigin::Begin );

      // Read and verify the data.
      for ( int i = 0; i < fileStream->Length; i++ )
      {
         if ( dataArray[ i ] != fileStream->ReadByte() )
         {
            Console::WriteLine( "Error writing data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written to {0} "
      "and verified.", fileStream->Name );
   }
   finally
   {
      fileStream->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Seek 方法

FileStream
.
.
::
.
Seek 方法
FileStream 类

将该流的当前位置设置为给定值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Seek ( _
    offset As Long, _
    origin As SeekOrigin _
) As Long
public override long Seek(
    long offset,
    SeekOrigin origin
)
public:
virtual long long Seek(
    long long offset,
    SeekOrigin origin
) override
abstract Seek :
        offset:int64 *
        origin:SeekOrigin -> int64
override Seek :
        offset:int64 *
        origin:SeekOrigin -> int64

参数

offset
类型： System Int64
相对于 origin 的点，从此处开始查找。
origin
类型： System.IO SeekOrigin
使用 SeekOrigin 类型的值，将开始位置、结束位置或当前位置指定为 origin 的参考点。

返回值

类型： System Int64
流中的新位置。
异常 | 条件
IOException | 发生了 I/O 错误。
NotSupportedException | 流不支持查找，例如，如果 FileStream 是由管道或控制台输出构造的。
ArgumentException | 尝试在流的开始位置之前查找。
ObjectDisposedException | 在流关闭后调用方法。

此方法重写 Stream..::.Seek。

说明 说明

使用 FileStream..::.CanSeek 属性确定当前实例是否支持查找。有关更多信息，请参见Stream..::.CanSeek。 使用 FileStream..::.CanSeek 属性确定当前实例是否支持查找。有关更多信息，请参见Stream..::.CanSeek。

您可以搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Windows NT 和较高版本中，所有添加到文件末尾的数据都被设置为零。在 Windows 98 或早期版本中，添加到文件末尾的数据不会被设置为零，这意味着先前删除的数据对该流而言为可见。 您可以搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Windows NT 和较高版本中，所有添加到文件末尾的数据都被设置为零。在 Windows 98 或早期版本中，添加到文件末尾的数据不会被设置为零，这意味着先前删除的数据对该流而言为可见。 您可以搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Windows NT 和较高版本中，所有添加到文件末尾的数据都被设置为零。在 Windows 98 或早期版本中，添加到文件末尾的数据不会被设置为零，这意味着先前删除的数据对该流而言为可见。 您可以搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Windows NT 和较高版本中，所有添加到文件末尾的数据都被设置为零。在 Windows 98 或早期版本中，添加到文件末尾的数据不会被设置为零，这意味着先前删除的数据对该流而言为可见。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明如何逐字节地向文件中写入数据，然后验证数据是否被正确写入。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Text

Class FStream

    Shared Sub Main()

        Const fileName As String = "Test#@@#.dat"

        ' Create random data to write to the file.
        Dim dataArray(100000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(dataArray)

        Dim fileStream As FileStream = _
            new FileStream(fileName, FileMode.Create)
        Try

            ' Write the data to the file, byte by byte.
            For i As Integer = 0 To dataArray.Length - 1
                fileStream.WriteByte(dataArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            fileStream.Seek(0, SeekOrigin.Begin)

            ' Read and verify the data.
            For i As Integer = 0 To _
                CType(fileStream.Length, Integer) - 1

                If dataArray(i) <> fileStream.ReadByte() Then
                    Console.WriteLine("Error writing data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written to {0} " & _
                "and verified.", fileStream.Name)
        Finally
            fileStream.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class FStream
{
    static void Main()
    {
        const string fileName = "Test#@@#.dat";

        // Create random data to write to the file.
        byte[] dataArray = new byte[100000];
        new Random().NextBytes(dataArray);

        using(FileStream
            fileStream = new FileStream(fileName, FileMode.Create))
        {
            // Write the data to the file, byte by byte.
            for(int i = 0; i < dataArray.Length; i++)
            {
                fileStream.WriteByte(dataArray[i]);
            }

            // Set the stream position to the beginning of the file.
            fileStream.Seek(0, SeekOrigin.Begin);

            // Read and verify the data.
            for(int i = 0; i < fileStream.Length; i++)
            {
                if(dataArray[i] != fileStream.ReadByte())
                {
                    Console.WriteLine("Error writing data.");
                    return;
                }
            }
            Console.WriteLine("The data was written to {0} " +
                "and verified.", fileStream.Name);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ fileName =  "Test@##@.dat";

   // Create random data to write to the file.
   array<Byte>^dataArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( dataArray );
   FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
   try
   {

      // Write the data to the file, byte by byte.
      for ( int i = 0; i < dataArray->Length; i++ )
      {
         fileStream->WriteByte( dataArray[ i ] );

      }

      // Set the stream position to the beginning of the file.
      fileStream->Seek( 0, SeekOrigin::Begin );

      // Read and verify the data.
      for ( int i = 0; i < fileStream->Length; i++ )
      {
         if ( dataArray[ i ] != fileStream->ReadByte() )
         {
            Console::WriteLine( "Error writing data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written to {0} "
      "and verified.", fileStream->Name );
   }
   finally
   {
      fileStream->Close();
   }

}

下面的示例通过使用多个 SeekOrigin 值与 Seek 方法从文件向后读取文本。

Imports System
Imports System.IO

Public Class FSSeek
    Public Shared Sub Main()
        ' temp.txt contains "This is a test!"

        Dim fs As New FileStream("c:\temp\temp.txt", FileMode.Open, FileAccess.Read)
        Dim offset As Long

        ' read the file backwards using SeekOrigin.Begin...
        For offset = fs.Length - 1 To 0 Step -1
            fs.Seek(offset, SeekOrigin.Begin)
            Console.Write(Convert.ToChar(fs.ReadByte()))
        Next
        Console.WriteLine()

        ' read the file backwards using SeekOrigin.End...
        For offset = 1 To fs.Length
            fs.Seek(-offset, SeekOrigin.End)
            Console.Write(Convert.ToChar(fs.ReadByte()))
        Next offset
        Console.WriteLine()

        ' read the file backwards using SeekOrigin.Current...
        fs.Seek(0, SeekOrigin.End)
        For offset = 0 To fs.Length - 1
            fs.Seek(-1, SeekOrigin.Current)
            Console.Write(Convert.ToChar(fs.ReadByte()))
            fs.Seek(-1, SeekOrigin.Current)
        Next offset
        Console.WriteLine()
        fs.Close()
    End Sub
End Class

' This code example displays the following output:
'
' !tset a si sihT
' !tset a si sihT
' !tset a si sihT

using System;
using System.IO;

public class FSSeek
{
    public static void Main()
    {
        // temp.txt contains "This is a test!"

        FileStream fs = new FileStream(@"c:\temp\temp.txt", FileMode.Open, FileAccess.Read);
        long offset;

        // read the file backwards using SeekOrigin.Begin...
        for (offset = fs.Length - 1; offset >= 0; offset--)
        {
            fs.Seek(offset, SeekOrigin.Begin);
            Console.Write(Convert.ToChar(fs.ReadByte()));
        }
        Console.WriteLine();

        // read the file backwards using SeekOrigin.End...
        for (offset = 1; offset <= fs.Length; offset++)
        {
            fs.Seek(-offset, SeekOrigin.End);
            Console.Write(Convert.ToChar(fs.ReadByte()));
        }
        Console.WriteLine();

        // read the file backwards using SeekOrigin.Current...
        fs.Seek(0, SeekOrigin.End);
        for (offset = 0; offset < fs.Length; offset++)
        {
            fs.Seek(-1, SeekOrigin.Current);
            Console.Write(Convert.ToChar(fs.ReadByte()));
            fs.Seek(-1, SeekOrigin.Current);
        }
        Console.WriteLine();
        fs.Close();
    }
}
// This code example displays the following output:
//
// !tset a si sihT
// !tset a si sihT
// !tset a si sihT

using namespace System;
using namespace System::IO;

public ref class FSSeek
{
public:
    static void Main()
    {
        // temp.txt contains "This is a test!"

        FileStream^ fs = gcnew FileStream("c:\\temp\\temp.txt", FileMode::Open, FileAccess::Read);
        long offset;

        // read the file backwards using SeekOrigin.Begin...
        for (offset = fs->Length - 1; offset >= 0; offset--)
        {
            fs->Seek(offset, SeekOrigin::Begin);
            Console::Write(Convert::ToChar(fs->ReadByte()));
        }
        Console::WriteLine();

        // read the file backwards using SeekOrigin.End...
        for (offset = 1; offset <= fs->Length; offset++)
        {
            fs->Seek(-offset, SeekOrigin::End);
            Console::Write(Convert::ToChar(fs->ReadByte()));
        }
        Console::WriteLine();

        // read the file backwards using SeekOrigin.Current...
        fs->Seek(0, SeekOrigin::End);
        for (offset = 0; offset < fs->Length; offset++)
        {
            fs->Seek(-1, SeekOrigin::Current);
            Console::Write(Convert::ToChar(fs->ReadByte()));
            fs->Seek(-1, SeekOrigin::Current);
        }
        Console::WriteLine();
        fs->Close();
    }
};

int main()
{
    FSSeek::Main();
}
// This code example displays the following output:
//
// !tset a si sihT
// !tset a si sihT
// !tset a si sihT

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.SetAccessControl 方法

FileStream
.
.
::
.
SetAccessControl 方法
FileStream 类

将 FileSecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 FileStream 对象所描述的文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub SetAccessControl ( _
    fileSecurity As FileSecurity _
)
public void SetAccessControl(
    FileSecurity fileSecurity
)
public:
void SetAccessControl(
    FileSecurity^ fileSecurity
)
member SetAccessControl :
        fileSecurity:FileSecurity -> unit

参数

fileSecurity
类型： System.Security.AccessControl FileSecurity
描述要应用于当前文件的 ACL 项的对象。
异常 | 条件
ObjectDisposedException | 文件被关闭。
ArgumentNullException | fileSecurity 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
SystemException | 未能找到或修改文件。
UnauthorizedAccessException | 当前进程不具有打开该文件的权限。

当可以对现有文件使用 FileStream 类和 SetAccessControl 时，请考虑使用 File..::.SetAccessControl 方法，因为它的操作更简便。

SetAccessControl 方法将访问控制列表 (ACL) 项应用于表示非继承 ACL 列表的文件。

警告说明 警告

为 fileSecurity 参数指定的 ACL 替换该文件的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有的 ACL 并对其进行修改，然后使用 SetAccessControl 将其重新应用于此文件。 为 fileSecurity 参数指定的 ACL 替换该文件的现有 ACL。若要为新用户添加权限，请使用 GetAccessControl 方法获取现有的 ACL 并对其进行修改，然后使用 SetAccessControl 将其重新应用于此文件。

ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。 ACL 描述对给定文件具有或没有执行特定操作的权限的个人和（或）组。有关更多信息，请参见ACL 技术概述和 如何：添加或移除访问控制列表项。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间


FileStream ..::.SetLength 方法

FileStream
.
.
::
.
SetLength 方法
FileStream 类

将该流的长度设置为给定值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub SetLength ( _
    value As Long _
)
public override void SetLength(
    long value
)
public:
virtual void SetLength(
    long long value
) override
abstract SetLength :
        value:int64 -> unit
override SetLength :
        value:int64 -> unit

参数

value
类型： System Int64
流的新长度。
异常 | 条件
IOException | 出现 I/O 错误。
NotSupportedException | 流不同时支持写入和查找。
ArgumentOutOfRangeException | 尝试将 value 参数设置为小于 0。

此方法重写 SetLength。

如果给定值小于流的当前长度，则截断流。如果给定值大于流的当前长度，则扩展流。如果流被扩展，则新旧长度的流之间的内容是未定义的。 如果给定值小于流的当前长度，则截断流。如果给定值大于流的当前长度，则扩展流。如果流被扩展，则新旧长度的流之间的内容是未定义的。 如果给定值小于流的当前长度，则截断流。如果给定值大于流的当前长度，则扩展流。如果流被扩展，则新旧长度的流之间的内容是未定义的。

为了使 SetLength 生效，流必须支持写入和搜索。

说明 说明

使用 CanWrite 属性确定当前实例是否支持写入，使用 CanSeek 属性确定是否支持查找。有关其他信息，请参见 CanWrite 和 CanSeek。 使用 CanWrite 属性确定当前实例是否支持写入，使用 CanSeek 属性确定是否支持查找。有关其他信息，请参见 CanWrite 和 CanSeek。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Unlock 方法

FileStream
.
.
::
.
Unlock 方法
FileStream 类

允许其他进程访问以前锁定的某个文件的全部或部分。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Unlock ( _
    position As Long, _
    length As Long _
)
public virtual void Unlock(
    long position,
    long length
)
public:
virtual void Unlock(
    long long position,
    long long length
)
abstract Unlock :
        position:int64 *
        length:int64 -> unit
override Unlock :
        position:int64 *
        length:int64 -> unit

参数

position
类型： System Int64
要取消锁定的范围的开始处。
length
类型： System Int64
要取消锁定的范围。
异常 | 条件
ArgumentOutOfRangeException | position 或 length 为负。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例是为 Lock 方法提供的一个更大示例的一部分。

' Unlock the specified part of the file.
Case "U"C
    Try
        aFileStream.Unlock( _
            textLength - 1, byteCount)
        Console.WriteLine("The specified part " & _
            "of file has been unlocked.")
    Catch ex As IOException
        Console.WriteLine( _
            "{0}: The specified part of file " & _
            "is not locked by the current " & _
            "process.", ex.GetType().Name)
    End Try
    Exit Select

// Unlock the specified part of the file.
case 'U':
    try
    {
        fileStream.Unlock(
            textLength - 1, byteCount);
        Console.WriteLine("The specified part " +
            "of file has been unlocked.");
    }
    catch(IOException e)
    {
        Console.WriteLine(
            "{0}: The specified part of file is " +
            "not locked by the current process.",
            e.GetType().Name);
    }
    break;

// Unlock the specified part of the file.
case 'U':
   try
   {
      fileStream->Unlock( textLength - 1, byteCount );
      Console::WriteLine( "The specified part "
      "of file has been unlocked." );
   }
   catch ( IOException^ e )
   {
      Console::WriteLine( "{0}: The specified part of file is "
      "not locked by the current process.", e->GetType()->Name );
   }

   break;

default:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Write 方法

FileStream
.
.
::
.
Write 方法
FileStream 类

使用从缓冲区读取的数据将字节块写入该流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    array As Byte(), _
    offset As Integer, _
    count As Integer _
)
public override void Write(
    byte[] array,
    int offset,
    int count
)
public:
virtual void Write(
    array<unsigned char>^ array,
    int offset,
    int count
) override
abstract Write :
        array:byte[] *
        offset:int *
        count:int -> unit
override Write :
        array:byte[] *
        offset:int *
        count:int -> unit

参数

array
类型：
array<
System Byte
>
[]
()
[]

包含要写入该流的数据的缓冲区。
offset
类型： System Int32
array 中的从零开始的字节偏移量，从此处开始将字节复制到当前流。
count
类型： System Int32
要写入当前流的字节数。
异常 | 条件
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | offset 和 count 描述 array 中的无效范围。
ArgumentOutOfRangeException | offset 或 count 为负。
IOException | 发生了 I/O 错误。 - 或 - 另一个线程可能已导致操作系统的文件句柄位置发生意外更改。
ObjectDisposedException | 流已关闭。
NotSupportedException | 当前流实例不支持写入。

此方法重写 Write。

offset 参数提供 array（缓冲区索引）中开始复制的位置的字节偏移量，而 count 参数提供将要写入该流的字节数。如果写操作成功，则流的当前位置前进写入的字节数。如果发生异常，则流的当前位置不变。 offset 参数提供 array（缓冲区索引）中开始复制的位置的字节偏移量，而 count 参数提供将要写入该流的字节数。如果写操作成功，则流的当前位置前进写入的字节数。如果发生异常，则流的当前位置不变。 offset 参数提供 array（缓冲区索引）中开始复制的位置的字节偏移量，而 count 参数提供将要写入该流的字节数。如果写操作成功，则流的当前位置前进写入的字节数。如果发生异常，则流的当前位置不变。

说明 说明

使用 CanWrite 属性可确定当前实例是否支持写入。有关更多信息，请参见CanWrite。 使用 CanWrite 属性可确定当前实例是否支持写入。有关更多信息，请参见CanWrite。

不支持中断一个正在执行写入操作的线程。尽管这些操作可能会在取消阻止线程后成功，这些操作仍可以降低应用程序的性能和可靠性。 不支持中断一个正在执行写入操作的线程。尽管这些操作可能会在取消阻止线程后成功，这些操作仍可以降低应用程序的性能和可靠性。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例是为 Lock 方法提供的一个更大示例的一部分。

' Write the original file data.
If aFileStream.Length = 0 Then
    tempString = _
        lastRecordText + recordNumber.ToString()
    aFileStream.Write(uniEncoding.GetBytes(tempString), _
        0, uniEncoding.GetByteCount(tempString))
End If

// Write the original file data.
if(fileStream.Length == 0)
{
    tempString =
        lastRecordText + recordNumber.ToString();
    fileStream.Write(uniEncoding.GetBytes(tempString),
        0, uniEncoding.GetByteCount(tempString));
}

// Write the original file data.
if ( fileStream->Length == 0 )
{
   tempString = String::Concat( lastRecordText, recordNumber.ToString() );
   fileStream->Write( uniEncoding->GetBytes( tempString ), 0, uniEncoding->GetByteCount( tempString ) );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.WriteByte 方法

FileStream
.
.
::
.
WriteByte 方法
FileStream 类

将一个字节写入文件流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub WriteByte ( _
    value As Byte _
)
public override void WriteByte(
    byte value
)
public:
virtual void WriteByte(
    unsigned char value
) override
abstract WriteByte :
        value:byte -> unit
override WriteByte :
        value:byte -> unit

参数

value
类型： System Byte
要写入流的字节。
异常 | 条件
ObjectDisposedException | 流已关闭。
NotSupportedException | 流不支持写入。

此方法重写 WriteByte。

使用 WriteByte 高效地向 FileStream 写入一个字节。如果流是关闭的或是不可写的，将会引发异常。 使用 WriteByte 高效地向 FileStream 写入一个字节。如果流是关闭的或是不可写的，将会引发异常。

说明 说明

使用 CanWrite 属性可确定当前实例是否支持写入。有关更多信息，请参见CanWrite。 使用 CanWrite 属性可确定当前实例是否支持写入。有关更多信息，请参见CanWrite。

对实现者的说明

Stream 的默认实现创建一个新的单字节数组，然后调用 Write。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Write。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Write。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例说明如何逐字节地向文件中写入数据，然后验证数据是否被正确写入。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Text

Class FStream

    Shared Sub Main()

        Const fileName As String = "Test#@@#.dat"

        ' Create random data to write to the file.
        Dim dataArray(100000) As Byte
        Dim randomGenerator As New Random()
        randomGenerator.NextBytes(dataArray)

        Dim fileStream As FileStream = _
            new FileStream(fileName, FileMode.Create)
        Try

            ' Write the data to the file, byte by byte.
            For i As Integer = 0 To dataArray.Length - 1
                fileStream.WriteByte(dataArray(i))
            Next i

            ' Set the stream position to the beginning of the stream.
            fileStream.Seek(0, SeekOrigin.Begin)

            ' Read and verify the data.
            For i As Integer = 0 To _
                CType(fileStream.Length, Integer) - 1

                If dataArray(i) <> fileStream.ReadByte() Then
                    Console.WriteLine("Error writing data.")
                    Return
                End If
            Next i
            Console.WriteLine("The data was written to {0} " & _
                "and verified.", fileStream.Name)
        Finally
            fileStream.Close()
        End Try

    End Sub
End Class

using System;
using System.IO;

class FStream
{
    static void Main()
    {
        const string fileName = "Test#@@#.dat";

        // Create random data to write to the file.
        byte[] dataArray = new byte[100000];
        new Random().NextBytes(dataArray);

        using(FileStream
            fileStream = new FileStream(fileName, FileMode.Create))
        {
            // Write the data to the file, byte by byte.
            for(int i = 0; i < dataArray.Length; i++)
            {
                fileStream.WriteByte(dataArray[i]);
            }

            // Set the stream position to the beginning of the file.
            fileStream.Seek(0, SeekOrigin.Begin);

            // Read and verify the data.
            for(int i = 0; i < fileStream.Length; i++)
            {
                if(dataArray[i] != fileStream.ReadByte())
                {
                    Console.WriteLine("Error writing data.");
                    return;
                }
            }
            Console.WriteLine("The data was written to {0} " +
                "and verified.", fileStream.Name);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ fileName =  "Test@##@.dat";

   // Create random data to write to the file.
   array<Byte>^dataArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( dataArray );
   FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
   try
   {

      // Write the data to the file, byte by byte.
      for ( int i = 0; i < dataArray->Length; i++ )
      {
         fileStream->WriteByte( dataArray[ i ] );

      }

      // Set the stream position to the beginning of the file.
      fileStream->Seek( 0, SeekOrigin::Begin );

      // Read and verify the data.
      for ( int i = 0; i < fileStream->Length; i++ )
      {
         if ( dataArray[ i ] != fileStream->ReadByte() )
         {
            Console::WriteLine( "Error writing data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written to {0} "
      "and verified.", fileStream->Name );
   }
   finally
   {
      fileStream->Close();
   }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream 属性

FileStream 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileStream 类

FileStream 类型公开以下成员。

名称 说明
页首

参考

FileStream 类
System.IO 命名空间


FileStream ..::.CanRead 属性

FileStream
.
.
::
.
CanRead 属性
FileStream 类

获取一个值，该值指示当前流是否支持读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanRead As Boolean
    Get
public override bool CanRead { get; }
public:
virtual property bool CanRead {
    bool get () override;
}
abstract CanRead : bool
override CanRead : bool

属性值

类型： System Boolean
如果流支持读取，则为 true；如果流已关闭或是通过只写访问方式打开的，则为 false。

如果从 Stream 派生的类不支持读取，则调用 Read、ReadByte 和 BeginRead 方法将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

下面的示例演示了 CanRead 属性的用法。此代码的输出是“MyFile.txt is not writable.”。若要获取输出消息“MyFile.txt can be both written to and read from.”，请将 FileStream 构造函数中的 FileAccess 参数更改为 ReadWrite。 下面的示例演示了 CanRead 属性的用法。此代码的输出是“MyFile.txt is not writable.”。若要获取输出消息“MyFile.txt can be both written to and read from.”，请将 FileStream 构造函数中的 FileAccess 参数更改为 ReadWrite。

Imports System
Imports System.IO

Class TestRW

    Public Shared Sub Main()
        Dim fs As New FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Read)
        If fs.CanRead And fs.CanWrite Then
            Console.WriteLine("MyFile.txt can be both written to and read from.")
        Else
            If fs.CanRead Then
                Console.WriteLine("MyFile.txt is not writable.")
            End If
        End If
    End Sub
End Class

using System;
using System.IO;

class TestRW
{
    public static void Main(String[] args)
    {
        FileStream fs = new FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Read);
        if (fs.CanRead && fs.CanWrite)
        {
            Console.WriteLine("MyFile.txt can be both written to and read from.");
        }
        else if (fs.CanRead)
        {
            Console.WriteLine("MyFile.txt is not writable.");
        }
    }
}

using namespace System;
using namespace System::IO;
int main( void )
{
   FileStream^ fs = gcnew FileStream( "MyFile.txt",FileMode::OpenOrCreate,FileAccess::Read );
   if ( fs->CanRead && fs->CanWrite )
   {
      Console::WriteLine( "MyFile.txt can be both written to and read from." );
   }
   else
   {
      Console::WriteLine( "MyFile.txt is not writable" );
   }

   return 0;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.CanSeek 属性

FileStream
.
.
::
.
CanSeek 属性
FileStream 类

获取一个值，该值指示当前流是否支持查找。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanSeek As Boolean
    Get
public override bool CanSeek { get; }
public:
virtual property bool CanSeek {
    bool get () override;
}
abstract CanSeek : bool
override CanSeek : bool

属性值

类型： System Boolean
如果流支持查找，则为 true；如果流已关闭或者 FileStream 是从操作系统句柄（如管道或到控制台的输出）构造的，则为 false。

如果从 Stream 派生的类不支持查找，则对 Length、SetLength、Position 和 Seek 的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

下面的示例使用 CanSeek 属性检查流是否支持查找。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        ' Delete the file if it exists.
        If File.Exists(path) Then
            File.Delete(path)
        End If

        'Create the file.
        Dim fs As FileStream = File.Create(path)

        If fs.CanSeek Then
            Console.WriteLine("The stream connected to {0} is seekable.", path)
        Else
            Console.WriteLine("The stream connected to {0} is not seekable.", path)
        End If

        fs.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            if (fs.CanSeek)
            {
                Console.WriteLine("The stream connected to {0} is seekable.", path);
            }
            else
            {
                Console.WriteLine("The stream connected to {0} is not seekable.", path);
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Delete the file if it exists.
   if ( File::Exists( path ) )
   {
      File::Delete( path );
   }

   //Create the file.
   FileStream^ fs = File::Create( path );
   try
   {
      if ( fs->CanSeek )
      {
         Console::WriteLine( "The stream connected to {0} is seekable.", path );
      }
      else
      {
         Console::WriteLine( "The stream connected to {0} is not seekable.", path );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.CanWrite 属性

FileStream
.
.
::
.
CanWrite 属性
FileStream 类

获取一个值，该值指示当前流是否支持写入。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanWrite As Boolean
    Get
public override bool CanWrite { get; }
public:
virtual property bool CanWrite {
    bool get () override;
}
abstract CanWrite : bool
override CanWrite : bool

属性值

类型： System Boolean
如果流支持写入，则为 true；如果流已关闭或是通过只读访问方式打开的，则为 false。

如果从 Stream 派生的类不支持写入，则对 SetLength、Write、BeginWrite 或 WriteByte 的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

下面的示例使用 CanWrite 属性检查流是否支持写入操作。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        'Ensure that the file is readonly.
        File.SetAttributes(path, File.GetAttributes(path) Or FileAttributes.ReadOnly)

        'Create the file.
        Dim fs As FileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)

        If fs.CanWrite Then
            Console.WriteLine("The stream connected to {0} is writable.", path)
        Else
            Console.WriteLine("The stream connected to {0} is not writable.", path)
        End If
        fs.Close()
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Ensure that the file is readonly.
        File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);

        //Create the file.
        using (FileStream fs = new FileStream (path, FileMode.OpenOrCreate, FileAccess.Read))
        {
            if (fs.CanWrite)
            {
                Console.WriteLine("The stream for file {0} is writable.", path);
            }
            else
            {
                Console.WriteLine("The stream for file {0} is not writable.", path);
            }
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";

   // Ensure that the file is readonly.
   File::SetAttributes( path, static_cast<FileAttributes>(File::GetAttributes( path ) | FileAttributes::ReadOnly) );

   //Create the file.
   FileStream^ fs = gcnew FileStream( path,FileMode::OpenOrCreate,FileAccess::Read );
   try
   {
      if ( fs->CanWrite )
      {
         Console::WriteLine( "The stream for file {0} is writable.", path );
      }
      else
      {
         Console::WriteLine( "The stream for file {0} is not writable.", path );
      }
   }
   finally
   {
      if ( fs )
         delete (IDisposable^)fs;
   }
}

下面是使用 CanWrite 属性的示例。此代码的输出为“MyFile.txt is writable.”。若要获取输出消息“MyFile.txt can be both written to and read from.”，请将 FileStream 构造函数中的 FileAccess 参数更改为 ReadWrite。 下面是使用 CanWrite 属性的示例。此代码的输出为“MyFile.txt is writable.”。若要获取输出消息“MyFile.txt can be both written to and read from.”，请将 FileStream 构造函数中的 FileAccess 参数更改为 ReadWrite。

Imports System
Imports System.IO

Class TestRW
    Public Shared Sub Main()
        Dim fs As New FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write)

        If fs.CanRead And fs.CanWrite Then
            Console.WriteLine("MyFile.txt can be both written to and read from.")
        ElseIf fs.CanWrite Then
            Console.WriteLine("MyFile.txt is writable.")
        End If
    End Sub
End Class

using System;
using System.IO;

class TestRW
{
    public static void Main(String[] args)
    {
        FileStream fs = new FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Write);
        if (fs.CanRead && fs.CanWrite)
        {
            Console.WriteLine("MyFile.txt can be both written to and read from.");
        }
        else if (fs.CanWrite)
        {
            Console.WriteLine("MyFile.txt is writable.");
        }
    }
}

using namespace System;
using namespace System::IO;
int main( void )
{
   FileStream^ fs = gcnew FileStream( "MyFile.txt",FileMode::OpenOrCreate,FileAccess::Write );
   if ( fs->CanRead && fs->CanWrite )
   {
      Console::WriteLine( "MyFile.txt can be both written to and read from." );
   }
   else
   {
      Console::WriteLine( "MyFile.txt is writable." );
   }

   return 0;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Handle 属性

FileStream
.
.
::
.
Handle 属性
FileStream 类

注意：此 API 现在已过时。

获取当前 FileStream 对象所封装文件的操作系统文件句柄。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.  http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Overridable ReadOnly Property Handle As IntPtr
    Get
[ObsoleteAttribute("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public virtual IntPtr Handle { get; }
[ObsoleteAttribute(L"This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public:
virtual property IntPtr Handle {
    IntPtr get ();
}
[<ObsoleteAttribute("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
abstract Handle : IntPtr
[<ObsoleteAttribute("This property has been deprecated.  Please use FileStream's SafeFileHandle property instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
override Handle : IntPtr

属性值

类型： System IntPtr
此 FileStream 对象所封装文件的操作系统文件句柄；如果 FileStream 已关闭，则为 -1。
异常 | 条件
SecurityException | 调用方没有所要求的权限。

此属性是与操作系统提供的系统调用（如 Windows 上的 ReadFile）一起使用的操作系统句柄。它无法与需要文件描述符的 C 库函数（如 fread）一起使用。 此属性是与操作系统提供的系统调用（如 Windows 上的 ReadFile）一起使用的操作系统句柄。它无法与需要文件描述符的 C 库函数（如 fread）一起使用。

操作系统句柄可能已经同步或异步打开，取决于所调用的是哪个 FileStream 构造函数。使用 IsAsync 属性确定此句柄是否是异步打开的。在 Win32 中，这意味着该句柄是为重叠的 IO 打开的，它对 ReadFile 和 WriteFile 要求不同的参数。 操作系统句柄可能已经同步或异步打开，取决于所调用的是哪个 FileStream 构造函数。使用 IsAsync 属性确定此句柄是否是异步打开的。在 Win32 中，这意味着该句柄是为重叠的 IO 打开的，它对 ReadFile 和 WriteFile 要求不同的参数。 操作系统句柄可能已经同步或异步打开，取决于所调用的是哪个 FileStream 构造函数。使用 IsAsync 属性确定此句柄是否是异步打开的。在 Win32 中，这意味着该句柄是为重叠的 IO 打开的，它对 ReadFile 和 WriteFile 要求不同的参数。

警告说明 警告

如果创建 FileStream、传递它的句柄、某些操作移动句柄的文件指针，然后再次使用 FileStream，则可能发生数据损坏。多个线程无法同时安全地写入同一文件，FileStream 缓冲代码假定它以独占方式控制该句柄。如果 FileStream 检测到一些其他进程已经移动文件指针，FileStream 可能引发 IOException。为避免这种情况，请不要将任何数据写入 FileStream 可能已缓冲的文件部分，并且将文件指针还原为上一次在 FileStream 上调用方法时文件指针所在的位置。 如果创建 FileStream、传递它的句柄、某些操作移动句柄的文件指针，然后再次使用 FileStream，则可能发生数据损坏。多个线程无法同时安全地写入同一文件，FileStream 缓冲代码假定它以独占方式控制该句柄。如果 FileStream 检测到一些其他进程已经移动文件指针，FileStream 可能引发 IOException。为避免这种情况，请不要将任何数据写入 FileStream 可能已缓冲的文件部分，并且将文件指针还原为上一次在 FileStream 上调用方法时文件指针所在的位置。 如果创建 FileStream、传递它的句柄、某些操作移动句柄的文件指针，然后再次使用 FileStream，则可能发生数据损坏。多个线程无法同时安全地写入同一文件，FileStream 缓冲代码假定它以独占方式控制该句柄。如果 FileStream 检测到一些其他进程已经移动文件指针，FileStream 可能引发 IOException。为避免这种情况，请不要将任何数据写入 FileStream 可能已缓冲的文件部分，并且将文件指针还原为上一次在 FileStream 上调用方法时文件指针所在的位置。 如果创建 FileStream、传递它的句柄、某些操作移动句柄的文件指针，然后再次使用 FileStream，则可能发生数据损坏。多个线程无法同时安全地写入同一文件，FileStream 缓冲代码假定它以独占方式控制该句柄。如果 FileStream 检测到一些其他进程已经移动文件指针，FileStream 可能引发 IOException。为避免这种情况，请不要将任何数据写入 FileStream 可能已缓冲的文件部分，并且将文件指针还原为上一次在 FileStream 上调用方法时文件指针所在的位置。
  • SecurityPermission

    表示访问非托管代码的能力。关联枚举：SecurityPermissionFlag..::.UnmanagedCode 安全操作：LinkDemand。 表示访问非托管代码的能力。关联枚举：SecurityPermissionFlag..::.UnmanagedCode 安全操作：LinkDemand。

  • SecurityPermission

    表示访问非托管代码的能力。关联枚举：SecurityPermissionFlag..::.UnmanagedCode 安全操作：InheritanceDemand。 表示访问非托管代码的能力。关联枚举：SecurityPermissionFlag..::.UnmanagedCode 安全操作：InheritanceDemand。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.IsAsync 属性

FileStream
.
.
::
.
IsAsync 属性
FileStream 类

获取一个值，该值指示 FileStream 是异步还是同步打开的。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property IsAsync As Boolean
    Get
public virtual bool IsAsync { get; }
public:
virtual property bool IsAsync {
    bool get ();
}
abstract IsAsync : bool
override IsAsync : bool

属性值

类型： System Boolean
如果 FileStream 是异步打开的，则为 true，否则为 false。

IsAsync 属性检测 FileStream 句柄是否是异步打开的，使您的代码能够正确使用 Handle 属性。在 Win32 中，IsAsync 为真意味着句柄是为重叠的 I/O 打开的，因此对 ReadFile 和 WriteFile 要求不同的参数。 IsAsync 属性检测 FileStream 句柄是否是异步打开的，使您的代码能够正确使用 Handle 属性。在 Win32 中，IsAsync 为真意味着句柄是为重叠的 I/O 打开的，因此对 ReadFile 和 WriteFile 要求不同的参数。

Windows 98, Windows Millennium Edition 平台说明： Windows 98, Windows Millennium Edition 平台说明：这些操作系统不支持异步 I/O。如果这些平台的代码请求异步打开文件，公共语言运行时将改为同步打开它们。 Windows 98, Windows Millennium Edition 平台说明：这些操作系统不支持异步 I/O。如果这些平台的代码请求异步打开文件，公共语言运行时将改为同步打开它们。

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

Shared Sub Main()

    ' Create a synchronization object that gets
    ' signaled when verification is complete.
    Dim manualEvent As New ManualResetEvent(False)

    ' Create random data to write to the file.
    Dim writeArray(100000) As Byte
    Dim randomGenerator As New Random()
    randomGenerator.NextBytes(writeArray)

    Dim fStream As New FileStream("Test#@@#.dat", _
        FileMode.Create, FileAccess.ReadWrite, _
        FileShare.None, 4096, True)

    ' Check that the FileStream was opened asynchronously.
    If fStream.IsAsync = True
        Console.WriteLine("fStream was opened asynchronously.")
    Else
        Console.WriteLine("fStream was not opened asynchronously.")
    End If

    ' Asynchronously write to the file.
    Dim asyncResult As IAsyncResult = fStream.BeginWrite( _
        writeArray, 0, writeArray.Length, _
        AddressOf EndWriteCallback , _
        New State(fStream, writeArray, manualEvent))

    ' Concurrently do other work and then wait
    ' for the data to be written and verified.
    manualEvent.WaitOne(5000, False)
End Sub

static void Main()
{
    // Create a synchronization object that gets
    // signaled when verification is complete.
    ManualResetEvent manualEvent = new ManualResetEvent(false);

    // Create random data to write to the file.
    byte[] writeArray = new byte[100000];
    new Random().NextBytes(writeArray);

    FileStream fStream =
        new FileStream("Test#@@#.dat", FileMode.Create,
        FileAccess.ReadWrite, FileShare.None, 4096, true);

    // Check that the FileStream was opened asynchronously.
    Console.WriteLine("fStream was {0}opened asynchronously.",
        fStream.IsAsync ? "" : "not ");

    // Asynchronously write to the file.
    IAsyncResult asyncResult = fStream.BeginWrite(
        writeArray, 0, writeArray.Length,
        new AsyncCallback(EndWriteCallback),
        new State(fStream, writeArray, manualEvent));

    // Concurrently do other work and then wait
    // for the data to be written and verified.
    manualEvent.WaitOne(5000, false);
}

int main()
{

   // Create a synchronization object that gets
   // signaled when verification is complete.
   ManualResetEvent^ manualEvent = gcnew ManualResetEvent( false );

   // Create the data to write to the file.
   array<Byte>^writeArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( writeArray );
   FileStream^ fStream = gcnew FileStream(  "Test#@@#.dat",FileMode::Create,FileAccess::ReadWrite,FileShare::None,4096,true );

   // Check that the FileStream was opened asynchronously.
   Console::WriteLine( "fStream was {0}opened asynchronously.", fStream->IsAsync ? (String^)"" : "not " );

   // Asynchronously write to the file.
   IAsyncResult^ asyncResult = fStream->BeginWrite( writeArray, 0, writeArray->Length, gcnew AsyncCallback( &FStream::EndWriteCallback ), gcnew State( fStream,writeArray,manualEvent ) );

   // Concurrently do other work and then wait
   // for the data to be written and verified.
   manualEvent->WaitOne( 5000, false );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Length 属性

FileStream
.
.
::
.
Length 属性
FileStream 类

获取用字节表示的流长度。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Length As Long
    Get
public override long Length { get; }
public:
virtual property long long Length {
    long long get () override;
}
abstract Length : int64
override Length : int64

属性值

类型： System Int64
用字节表示流长度的长值。
异常 | 条件
NotSupportedException | 此流的 CanSeek 为 false。
IOException | 发生 I/O 错误，如文件被关闭。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例使用 Length 和 Position 属性检查文件尾条件。

If s.Length = s.Position Then
    Console.WriteLine("End of file has been reached.")
End If

if( s.Length==s.Position )
{
   Console.WriteLine("End of file has been reached.");
}

if ( s->Length == s->Position )
{
   Console::WriteLine( "End of file has been reached." );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Name 属性

FileStream
.
.
::
.
Name 属性
FileStream 类

获取传递给构造函数的 FileStream 的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Name As String
    Get
public string Name { get; }
public:
property String^ Name {
    String^ get ();
}
member Name : string

属性值

类型： System String
一个字符串，它是 FileStream 的名称。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

Private Shared Sub EndReadCallback(asyncResult As IAsyncResult)
     Dim tempState As State = _
         DirectCast(asyncResult.AsyncState, State)
     Dim readCount As Integer = _
         tempState.FStream.EndRead(asyncResult)

     Dim i As Integer = 0
     While(i < readCount)
         If(tempState.ReadArray(i) <> tempState.WriteArray(i))
             Console.WriteLine("Error writing data.")
             tempState.FStream.Close()
             Return
         End If
         i += 1
     End While

     Console.WriteLine("The data was written to {0} and " & _
         "verified.", tempState.FStream.Name)
     tempState.FStream.Close()

     ' Signal the main thread that the verification is finished.
     tempState.ManualEvent.Set()
 End Sub

static void EndReadCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    int readCount = tempState.FStream.EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState.ReadArray[i] != tempState.WriteArray[i++])
        {
            Console.WriteLine("Error writing data.");
            tempState.FStream.Close();
            return;
        }
    }
    Console.WriteLine("The data was written to {0} and verified.",
        tempState.FStream.Name);
    tempState.FStream.Close();

    // Signal the main thread that the verification is finished.
    tempState.ManualEvent.Set();
}

   static void EndReadCallback( IAsyncResult^ asyncResult )
   {
      State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
      int readCount = tempState->FStream->EndRead( asyncResult );
      int i = 0;
      while ( i < readCount )
      {
         if ( tempState->ReadArray[ i ] != tempState->WriteArray[ i++ ] )
         {
            Console::WriteLine( "Error writing data." );
            tempState->FStream->Close();
            return;
         }
      }

      Console::WriteLine( "The data was written to {0} "
      "and verified.", tempState->FStream->Name );
      tempState->FStream->Close();

      // Signal the main thread that the verification is finished.
      tempState->ManualEvent->Set();
   }

public:
  • FileIOPermission

    用于访问路径。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问路径。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.Position 属性

FileStream
.
.
::
.
Position 属性
FileStream 类

获取或设置此流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Property Position As Long
    Get
    Set
public override long Position { get; set; }
public:
virtual property long long Position {
    long long get () override;
    void set (long long value) override;
}
abstract Position : int64 with get, set
override Position : int64 with get, set

属性值

类型： System Int64
此流的当前位置。
异常 | 条件
NotSupportedException | 流不支持查找。
IOException | 发生了 I/O 错误。 - 或 - 在 Windows 98 或较早版本中，该位置被设置为超出流的末尾的很大的一个值。
ArgumentOutOfRangeException | 尝试将位置设置为负值。
EndOfStreamException | 尝试在流的末尾之外查找，而流不支持此操作。

支持搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Microsoft Windows NT 和较新版本中，所有添加到文件末尾的数据都被设置为零。在 Microsoft Windows 98 或较早版本中，所有添加到文件末尾的数据都不会被设置为零，这意味着先前删除的数据对该流而言为可见。在 Windows 98 或较早版本中，如果将流的位置设置为超出流的末尾的很大的一个值，可能导致引发异常。 支持搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Microsoft Windows NT 和较新版本中，所有添加到文件末尾的数据都被设置为零。在 Microsoft Windows 98 或较早版本中，所有添加到文件末尾的数据都不会被设置为零，这意味着先前删除的数据对该流而言为可见。在 Windows 98 或较早版本中，如果将流的位置设置为超出流的末尾的很大的一个值，可能导致引发异常。 支持搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Microsoft Windows NT 和较新版本中，所有添加到文件末尾的数据都被设置为零。在 Microsoft Windows 98 或较早版本中，所有添加到文件末尾的数据都不会被设置为零，这意味着先前删除的数据对该流而言为可见。在 Windows 98 或较早版本中，如果将流的位置设置为超出流的末尾的很大的一个值，可能导致引发异常。 支持搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Microsoft Windows NT 和较新版本中，所有添加到文件末尾的数据都被设置为零。在 Microsoft Windows 98 或较早版本中，所有添加到文件末尾的数据都不会被设置为零，这意味着先前删除的数据对该流而言为可见。在 Windows 98 或较早版本中，如果将流的位置设置为超出流的末尾的很大的一个值，可能导致引发异常。 支持搜索到超出流长度的任何位置。当在文件的长度之外查找时，文件的大小会增加。在 Microsoft Windows NT 和较新版本中，所有添加到文件末尾的数据都被设置为零。在 Microsoft Windows 98 或较早版本中，所有添加到文件末尾的数据都不会被设置为零，这意味着先前删除的数据对该流而言为可见。在 Windows 98 或较早版本中，如果将流的位置设置为超出流的末尾的很大的一个值，可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例使用 Length 和 Position 属性检查文件尾条件。

If s.Length = s.Position Then
    Console.WriteLine("End of file has been reached.")
End If

if( s.Length==s.Position )
{
   Console.WriteLine("End of file has been reached.");
}

if ( s->Length == s->Position )
{
   Console::WriteLine( "End of file has been reached." );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileStream ..::.SafeFileHandle 属性

FileStream
.
.
::
.
SafeFileHandle 属性
FileStream 类

获取 SafeFileHandle 对象，该对象表示当前 FileStream 对象封装的文件的操作系统文件句柄。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property SafeFileHandle As SafeFileHandle
    Get
public virtual SafeFileHandle SafeFileHandle { get; }
public:
virtual property SafeFileHandle^ SafeFileHandle {
    SafeFileHandle^ get ();
}
abstract SafeFileHandle : SafeFileHandle
override SafeFileHandle : SafeFileHandle

属性值

类型： Microsoft.Win32.SafeHandles SafeFileHandle
一个对象，该对象表示当前 FileStream 对象封装的文件的操作系统文件句柄。

SafeFileHandle 属性自动刷新流，并将当前的流位置设置为 0。这将允许移动文件或使用此属性返回的 SafeFileHandle 来通过另一个流重置流位置。 SafeFileHandle 属性自动刷新流，并将当前的流位置设置为 0。这将允许移动文件或使用此属性返回的 SafeFileHandle 来通过另一个流重置流位置。

  • SecurityPermission

    调用非托管代码的权限。

    安全操作：Demand

    关联的枚举：UnmanagedCode

  • SecurityPermission

    调用非托管代码的权限。

    安全操作：Link Demand

    关联的枚举：UnmanagedCode

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemEventArgs 类

FileSystemEventArgs 类
成员

提供目录事件的数据：Changed、Created、Deleted。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Class FileSystemEventArgs _
    Inherits EventArgs
public class FileSystemEventArgs : EventArgs
public ref class FileSystemEventArgs : public EventArgs
type FileSystemEventArgs =
    class
        inherit EventArgs
    end

FileSystemEventArgs 类作为参数传递给这些事件的事件处理程序：

当对 FileSystemWatcher 的指定 Path 中的文件或目录的大小、系统特性、最近写入时间、最近访问时间或安全权限进行更改时，会发生 Changed 事件。

当在 FileSystemWatcher 的指定 Path 中创建文件或目录时，会发生 Created 事件。

当删除 FileSystemWatcher 的指定 Path 中的某个文件或目录时，会发生 Deleted 事件。有关更多信息，请参见 FileSystemWatcher。 当删除 FileSystemWatcher 的指定 Path 中的某个文件或目录时，会发生 Deleted 事件。有关更多信息，请参见 FileSystemWatcher。

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名、更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名、更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

System.IO System.IO..::.FileSystemEventArgsFileSystemEventArgs

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemEventArgs 成员
System.IO 命名空间
Changed
Created
Deleted
FileSystemEventHandler
FileSystemWatcher
InternalBufferOverflowException
NotifyFilters
OnCreated
OnDeleted
Path
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


FileSystemEventArgs 成员

FileSystemEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemEventArgs 类

提供目录事件的数据：Changed、Created、Deleted。

FileSystemEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileSystemEventArgs 类
System.IO 命名空间


FileSystemEventArgs 构造函数

FileSystemEventArgs 构造函数
FileSystemEventArgs 类

初始化 FileSystemEventArgs 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    changeType As WatcherChangeTypes, _
    directory As String, _
    name As String _
)
public FileSystemEventArgs(
    WatcherChangeTypes changeType,
    string directory,
    string name
)
public:
FileSystemEventArgs(
    WatcherChangeTypes changeType,
    String^ directory,
    String^ name
)
new :
        changeType:WatcherChangeTypes *
        directory:string *
        name:string -> FileSystemEventArgs

参数

changeType
类型： System.IO WatcherChangeTypes
WatcherChangeTypes 值之一，它表示在文件系统中检测到的更改种类。
directory
类型： System String
受影响的文件或目录的根目录。
name
类型： System String
受影响的文件或目录名。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemEventArgs 类
FileSystemEventArgs 成员
System.IO 命名空间
FileSystemWatcher
WatcherChangeTypes


FileSystemEventArgs 方法

FileSystemEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemEventArgs 类

FileSystemEventArgs 类型公开以下成员。

名称 说明
页首

参考

FileSystemEventArgs 类
System.IO 命名空间


FileSystemEventArgs 属性

FileSystemEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemEventArgs 类

FileSystemEventArgs 类型公开以下成员。

名称 说明
页首

参考

FileSystemEventArgs 类
System.IO 命名空间


FileSystemEventArgs ..::.ChangeType 属性

FileSystemEventArgs
.
.
::
.
ChangeType 属性
FileSystemEventArgs 类

获取所发生的目录事件的类型。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public ReadOnly Property ChangeType As WatcherChangeTypes
    Get
public WatcherChangeTypes ChangeType { get; }
public:
property WatcherChangeTypes ChangeType {
    WatcherChangeTypes get ();
}
member ChangeType : WatcherChangeTypes

属性值

类型： System.IO WatcherChangeTypes
WatcherChangeTypes 值之一，表示在文件系统中检测到的更改种类。

下面的示例阐释了 ChangeType 属性。此代码示例摘自一个为 FileSystemEventArgs 类提供的更大的示例。 下面的示例阐释了 ChangeType 属性。此代码示例摘自一个为 FileSystemEventArgs 类提供的更大的示例。

' This method is called when a file is created, changed, or deleted.
Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

    ' Show that a file has been created, changed, or deleted.
    Dim wct As WatcherChangeTypes = e.ChangeType
    Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
End Sub

//  This method is called when a file is created, changed, or deleted.
private static void OnChanged(object source, FileSystemEventArgs e)
{
    //  Show that a file has been created, changed, or deleted.
    WatcherChangeTypes wct = e.ChangeType;
    Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemEventArgs 类
FileSystemEventArgs 成员
System.IO 命名空间
WatcherChangeTypes


FileSystemEventArgs ..::.FullPath 属性

FileSystemEventArgs
.
.
::
.
FullPath 属性
FileSystemEventArgs 类

获取受影响的文件或目录的完全限定的路径。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public ReadOnly Property FullPath As String
    Get
public string FullPath { get; }
public:
property String^ FullPath {
    String^ get ();
}
member FullPath : string

属性值

类型： System String
受影响的文件或目录的路径。

下面的示例阐释了 FullPath 属性。此代码示例摘自一个为 FileSystemEventArgs 类提供的更大示例。 下面的示例阐释了 FullPath 属性。此代码示例摘自一个为 FileSystemEventArgs 类提供的更大示例。

' This method is called when a file is created, changed, or deleted.
Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

    ' Show that a file has been created, changed, or deleted.
    Dim wct As WatcherChangeTypes = e.ChangeType
    Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
End Sub

//  This method is called when a file is created, changed, or deleted.
private static void OnChanged(object source, FileSystemEventArgs e)
{
    //  Show that a file has been created, changed, or deleted.
    WatcherChangeTypes wct = e.ChangeType;
    Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
}
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemEventArgs 类
FileSystemEventArgs 成员
System.IO 命名空间


FileSystemEventArgs ..::.Name 属性

FileSystemEventArgs
.
.
::
.
Name 属性
FileSystemEventArgs 类

获取受影响的文件或目录的名称。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public ReadOnly Property Name As String
    Get
public string Name { get; }
public:
property String^ Name {
    String^ get ();
}
member Name : string

属性值

类型： System String
受影响的文件或目录名。

Name 属性返回的名称为受影响的文件或目录的相对路径，此文件或目录与受监视的目录有关。例如，如果 FileSystemWatcher 对象正在监视目录“C:\temp”，而“C:\temp\test\file.txt”中的文件发生改动，则 Name 属性将返回“test\file.txt”。 Name 属性返回的名称为受影响的文件或目录的相对路径，此文件或目录与受监视的目录有关。例如，如果 FileSystemWatcher 对象正在监视目录“C:\temp”，而“C:\temp\test\file.txt”中的文件发生改动，则 Name 属性将返回“test\file.txt”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemEventArgs 类
FileSystemEventArgs 成员
System.IO 命名空间


FileSystemEventHandler 委托

FileSystemEventHandler 委托

表示将处理 FileSystemWatcher 类的 Changed、Created 或 Deleted 事件的方法。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Delegate Sub FileSystemEventHandler ( _
    sender As Object, _
    e As FileSystemEventArgs _
)
public delegate void FileSystemEventHandler(
    Object sender,
    FileSystemEventArgs e
)
public delegate void FileSystemEventHandler(
    Object^ sender,
    FileSystemEventArgs^ e
)
type FileSystemEventHandler =
    delegate of
        sender:Object *
        e:FileSystemEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.IO FileSystemEventArgs
包含事件数据的 FileSystemEventArgs。

当创建 FileSystemEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 FileSystemEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 FileSystemEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 FileSystemEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间
Changed
Created
Deleted
FileSystemEventArgs
FileSystemWatcher
InternalBufferOverflowException
NotifyFilters
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


FileSystemInfo 类

FileSystemInfo 类
成员

为 FileInfo 和 DirectoryInfo 对象提供基类。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FileIOPermissionAttribute(SecurityAction.InheritanceDemand, Unrestricted := True)> _
Public MustInherit Class FileSystemInfo _
    Inherits MarshalByRefObject _
    Implements ISerializable
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FileIOPermissionAttribute(SecurityAction.InheritanceDemand, Unrestricted = true)]
public abstract class FileSystemInfo : MarshalByRefObject,
    ISerializable
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FileIOPermissionAttribute(SecurityAction::InheritanceDemand, Unrestricted = true)]
public ref class FileSystemInfo abstract : public MarshalByRefObject,
    ISerializable
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
[<FileIOPermissionAttribute(SecurityAction.InheritanceDemand, Unrestricted = true)>]
type FileSystemInfo =
    class
        inherit MarshalByRefObject
        interface ISerializable
    end

FileSystemInfo 类包含文件和目录操作所共有的方法。FileSystemInfo 对象可以表示文件或目录，从而可以作为 FileInfo 或 DirectoryInfo 对象的基础。当分析许多文件和目录时，请使用该基类。 FileSystemInfo 类包含文件和目录操作所共有的方法。FileSystemInfo 对象可以表示文件或目录，从而可以作为 FileInfo 或 DirectoryInfo 对象的基础。当分析许多文件和目录时，请使用该基类。 FileSystemInfo 类包含文件和目录操作所共有的方法。FileSystemInfo 对象可以表示文件或目录，从而可以作为 FileInfo 或 DirectoryInfo 对象的基础。当分析许多文件和目录时，请使用该基类。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

一个派生类只有从 FileIOPermissionAccess 枚举获得 AllAccess 权限时才能从 FileSystemInfo 继承。

在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径：

  • C# 中的“c:\\MyDir\\MyFile.txt”或 Visual Basic 中的“c:\MyDir\MyFile.txt”。

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何循环浏览所有文件和目录，查询有关每一项的一些信息。

Imports System.IO
Module Module1

    Sub Main()
        ' Loop through all the immediate subdirectories of C.
        For Each entry As String In Directory.GetDirectories("C:\")
            DisplayFileSystemInfoAttributes(New DirectoryInfo(entry))
        Next

        ' Loop through all the files in C.
        For Each entry As String In Directory.GetFiles("C:\")
            DisplayFileSystemInfoAttributes(New FileInfo(entry))
        Next
    End Sub

    Sub DisplayFileSystemInfoAttributes(ByVal fsi As IO.FileSystemInfo)
        ' Assume that this entry is a file.
        Dim entryType As String = "File"

        ' Determine if this entry is really a directory.
        If (fsi.Attributes And FileAttributes.Directory) = FileAttributes.Directory Then
            entryType = "Directory"
        End If

        ' Show this entry's type, name, and creation date.
        Console.WriteLine("{0} entry {1} was created on {2:D}", _
            entryType, fsi.FullName, fsi.CreationTime)
    End Sub
End Module

' Output will vary based on contents of drive C.
'
' Directory entry C:\Documents and Settings was created on Tuesday, November 25, 2003
' Directory entry C:\Inetpub was created on Monday, January 12, 2004
' Directory entry C:\Program Files was created on Tuesday, November 25, 2003
' Directory entry C:\RECYCLER was created on Tuesday, November 25, 2003
' Directory entry C:\System Volume Information was created on Tuesday, November 2, 2003
' Directory entry C:\WINDOWS was created on Tuesday, November 25, 2003
' File entry C:\IO.SYS was created on Tuesday, November 25, 2003
' File entry C:\MSDOS.SYS was created on Tuesday, November 25, 2003
' File entry C:\pagefile.sys was created on Saturday, December 27, 2003

using System;
using System.IO;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //  Loop through all the immediate subdirectories of C.
            foreach (string entry in Directory.GetDirectories(@"C:\"))
            {
                DisplayFileSystemInfoAttributes(new DirectoryInfo(entry));
            }
            //  Loop through all the files in C.
            foreach (string entry in Directory.GetFiles(@"C:\"))
            {
                DisplayFileSystemInfoAttributes(new FileInfo(entry));
            }
        }
        static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
        {
            //  Assume that this entry is a file.
            string entryType = "File";

            // Determine if entry is really a directory
            if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
            {
                entryType = "Directory";
            }
            //  Show this entry's type, name, and creation date.
            Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
        }
    }
}

 // Output will vary based on contents of drive C.

 // Directory entry C:\Documents and Settings was created on Tuesday, November 25, 2003
 // Directory entry C:\Inetpub was created on Monday, January 12, 2004
 // Directory entry C:\Program Files was created on Tuesday, November 25, 2003
 // Directory entry C:\RECYCLER was created on Tuesday, November 25, 2003
 // Directory entry C:\System Volume Information was created on Tuesday, November 2, 2003
 // Directory entry C:\WINDOWS was created on Tuesday, November 25, 2003
 // File entry C:\IO.SYS was created on Tuesday, November 25, 2003
 // File entry C:\MSDOS.SYS was created on Tuesday, November 25, 2003
 // File entry C:\pagefile.sys was created on Saturday, December 27, 2003

using namespace System;
using namespace System::IO;

namespace ConsoleApplication2
{
    public ref class Program
    {
    public:
        static void Main()
        {
            //  Loop through all the immediate subdirectories of C.
            for each (String^ entry in Directory::GetDirectories("C:\\"))
            {
                DisplayFileSystemInfoAttributes(gcnew DirectoryInfo(entry));
            }
            //  Loop through all the files in C.
            for each (String^ entry in Directory::GetFiles("C:\\"))
            {
                DisplayFileSystemInfoAttributes(gcnew FileInfo(entry));
            }
        }
        static void DisplayFileSystemInfoAttributes(FileSystemInfo^ fsi)
        {
            //  Assume that this entry is a file.
            String^ entryType = "File";

            // Determine if entry is really a directory
            if ((fsi->Attributes & FileAttributes::Directory) == FileAttributes::Directory)
            {
                entryType = "Directory";
            }
            //  Show this entry's type, name, and creation date.
            Console::WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi->FullName, fsi->CreationTime);
        }
    };
};

int main()
{
    ConsoleApplication2::Program::Main();
}

 // Output will vary based on contents of drive C.

 // Directory entry C:\Documents and Settings was created on Tuesday, November 25, 2003
 // Directory entry C:\Inetpub was created on Monday, January 12, 2004
 // Directory entry C:\Program Files was created on Tuesday, November 25, 2003
 // Directory entry C:\RECYCLER was created on Tuesday, November 25, 2003
 // Directory entry C:\System Volume Information was created on Tuesday, November 2, 2003
 // Directory entry C:\WINDOWS was created on Tuesday, November 25, 2003
 // File entry C:\IO.SYS was created on Tuesday, November 25, 2003
 // File entry C:\MSDOS.SYS was created on Tuesday, November 25, 2003
 // File entry C:\pagefile.sys was created on Saturday, December 27, 2003
  • FileIOPermission

    用于从该类继承的权限。关联的枚举：Unrestricted 用于从该类继承的权限。关联的枚举：Unrestricted

    安全操作：继承要求

System.IO System.IO..::.FileSystemInfoFileSystemInfo

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 成员
System.IO 命名空间
DriveInfo

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


FileSystemInfo 成员

FileSystemInfo 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemInfo 类

为 FileInfo 和 DirectoryInfo 对象提供基类。

FileSystemInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileSystemInfo 类
System.IO 命名空间


FileSystemInfo 构造函数

FileSystemInfo 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemInfo 类

初始化 FileSystemInfo 类的新实例。

名称 说明
页首

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间


FileSystemInfo 构造函数

FileSystemInfo 构造函数
FileSystemInfo 类

初始化 FileSystemInfo 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected FileSystemInfo()
protected:
FileSystemInfo()
new : unit -> FileSystemInfo

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
FileSystemInfo 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo 构造函数 (SerializationInfo, StreamingContext)

FileSystemInfo 构造函数 (SerializationInfo, StreamingContext)
FileSystemInfo 类

用序列化数据初始化 FileSystemInfo 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected FileSystemInfo(
    SerializationInfo info,
    StreamingContext context
)
protected:
FileSystemInfo(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> FileSystemInfo

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。
异常 | 条件
ArgumentNullException | 指定的 SerializationInfo 为空。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemInfo 类
FileSystemInfo 成员
FileSystemInfo 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo 字段

FileSystemInfo 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemInfo 类

FileSystemInfo 类型公开以下成员。

名称 说明
页首

参考

FileSystemInfo 类
System.IO 命名空间


FileSystemInfo ..::.FullPath 字段

FileSystemInfo
.
.
::
.
FullPath 字段
FileSystemInfo 类

表示目录或文件的完全限定目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected FullPath As String
protected string FullPath
protected:
String^ FullPath
val mutable FullPath: string

对继承者的说明

从 FileSystemInfo 派生的类可以使用 FullPath 字段来确定正在操作对象的完整目录。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.OriginalPath 字段

FileSystemInfo
.
.
::
.
OriginalPath 字段
FileSystemInfo 类

最初由用户指定的目录（不论是相对目录还是绝对目录）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected OriginalPath As String
protected string OriginalPath
protected:
String^ OriginalPath
val mutable OriginalPath: string

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo 方法

FileSystemInfo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemInfo 类

FileSystemInfo 类型公开以下成员。

名称 说明
页首

参考

FileSystemInfo 类
System.IO 命名空间


FileSystemInfo ..::.Delete 方法

FileSystemInfo
.
.
::
.
Delete 方法
FileSystemInfo 类

删除文件或目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Sub Delete
public abstract void Delete()
public:
virtual void Delete() abstract
abstract Delete : unit -> unit

异常 | 条件
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.GetObjectData 方法

FileSystemInfo
.
.
::
.
GetObjectData 方法
FileSystemInfo 类

设置带有文件名和附加异常信息的 SerializationInfo 对象。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Overridable Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
[ComVisibleAttribute(false)]
public virtual void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
[ComVisibleAttribute(false)]
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
)
[<ComVisibleAttribute(false)>]
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
[<ComVisibleAttribute(false)>]
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

实现

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于访问有关当前实例所描述路径的信息的权限。关联的枚举：PathDiscovery 用于访问有关当前实例所描述路径的信息的权限。关联的枚举：PathDiscovery

    安全操作：Demand

  • SecurityPermission

    用于链接到此类的权限。关联的枚举：SerializationFormatter 用于链接到此类的权限。关联的枚举：SerializationFormatter

    安全操作：Link Demand

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.MemberwiseClone 方法

FileSystemInfo
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemInfo 类

名称 说明
页首

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间


FileSystemInfo ..::.Refresh 方法

FileSystemInfo
.
.
::
.
Refresh 方法
FileSystemInfo 类

刷新对象的状态。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Refresh
public void Refresh()
public:
void Refresh()
member Refresh : unit -> unit

异常 | 条件
IOException | 设备（如磁盘驱动器）未准备好。

FileSystemInfo.Refresh 从当前文件系统中制作文件的快照。即使文件系统返回不正确或过期信息，Refresh 也无法修正基础文件系统。这可能在 Windows 98 等平台上发生。 FileSystemInfo.Refresh 从当前文件系统中制作文件的快照。即使文件系统返回不正确或过期信息，Refresh 也无法修正基础文件系统。这可能在 Windows 98 等平台上发生。 FileSystemInfo.Refresh 从当前文件系统中制作文件的快照。即使文件系统返回不正确或过期信息，Refresh 也无法修正基础文件系统。这可能在 Windows 98 等平台上发生。

在尝试获取特性信息以前必须调用 Refresh，否则，该信息会过期。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo 属性

FileSystemInfo 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemInfo 类

FileSystemInfo 类型公开以下成员。

名称 说明
页首

参考

FileSystemInfo 类
System.IO 命名空间


FileSystemInfo ..::.Attributes 属性

FileSystemInfo
.
.
::
.
Attributes 属性
FileSystemInfo 类

获取或设置当前文件或目录的特性。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Property Attributes As FileAttributes
    Get
    Set
public FileAttributes Attributes { get; set; }
public:
property FileAttributes Attributes {
    FileAttributes get ();
    void set (FileAttributes value);
}
member Attributes : FileAttributes with get, set

属性值

类型： System.IO FileAttributes
当前 FileSystemInfo 的 FileAttributes。
异常 | 条件
FileNotFoundException | 指定的文件不存在。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
SecurityException | 调用方没有所要求的权限。
ArgumentException | 调用方尝试设置无效的文件特性。
IOException | Refresh 不能初始化数据。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

此属性的值是存档、压缩、目录、隐藏、脱机、只读、系统和临时文件特性标志的组合。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例阐释了 Attributes 属性。此代码示例摘自一个为 FileSystemInfo 类提供的更大示例。 下面的示例阐释了 Attributes 属性。此代码示例摘自一个为 FileSystemInfo 类提供的更大示例。

Sub DisplayFileSystemInfoAttributes(ByVal fsi As IO.FileSystemInfo)
    ' Assume that this entry is a file.
    Dim entryType As String = "File"

    ' Determine if this entry is really a directory.
    If (fsi.Attributes And FileAttributes.Directory) = FileAttributes.Directory Then
        entryType = "Directory"
    End If

    ' Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", _
        entryType, fsi.FullName, fsi.CreationTime)
End Sub

static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
{
    //  Assume that this entry is a file.
    string entryType = "File";

    // Determine if entry is really a directory
    if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
}

static void DisplayFileSystemInfoAttributes(FileSystemInfo^ fsi)
{
    //  Assume that this entry is a file.
    String^ entryType = "File";

    // Determine if entry is really a directory
    if ((fsi->Attributes & FileAttributes::Directory) == FileAttributes::Directory)
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console::WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi->FullName, fsi->CreationTime);
}
  • FileIOPermission

    用于写入文件和目录。关联枚举：FileIOPermissionAccess..::.Write 安全操作：Demand 用于写入文件和目录。关联枚举：FileIOPermissionAccess..::.Write 安全操作：Demand

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.CreationTime 属性

FileSystemInfo
.
.
::
.
CreationTime 属性
FileSystemInfo 类

获取或设置当前文件或目录的创建时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Property CreationTime As DateTime
    Get
    Set
public DateTime CreationTime { get; set; }
public:
property DateTime CreationTime {
    DateTime get ();
    void set (DateTime value);
}
member CreationTime : DateTime with get, set

属性值

类型： System DateTime
当前 FileSystemInfo 对象的创建日期和时间。
异常 | 条件
IOException | Refresh 不能初始化数据。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

注意 此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间。此过程称为文件隧道。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。 NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间。此过程称为文件隧道。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。 NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间。此过程称为文件隧道。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。

如果包含 FileSystemInfo 对象的文件系统不支持此信息，则此属性值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此属性，因此不支持此属性的 DirectoryInfo 实现。

下面的示例阐释了 CreationTime 属性。此代码示例摘自一个为 FileSystemInfo 类提供的更大示例。 下面的示例阐释了 CreationTime 属性。此代码示例摘自一个为 FileSystemInfo 类提供的更大示例。

Sub DisplayFileSystemInfoAttributes(ByVal fsi As IO.FileSystemInfo)
    ' Assume that this entry is a file.
    Dim entryType As String = "File"

    ' Determine if this entry is really a directory.
    If (fsi.Attributes And FileAttributes.Directory) = FileAttributes.Directory Then
        entryType = "Directory"
    End If

    ' Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", _
        entryType, fsi.FullName, fsi.CreationTime)
End Sub

static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
{
    //  Assume that this entry is a file.
    string entryType = "File";

    // Determine if entry is really a directory
    if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
}

static void DisplayFileSystemInfoAttributes(FileSystemInfo^ fsi)
{
    //  Assume that this entry is a file.
    String^ entryType = "File";

    // Determine if entry is really a directory
    if ((fsi->Attributes & FileAttributes::Directory) == FileAttributes::Directory)
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console::WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi->FullName, fsi->CreationTime);
}
  • FileIOPermission

    用于设置创建时间。关联的枚举：FileIOPermissionAccess..::.Write 用于设置创建时间。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.CreationTimeUtc 属性

FileSystemInfo
.
.
::
.
CreationTimeUtc 属性
FileSystemInfo 类

获取或设置当前文件或目录的创建时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Property CreationTimeUtc As DateTime
    Get
    Set
[ComVisibleAttribute(false)]
public DateTime CreationTimeUtc { get; set; }
[ComVisibleAttribute(false)]
public:
property DateTime CreationTimeUtc {
    DateTime get ();
    void set (DateTime value);
}
[<ComVisibleAttribute(false)>]
member CreationTimeUtc : DateTime with get, set

属性值

类型： System DateTime
当前 FileSystemInfo 对象的创建日期及时间（UTC 格式）。
异常 | 条件
IOException | Refresh 不能初始化数据。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

注意 此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间。此过程称为文件隧道。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。 NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间。此过程称为文件隧道。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。 NTFS 格式的驱动器可以在短时间内缓存文件元信息，如文件创建时间。此过程称为文件隧道。因此，如果要覆盖或替换现有文件，可能需要显式地设置文件的创建时间。

如果包含 FileSystemInfo 对象的文件系统不支持此信息，则此属性值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此属性，因此不支持此属性的 DirectoryInfo 实现。

  • FileIOPermission

    用于设置创建时间。关联的枚举：FileIOPermissionAccess..::.Write 用于设置创建时间。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.Exists 属性

FileSystemInfo
.
.
::
.
Exists 属性
FileSystemInfo 类

获取指示文件或目录是否存在的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property Exists As Boolean
    Get
public abstract bool Exists { get; }
public:
virtual property bool Exists {
    bool get () abstract;
}
abstract Exists : bool

属性值

类型： System Boolean
如果文件或目录存在，则为 true；否则为 false。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.Extension 属性

FileSystemInfo
.
.
::
.
Extension 属性
FileSystemInfo 类

获取表示文件扩展名部分的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Extension As String
    Get
public string Extension { get; }
public:
property String^ Extension {
    String^ get ();
}
member Extension : string

属性值

类型： System String
包含 FileSystemInfo 扩展名的字符串。

Extension 属性返回 FileSystemInfo 扩展名（包括句点 (.)）。例如，对于文件 c:\NewFile.txt，此属性返回“.txt”。 Extension 属性返回 FileSystemInfo 扩展名（包括句点 (.)）。例如，对于文件 c:\NewFile.txt，此属性返回“.txt”。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
检索文件的完全限定路径。 | GetFullPath
只检索路径中的文件名。 | GetFileNameWithoutExtension
只检索路径中的目录名。 | GetDirectoryName
更改文件扩展名。 | ChangeExtension

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.FullName 属性

FileSystemInfo
.
.
::
.
FullName 属性
FileSystemInfo 类

获取目录或文件的完整目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property FullName As String
    Get
public virtual string FullName { get; }
public:
virtual property String^ FullName {
    String^ get ();
}
abstract FullName : string
override FullName : string

属性值

类型： System String
包含完整目录的字符串。
异常 | 条件
SecurityException | 调用方没有所要求的权限。

例如，对于文件 c:\NewFile.txt，此属性返回“c:\NewFile.txt”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例阐释了 FullName 属性。此代码示例摘自一个为 FileSystemInfo 类提供的更大示例。 下面的示例阐释了 FullName 属性。此代码示例摘自一个为 FileSystemInfo 类提供的更大示例。

Sub DisplayFileSystemInfoAttributes(ByVal fsi As IO.FileSystemInfo)
    ' Assume that this entry is a file.
    Dim entryType As String = "File"

    ' Determine if this entry is really a directory.
    If (fsi.Attributes And FileAttributes.Directory) = FileAttributes.Directory Then
        entryType = "Directory"
    End If

    ' Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", _
        entryType, fsi.FullName, fsi.CreationTime)
End Sub

static void DisplayFileSystemInfoAttributes(FileSystemInfo fsi)
{
    //  Assume that this entry is a file.
    string entryType = "File";

    // Determine if entry is really a directory
    if ((fsi.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console.WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi.FullName, fsi.CreationTime);
}

static void DisplayFileSystemInfoAttributes(FileSystemInfo^ fsi)
{
    //  Assume that this entry is a file.
    String^ entryType = "File";

    // Determine if entry is really a directory
    if ((fsi->Attributes & FileAttributes::Directory) == FileAttributes::Directory)
    {
        entryType = "Directory";
    }
    //  Show this entry's type, name, and creation date.
    Console::WriteLine("{0} entry {1} was created on {2:D}", entryType, fsi->FullName, fsi->CreationTime);
}
  • FileIOPermission

    用于访问路径。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问路径。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.LastAccessTime 属性

FileSystemInfo
.
.
::
.
LastAccessTime 属性
FileSystemInfo 类

获取或设置上次访问当前文件或目录的时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Property LastAccessTime As DateTime
    Get
    Set
public DateTime LastAccessTime { get; set; }
public:
property DateTime LastAccessTime {
    DateTime get ();
    void set (DateTime value);
}
member LastAccessTime : DateTime with get, set

属性值

类型： System DateTime
上次访问当前文件或目录的时间。
异常 | 条件
IOException | Refresh 不能初始化数据。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

注意 此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此属性，因此不支持此属性的 DirectoryInfo 实现。

下面的代码示例演示通过 "touch" 操作更新 LastAccessTime 属性。在此例中，文件为 "touched"，将 CreationTime、LastAccessTime 和 LastWriteTime 属性更新为当前日期和时间。 下面的代码示例演示通过 "touch" 操作更新 LastAccessTime 属性。在此例中，文件为 "touched"，将 CreationTime、LastAccessTime 和 LastWriteTime 属性更新为当前日期和时间。

Imports System
Imports System.IO

Public Class Touch
    Public Shared Sub Main(ByVal args() As String)

        ' Make sure an argument (filename) was provided.
        If args.Length > 0 Then

            ' Verify that the provided filename exists.
            If File.Exists(args(0)) Then
                Dim fi As FileInfo = New FileInfo(args(0))
                touchFile(fi)
            Else
                Console.WriteLine("Could not find the file {0}", args(0))
            End If
        Else
            Console.WriteLine("No file specified.")
        End If
    End Sub

    Public Shared Sub touchFile(ByVal fsi As FileSystemInfo)
        Console.WriteLine("Touching: {0}", fsi.FullName)

        ' Update the CreationTime, LastWriteTime and LastAccessTime.
        Try
            fsi.CreationTime = DateTime.Now
            fsi.LastAccessTime = DateTime.Now
            fsi.LastWriteTime = DateTime.Now
        Catch e As Exception
            Console.WriteLine("Error: {0}", e.Message)
        End Try

    End Sub

End Class

using System;
using System.IO;

namespace touch
{
    class Touch
    {
        static void Main(string[] args)
        {
            // Make sure a filename was provided.
            if (args.Length > 0)
            {
                // Verify that the provided filename exists.
                if (File.Exists(args[0]))
                {
                    FileInfo fi = new FileInfo(args[0]);
                    touchFile(fi);
                }
                else
                {
                    Console.WriteLine(
                        "Could not find the file: {0}.", args[0]);
                }
            }
            else
            {
                Console.WriteLine("No file was specified.");
            }
        }

        static void touchFile(FileSystemInfo fsi)
        {
            Console.WriteLine("Touching: {0}", fsi.FullName);

            // Update the CreationTime, LastWriteTime and LastAccessTime.
            try
            {
                fsi.CreationTime = fsi.LastWriteTime = fsi.LastAccessTime =
                    DateTime.Now;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
        }
    }
}
  • FileIOPermission

    用于设置上次访问时间。关联的枚举：FileIOPermissionAccess..::.Write 用于设置上次访问时间。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.LastAccessTimeUtc 属性

FileSystemInfo
.
.
::
.
LastAccessTimeUtc 属性
FileSystemInfo 类

获取或设置上次访问当前文件或目录的时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Property LastAccessTimeUtc As DateTime
    Get
    Set
[ComVisibleAttribute(false)]
public DateTime LastAccessTimeUtc { get; set; }
[ComVisibleAttribute(false)]
public:
property DateTime LastAccessTimeUtc {
    DateTime get ();
    void set (DateTime value);
}
[<ComVisibleAttribute(false)>]
member LastAccessTimeUtc : DateTime with get, set

属性值

类型： System DateTime
上次访问当前文件或目录的 UTC 时间。
异常 | 条件
IOException | Refresh 不能初始化数据。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

注意 此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此属性，因此不支持此属性的 DirectoryInfo 实现。

  • FileIOPermission

    用于设置上次访问时间。关联的枚举：FileIOPermissionAccess..::.Write 用于设置上次访问时间。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.LastWriteTime 属性

FileSystemInfo
.
.
::
.
LastWriteTime 属性
FileSystemInfo 类

获取或设置上次写入当前文件或目录的时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Property LastWriteTime As DateTime
    Get
    Set
public DateTime LastWriteTime { get; set; }
public:
property DateTime LastWriteTime {
    DateTime get ();
    void set (DateTime value);
}
member LastWriteTime : DateTime with get, set

属性值

类型： System DateTime
上次写入当前文件的时间。
异常 | 条件
IOException | Refresh 不能初始化数据。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

注意 此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。 如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）协调世界时 (UTC)，调整为本地时间。

如果包含该文件的文件系统不支持此信息，则此属性值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此属性，因此不支持此属性的 DirectoryInfo 实现。

下面的代码示例演示通过 "touch" 操作更新 LastWriteTime 属性。在此例中，文件为 "touched"，将 CreationTime、LastAccessTime 和 LastWriteTime 属性更新为当前日期和时间。 下面的代码示例演示通过 "touch" 操作更新 LastWriteTime 属性。在此例中，文件为 "touched"，将 CreationTime、LastAccessTime 和 LastWriteTime 属性更新为当前日期和时间。

Imports System
Imports System.IO

Public Class Touch
    Public Shared Sub Main(ByVal args() As String)

        ' Make sure an argument (filename) was provided.
        If args.Length > 0 Then

            ' Verify that the provided filename exists.
            If File.Exists(args(0)) Then
                Dim fi As FileInfo = New FileInfo(args(0))
                touchFile(fi)
            Else
                Console.WriteLine("Could not find the file {0}", args(0))
            End If
        Else
            Console.WriteLine("No file specified.")
        End If
    End Sub

    Public Shared Sub touchFile(ByVal fsi As FileSystemInfo)
        Console.WriteLine("Touching: {0}", fsi.FullName)

        ' Update the CreationTime, LastWriteTime and LastAccessTime.
        Try
            fsi.CreationTime = DateTime.Now
            fsi.LastAccessTime = DateTime.Now
            fsi.LastWriteTime = DateTime.Now
        Catch e As Exception
            Console.WriteLine("Error: {0}", e.Message)
        End Try

    End Sub

End Class

using System;
using System.IO;

namespace touch
{
    class Touch
    {
        static void Main(string[] args)
        {
            // Make sure a filename was provided.
            if (args.Length > 0)
            {
                // Verify that the provided filename exists.
                if (File.Exists(args[0]))
                {
                    FileInfo fi = new FileInfo(args[0]);
                    touchFile(fi);
                }
                else
                {
                    Console.WriteLine(
                        "Could not find the file: {0}.", args[0]);
                }
            }
            else
            {
                Console.WriteLine("No file was specified.");
            }
        }

        static void touchFile(FileSystemInfo fsi)
        {
            Console.WriteLine("Touching: {0}", fsi.FullName);

            // Update the CreationTime, LastWriteTime and LastAccessTime.
            try
            {
                fsi.CreationTime = fsi.LastWriteTime = fsi.LastAccessTime =
                    DateTime.Now;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
        }
    }
}
  • FileIOPermission

    用于设置上次写入时间。关联的枚举：FileIOPermissionAccess..::.Write 用于设置上次写入时间。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.LastWriteTimeUtc 属性

FileSystemInfo
.
.
::
.
LastWriteTimeUtc 属性
FileSystemInfo 类

获取或设置上次写入当前文件或目录的时间，其格式为协调世界时 (UTC)。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Property LastWriteTimeUtc As DateTime
    Get
    Set
[ComVisibleAttribute(false)]
public DateTime LastWriteTimeUtc { get; set; }
[ComVisibleAttribute(false)]
public:
property DateTime LastWriteTimeUtc {
    DateTime get ();
    void set (DateTime value);
}
[<ComVisibleAttribute(false)>]
member LastWriteTimeUtc : DateTime with get, set

属性值

类型： System DateTime
上次写入当前文件的 UTC 时间。
异常 | 条件
IOException | Refresh 不能初始化数据。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。

注意 此方法可能会返回一个不准确的值，因为操作系统可能不会持续更新它所用的本机函数的值。

第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。 第一次调用时，FileSystemInfo 调用 Refresh 并返回 API 上的缓存信息以获取特性等。以后调用时，必须调用 Refresh 以获取信息的最新副本。

如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。 如果 FileSystemInfo 对象中描述的文件不存在，则此属性将返回公元 1601 年 1 月 1 日午夜 12:00 点。间隔数（以 100 纳秒为一个间隔）。

如果包含该文件的文件系统不支持此信息，则此属性值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 95, Windows 98, Windows 98 Second Edition 平台说明： Windows 95, Windows 98, Windows 98 Second Edition 平台说明：这些操作系统不支持此属性，因此不支持此属性的 DirectoryInfo 实现。

  • FileIOPermission

    用于设置上次写入时间。关联的枚举：FileIOPermissionAccess..::.Write 用于设置上次写入时间。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemInfo ..::.Name 属性

FileSystemInfo
.
.
::
.
Name 属性
FileSystemInfo 类

对于文件，获取该文件的名称。对于目录，如果存在层次结构，则获取层次结构中最后一个目录的名称。否则，Name 属性获取该目录的名称。 对于文件，获取该文件的名称。对于目录，如果存在层次结构，则获取层次结构中最后一个目录的名称。否则，Name 属性获取该目录的名称。 对于文件，获取该文件的名称。对于目录，如果存在层次结构，则获取层次结构中最后一个目录的名称。否则，Name 属性获取该目录的名称。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property Name As String
    Get
public abstract string Name { get; }
public:
virtual property String^ Name {
    String^ get () abstract;
}
abstract Name : string

属性值

类型： System String
一个字符串，它是父目录的名称、层次结构中最后一个目录的名称或文件的名称（包括文件扩展名）。

对于一个目录，Name 只返回父级目录的名称，如 Dir，不返回 c:\Dir。对于一个子目录，Name 只返回子目录的名称，如 Sub1，不返回 c:\Dir\Sub1。 对于一个目录，Name 只返回父级目录的名称，如 Dir，不返回 c:\Dir。对于一个子目录，Name 只返回子目录的名称，如 Sub1，不返回 c:\Dir\Sub1。

对于文件，Name 只返回文件名和文件扩展名（如 MyFile.txt，而不是 c:\Dir\Myfile.txt）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

FileSystemInfo 类
FileSystemInfo 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


FileSystemWatcher 类

FileSystemWatcher 类
成员

侦听文件系统更改通知，并在目录或目录中的文件发生更改时引发事件。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FileSystemWatcherDesc")> _
<PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")> _
<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name := "FullTrust")> _
Public Class FileSystemWatcher _
    Inherits Component _
    Implements ISupportInitialize
[IODescriptionAttribute("FileSystemWatcherDesc")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public class FileSystemWatcher : Component,
    ISupportInitialize
[IODescriptionAttribute(L"FileSystemWatcherDesc")]
[PermissionSetAttribute(SecurityAction::LinkDemand, Name = L"FullTrust")]
[PermissionSetAttribute(SecurityAction::InheritanceDemand, Name = L"FullTrust")]
public ref class FileSystemWatcher : public Component,
    ISupportInitialize
[<IODescriptionAttribute("FileSystemWatcherDesc")>]
[<PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")>]
[<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")>]
type FileSystemWatcher =
    class
        inherit Component
        interface ISupportInitialize
    end

使用 FileSystemWatcher 监视指定目录中的更改。可监视指定目录中的文件或子目录的更改。可以创建一个组件来监视本地计算机、网络驱动器或远程计算机上的文件。 使用 FileSystemWatcher 监视指定目录中的更改。可监视指定目录中的文件或子目录的更改。可以创建一个组件来监视本地计算机、网络驱动器或远程计算机上的文件。 使用 FileSystemWatcher 监视指定目录中的更改。可监视指定目录中的文件或子目录的更改。可以创建一个组件来监视本地计算机、网络驱动器或远程计算机上的文件。

若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("") 或使用通配符（“*.*”）。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视文本文件中的更改，请将 Filter 属性设置为“*.txt”。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("") 或使用通配符（“*.*”）。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视文本文件中的更改，请将 Filter 属性设置为“*.txt”。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("") 或使用通配符（“*.*”）。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视文本文件中的更改，请将 Filter 属性设置为“*.txt”。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("") 或使用通配符（“*.*”）。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视文本文件中的更改，请将 Filter 属性设置为“*.txt”。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("") 或使用通配符（“*.*”）。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视文本文件中的更改，请将 Filter 属性设置为“*.txt”。

可监视目录或文件中的若干种更改。例如，可监视文件或目录的 Attributes、LastWrite 日期和时间或 Size 方面的更改。通过将 NotifyFilter 属性设置为 NotifyFilters 值之一来达到此目的。有关可监视的更改类型的更多信息，请参见 NotifyFilters。 可监视目录或文件中的若干种更改。例如，可监视文件或目录的 Attributes、LastWrite 日期和时间或 Size 方面的更改。通过将 NotifyFilter 属性设置为 NotifyFilters 值之一来达到此目的。有关可监视的更改类型的更多信息，请参见 NotifyFilters。 可监视目录或文件中的若干种更改。例如，可监视文件或目录的 Attributes、LastWrite 日期和时间或 Size 方面的更改。通过将 NotifyFilter 属性设置为 NotifyFilters 值之一来达到此目的。有关可监视的更改类型的更多信息，请参见 NotifyFilters。 可监视目录或文件中的若干种更改。例如，可监视文件或目录的 Attributes、LastWrite 日期和时间或 Size 方面的更改。通过将 NotifyFilter 属性设置为 NotifyFilters 值之一来达到此目的。有关可监视的更改类型的更多信息，请参见 NotifyFilters。

可监视文件或目录的重命名、删除或创建。例如，若要监视文本文件的重命名，请将 Filter 属性设置为“*.txt”，并使用为其参数指定的 Renamed 来调用 WaitForChanged 方法。 可监视文件或目录的重命名、删除或创建。例如，若要监视文本文件的重命名，请将 Filter 属性设置为“*.txt”，并使用为其参数指定的 Renamed 来调用 WaitForChanged 方法。

Windows 操作系统在 FileSystemWatcher 创建的缓冲区中通知组件文件发生更改。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。使用 InternalBufferSize 属性来增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非页面内存，所以应确保缓冲区大小适中（尽量小，但也要有足够大小以便不会丢失任何文件更改事件）。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性，以便可以筛选掉不想要的更改通知。 Windows 操作系统在 FileSystemWatcher 创建的缓冲区中通知组件文件发生更改。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。使用 InternalBufferSize 属性来增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非页面内存，所以应确保缓冲区大小适中（尽量小，但也要有足够大小以便不会丢失任何文件更改事件）。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性，以便可以筛选掉不想要的更改通知。 Windows 操作系统在 FileSystemWatcher 创建的缓冲区中通知组件文件发生更改。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。使用 InternalBufferSize 属性来增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非页面内存，所以应确保缓冲区大小适中（尽量小，但也要有足够大小以便不会丢失任何文件更改事件）。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性，以便可以筛选掉不想要的更改通知。 Windows 操作系统在 FileSystemWatcher 创建的缓冲区中通知组件文件发生更改。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。使用 InternalBufferSize 属性来增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非页面内存，所以应确保缓冲区大小适中（尽量小，但也要有足够大小以便不会丢失任何文件更改事件）。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性，以便可以筛选掉不想要的更改通知。 Windows 操作系统在 FileSystemWatcher 创建的缓冲区中通知组件文件发生更改。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。使用 InternalBufferSize 属性来增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非页面内存，所以应确保缓冲区大小适中（尽量小，但也要有足够大小以便不会丢失任何文件更改事件）。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性，以便可以筛选掉不想要的更改通知。

有关 FileSystemWatcher 的实例的初始属性值列表，请参见 FileSystemWatcher 构造函数。

使用 FileSystemWatcher 类时，请注意以下事项。

  • 不忽略隐藏文件。

  • 在某些系统中，FileSystemWatcher 使用 8.3 短文件名格式报告文件更改。例如，对“LongFileName.LongExtension”的更改可能报告为“LongFil~.Lon”。 在某些系统中，FileSystemWatcher 使用 8.3 短文件名格式报告文件更改。例如，对“LongFileName.LongExtension”的更改可能报告为“LongFil~.Lon”。

  • 此类在应用于所有成员的类级别上包含一个链接要求和一个继承要求。如果直接调用方或派生类不具有完全信任权限，则会引发 SecurityException。有关安全要求的详细信息，请参见 链接需求。 此类在应用于所有成员的类级别上包含一个链接要求和一个继承要求。如果直接调用方或派生类不具有完全信任权限，则会引发 SecurityException。有关安全要求的详细信息，请参见 链接需求。 此类在应用于所有成员的类级别上包含一个链接要求和一个继承要求。如果直接调用方或派生类不具有完全信任权限，则会引发 SecurityException。有关安全要求的详细信息，请参见 链接需求。

  • 您可以为 InternalBufferSize 属性（用于监视网络上的目录）设置的最大大小为 64 KB。

复制和移动文件夹

操作系统和 FileSystemWatcher 对象将剪切和粘贴操作或移动操作解释为对文件夹及其内容的重命名操作。如果将包含文件的文件夹剪切并粘贴到受监视的文件夹中，则 FileSystemWatcher 对象仅将文件夹报告为新建，但不能将其内容报告为新建，因为实际上只是对它们进行了重命名。 操作系统和 FileSystemWatcher 对象将剪切和粘贴操作或移动操作解释为对文件夹及其内容的重命名操作。如果将包含文件的文件夹剪切并粘贴到受监视的文件夹中，则 FileSystemWatcher 对象仅将文件夹报告为新建，但不能将其内容报告为新建，因为实际上只是对它们进行了重命名。

若要接收已将文件夹内容移动或复制到受监视的文件夹中的通知，请根据下表中的建议提供 OnChanged 和 OnRenamed 事件处理程序方法。

事件处理程序 | 已处理的事件 | 执行
OnChanged | Changed, Created, Deleted | 报告文件特性的更改、创建的文件和删除的文件。
OnRenamed | Renamed | 列出重命名的文件和文件夹的新旧路径，需要时可以递归扩展。

事件和缓冲区大小

请注意，有几个因素可能影响引发哪些文件系统更改事件，如下所述：

  • 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。

  • 只要磁盘没有切换或移除，FileSystemWatcher 就可监视它们。因为 CD 和 DVD 的时间戳和属性不能更改，所以 FileSystemWatcher 不为 CD 和 DVD 引发事件。要使该组件正常运行，远程计算机必须具有所需的这些平台之一。 只要磁盘没有切换或移除，FileSystemWatcher 就可监视它们。因为 CD 和 DVD 的时间戳和属性不能更改，所以 FileSystemWatcher 不为 CD 和 DVD 引发事件。要使该组件正常运行，远程计算机必须具有所需的这些平台之一。 只要磁盘没有切换或移除，FileSystemWatcher 就可监视它们。因为 CD 和 DVD 的时间戳和属性不能更改，所以 FileSystemWatcher 不为 CD 和 DVD 引发事件。要使该组件正常运行，远程计算机必须具有所需的这些平台之一。

  • 在 Windows XP（Service Pack 1 之前版本）或者 Windows 2000 SP2 或更低版本中，如果多个 FileSystemWatcher 对象正在监视同一个 UNC 路径，则只有其中一个对象会引发事件。在运行 Windows XP SP1 及之后版本、Windows 2000 SP3 或之后版本或者 Windows Server 2003 的计算机上，所有 FileSystemWatcher 对象都将引发相应的事件。 在 Windows XP（Service Pack 1 之前版本）或者 Windows 2000 SP2 或更低版本中，如果多个 FileSystemWatcher 对象正在监视同一个 UNC 路径，则只有其中一个对象会引发事件。在运行 Windows XP SP1 及之后版本、Windows 2000 SP3 或之后版本或者 Windows Server 2003 的计算机上，所有 FileSystemWatcher 对象都将引发相应的事件。

  • 设置 Filter 不会减少进入缓冲区中的内容。

请注意，由于 Windows 操作系统的依赖项，当丢失某个事件或超出缓冲区大小时，FileSystemWatcher 不会引发 Error 事件。若要防止丢失事件，请遵从这些准则： 请注意，由于 Windows 操作系统的依赖项，当丢失某个事件或超出缓冲区大小时，FileSystemWatcher 不会引发 Error 事件。若要防止丢失事件，请遵从这些准则：

  • 使用 InternalBufferSize 属性增加缓冲区大小可以防止丢失文件系统更改事件。

  • 避免监视带有长文件名的文件。考虑使用较短的名称进行重命名。 避免监视带有长文件名的文件。考虑使用较短的名称进行重命名。

  • 尽可能使事件处理代码短小。

下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。

在此示例中使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}
  • SecurityPermission

    用于调用 ProcessStartInfo 的成员。要求值：LinkDemand；命名的权限集：FullTrust。 用于调用 ProcessStartInfo 的成员。要求值：LinkDemand；命名的权限集：FullTrust。

  • SecurityPermission

    用于从 ProcessStartInfo 类派生。要求值：InheritanceDemand；命名的权限集：FullTrust。 用于从 ProcessStartInfo 类派生。要求值：InheritanceDemand；命名的权限集：FullTrust。

System.IO System.IO..::.FileSystemWatcherFileSystemWatcher
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 成员
System.IO 命名空间
FileSystemWatcher NotifyFilter
NotifyFilters
FileSystemEventArgs
FileSystemEventHandler
Filter
IncludeSubdirectories
InternalBufferOverflowException
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


FileSystemWatcher 成员

FileSystemWatcher 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

侦听文件系统更改通知，并在目录或目录中的文件发生更改时引发事件。

FileSystemWatcher 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

FileSystemWatcher 类
System.IO 命名空间


FileSystemWatcher 构造函数

FileSystemWatcher 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

初始化 FileSystemWatcher 类的新实例。

名称 说明
页首

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间


FileSystemWatcher 构造函数

FileSystemWatcher 构造函数
FileSystemWatcher 类

初始化 FileSystemWatcher 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New
public FileSystemWatcher()
public:
FileSystemWatcher()
new : unit -> FileSystemWatcher

您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。 您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。

下表显示 FileSystemWatcher 实例的初始属性值。

Property | 初始值
NotifyFilter | LastWrite、FileName 和 DirectoryName 的按位“或”组合
EnableRaisingEvents | false
Filter | “*.*”（监视所有文件。）
IncludeSubdirectories | false
InternalBufferSize | 8192
Path | 空字符串 ("")
说明 说明

组件将不监视指定的目录，直到设置 Path，并且 EnableRaisingEvents 为 true。

下面的示例创建一个 FileSystemWatcher 对象，以便在运行时监视指定的目录。FileSystemWatcher 对象监视在 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，则文件路径显示在控制台上。在文件重命名后，旧路径和新路径都将显示在控制台上。 下面的示例创建一个 FileSystemWatcher 对象，以便在运行时监视指定的目录。FileSystemWatcher 对象监视在 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，则文件路径显示在控制台上。在文件重命名后，旧路径和新路径都将显示在控制台上。 下面的示例创建一个 FileSystemWatcher 对象，以便在运行时监视指定的目录。FileSystemWatcher 对象监视在 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，则文件路径显示在控制台上。在文件重命名后，旧路径和新路径都将显示在控制台上。 下面的示例创建一个 FileSystemWatcher 对象，以便在运行时监视指定的目录。FileSystemWatcher 对象监视在 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，则文件路径显示在控制台上。在文件重命名后，旧路径和新路径都将显示在控制台上。

此示例使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}
  • SecurityAction LinkDemand

    表示完全信任直接调用方。此成员不能由部分受信任的代码使用。 表示完全信任直接调用方。此成员不能由部分受信任的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
FileSystemWatcher 重载
System.IO 命名空间
NotifyFilters
FileSystemEventArgs
FileSystemEventHandler
InternalBufferOverflowException
Path
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


FileSystemWatcher 构造函数 (String)

FileSystemWatcher 构造函数 (String)
FileSystemWatcher 类

给定要监视的指定目录，初始化 FileSystemWatcher 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    path As String _
)
public FileSystemWatcher(
    string path
)
public:
FileSystemWatcher(
    String^ path
)
new :
        path:string -> FileSystemWatcher

参数

path
类型： System String
以标准表示法或统一命名约定 (UNC) 表示法表示的要监视的目录。
异常 | 条件
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 参数是空字符串 ("")。 - 或 - 通过 path 参数指定的路径不存在。
说明 说明

组件将不监视指定的目录，直到设置 Path，并且 EnableRaisingEvents 为 true。

组件可以监视个人计算机、网络驱动器或远程计算机上的文件。

您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。Filter 属性默认情况下设置为监视所有文件。 您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。Filter 属性默认情况下设置为监视所有文件。 您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。Filter 属性默认情况下设置为监视所有文件。

  • SecurityAction LinkDemand

    表示完全信任直接调用方。此成员不能由部分受信任的代码使用。 表示完全信任直接调用方。此成员不能由部分受信任的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
FileSystemWatcher 重载
System.IO 命名空间
NotifyFilters
FileSystemEventArgs
FileSystemEventHandler
Filter
InternalBufferOverflowException
Path
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


FileSystemWatcher 构造函数 (String, String)

FileSystemWatcher 构造函数 (String, String)
FileSystemWatcher 类

给定要监视的指定目录和文件类型，初始化 FileSystemWatcher 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    path As String, _
    filter As String _
)
public FileSystemWatcher(
    string path,
    string filter
)
public:
FileSystemWatcher(
    String^ path,
    String^ filter
)
new :
        path:string *
        filter:string -> FileSystemWatcher

参数

path
类型： System String
以标准表示法或统一命名约定 (UNC) 表示法表示的要监视的目录。
filter
类型： System String
要监视的文件的类型。例如，“*.txt”监视所有文本文件的更改。 要监视的文件的类型。例如，“*.txt”监视所有文本文件的更改。
异常 | 条件
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - filter 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 参数是空字符串 ("")。 - 或 - 通过 path 参数指定的路径不存在。
说明 说明

组件将不监视指定的目录，直到设置 Path，并且 EnableRaisingEvents 为 true。

组件可以监视个人计算机、网络驱动器或远程计算机上的文件。

您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。 您不能监视没有 Windows NT 或 Windows 2000 的远程计算机。您不能从 Windows NT 4.0 计算机监视远程 Windows NT 4.0 计算机。

  • SecurityAction LinkDemand

    表示完全信任直接调用方。此成员不能由部分受信任的代码使用。 表示完全信任直接调用方。此成员不能由部分受信任的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
FileSystemWatcher 重载
System.IO 命名空间
NotifyFilters
FileSystemEventArgs
FileSystemEventHandler
Filter
InternalBufferOverflowException
Path
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


FileSystemWatcher 方法

FileSystemWatcher 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

FileSystemWatcher 类型公开以下成员。

名称 说明
页首

参考

FileSystemWatcher 类
System.IO 命名空间


FileSystemWatcher ..::.BeginInit 方法

FileSystemWatcher
.
.
::
.
BeginInit 方法
FileSystemWatcher 类

开始初始化在窗体上使用或由另一个组件使用的 FileSystemWatcher。初始化发生在运行时。 开始初始化在窗体上使用或由另一个组件使用的 FileSystemWatcher。初始化发生在运行时。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub BeginInit
public void BeginInit()
public:
virtual void BeginInit() sealed
abstract BeginInit : unit -> unit
override BeginInit : unit -> unit

实现

Visual Studio 2005 设计环境使用此方法开始初始化用于窗体的组件或由其他组件使用的组件。EndInit 方法结束该初始化。使用 BeginInit 和 EndInit 方法防止在尚未完全初始化控件时使用控件。 Visual Studio 2005 设计环境使用此方法开始初始化用于窗体的组件或由其他组件使用的组件。EndInit 方法结束该初始化。使用 BeginInit 和 EndInit 方法防止在尚未完全初始化控件时使用控件。 Visual Studio 2005 设计环境使用此方法开始初始化用于窗体的组件或由其他组件使用的组件。EndInit 方法结束该初始化。使用 BeginInit 和 EndInit 方法防止在尚未完全初始化控件时使用控件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
EndInit


FileSystemWatcher ..::.Dispose 方法

FileSystemWatcher
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

释放由 FileSystemWatcher 占用的资源。

名称 说明
页首

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间


FileSystemWatcher ..::.Dispose 方法 (Boolean)

FileSystemWatcher
.
.
::
.
Dispose 方法 (Boolean)
FileSystemWatcher 类

释放由 FileSystemWatcher 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。

disposing 参数为 true 时，此方法释放此 DeflateStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 DeflateStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
Dispose 重载
System.IO 命名空间


FileSystemWatcher ..::.EndInit 方法

FileSystemWatcher
.
.
::
.
EndInit 方法
FileSystemWatcher 类

结束在窗体上使用或由另一个组件使用的 FileSystemWatcher 的初始化。初始化发生在运行时。 结束在窗体上使用或由另一个组件使用的 FileSystemWatcher 的初始化。初始化发生在运行时。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub EndInit
public void EndInit()
public:
virtual void EndInit() sealed
abstract EndInit : unit -> unit
override EndInit : unit -> unit

实现

Visual Studio 2005 设计环境使用此方法终止对用于窗体的组件或由其他组件使用的组件的初始化。BeginInit 方法开始此初始化。使用 BeginInit 和 EndInit 方法防止在尚未完全初始化控件时使用控件。 Visual Studio 2005 设计环境使用此方法终止对用于窗体的组件或由其他组件使用的组件的初始化。BeginInit 方法开始此初始化。使用 BeginInit 和 EndInit 方法防止在尚未完全初始化控件时使用控件。 Visual Studio 2005 设计环境使用此方法终止对用于窗体的组件或由其他组件使用的组件的初始化。BeginInit 方法开始此初始化。使用 BeginInit 和 EndInit 方法防止在尚未完全初始化控件时使用控件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
BeginInit


FileSystemWatcher ..::.MemberwiseClone 方法

FileSystemWatcher
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

名称 说明
页首

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间


FileSystemWatcher ..::.OnChanged 方法

FileSystemWatcher
.
.
::
.
OnChanged 方法
FileSystemWatcher 类

引发 Changed 事件。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Sub OnChanged ( _
    e As FileSystemEventArgs _
)
protected void OnChanged(
    FileSystemEventArgs e
)
protected:
void OnChanged(
    FileSystemEventArgs^ e
)
member OnChanged :
        e:FileSystemEventArgs -> unit

参数

e
类型： System.IO FileSystemEventArgs
包含事件数据的 FileSystemEventArgs。

当对正在监视的目录中的文件或目录的大小、系统特性、上次写入时间、上次访问时间或安全权限进行更改时，调用 OnChanged。

使用 NotifyFilter 属性限制处理 Changed 事件时引发的事件的数量。

OnCreated 事件在创建文件后立即发生。如果正在将文件复制或传送至一个受监视的目录，OnCreated 事件将立即发生，随后发生一个或多个 OnChanged 事件。 OnCreated 事件在创建文件后立即发生。如果正在将文件复制或传送至一个受监视的目录，OnCreated 事件将立即发生，随后发生一个或多个 OnChanged 事件。

引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。 引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。

对继承者的说明

重写派生类中的 OnChanged 时，确保调用基类的 OnChanged 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Changed
NotifyFilter
FileSystemEventArgs
FileSystemEventHandler


FileSystemWatcher ..::.OnCreated 方法

FileSystemWatcher
.
.
::
.
OnCreated 方法
FileSystemWatcher 类

引发 Created 事件。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Sub OnCreated ( _
    e As FileSystemEventArgs _
)
protected void OnCreated(
    FileSystemEventArgs e
)
protected:
void OnCreated(
    FileSystemEventArgs^ e
)
member OnCreated :
        e:FileSystemEventArgs -> unit

参数

e
类型： System.IO FileSystemEventArgs
包含事件数据的 FileSystemEventArgs。

当在所监视的目录中创建文件或目录时，调用 OnCreated。

某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果从“My Documents”复制某个文件并将其粘贴到“Your Documents”中，则将在 FileSystemWatcher2 中引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则将在 FileSystemWatcher2 中引发 Created 事件，在 FileSystemWatcher1 中引发 Deleted 事件。

OnCreated 事件在创建文件后立即发生。如果正在将文件复制或传送至一个受监视的目录，OnCreated 事件将立即发生，随后发生一个或多个 OnChanged 事件。 OnCreated 事件在创建文件后立即发生。如果正在将文件复制或传送至一个受监视的目录，OnCreated 事件将立即发生，随后发生一个或多个 OnChanged 事件。

引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。 引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。

对继承者的说明

重写派生类中的 OnCreated 时，确保调用基类的 OnCreated 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Created
Deleted
FileSystemEventArgs
FileSystemEventHandler


FileSystemWatcher ..::.OnDeleted 方法

FileSystemWatcher
.
.
::
.
OnDeleted 方法
FileSystemWatcher 类

引发 Deleted 事件。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Sub OnDeleted ( _
    e As FileSystemEventArgs _
)
protected void OnDeleted(
    FileSystemEventArgs e
)
protected:
void OnDeleted(
    FileSystemEventArgs^ e
)
member OnDeleted :
        e:FileSystemEventArgs -> unit

参数

e
类型： System.IO FileSystemEventArgs
包含事件数据的 FileSystemEventArgs。

当删除正在监视的目录中的某个文件或目录时，调用 OnDeleted。

某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。

引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。 引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。

对继承者的说明

重写派生类中的 OnDeleted 时，确保调用基类的 OnDeleted 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Created
Deleted
FileSystemEventArgs
FileSystemEventHandler


FileSystemWatcher ..::.OnError 方法

FileSystemWatcher
.
.
::
.
OnError 方法
FileSystemWatcher 类

引发 Error 事件。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Sub OnError ( _
    e As ErrorEventArgs _
)
protected void OnError(
    ErrorEventArgs e
)
protected:
void OnError(
    ErrorEventArgs^ e
)
member OnError :
        e:ErrorEventArgs -> unit

参数

e
类型： System.IO ErrorEventArgs
包含事件数据的 ErrorEventArgs。

发生错误时，调用 OnError。

引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。 引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。

对继承者的说明

重写派生类中的 OnError 时，确保调用基类的 OnError 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Error
ErrorEventArgs
ErrorEventHandler
InternalBufferOverflowException


FileSystemWatcher ..::.OnRenamed 方法

FileSystemWatcher
.
.
::
.
OnRenamed 方法
FileSystemWatcher 类

引发 Renamed 事件。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Sub OnRenamed ( _
    e As RenamedEventArgs _
)
protected void OnRenamed(
    RenamedEventArgs e
)
protected:
void OnRenamed(
    RenamedEventArgs^ e
)
member OnRenamed :
        e:RenamedEventArgs -> unit

参数

e
类型： System.IO RenamedEventArgs
包含事件数据的 RenamedEventArgs。

当重命名正在监视的目录中的某个文件或目录时，调用 OnRenamed。

引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。 引发事件时会通过委托调用事件处理程序。有关更多信息，请参见引发事件。

对继承者的说明

重写派生类中的 OnRenamed 时，确保调用基类的 OnRenamed 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Renamed
RenamedEventArgs
RenamedEventHandler


FileSystemWatcher ..::.WaitForChanged 方法

FileSystemWatcher
.
.
::
.
WaitForChanged 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

返回结构的同步方法，该结构包含有关已发生的更改的特定信息。

名称 说明
页首

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间


FileSystemWatcher ..::.WaitForChanged 方法 (WatcherChangeTypes)

FileSystemWatcher
.
.
::
.
WaitForChanged 方法 (WatcherChangeTypes)
FileSystemWatcher 类

一种给定了要监视的更改类型的同步方法，该方法返回包含有关所发生更改的特定信息的结构。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Function WaitForChanged ( _
    changeType As WatcherChangeTypes _
) As WaitForChangedResult
public WaitForChangedResult WaitForChanged(
    WatcherChangeTypes changeType
)
public:
WaitForChangedResult WaitForChanged(
    WatcherChangeTypes changeType
)
member WaitForChanged :
        changeType:WatcherChangeTypes -> WaitForChangedResult

参数

changeType
类型： System.IO WatcherChangeTypes
要监视的 WatcherChangeTypes。

返回值

类型： System.IO WaitForChangedResult
WaitForChangedResult，包含关于已发生的更改的特定信息。

该方法无限期地等待，直到第一次更改发生并返回。这与使用将 timeout 参数设置为 -1 的 WaitForChanged 相同。 该方法无限期地等待，直到第一次更改发生并返回。这与使用将 timeout 参数设置为 -1 的 WaitForChanged 相同。

说明 说明

即使 EnableRaisingEvents 属性设置为 false，此方法仍然允许调用事件处理程序以响应文件更改。

在某些系统中，FileSystemWatcher 使用 8.3 短文件名格式报告文件更改。例如，对“LongFileName.LongExtension”的更改可能报告为“LongFi~.Lon”。 在某些系统中，FileSystemWatcher 使用 8.3 短文件名格式报告文件更改。例如，对“LongFileName.LongExtension”的更改可能报告为“LongFi~.Lon”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
WaitForChanged 重载
System.IO 命名空间
WaitForChangedResult


FileSystemWatcher ..::.WaitForChanged 方法 (WatcherChangeTypes, Int32)

FileSystemWatcher
.
.
::
.
WaitForChanged 方法 (WatcherChangeTypes, Int32)
FileSystemWatcher 类

一种给定了要监视的更改类型和超时前等待的时间（以毫秒表示）的同步方法，该方法返回包含有关所发生更改的特定信息的结构。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Function WaitForChanged ( _
    changeType As WatcherChangeTypes, _
    timeout As Integer _
) As WaitForChangedResult
public WaitForChangedResult WaitForChanged(
    WatcherChangeTypes changeType,
    int timeout
)
public:
WaitForChangedResult WaitForChanged(
    WatcherChangeTypes changeType,
    int timeout
)
member WaitForChanged :
        changeType:WatcherChangeTypes *
        timeout:int -> WaitForChangedResult

参数

changeType
类型： System.IO WatcherChangeTypes
要监视的 WatcherChangeTypes。
timeout
类型： System Int32
超时前等待的时间（以毫秒表示）。

返回值

类型： System.IO WaitForChangedResult
WaitForChangedResult，包含关于已发生的更改的特定信息。

此方法一直等待，直到更改发生或者它超时。timeout 参数值为 -1 意味着将无限期地等待。 此方法一直等待，直到更改发生或者它超时。timeout 参数值为 -1 意味着将无限期地等待。

说明 说明

即使 EnableRaisingEvents 属性设置为 false，此方法仍然允许调用事件处理程序以响应文件更改。

在某些系统中，FileSystemWatcher 使用 8.3 短文件名格式报告文件更改。例如，对“LongFileName.LongExtension”的更改可能报告为“LongFi~.Lon”。 在某些系统中，FileSystemWatcher 使用 8.3 短文件名格式报告文件更改。例如，对“LongFileName.LongExtension”的更改可能报告为“LongFi~.Lon”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
WaitForChanged 重载
System.IO 命名空间
WaitForChangedResult


FileSystemWatcher 属性

FileSystemWatcher 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

FileSystemWatcher 类型公开以下成员。

名称 说明
页首

参考

FileSystemWatcher 类
System.IO 命名空间


FileSystemWatcher ..::.EnableRaisingEvents 属性

FileSystemWatcher
.
.
::
.
EnableRaisingEvents 属性
FileSystemWatcher 类

获取或设置一个值，该值指示是否启用此组件。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_Enabled")> _
Public Property EnableRaisingEvents As Boolean
    Get
    Set
[IODescriptionAttribute("FSW_Enabled")]
public bool EnableRaisingEvents { get; set; }
[IODescriptionAttribute(L"FSW_Enabled")]
public:
property bool EnableRaisingEvents {
    bool get ();
    void set (bool value);
}
[<IODescriptionAttribute("FSW_Enabled")>]
member EnableRaisingEvents : bool with get, set

属性值

类型： System Boolean
如果启用此组件，则为 true；否则为 false。默认值为 false。如果在 Visual Studio 2005 的设计器上使用该组件，则默认值为 true。 如果启用此组件，则为 true；否则为 false。默认值为 false。如果在 Visual Studio 2005 的设计器上使用该组件，则默认值为 true。 如果启用此组件，则为 true；否则为 false。默认值为 false。如果在 Visual Studio 2005 的设计器上使用该组件，则默认值为 true。
异常 | 条件
ObjectDisposedException | 已释放 FileSystemWatcher 对象。
PlatformNotSupportedException | 当前操作系统不是 Microsoft Windows NT 或更高版本。
FileNotFoundException | 未能找到 Path 中指定的目录。
ArgumentException | Path 尚未设置或无效。

除非将 EnableRaisingEvents 设置为 true，否则组件不会引发事件。

说明 说明

该组件将不监视指定的目录，直到设置了 Path 属性，并且 EnableRaisingEvents 为 true。

即使此属性设置为 false，WaitForChanged 方法仍然允许调用事件处理程序以响应文件更改。

下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。

在此示例中使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间


FileSystemWatcher ..::.Filter 属性

FileSystemWatcher
.
.
::
.
Filter 属性
FileSystemWatcher 类

获取或设置筛选字符串，用于确定在目录中监视哪些文件。

命名空间： System.IO
程序集： System（在 System.dll 中）
<SettingsBindableAttribute(True)> _
<IODescriptionAttribute("FSW_Filter")> _
<TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")> _
Public Property Filter As String
    Get
    Set
[SettingsBindableAttribute(true)]
[IODescriptionAttribute("FSW_Filter")]
[TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string Filter { get; set; }
[SettingsBindableAttribute(true)]
[IODescriptionAttribute(L"FSW_Filter")]
[TypeConverterAttribute(L"System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public:
property String^ Filter {
    String^ get ();
    void set (String^ value);
}
[<SettingsBindableAttribute(true)>]
[<IODescriptionAttribute("FSW_Filter")>]
[<TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>]
member Filter : string with get, set

属性值

类型： System String
筛选器字符串。默认值为“*.*”（监视所有文件）。 筛选器字符串。默认值为“*.*”（监视所有文件）。

若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("")。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视任何文本文件中的更改，请将 Filter 属性设置为“*.txt”。使用“*.txt|*.doc”等多个筛选器不受支持。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("")。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视任何文本文件中的更改，请将 Filter 属性设置为“*.txt”。使用“*.txt|*.doc”等多个筛选器不受支持。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("")。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视任何文本文件中的更改，请将 Filter 属性设置为“*.txt”。使用“*.txt|*.doc”等多个筛选器不受支持。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("")。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视任何文本文件中的更改，请将 Filter 属性设置为“*.txt”。使用“*.txt|*.doc”等多个筛选器不受支持。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("")。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视任何文本文件中的更改，请将 Filter 属性设置为“*.txt”。使用“*.txt|*.doc”等多个筛选器不受支持。 若要监视所有文件中的更改，请将 Filter 属性设置为空字符串 ("")。若要监视特定的文件，请将 Filter 属性设置为该文件名。例如，若要监视文件 MyDoc.txt 中的更改，请将 Filter 属性设置为“MyDoc.txt”。也可以监视特定类型文件中的更改。例如，若要监视任何文本文件中的更改，请将 Filter 属性设置为“*.txt”。使用“*.txt|*.doc”等多个筛选器不受支持。

Filter 属性可在 FileSystemWatcher 对象已开始接收事件之后更改。

Filter 在更改通知通过缓冲区后应用于这些通知，但不限制进入缓冲区中的内容。有关在将通知记录到缓冲区前筛选掉不想要的通知的更多信息，请参见 NotifyFilter、IncludeSubdirectories 和 InternalBufferSize 属性。 Filter 在更改通知通过缓冲区后应用于这些通知，但不限制进入缓冲区中的内容。有关在将通知记录到缓冲区前筛选掉不想要的通知的更多信息，请参见 NotifyFilter、IncludeSubdirectories 和 InternalBufferSize 属性。

Filter 接受通配符用于匹配文件，如下面的示例中所示。

筛选器字符串 | 监视下列文件
*.* | 所有文件（默认值）。空字符串 ("") 同样监视所有文件。 所有文件（默认值）。空字符串 ("") 同样监视所有文件。
*.txt | 具有“txt”扩展名的所有文件。
*recipe.doc | 文件名以“recipe”结尾且具有“doc”扩展名的所有文件。
win*.xml | 文件名以“win”开头且具有“xml”扩展名的所有文件。
Sales*200?.xls | 匹配下列文件： Sales July 2001.xls、Sales Aug 2002.xls、Sales March 2004.xls 但不匹配： Sales Nov 1999.xls
MyReport.Doc | 只监视 MyReport.doc

下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。

在此示例中使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
NotifyFilter
IncludeSubdirectories
InternalBufferSize


FileSystemWatcher ..::.IncludeSubdirectories 属性

FileSystemWatcher
.
.
::
.
IncludeSubdirectories 属性
FileSystemWatcher 类

获取或设置一个值，该值指示是否监视指定路径中的子目录。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_IncludeSubdirectories")> _
Public Property IncludeSubdirectories As Boolean
    Get
    Set
[IODescriptionAttribute("FSW_IncludeSubdirectories")]
public bool IncludeSubdirectories { get; set; }
[IODescriptionAttribute(L"FSW_IncludeSubdirectories")]
public:
property bool IncludeSubdirectories {
    bool get ();
    void set (bool value);
}
[<IODescriptionAttribute("FSW_IncludeSubdirectories")>]
member IncludeSubdirectories : bool with get, set

属性值

类型： System Boolean
如果要监视子目录，则为 true；否则为 false。默认值为 false。 如果要监视子目录，则为 true；否则为 false。默认值为 false。

如果要监视通过 Path 属性指定的目录（及其子目录）内包含的文件和目录的更改通知，请将 IncludeSubdirectories 设置为 true。将 IncludeSubdirectories 属性设置为 false 可帮助减少发送给内部缓冲区的通知数。有关筛选掉不想要的通知的更多信息，请参见 NotifyFilter 和 InternalBufferSize 属性。 如果要监视通过 Path 属性指定的目录（及其子目录）内包含的文件和目录的更改通知，请将 IncludeSubdirectories 设置为 true。将 IncludeSubdirectories 属性设置为 false 可帮助减少发送给内部缓冲区的通知数。有关筛选掉不想要的通知的更多信息，请参见 NotifyFilter 和 InternalBufferSize 属性。 如果要监视通过 Path 属性指定的目录（及其子目录）内包含的文件和目录的更改通知，请将 IncludeSubdirectories 设置为 true。将 IncludeSubdirectories 属性设置为 false 可帮助减少发送给内部缓冲区的通知数。有关筛选掉不想要的通知的更多信息，请参见 NotifyFilter 和 InternalBufferSize 属性。

当为 true 时，IncludeSubdirectories 递归通过整个子树，而不仅仅是直接子目录。根据正在监视的更改，到子树内文件或目录的相对路径在 FileSystemEventArgs 的 Name 属性和 RenamedEventArgs 的 OldName 属性中返回。根据正在监视的更改，可从 FileSystemEventArgs 的 FullPath 属性和 RenamedEventArgs 的 OldFullPath 属性获取完全限定的路径。 当为 true 时，IncludeSubdirectories 递归通过整个子树，而不仅仅是直接子目录。根据正在监视的更改，到子树内文件或目录的相对路径在 FileSystemEventArgs 的 Name 属性和 RenamedEventArgs 的 OldName 属性中返回。根据正在监视的更改，可从 FileSystemEventArgs 的 FullPath 属性和 RenamedEventArgs 的 OldFullPath 属性获取完全限定的路径。 当为 true 时，IncludeSubdirectories 递归通过整个子树，而不仅仅是直接子目录。根据正在监视的更改，到子树内文件或目录的相对路径在 FileSystemEventArgs 的 Name 属性和 RenamedEventArgs 的 OldName 属性中返回。根据正在监视的更改，可从 FileSystemEventArgs 的 FullPath 属性和 RenamedEventArgs 的 OldFullPath 属性获取完全限定的路径。

如果目录是在所监视的目录的子树中创建的，而且 IncludeSubdirectories 为 true，那么将自动监视该目录。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
NotifyFilter
FileSystemEventArgs
Filter
FileSystemEventArgs FullPath
RenamedEventArgs OldFullPath
InternalBufferSize
FileSystemEventArgs Name
RenamedEventArgs OldName
Path
RenamedEventArgs


FileSystemWatcher ..::.InternalBufferSize 属性

FileSystemWatcher
.
.
::
.
InternalBufferSize 属性
FileSystemWatcher 类

获取或设置内部缓冲区的大小。

命名空间： System.IO
程序集： System（在 System.dll 中）
<BrowsableAttribute(False)> _
Public Property InternalBufferSize As Integer
    Get
    Set
[BrowsableAttribute(false)]
public int InternalBufferSize { get; set; }
[BrowsableAttribute(false)]
public:
property int InternalBufferSize {
    int get ();
    void set (int value);
}
[<BrowsableAttribute(false)>]
member InternalBufferSize : int with get, set

属性值

类型： System Int32
内部缓冲区的大小。默认值为 8192 (8 KB)。 内部缓冲区的大小。默认值为 8192 (8 KB)。

您可以将缓冲区设置为 4 KB 或更大，但不能超过 64 KB。为了获得最佳性能，请在基于 Intel 的计算机上使用 4 KB 的倍数。 您可以将缓冲区设置为 4 KB 或更大，但不能超过 64 KB。为了获得最佳性能，请在基于 Intel 的计算机上使用 4 KB 的倍数。

系统通知组件文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。每个事件最多可以使用 16 字节的内存，不包括文件名。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小会有下列结果： 系统通知组件文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。每个事件最多可以使用 16 字节的内存，不包括文件名。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小会有下列结果： 系统通知组件文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。每个事件最多可以使用 16 字节的内存，不包括文件名。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小会有下列结果： 系统通知组件文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。每个事件最多可以使用 16 字节的内存，不包括文件名。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小会有下列结果： 系统通知组件文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。每个事件最多可以使用 16 字节的内存，不包括文件名。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小会有下列结果：

  • 增加缓冲区大小可以防止丢失文件系统更改事件。请注意，由于 Windows 操作系统的依赖项，当丢失某个事件或超出缓冲区大小时，FileSystemWatcher 类的实例不会引发 Error 事件。 增加缓冲区大小可以防止丢失文件系统更改事件。请注意，由于 Windows 操作系统的依赖项，当丢失某个事件或超出缓冲区大小时，FileSystemWatcher 类的实例不会引发 Error 事件。

  • 增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。 增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
NotifyFilter
OnError
Filter
IncludeSubdirectories
InternalBufferOverflowException


FileSystemWatcher ..::.NotifyFilter 属性

FileSystemWatcher
.
.
::
.
NotifyFilter 属性
FileSystemWatcher 类

获取或设置要监视的更改类型。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_ChangedFilter")> _
Public Property NotifyFilter As NotifyFilters
    Get
    Set
[IODescriptionAttribute("FSW_ChangedFilter")]
public NotifyFilters NotifyFilter { get; set; }
[IODescriptionAttribute(L"FSW_ChangedFilter")]
public:
property NotifyFilters NotifyFilter {
    NotifyFilters get ();
    void set (NotifyFilters value);
}
[<IODescriptionAttribute("FSW_ChangedFilter")>]
member NotifyFilter : NotifyFilters with get, set

属性值

类型： System.IO NotifyFilters
NotifyFilters 值之一。默认值为 LastWrite、FileName 和 DirectoryName 的按位“或”组合。 NotifyFilters 值之一。默认值为 LastWrite、FileName 和 DirectoryName 的按位“或”组合。
异常 | 条件
ArgumentException | 该值不是 NotifyFilters 值的有效按位“或”组合。
InvalidEnumArgumentException | 正在设置的值无效。

可组合 NotifyFilters 枚举的成员，以同时监视多种类型的更改。例如，可监视文件大小方面的更改和 LastWrite 时间方面的更改。只要文件或文件夹大小有变化或者如果文件或文件夹的 LastWrite 时间有变化，就会引发事件。 可组合 NotifyFilters 枚举的成员，以同时监视多种类型的更改。例如，可监视文件大小方面的更改和 LastWrite 时间方面的更改。只要文件或文件夹大小有变化或者如果文件或文件夹的 LastWrite 时间有变化，就会引发事件。 可组合 NotifyFilters 枚举的成员，以同时监视多种类型的更改。例如，可监视文件大小方面的更改和 LastWrite 时间方面的更改。只要文件或文件夹大小有变化或者如果文件或文件夹的 LastWrite 时间有变化，就会引发事件。

这是一种筛选掉不需要的通知的方法。有关筛选掉不想要的通知的更多信息，请参见 Filter、IncludeSubdirectories 和 InternalBufferSize 属性。 这是一种筛选掉不需要的通知的方法。有关筛选掉不想要的通知的更多信息，请参见 Filter、IncludeSubdirectories 和 InternalBufferSize 属性。

下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。

在此示例中使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
NotifyFilters
Filter
IncludeSubdirectories
InternalBufferSize


FileSystemWatcher ..::.Path 属性

FileSystemWatcher
.
.
::
.
Path 属性
FileSystemWatcher 类

获取或设置要监视的目录的路径。

命名空间： System.IO
程序集： System（在 System.dll 中）
<SettingsBindableAttribute(True)> _
<IODescriptionAttribute("FSW_Path")> _
<TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")> _
Public Property Path As String
    Get
    Set
[SettingsBindableAttribute(true)]
[IODescriptionAttribute("FSW_Path")]
[TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string Path { get; set; }
[SettingsBindableAttribute(true)]
[IODescriptionAttribute(L"FSW_Path")]
[TypeConverterAttribute(L"System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public:
property String^ Path {
    String^ get ();
    void set (String^ value);
}
[<SettingsBindableAttribute(true)>]
[<IODescriptionAttribute("FSW_Path")>]
[<TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>]
member Path : string with get, set

属性值

类型： System String
要监视的路径。默认值为空字符串 ("")。 要监视的路径。默认值为空字符串 ("")。
异常 | 条件
ArgumentException | 指定的路径不存在或未能找到。 - 或 - 指定的路径包含通配符字符。 - 或 - 指定的路径包含无效路径字符。

这是某个目录的完全限定路径。如果 IncludeSubdirectories 属性为 true，则此目录为系统监视更改的根目录；否则此目录为被监视的唯一目录。若要监视特定文件，请将 Path 属性设置为完全限定的正确目录，并将 Filter 属性设置为文件名。 这是某个目录的完全限定路径。如果 IncludeSubdirectories 属性为 true，则此目录为系统监视更改的根目录；否则此目录为被监视的唯一目录。若要监视特定文件，请将 Path 属性设置为完全限定的正确目录，并将 Filter 属性设置为文件名。 这是某个目录的完全限定路径。如果 IncludeSubdirectories 属性为 true，则此目录为系统监视更改的根目录；否则此目录为被监视的唯一目录。若要监视特定文件，请将 Path 属性设置为完全限定的正确目录，并将 Filter 属性设置为文件名。

Path 属性支持统一命名约定 (UNC) 路径。

说明 说明

在组件可监视更改之前，必须设置此属性。

重命名某个目录后，FileSystemWatcher 自动将自身重新附加到新重命名的项。例如，如果将 Path 属性设置为“C:\My Documents”，然后手动将目录重命名为“C:\Your Documents”，那么组件继续侦听新重命名的目录上的更改通知。但是，当您请求 Path 属性时，它包含旧路径。这种情况的发生是因为组件根据句柄而不是目录名来确定所监视的目录。重命名不影响句柄。因此，如果销毁该组件，然后在不更新 Path 属性的情况下重新创建它，那么您的应用程序将失败，原因是该目录已不再存在。 重命名某个目录后，FileSystemWatcher 自动将自身重新附加到新重命名的项。例如，如果将 Path 属性设置为“C:\My Documents”，然后手动将目录重命名为“C:\Your Documents”，那么组件继续侦听新重命名的目录上的更改通知。但是，当您请求 Path 属性时，它包含旧路径。这种情况的发生是因为组件根据句柄而不是目录名来确定所监视的目录。重命名不影响句柄。因此，如果销毁该组件，然后在不更新 Path 属性的情况下重新创建它，那么您的应用程序将失败，原因是该目录已不再存在。 重命名某个目录后，FileSystemWatcher 自动将自身重新附加到新重命名的项。例如，如果将 Path 属性设置为“C:\My Documents”，然后手动将目录重命名为“C:\Your Documents”，那么组件继续侦听新重命名的目录上的更改通知。但是，当您请求 Path 属性时，它包含旧路径。这种情况的发生是因为组件根据句柄而不是目录名来确定所监视的目录。重命名不影响句柄。因此，如果销毁该组件，然后在不更新 Path 属性的情况下重新创建它，那么您的应用程序将失败，原因是该目录已不再存在。 重命名某个目录后，FileSystemWatcher 自动将自身重新附加到新重命名的项。例如，如果将 Path 属性设置为“C:\My Documents”，然后手动将目录重命名为“C:\Your Documents”，那么组件继续侦听新重命名的目录上的更改通知。但是，当您请求 Path 属性时，它包含旧路径。这种情况的发生是因为组件根据句柄而不是目录名来确定所监视的目录。重命名不影响句柄。因此，如果销毁该组件，然后在不更新 Path 属性的情况下重新创建它，那么您的应用程序将失败，原因是该目录已不再存在。 重命名某个目录后，FileSystemWatcher 自动将自身重新附加到新重命名的项。例如，如果将 Path 属性设置为“C:\My Documents”，然后手动将目录重命名为“C:\Your Documents”，那么组件继续侦听新重命名的目录上的更改通知。但是，当您请求 Path 属性时，它包含旧路径。这种情况的发生是因为组件根据句柄而不是目录名来确定所监视的目录。重命名不影响句柄。因此，如果销毁该组件，然后在不更新 Path 属性的情况下重新创建它，那么您的应用程序将失败，原因是该目录已不再存在。 重命名某个目录后，FileSystemWatcher 自动将自身重新附加到新重命名的项。例如，如果将 Path 属性设置为“C:\My Documents”，然后手动将目录重命名为“C:\Your Documents”，那么组件继续侦听新重命名的目录上的更改通知。但是，当您请求 Path 属性时，它包含旧路径。这种情况的发生是因为组件根据句柄而不是目录名来确定所监视的目录。重命名不影响句柄。因此，如果销毁该组件，然后在不更新 Path 属性的情况下重新创建它，那么您的应用程序将失败，原因是该目录已不再存在。

下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建一个 FileSystemWatcher，以便在运行时监视指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间方面的更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。

在此示例中使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
FileSystemWatcher
Filter


FileSystemWatcher ..::.Site 属性

FileSystemWatcher
.
.
::
.
Site 属性
FileSystemWatcher 类

获取或设置 FileSystemWatcher 的 ISite。

命名空间： System.IO
程序集： System（在 System.dll 中）
<BrowsableAttribute(False)> _
Public Overrides Property Site As ISite
    Get
    Set
[BrowsableAttribute(false)]
public override ISite Site { get; set; }
[BrowsableAttribute(false)]
public:
virtual property ISite^ Site {
    ISite^ get () override;
    void set (ISite^ value) override;
}
[<BrowsableAttribute(false)>]
abstract Site : ISite with get, set
[<BrowsableAttribute(false)>]
override Site : ISite with get, set

属性值

类型： System.ComponentModel ISite
用于 FileSystemWatcher 的 ISite。

实现

站点将 Component 绑定到 Container 并启用它们之间的通讯，同时为该容器提供了一种管理其组件的方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间


FileSystemWatcher ..::.SynchronizingObject 属性

FileSystemWatcher
.
.
::
.
SynchronizingObject 属性
FileSystemWatcher 类

获取或设置一个对象，该对象用于封送因目录更改而发出的事件处理程序调用。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_SynchronizingObject")> _
<BrowsableAttribute(False)> _
Public Property SynchronizingObject As ISynchronizeInvoke
    Get
    Set
[IODescriptionAttribute("FSW_SynchronizingObject")]
[BrowsableAttribute(false)]
public ISynchronizeInvoke SynchronizingObject { get; set; }
[IODescriptionAttribute(L"FSW_SynchronizingObject")]
[BrowsableAttribute(false)]
public:
property ISynchronizeInvoke^ SynchronizingObject {
    ISynchronizeInvoke^ get ();
    void set (ISynchronizeInvoke^ value);
}
[<IODescriptionAttribute("FSW_SynchronizingObject")>]
[<BrowsableAttribute(false)>]
member SynchronizingObject : ISynchronizeInvoke with get, set

属性值

类型： System.ComponentModel ISynchronizeInvoke
ISynchronizeInvoke，表示一个对象，该对象用于封送因目录更改而发出的事件处理程序调用。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 ISynchronizeInvoke，表示一个对象，该对象用于封送因目录更改而发出的事件处理程序调用。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当 SynchronizingObject 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时，在来自系统线程池的某个线程上调用处理 Changed、Created、Deleted 和 Renamed 事件的方法。有关系统线程池的更多信息，请参见 ThreadPool。 当 SynchronizingObject 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时，在来自系统线程池的某个线程上调用处理 Changed、Created、Deleted 和 Renamed 事件的方法。有关系统线程池的更多信息，请参见 ThreadPool。

当 Changed、Created、Deleted 和 Renamed 事件由可见 Windows 窗体组件（如 Button）处理时，通过系统线程池访问组件可能不起作用或者导致异常。若要避免这种情况，请将 SynchronizingObject 设置为 Windows 窗体组件，这样将引起在创建组件的同一线程上调用处理 Changed、Created、Deleted 和 Renamed 事件的方法。 当 Changed、Created、Deleted 和 Renamed 事件由可见 Windows 窗体组件（如 Button）处理时，通过系统线程池访问组件可能不起作用或者导致异常。若要避免这种情况，请将 SynchronizingObject 设置为 Windows 窗体组件，这样将引起在创建组件的同一线程上调用处理 Changed、Created、Deleted 和 Renamed 事件的方法。

如果在 Windows 窗体设计器的 Visual Studio 2005 中使用 FileSystemWatcher，则 SynchronizingObject 会自动设置为包含 FileSystemWatcher 的控件。例如，如果将 FileSystemWatcher 放在 Form1（它从 Form 继承）的设计器上，则 FileSystemWatcher 的 SynchronizingObject 属性设置为 Form1 的实例。 如果在 Windows 窗体设计器的 Visual Studio 2005 中使用 FileSystemWatcher，则 SynchronizingObject 会自动设置为包含 FileSystemWatcher 的控件。例如，如果将 FileSystemWatcher 放在 Form1（它从 Form 继承）的设计器上，则 FileSystemWatcher 的 SynchronizingObject 属性设置为 Form1 的实例。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
ISynchronizeInvoke


FileSystemWatcher 事件

FileSystemWatcher 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
FileSystemWatcher 类

FileSystemWatcher 类型公开以下成员。

名称 说明
页首

参考

FileSystemWatcher 类
System.IO 命名空间


FileSystemWatcher ..::.Changed 事件

FileSystemWatcher
.
.
::
.
Changed 事件
FileSystemWatcher 类

当更改指定 Path 中的文件和目录时发生。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_Changed")> _
Public Event Changed As FileSystemEventHandler
[IODescriptionAttribute("FSW_Changed")]
public event FileSystemEventHandler Changed
[IODescriptionAttribute(L"FSW_Changed")]
public:
 event FileSystemEventHandler^ Changed {
    void add (FileSystemEventHandler^ value);
    void remove (FileSystemEventHandler^ value);
}
[<IODescriptionAttribute("FSW_Changed")>]
member Changed : IEvent<FileSystemEventHandler,
    FileSystemEventArgs>

当对所监视的目录中的文件或目录的大小、系统特性、上次写入时间、上次访问时间或安全权限进行更改时，将引发 Changed 事件。

说明 说明

公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。

使用 NotifyFilter 限制处理此事件时引发的通知数。

说明 说明

重命名文件时意外引发 Changed 事件，但重命名目录时不会引发它。若要监视重命名，请使用 Renamed 事件。 重命名文件时意外引发 Changed 事件，但重命名目录时不会引发它。若要监视重命名，请使用 Renamed 事件。
说明 说明

当 SynchronizingObject 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时，相对于其他 FileSystemWatcher 事件，Changed 事件的引发顺序可能发生变化。

下面的示例使用 Changed 事件在更改监视的文件时将文件路径显示到控制台。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
NotifyFilter
OnChanged
SynchronizingObject
FileSystemEventArgs
FileSystemEventHandler


FileSystemWatcher ..::.Created 事件

FileSystemWatcher
.
.
::
.
Created 事件
FileSystemWatcher 类

当在指定 Path 中创建文件和目录时发生。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_Created")> _
Public Event Created As FileSystemEventHandler
[IODescriptionAttribute("FSW_Created")]
public event FileSystemEventHandler Created
[IODescriptionAttribute(L"FSW_Created")]
public:
 event FileSystemEventHandler^ Created {
    void add (FileSystemEventHandler^ value);
    void remove (FileSystemEventHandler^ value);
}
[<IODescriptionAttribute("FSW_Created")>]
member Created : IEvent<FileSystemEventHandler,
    FileSystemEventArgs>

某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。

说明 说明

公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。
说明 说明

当 SynchronizingObject 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时，相对于其他 FileSystemWatcher 事件，Created 事件的引发顺序可能发生变化。

OnCreated 事件在创建文件后立即发生。如果正在将文件复制或传送至一个受监视的目录，OnCreated 事件将立即发生，随后发生一个或多个 OnChanged 事件。 OnCreated 事件在创建文件后立即发生。如果正在将文件复制或传送至一个受监视的目录，OnCreated 事件将立即发生，随后发生一个或多个 OnChanged 事件。

下面的示例使用 Created 事件在创建监视的文件时将文件路径显示到控制台。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Deleted
OnDeleted
SynchronizingObject
FileSystemEventArgs
FileSystemEventHandler
OnCreated


FileSystemWatcher ..::.Deleted 事件

FileSystemWatcher
.
.
::
.
Deleted 事件
FileSystemWatcher 类

删除指定 Path 中的文件或目录时发生。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_Deleted")> _
Public Event Deleted As FileSystemEventHandler
[IODescriptionAttribute("FSW_Deleted")]
public event FileSystemEventHandler Deleted
[IODescriptionAttribute(L"FSW_Deleted")]
public:
 event FileSystemEventHandler^ Deleted {
    void add (FileSystemEventHandler^ value);
    void remove (FileSystemEventHandler^ value);
}
[<IODescriptionAttribute("FSW_Deleted")>]
member Deleted : IEvent<FileSystemEventHandler,
    FileSystemEventArgs>

某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。 某些常见操作（如复制或移动文件或目录）不直接与事件相对应，但这些操作确实会引发事件。当复制文件或目录时，如果文件被复制到的目录正在受监视，系统将在该目录中引发 Created 事件。如果 FileSystemWatcher 的另一个实例正在监视从其中复制内容的目录，则不会引发事件。例如，创建两个 FileSystemWatcher 实例。FileSystemWatcher1 设置为监视“C:\My Documents”，而 FileSystemWatcher2 设置为监视“C:\Your Documents”。如果将文件从“My Documents”复制到“Your Documents”中，则 FileSystemWatcher2 将引发 Created 事件，但 FileSystemWatcher1 不会引发任何事件。与复制不同，移动文件或目录将引发两个事件。在前面的示例中，如果将文件从“My Documents”移动到“Your Documents”，则 FileSystemWatcher2 将引发 Created 事件，FileSystemWatcher1 将引发 Deleted 事件。

说明 说明

公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。
说明 说明

当 SynchronizingObject 属性不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 时，相对于其他 FileSystemWatcher 事件，Deleted 事件的引发顺序可能发生变化。

下面的示例使用 Deleted 事件在删除监视的文件时将文件路径显示到控制台。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
Created
OnCreated
SynchronizingObject
FileSystemEventArgs
FileSystemEventHandler
OnDeleted


FileSystemWatcher ..::.Error 事件

FileSystemWatcher
.
.
::
.
Error 事件
FileSystemWatcher 类

当内部缓冲区溢出时发生。

命名空间： System.IO
程序集： System（在 System.dll 中）
<BrowsableAttribute(False)> _
Public Event Error As ErrorEventHandler
[BrowsableAttribute(false)]
public event ErrorEventHandler Error
[BrowsableAttribute(false)]
public:
 event ErrorEventHandler^ Error {
    void add (ErrorEventHandler^ value);
    void remove (ErrorEventHandler^ value);
}
[<BrowsableAttribute(false)>]
member Error : IEvent<ErrorEventHandler,
    ErrorEventArgs>

系统通知文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter、Filter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。 系统通知文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter、Filter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。 系统通知文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter、Filter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。 系统通知文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter、Filter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。 系统通知文件发生更改，并将这些更改存储在组件创建并传递给 API 的缓冲区中。如果短时间内有很多更改，则缓冲区可能会溢出。这将导致组件失去对目录更改的跟踪，并且它将只提供一般性通知。增加缓冲区大小的开销较大，因为它来自无法换出到磁盘的非分页内存，所以将缓冲区保持得越小越好。若要避免缓冲区溢出，请使用 NotifyFilter、Filter 和 IncludeSubdirectories 属性筛选掉不想要的更改通知。

说明 说明

公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。 公共文件系统操作可能会引发多个事件。例如，将文件从一个目录移到另一个目录时，可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作，因此会引发多个事件。同样，有些应用程序（例如，防病毒软件）可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
NotifyFilter
ErrorEventArgs
ErrorEventHandler
Filter
IncludeSubdirectories
OnError


FileSystemWatcher ..::.Renamed 事件

FileSystemWatcher
.
.
::
.
Renamed 事件
FileSystemWatcher 类

重命名指定 Path 中的文件或目录时发生。

命名空间： System.IO
程序集： System（在 System.dll 中）
<IODescriptionAttribute("FSW_Renamed")> _
Public Event Renamed As RenamedEventHandler
[IODescriptionAttribute("FSW_Renamed")]
public event RenamedEventHandler Renamed
[IODescriptionAttribute(L"FSW_Renamed")]
public:
 event RenamedEventHandler^ Renamed {
    void add (RenamedEventHandler^ value);
    void remove (RenamedEventHandler^ value);
}
[<IODescriptionAttribute("FSW_Renamed")>]
member Renamed : IEvent<RenamedEventHandler,
    RenamedEventArgs>

重命名正在监视的目录不会引发通知。仅对正在监视的目录内的项引发通知。 重命名正在监视的目录不会引发通知。仅对正在监视的目录内的项引发通知。

下面的示例使用 Renamed 事件在重命名监视的文件时将文件路径显示到控制台。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
OnRenamed
SynchronizingObject
Path
RenamedEventArgs
RenamedEventHandler


HandleInheritability 枚举

HandleInheritability 枚举

指定基础句柄是否已由子进程继承。

命名空间： System.IO
程序集： System.Core（在 System.Core.dll 中）
<SerializableAttribute> _
Public Enumeration HandleInheritability
[SerializableAttribute]
public enum HandleInheritability
[SerializableAttribute]
public enum class HandleInheritability
[<SerializableAttribute>]
type HandleInheritability
成员名称 | 说明
None | 指定句柄未由子进程继承。
Inheritable | 指定句柄已由子进程继承。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

System.IO 命名空间


InternalBufferOverflowException 类

InternalBufferOverflowException 类
成员

内部缓冲区溢出时引发的异常。

命名空间： System.IO
程序集： System（在 System.dll 中）
<SerializableAttribute> _
Public Class InternalBufferOverflowException _
    Inherits SystemException
[SerializableAttribute]
public class InternalBufferOverflowException : SystemException
[SerializableAttribute]
public ref class InternalBufferOverflowException : public SystemException
[<SerializableAttribute>]
type InternalBufferOverflowException =
    class
        inherit SystemException
    end

在 FileSystemWatcher 中，当通知您发生文件更改时，系统将这些更改存储在组件创建并传递给应用程序编程接口 (API) 的缓冲区中。如果短时间内有很多更改，缓冲区容易发生溢出，这样导致引发异常，而实质上会丢失所有更改。为防止缓冲区溢出，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 在 FileSystemWatcher 中，当通知您发生文件更改时，系统将这些更改存储在组件创建并传递给应用程序编程接口 (API) 的缓冲区中。如果短时间内有很多更改，缓冲区容易发生溢出，这样导致引发异常，而实质上会丢失所有更改。为防止缓冲区溢出，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 在 FileSystemWatcher 中，当通知您发生文件更改时，系统将这些更改存储在组件创建并传递给应用程序编程接口 (API) 的缓冲区中。如果短时间内有很多更改，缓冲区容易发生溢出，这样导致引发异常，而实质上会丢失所有更改。为防止缓冲区溢出，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 在 FileSystemWatcher 中，当通知您发生文件更改时，系统将这些更改存储在组件创建并传递给应用程序编程接口 (API) 的缓冲区中。如果短时间内有很多更改，缓冲区容易发生溢出，这样导致引发异常，而实质上会丢失所有更改。为防止缓冲区溢出，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 在 FileSystemWatcher 中，当通知您发生文件更改时，系统将这些更改存储在组件创建并传递给应用程序编程接口 (API) 的缓冲区中。如果短时间内有很多更改，缓冲区容易发生溢出，这样导致引发异常，而实质上会丢失所有更改。为防止缓冲区溢出，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

System.IO System.IO..::.InternalBufferOverflowExceptionInternalBufferOverflowException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

InternalBufferOverflowException 成员
System.IO 命名空间
FileSystemEventArgs
FileSystemEventHandler
FileSystemWatcher
IncludeSubdirectories
InternalBufferSize
NotifyFilter
NotifyFilters
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


InternalBufferOverflowException 成员

InternalBufferOverflowException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InternalBufferOverflowException 类

内部缓冲区溢出时引发的异常。

InternalBufferOverflowException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

InternalBufferOverflowException 类
System.IO 命名空间


InternalBufferOverflowException 构造函数

InternalBufferOverflowException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InternalBufferOverflowException 类

初始化 InternalBufferOverflowException 类的新实例。

名称 说明
页首

参考

InternalBufferOverflowException 类
InternalBufferOverflowException 成员
System.IO 命名空间


InternalBufferOverflowException 构造函数

InternalBufferOverflowException 构造函数
InternalBufferOverflowException 类

初始化 InternalBufferOverflowException 类的一个新默认实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New
public InternalBufferOverflowException()
public:
InternalBufferOverflowException()
new : unit -> InternalBufferOverflowException

该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

InternalBufferOverflowException 类
InternalBufferOverflowException 成员
InternalBufferOverflowException 重载
System.IO 命名空间
FileSystemWatcher
FileSystemWatcher IncludeSubdirectories
FileSystemWatcher NotifyFilter
InternalBufferSize


InternalBufferOverflowException 构造函数 (String)

InternalBufferOverflowException 构造函数 (String)
InternalBufferOverflowException 类

通过指定要显示的错误信息来初始化 InternalBufferOverflowException 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    message As String _
)
public InternalBufferOverflowException(
    string message
)
public:
InternalBufferOverflowException(
    String^ message
)
new :
        message:string -> InternalBufferOverflowException

参数

message
类型： System String
要为异常提供的消息。

该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

InternalBufferOverflowException 类
InternalBufferOverflowException 成员
InternalBufferOverflowException 重载
System.IO 命名空间
FileSystemWatcher
InternalBufferSize


InternalBufferOverflowException 构造函数 (SerializationInfo, StreamingContext)

InternalBufferOverflowException 构造函数 (SerializationInfo, StreamingContext)
InternalBufferOverflowException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 InternalBufferOverflowException 类的新的空实例，该实例可序列化且使用指定的 SerializationInfo 和 StreamingContext。

命名空间： System.IO
程序集： System（在 System.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected InternalBufferOverflowException(
    SerializationInfo info,
    StreamingContext context
)
protected:
InternalBufferOverflowException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> InternalBufferOverflowException

参数

info
类型： System.Runtime.Serialization SerializationInfo
序列化 InternalBufferOverflowException 对象所需的信息。
context
类型： System.Runtime.Serialization StreamingContext
与 InternalBufferOverflowException 对象关联的序列化流的源和目标。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

InternalBufferOverflowException 类
InternalBufferOverflowException 成员
InternalBufferOverflowException 重载
System.IO 命名空间


InternalBufferOverflowException 构造函数 (String, Exception)

InternalBufferOverflowException 构造函数 (String, Exception)
InternalBufferOverflowException 类

通过指定要显示的消息和生成的内部异常来初始化 InternalBufferOverflowException 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    message As String, _
    inner As Exception _
)
public InternalBufferOverflowException(
    string message,
    Exception inner
)
public:
InternalBufferOverflowException(
    String^ message,
    Exception^ inner
)
new :
        message:string *
        inner:Exception -> InternalBufferOverflowException

参数

message
类型： System String
要为异常提供的消息。
inner
类型： System Exception
内部异常。

该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。 该组件使用这些构造函数以表示有错误。仅当扩展类或 .NET Framework 时才使用它们。此异常指示内部缓冲区已溢出，用户应在其代码中采取适当的步骤以确保内部缓冲区正常恢复。溢出通常是因为在短时间内有太多更改，导致内部通知缓冲区溢出。若要解决此问题，请使用 FileSystemWatcher..::.NotifyFilter 和 FileSystemWatcher..::.IncludeSubdirectories 属性筛选掉不想要的更改通知。也可以通过 FileSystemWatcher..::.InternalBufferSize 属性增加内部缓冲区的大小。但是，增加缓冲区大小的成本较大，所以将缓冲区保持得越小越好。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

InternalBufferOverflowException 类
InternalBufferOverflowException 成员
InternalBufferOverflowException 重载
System.IO 命名空间
FileSystemWatcher
InternalBufferSize


InternalBufferOverflowException 方法

InternalBufferOverflowException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InternalBufferOverflowException 类

InternalBufferOverflowException 类型公开以下成员。

名称 说明
页首

参考

InternalBufferOverflowException 类
System.IO 命名空间


InternalBufferOverflowException 属性

InternalBufferOverflowException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InternalBufferOverflowException 类

InternalBufferOverflowException 类型公开以下成员。

名称 说明
页首

参考

InternalBufferOverflowException 类
System.IO 命名空间


InternalBufferOverflowException 事件

InternalBufferOverflowException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InternalBufferOverflowException 类

InternalBufferOverflowException 类型公开以下成员。

名称 说明
页首

参考

InternalBufferOverflowException 类
System.IO 命名空间


InvalidDataException 类

InvalidDataException 类
成员

在数据流的格式无效时引发的异常。

命名空间： System.IO
程序集： System（在 System.dll 中）
<SerializableAttribute> _
Public NotInheritable Class InvalidDataException _
    Inherits SystemException
[SerializableAttribute]
public sealed class InvalidDataException : SystemException
[SerializableAttribute]
public ref class InvalidDataException sealed : public SystemException
[<SealedAttribute>]
[<SerializableAttribute>]
type InvalidDataException =
    class
        inherit SystemException
    end

在数据流中检测到无效数据时，将引发 InvalidDataException。

System.IO System.IO..::.InvalidDataExceptionInvalidDataException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0

参考

InvalidDataException 成员
System.IO 命名空间


InvalidDataException 成员

InvalidDataException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InvalidDataException 类

在数据流的格式无效时引发的异常。

InvalidDataException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

InvalidDataException 类
System.IO 命名空间


InvalidDataException 构造函数

InvalidDataException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InvalidDataException 类

初始化 InvalidDataException 类的新实例。

名称 说明
页首

当以下情况下在数据流中检测到无效数据时，将引发 InvalidDataException：

  • 分隔的文本文件中的数据行不具有预期的字段数。

  • 尝试读取已损坏的二进制文件（如文字处理文档）。

  • 尝试从包含无效格式的解压缩流中读取字节。

参考

InvalidDataException 类
InvalidDataException 成员
System.IO 命名空间


InvalidDataException 构造函数

InvalidDataException 构造函数
InvalidDataException 类

初始化 InvalidDataException 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New
public InvalidDataException()
public:
InvalidDataException()
new : unit -> InvalidDataException

此构造函数将新实例的 Message 属性初始化为系统提供的消息，该消息对错误进行描述，例如“指定的参数无效”。此消息将根据当前系统区域性进行本地化。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0

参考

InvalidDataException 类
InvalidDataException 成员
InvalidDataException 重载
System.IO 命名空间


InvalidDataException 构造函数 (String)

InvalidDataException 构造函数 (String)
InvalidDataException 类

用指定的错误信息初始化 InvalidDataException 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    message As String _
)
public InvalidDataException(
    string message
)
public:
InvalidDataException(
    String^ message
)
new :
        message:string -> InvalidDataException

参数

message
类型： System String
解释异常原因的错误消息。

此构造函数将新实例的 Message 属性初始化为系统提供的消息，该消息对错误进行描述，例如“指定的参数无效”。此消息将根据当前系统区域性进行本地化。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0

参考

InvalidDataException 类
InvalidDataException 成员
InvalidDataException 重载
System.IO 命名空间


InvalidDataException 构造函数 (String, Exception)

InvalidDataException 构造函数 (String, Exception)
InvalidDataException 类

用对作为此异常原因的内部异常的引用初始化 InvalidDataException 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public InvalidDataException(
    string message,
    Exception innerException
)
public:
InvalidDataException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> InvalidDataException

参数

message
类型： System String
解释异常原因的错误信息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

此构造函数使用 message 参数的值初始化新实例的 Message 属性。message 参数的内容应为人所理解。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 此构造函数使用 message 参数的值初始化新实例的 Message 属性。message 参数的内容应为人所理解。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 此构造函数使用 message 参数的值初始化新实例的 Message 属性。message 参数的内容应为人所理解。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0

参考

InvalidDataException 类
InvalidDataException 成员
InvalidDataException 重载
System.IO 命名空间


InvalidDataException 方法

InvalidDataException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InvalidDataException 类

InvalidDataException 类型公开以下成员。

名称 说明
页首

参考

InvalidDataException 类
System.IO 命名空间


InvalidDataException 属性

InvalidDataException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InvalidDataException 类

InvalidDataException 类型公开以下成员。

名称 说明
页首

参考

InvalidDataException 类
System.IO 命名空间


InvalidDataException 事件

InvalidDataException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
InvalidDataException 类

InvalidDataException 类型公开以下成员。

名称 说明
页首

参考

InvalidDataException 类
System.IO 命名空间


IODescriptionAttribute 类

IODescriptionAttribute 类
成员

设置可视化设计器在引用事件、扩展程序或属性时可显示的说明。

命名空间： System.IO
程序集： System（在 System.dll 中）
<AttributeUsageAttribute(AttributeTargets.All)> _
Public Class IODescriptionAttribute _
    Inherits DescriptionAttribute
[AttributeUsageAttribute(AttributeTargets.All)]
public class IODescriptionAttribute : DescriptionAttribute
[AttributeUsageAttribute(AttributeTargets::All)]
public ref class IODescriptionAttribute : public DescriptionAttribute
[<AttributeUsageAttribute(AttributeTargets.All)>]
type IODescriptionAttribute =
    class
        inherit DescriptionAttribute
    end

有关使用特性的更多信息，请参见 利用特性扩展元数据。

System.IO System.IO..::.IODescriptionAttributeIODescriptionAttribute
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

IODescriptionAttribute 成员
System.IO 命名空间
Attribute
PropertyDescriptor
EventDescriptor


IODescriptionAttribute 成员

IODescriptionAttribute 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IODescriptionAttribute 类

设置可视化设计器在引用事件、扩展程序或属性时可显示的说明。

IODescriptionAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IODescriptionAttribute 类
System.IO 命名空间


IODescriptionAttribute 构造函数

IODescriptionAttribute 构造函数
IODescriptionAttribute 类

初始化 IODescriptionAttribute 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    description As String _
)
public IODescriptionAttribute(
    string description
)
public:
IODescriptionAttribute(
    String^ description
)
new :
        description:string -> IODescriptionAttribute

参数

description
类型： System String
要使用的说明。

有关使用特性的更多信息，请参见 利用特性扩展元数据。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

IODescriptionAttribute 类
IODescriptionAttribute 成员
System.IO 命名空间


IODescriptionAttribute 方法

IODescriptionAttribute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IODescriptionAttribute 类

IODescriptionAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IODescriptionAttribute 类
System.IO 命名空间


IODescriptionAttribute 属性

IODescriptionAttribute 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IODescriptionAttribute 类

IODescriptionAttribute 类型公开以下成员。

名称 说明
页首

参考

IODescriptionAttribute 类
System.IO 命名空间


IODescriptionAttribute ..::.Description 属性

IODescriptionAttribute
.
.
::
.
Description 属性
IODescriptionAttribute 类

获取说明。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Overrides ReadOnly Property Description As String
    Get
public override string Description { get; }
public:
virtual property String^ Description {
    String^ get () override;
}
abstract Description : string
override Description : string

属性值

类型： System String
事件、扩展程序或属性的说明。

有关使用特性的更多信息，请参见 利用特性扩展元数据。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

IODescriptionAttribute 类
IODescriptionAttribute 成员
System.IO 命名空间


IOException 类

IOException 类
成员

发生 I/O 错误时引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class IOException _
    Inherits SystemException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class IOException : SystemException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class IOException : public SystemException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type IOException =
    class
        inherit SystemException
    end

IOException 是使用流、文件和目录访问信息时引发的异常的基类。

“基类库”包括下列类型，每种类型都是 IOException 的一个派生类：

  • DirectoryNotFoundException

  • EndOfStreamException

  • FileNotFoundException

  • FileLoadException

  • PathTooLongException

在合适的场合，请使用这些类型而不是 IOException。

IOException 使用包含值 0x80131620 的 HRESULT COR_E_IO。

此代码示例是为 FileStream..::.Lock 方法提供的一个更大示例的一部分。

' Catch the IOException generated if the
' specified part of the file is locked.
Catch ex As IOException
    Console.WriteLine( _
        "{0}: The write operation could " & _
        "not be performed because the " & _
        "specified part of the file is " & _
        "locked.", ex.GetType().Name)
End Try

// Catch the IOException generated if the
// specified part of the file is locked.
catch(IOException e)
{
    Console.WriteLine(
        "{0}: The write operation could not " +
        "be performed because the specified " +
        "part of the file is locked.",
        e.GetType().Name);
}

// Catch the IOException generated if the
// specified part of the file is locked.
catch ( IOException^ e )
{
   Console::WriteLine( "{0}: The write operation could not "
   "be performed because the specified "
   "part of the file is locked.", e->GetType()->Name );
}

System.IO System.IO..::.IOExceptionIOException

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

IOException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


IOException 成员

IOException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOException 类

发生 I/O 错误时引发的异常。

IOException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IOException 类
System.IO 命名空间


IOException 构造函数

IOException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOException 类

用 IOException 类的消息字符串初始化它的新实例。

名称 说明
页首

参考

IOException 类
IOException 成员
System.IO 命名空间


IOException 构造函数

IOException 构造函数
IOException 类

初始化 IOException 类的新实例，使其消息字符串设置为空字符串 ("")，其 HRESULT 设置为 COR_E_IO，而其内部异常设置为空引用。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public IOException()
public:
IOException()
new : unit -> IOException

此构造函数将新实例的 Message 属性初始化为系统提供的用来描述错误的消息，例如“执行请求的操作时发生了 I/O 错误。”。此消息将考虑当前系统区域性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

IOException 类
IOException 成员
IOException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


IOException 构造函数 (String)

IOException 构造函数 (String)
IOException 类

初始化 IOException 类的新实例，使其消息字符串设置为 message，其 HRESULT 设置为 COR_E_IO，而其内部异常设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public IOException(
    string message
)
public:
IOException(
    String^ message
)
new :
        message:string -> IOException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

此构造函数使用 message 初始化新实例的 Message 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

IOException 类
IOException 成员
IOException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


IOException 构造函数 (SerializationInfo, StreamingContext)

IOException 构造函数 (SerializationInfo, StreamingContext)
IOException 类

用指定的序列化和上下文信息初始化 IOException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected IOException(
    SerializationInfo info,
    StreamingContext context
)
protected:
IOException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> IOException

参数

info
类型： System.Runtime.Serialization SerializationInfo
用于序列化或反序列化对象的数据。
context
类型： System.Runtime.Serialization StreamingContext
对象的源和目标。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

IOException 类
IOException 成员
IOException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


IOException 构造函数 (String, Exception)

IOException 构造函数 (String, Exception)
IOException 类

使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 IOException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public IOException(
    string message,
    Exception innerException
)
public:
IOException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> IOException

参数

message
类型： System String
解释异常原因的错误信息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为上一异常直接结果而引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 IOException 实例的初始属性值。

属性 | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

有关内部异常的更多信息，请参见 InnerException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

IOException 类
IOException 成员
IOException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


IOException 构造函数 (String, Int32)

IOException 构造函数 (String, Int32)
IOException 类

初始化 IOException 类的新实例，使其消息字符串设置为 message，而其 HRESULT 由用户定义。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    hresult As Integer _
)
public IOException(
    string message,
    int hresult
)
public:
IOException(
    String^ message,
    int hresult
)
new :
        message:string *
        hresult:int -> IOException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
hresult
类型： System Int32
标识已发生的错误的整数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

IOException 类
IOException 成员
IOException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


IOException 方法

IOException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOException 类

IOException 类型公开以下成员。

名称 说明
页首

参考

IOException 类
System.IO 命名空间


IOException 属性

IOException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOException 类

IOException 类型公开以下成员。

名称 说明
页首

参考

IOException 类
System.IO 命名空间


IOException 事件

IOException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOException 类

IOException 类型公开以下成员。

名称 说明
页首

参考

IOException 类
System.IO 命名空间


MemoryStream 类

MemoryStream 类
成员

创建其支持存储区为内存的流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class MemoryStream _
    Inherits Stream
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class MemoryStream : Stream
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class MemoryStream : public Stream
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type MemoryStream =
    class
        inherit Stream
    end

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

MemoryStream 类创建一个流，该流使用内存作为后备存储而不是磁盘或网络连接。MemoryStream 封装作为无符号字节数组存储的数据，该数组在创建 MemoryStream 对象时进行初始化，或可创建空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。 MemoryStream 类创建一个流，该流使用内存作为后备存储而不是磁盘或网络连接。MemoryStream 封装作为无符号字节数组存储的数据，该数组在创建 MemoryStream 对象时进行初始化，或可创建空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。 MemoryStream 类创建一个流，该流使用内存作为后备存储而不是磁盘或网络连接。MemoryStream 封装作为无符号字节数组存储的数据，该数组在创建 MemoryStream 对象时进行初始化，或可创建空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。 MemoryStream 类创建一个流，该流使用内存作为后备存储而不是磁盘或网络连接。MemoryStream 封装作为无符号字节数组存储的数据，该数组在创建 MemoryStream 对象时进行初始化，或可创建空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。

流的当前位置是下一个读取或写入操作可能发生的位置。当前位置可以通过 Seek 方法检索或设置。在创建 MemoryStream 的新实例时，当前位置设置为零。 流的当前位置是下一个读取或写入操作可能发生的位置。当前位置可以通过 Seek 方法检索或设置。在创建 MemoryStream 的新实例时，当前位置设置为零。 流的当前位置是下一个读取或写入操作可能发生的位置。当前位置可以通过 Seek 方法检索或设置。在创建 MemoryStream 的新实例时，当前位置设置为零。

用无符号字节数组创建的内存流提供无法调整大小的数据流。当使用字节数组时，虽然根据传递到构造函数中的参数可能能够修改现有内容，但既不能追加也不能收缩流。空内存流是可调整大小的，而且可以向其写入和从中读取。 用无符号字节数组创建的内存流提供无法调整大小的数据流。当使用字节数组时，虽然根据传递到构造函数中的参数可能能够修改现有内容，但既不能追加也不能收缩流。空内存流是可调整大小的，而且可以向其写入和从中读取。 用无符号字节数组创建的内存流提供无法调整大小的数据流。当使用字节数组时，虽然根据传递到构造函数中的参数可能能够修改现有内容，但既不能追加也不能收缩流。空内存流是可调整大小的，而且可以向其写入和从中读取。

如果将 MemoryStream 对象添加到 ResX 文件或 .resources 文件中，则可在运行时调用 GetStream 方法对其进行检索。

如果将 MemoryStream 对象序列化为资源文件，它将被实际序列化为 UnmanagedMemoryStream。此行为可以提供更好的性能，并可以提供将指针直接指向数据的功能，而不必使用 Stream 方法。 如果将 MemoryStream 对象序列化为资源文件，它将被实际序列化为 UnmanagedMemoryStream。此行为可以提供更好的性能，并可以提供将指针直接指向数据的功能，而不必使用 Stream 方法。

下面的代码示例说明如何通过将内存用作备份来读取和写入数据。

Imports System
Imports System.IO
Imports System.Text

Module MemStream

    Sub Main()

        Dim count As Integer
        Dim byteArray As Byte()
        Dim charArray As Char()
        Dim uniEncoding As New UnicodeEncoding()

        ' Create the data to write to the stream.
        Dim firstString As Byte() = _
            uniEncoding.GetBytes("Invalid file path characters are: ")
        Dim secondString As Byte() = _
            uniEncoding.GetBytes(Path.GetInvalidPathChars())

        Dim memStream As New MemoryStream(100)
        Try
            ' Write the first string to the stream.
            memStream.Write(firstString, 0 , firstString.Length)

            ' Write the second string to the stream, byte by byte.
            count = 0
            While(count < secondString.Length)
                memStream.WriteByte(secondString(count))
                count += 1
            End While

            ' Write the stream properties to the console.
            Console.WriteLine( _
                "Capacity = {0}, Length = {1}, Position = {2}", _
                memStream.Capacity.ToString(), _
                memStream.Length.ToString(), _
                memStream.Position.ToString())

            ' Set the stream position to the beginning of the stream.
            memStream.Seek(0, SeekOrigin.Begin)

            ' Read the first 20 bytes from the stream.
            byteArray = _
                New Byte(CType(memStream.Length, Integer)){}
            count = memStream.Read(byteArray, 0, 20)

            ' Read the remaining Bytes, Byte by Byte.
            While(count < memStream.Length)
                byteArray(count) = _
                    Convert.ToByte(memStream.ReadByte())
                count += 1
            End While

            ' Decode the Byte array into a Char array
            ' and write it to the console.
            charArray = _
                New Char(uniEncoding.GetCharCount( _
                byteArray, 0, count)){}
            uniEncoding.GetDecoder().GetChars( _
                byteArray, 0, count, charArray, 0)
            Console.WriteLine(charArray)
        Finally
            memStream.Close()
        End Try

    End Sub
End Module

using System;
using System.IO;
using System.Text;

class MemStream
{
    static void Main()
    {
        int count;
        byte[] byteArray;
        char[] charArray;
        UnicodeEncoding uniEncoding = new UnicodeEncoding();

        // Create the data to write to the stream.
        byte[] firstString = uniEncoding.GetBytes(
            "Invalid file path characters are: ");
        byte[] secondString = uniEncoding.GetBytes(
            Path.GetInvalidPathChars());

        using(MemoryStream memStream = new MemoryStream(100))
        {
            // Write the first string to the stream.
            memStream.Write(firstString, 0 , firstString.Length);

            // Write the second string to the stream, byte by byte.
            count = 0;
            while(count < secondString.Length)
            {
                memStream.WriteByte(secondString[count++]);
            }

            // Write the stream properties to the console.
            Console.WriteLine(
                "Capacity = {0}, Length = {1}, Position = {2}\n",
                memStream.Capacity.ToString(),
                memStream.Length.ToString(),
                memStream.Position.ToString());

            // Set the position to the beginning of the stream.
            memStream.Seek(0, SeekOrigin.Begin);

            // Read the first 20 bytes from the stream.
            byteArray = new byte[memStream.Length];
            count = memStream.Read(byteArray, 0, 20);

            // Read the remaining bytes, byte by byte.
            while(count < memStream.Length)
            {
                byteArray[count++] =
                    Convert.ToByte(memStream.ReadByte());
            }

            // Decode the byte array into a char array
            // and write it to the console.
            charArray = new char[uniEncoding.GetCharCount(
                byteArray, 0, count)];
            uniEncoding.GetDecoder().GetChars(
                byteArray, 0, count, charArray, 0);
            Console.WriteLine(charArray);
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   int count;
   array<Byte>^byteArray;
   array<Char>^charArray;
   UnicodeEncoding^ uniEncoding = gcnew UnicodeEncoding;

   // Create the data to write to the stream.
   array<Byte>^firstString = uniEncoding->GetBytes( "Invalid file path characters are: " );
   array<Byte>^secondString = uniEncoding->GetBytes( Path::InvalidPathChars );

   MemoryStream^ memStream = gcnew MemoryStream( 100 );
   try
   {
      // Write the first string to the stream.
      memStream->Write( firstString, 0, firstString->Length );

      // Write the second string to the stream, byte by byte.
      count = 0;
      while ( count < secondString->Length )
      {
         memStream->WriteByte( secondString[ count++ ] );
      }

      // Write the stream properties to the console.
      Console::WriteLine( "Capacity = {0}, Length = {1}, "
      "Position = {2}\n", memStream->Capacity.ToString(), memStream->Length.ToString(), memStream->Position.ToString() );

      // Set the stream position to the beginning of the stream.
      memStream->Seek( 0, SeekOrigin::Begin );

      // Read the first 20 bytes from the stream.
      byteArray = gcnew array<Byte>(memStream->Length);
      count = memStream->Read( byteArray, 0, 20 );

      // Read the remaining bytes, byte by byte.
      while ( count < memStream->Length )
      {
         byteArray[ count++ ] = Convert::ToByte( memStream->ReadByte() );
      }

      // Decode the Byte array into a Char array
      // and write it to the console.
      charArray = gcnew array<Char>(uniEncoding->GetCharCount( byteArray, 0, count ));
      uniEncoding->GetDecoder()->GetChars( byteArray, 0, count, charArray, 0 );
      Console::WriteLine( charArray );
   }
   finally
   {
      memStream->Close();
   }
}

System.IO System.IO..::.MemoryStreamMemoryStream
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 成员

MemoryStream 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

创建其支持存储区为内存的流。

MemoryStream 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

MemoryStream 类
System.IO 命名空间


MemoryStream 构造函数

MemoryStream 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

初始化 MemoryStream 类的新实例。

名称 说明
页首

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间


MemoryStream 构造函数

MemoryStream 构造函数
MemoryStream 类

使用初始化为零的可扩展容量初始化 MemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public MemoryStream()
public:
MemoryStream()
new : unit -> MemoryStream

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead、CanSeek 和 CanWrite 属性都设置为 true。

当使用 SetLength 方法将长度设置为大于当前流的容量的一个值时，当前流的容量自动增加。

此构造函数公开 GetBuffer 返回的基础流。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 构造函数 ( array<Byte >[]()[])

MemoryStream 构造函数 (
array<
Byte
>
[]
()
[]
)
MemoryStream 类

基于指定的字节数组初始化 MemoryStream 类的无法调整大小的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As Byte() _
)
public MemoryStream(
    byte[] buffer
)
public:
MemoryStream(
    array<unsigned char>^ buffer
)
new :
        buffer:byte[] -> MemoryStream

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中创建当前流的无符号字节数组。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead、CanSeek 和 CanWrite 属性都设置为 true。Capacity 设置为指定字节数组的长度。可向新流写入，但无法调整其大小。 CanRead、CanSeek 和 CanWrite 属性都设置为 true。Capacity 设置为指定字节数组的长度。可向新流写入，但无法调整其大小。 CanRead、CanSeek 和 CanWrite 属性都设置为 true。Capacity 设置为指定字节数组的长度。可向新流写入，但无法调整其大小。

流的长度值不能设置为大于指定字节数组的初始长度；但是，流可以被截断（请参见 SetLength）。

此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。 此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 构造函数 (Int32)

MemoryStream 构造函数 (Int32)
MemoryStream 类

使用按指定要求初始化的可扩展容量初始化 MemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    capacity As Integer _
)
public MemoryStream(
    int capacity
)
public:
MemoryStream(
    int capacity
)
new :
        capacity:int -> MemoryStream

参数

capacity
类型： System Int32
内部数组的初始大小（以字节为单位）。
异常 | 条件
ArgumentOutOfRangeException | capacity 为负数。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead、CanSeek 和 CanWrite 属性都设置为 true。

当使用 SetLength 方法将长度设置为大于当前流的容量的一个值时，容量将自动增加。除了用 byte[] 参数构造的 MemoryStream 外，MemoryStream 末尾的写操作扩展 MemoryStream。 当使用 SetLength 方法将长度设置为大于当前流的容量的一个值时，容量将自动增加。除了用 byte[] 参数构造的 MemoryStream 外，MemoryStream 末尾的写操作扩展 MemoryStream。

此构造函数公开 GetBuffer 返回的基础流。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

Dim memStream As New MemoryStream(100)

using(MemoryStream memStream = new MemoryStream(100))

MemoryStream^ memStream = gcnew MemoryStream( 100 );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 构造函数 ( array<Byte >[]()[], Boolean)

MemoryStream 构造函数 (
array<
Byte
>
[]
()
[]
, Boolean)
MemoryStream 类

使用按指定要求设置的 CanWrite 属性基于指定的字节数组初始化 MemoryStream 类的无法调整大小的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As Byte(), _
    writable As Boolean _
)
public MemoryStream(
    byte[] buffer,
    bool writable
)
public:
MemoryStream(
    array<unsigned char>^ buffer,
    bool writable
)
new :
        buffer:byte[] *
        writable:bool -> MemoryStream

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中创建该流的无符号字节数组。
writable
类型： System Boolean
CanWrite 属性的设置，确定流是否支持写入。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead 和 CanSeek 属性都设置为 true。Capacity 设置为指定字节数组的长度。 CanRead 和 CanSeek 属性都设置为 true。Capacity 设置为指定字节数组的长度。

流的长度值不能设置为大于指定字节数组的初始长度；但是，流可以被截断（请参见 SetLength）。

此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。 此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 构造函数 ( array<Byte >[]()[], Int32, Int32)

MemoryStream 构造函数 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
MemoryStream 类

基于字节数组的指定区域（索引）初始化 MemoryStream 类的无法调整大小的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As Byte(), _
    index As Integer, _
    count As Integer _
)
public MemoryStream(
    byte[] buffer,
    int index,
    int count
)
public:
MemoryStream(
    array<unsigned char>^ buffer,
    int index,
    int count
)
new :
        buffer:byte[] *
        index:int *
        count:int -> MemoryStream

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中创建该流的无符号字节数组。
index
类型： System Int32
buffer 内的索引，流从此处开始。
count
类型： System Int32
流的长度（以字节为单位）。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 小于零。
ArgumentException | index 与 count 的和大于 buffer 的长度。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead、CanSeek 和 CanWrite 属性都设置为 true，但不能更改容量。Capacity 设置为 count。 CanRead、CanSeek 和 CanWrite 属性都设置为 true，但不能更改容量。Capacity 设置为 count。

流的长度值不能设置为大于指定字节数组的初始长度；但是，流可以被截断（请参见 SetLength）。

此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。但是，可以写入流。 此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。但是，可以写入流。 此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。但是，可以写入流。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 构造函数 ( array<Byte >[]()[], Int32, Int32, Boolean)

MemoryStream 构造函数 (
array<
Byte
>
[]
()
[]
, Int32, Int32, Boolean)
MemoryStream 类

使用按指定要求设置的 CanWrite 属性基于字节数组的指定区域初始化 MemoryStream 类的无法调整大小的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As Byte(), _
    index As Integer, _
    count As Integer, _
    writable As Boolean _
)
public MemoryStream(
    byte[] buffer,
    int index,
    int count,
    bool writable
)
public:
MemoryStream(
    array<unsigned char>^ buffer,
    int index,
    int count,
    bool writable
)
new :
        buffer:byte[] *
        index:int *
        count:int *
        writable:bool -> MemoryStream

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中创建该流的无符号字节数组。
index
类型： System Int32
buffer 内的索引，流从此处开始。
count
类型： System Int32
流的长度（以字节为单位）。
writable
类型： System Boolean
CanWrite 属性的设置，确定流是否支持写入。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ArgumentException | index 与 count 的和大于 buffer 的长度。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead 和 CanSeek 属性都设置为 true。Capacity 设置为 count。 CanRead 和 CanSeek 属性都设置为 true。Capacity 设置为 count。

流的长度值不能设置为大于指定字节数组的初始长度；但是，流可以被截断（请参见 SetLength）。

此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。然而，如果 writable 为 true，则可以写入流。 此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。然而，如果 writable 为 true，则可以写入流。 此构造函数不公开基础流。GetBuffer 引发 UnauthorizedAccessException。然而，如果 writable 为 true，则可以写入流。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 构造函数 ( array<Byte >[]()[], Int32, Int32, Boolean, Boolean)

MemoryStream 构造函数 (
array<
Byte
>
[]
()
[]
, Int32, Int32, Boolean, Boolean)
MemoryStream 类

在按指定要求设置 CanWrite 属性而且能够调用按指定要求设置的 GetBuffer 的情况下，基于字节数组的指定区域初始化 MemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As Byte(), _
    index As Integer, _
    count As Integer, _
    writable As Boolean, _
    publiclyVisible As Boolean _
)
public MemoryStream(
    byte[] buffer,
    int index,
    int count,
    bool writable,
    bool publiclyVisible
)
public:
MemoryStream(
    array<unsigned char>^ buffer,
    int index,
    int count,
    bool writable,
    bool publiclyVisible
)
new :
        buffer:byte[] *
        index:int *
        count:int *
        writable:bool *
        publiclyVisible:bool -> MemoryStream

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中创建该流的无符号字节数组。
index
类型： System Int32
buffer 内的索引，流从此处开始。
count
类型： System Int32
流的长度（以字节为单位）。
writable
类型： System Boolean
CanWrite 属性的设置，确定流是否支持写入。
publiclyVisible
类型： System Boolean
设置为 true 可以启用 GetBuffer，它返回无符号字节数组，流从该数组创建；否则为 false。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ArgumentException | 缓冲区长度减去 index 小于 count。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

CanRead 和 CanSeek 属性都设置为 true。Capacity 设置为 count。 CanRead 和 CanSeek 属性都设置为 true。Capacity 设置为 count。

可向新的流实例写入，但不能更改基础字节数组的 Capacity。流的长度值不能设置为大于指定字节数组的初始长度；但是，流可以被截断（请参见 SetLength）。 可向新的流实例写入，但不能更改基础字节数组的 Capacity。流的长度值不能设置为大于指定字节数组的初始长度；但是，流可以被截断（请参见 SetLength）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
MemoryStream 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 方法

MemoryStream 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

MemoryStream 类型公开以下成员。

名称 说明
页首

参考

MemoryStream 类
System.IO 命名空间


MemoryStream ..::.CopyTo 方法

MemoryStream
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

将当前流的内容复制到另一个流中。

名称 说明
页首

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间


MemoryStream ..::.Dispose 方法

MemoryStream
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

名称 说明
页首

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间


MemoryStream ..::.Dispose 方法 (Boolean)

MemoryStream
.
.
::
.
Dispose 方法 (Boolean)
MemoryStream 类

释放 MemoryStream 类使用的非托管资源，并可以选择释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
如果为 true，则释放托管资源和非托管资源；如果为 false，则仅释放非托管资源。

此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。

disposing 参数为 true 时，此方法释放此 MemoryStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 MemoryStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
Dispose 重载
System.IO 命名空间


MemoryStream ..::.Flush 方法

MemoryStream
.
.
::
.
Flush 方法
MemoryStream 类

重写 Stream..::.Flush 以便不执行任何操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 Flush。

由于写入到 MemoryStream 中的任何数据同时也写入到 RAM 中，因此此方法是多余的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.GetBuffer 方法

MemoryStream
.
.
::
.
GetBuffer 方法
MemoryStream 类

返回从其创建此流的无符号字节数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function GetBuffer As Byte()
public virtual byte[] GetBuffer()
public:
virtual array<unsigned char>^ GetBuffer()
abstract GetBuffer : unit -> byte[]
override GetBuffer : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

创建此流所用的字节数组；或者如果在当前实例的构造期间没有向 MemoryStream 构造函数提供字节数组，则为基础数组。
异常 | 条件
UnauthorizedAccessException | 未使用公共可见缓冲区创建 MemoryStream 的实例。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

请注意，缓冲区包含已分配但可能未使用的字节。例如，如果将字符串“test”写入 MemoryStream 对象，则从 GetBuffer 返回的缓冲区长度为 256，而非 4，其中有 252 个字节未使用。若要仅获取缓冲区中的数据，请使用 ToArray 方法；但是 ToArray 会在内存中创建数据的副本。 请注意，缓冲区包含已分配但可能未使用的字节。例如，如果将字符串“test”写入 MemoryStream 对象，则从 GetBuffer 返回的缓冲区长度为 256，而非 4，其中有 252 个字节未使用。若要仅获取缓冲区中的数据，请使用 ToArray 方法；但是 ToArray 会在内存中创建数据的副本。 请注意，缓冲区包含已分配但可能未使用的字节。例如，如果将字符串“test”写入 MemoryStream 对象，则从 GetBuffer 返回的缓冲区长度为 256，而非 4，其中有 252 个字节未使用。若要仅获取缓冲区中的数据，请使用 ToArray 方法；但是 ToArray 会在内存中创建数据的副本。

缓冲区还可以为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

若要创建带有公共可见缓冲区的 MemoryStream 实例，请使用 MemoryStream、MemoryStream(array<Byte>[]()[], Int32, Int32, Boolean, Boolean) 或 MemoryStream(Int32)。如果当前流可调整大小，则若在对此方法的两次调用之间调整基础字节数组的大小，这两次调用将不会返回同一数组。有关附加信息，请参见Capacity。 若要创建带有公共可见缓冲区的 MemoryStream 实例，请使用 MemoryStream、MemoryStream(array<Byte>[]()[], Int32, Int32, Boolean, Boolean) 或 MemoryStream(Int32)。如果当前流可调整大小，则若在对此方法的两次调用之间调整基础字节数组的大小，这两次调用将不会返回同一数组。有关附加信息，请参见Capacity。 若要创建带有公共可见缓冲区的 MemoryStream 实例，请使用 MemoryStream、MemoryStream(array<Byte>[]()[], Int32, Int32, Boolean, Boolean) 或 MemoryStream(Int32)。如果当前流可调整大小，则若在对此方法的两次调用之间调整基础字节数组的大小，这两次调用将不会返回同一数组。有关附加信息，请参见Capacity。

说明 说明

此方法将在内存流关闭时起作用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.MemberwiseClone 方法

MemoryStream
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

名称 说明
页首

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间


MemoryStream ..::.ObjectInvariant 方法

MemoryStream
.
.
::
.
ObjectInvariant 方法
MemoryStream 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

提供对 Contract 的支持。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub ObjectInvariant
protected override void ObjectInvariant()
protected:
virtual void ObjectInvariant() override
abstract ObjectInvariant : unit -> unit
override ObjectInvariant : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间


MemoryStream ..::.Read 方法

MemoryStream
.
.
::
.
Read 方法
MemoryStream 类

从当前流中读取字节块并将数据写入 buffer 中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read ( _
    <OutAttribute> buffer As Byte(), _
    offset As Integer, _
    count As Integer _
) As Integer
public override int Read(
    byte[] buffer,
    int offset,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<unsigned char>^ buffer,
    int offset,
    int count
) override
abstract Read :
        buffer:byte[] byref *
        offset:int *
        count:int -> int
override Read :
        buffer:byte[] byref *
        offset:int *
        count:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

当此方法返回时，包含指定的字节数组，该数组中从 offset 到 (offset + count -1) 之间的值由从当前流中读取的字符替换。
offset
类型： System Int32
buffer 中的字节偏移量，从此处开始读取。
count
类型： System Int32
最多读取的字节数。

返回值

类型： System Int32
写入缓冲区中的总字节数。如果当前可用字节数不到所请求的字节数，则这一总字节数可能小于所请求的字节数，或者如果在读取任何字节前已到达流的末尾，则为零。 写入缓冲区中的总字节数。如果当前可用字节数不到所请求的字节数，则这一总字节数可能小于所请求的字节数，或者如果在读取任何字节前已到达流的末尾，则为零。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 count 为负。
ArgumentException | 缓冲区长度减去 offset 的结果小于 count。
ObjectDisposedException | 当前流实例已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 Read。

offset 参数给出 buffer 中第一个字节的偏移量，来自当前流的数据写入此处。count 参数给出可从当前流读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。 offset 参数给出 buffer 中第一个字节的偏移量，来自当前流的数据写入此处。count 参数给出可从当前流读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。 offset 参数给出 buffer 中第一个字节的偏移量，来自当前流的数据写入此处。count 参数给出可从当前流读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。

如果读操作成功，则流内的当前位置将向前推进读取的字节数。如果发生异常，则流内的当前位置不变。 如果读操作成功，则流内的当前位置将向前推进读取的字节数。如果发生异常，则流内的当前位置不变。

仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 仅当到达流的末尾时，Read 方法才会返回零。在所有其他情况中，Read 总是在返回前从流中读取至少一个字节。根据定义，如果调用 Read 时流中没有数据可用，则 Read 方法返回零（自动到达流的末尾）。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。

将 BinaryReader 用于读取基元数据类型。

警告说明 警告

如果在 buffer 参数中指定的字节数组为 GetBuffer 方法所返回的基础缓冲区，则数组内容将被覆盖，并且不会引发异常。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Read the first 20 bytes from the stream.
byteArray = _
    New Byte(CType(memStream.Length, Integer)){}
count = memStream.Read(byteArray, 0, 20)

// Read the first 20 bytes from the stream.
byteArray = new byte[memStream.Length];
count = memStream.Read(byteArray, 0, 20);

// Read the first 20 bytes from the stream.
byteArray = gcnew array<Byte>(memStream->Length);
count = memStream->Read( byteArray, 0, 20 );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.ReadByte 方法

MemoryStream
.
.
::
.
ReadByte 方法
MemoryStream 类

从当前流中读取一个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadByte As Integer
public override int ReadByte()
public:
virtual int ReadByte() override
abstract ReadByte : unit -> int
override ReadByte : unit -> int

返回值

类型： System Int32
强制转换为 Int32 的字节；或者如果已到达流的末尾，则为 -1。
异常 | 条件
ObjectDisposedException | 当前流实例已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 ReadByte。

如果读操作成功，则流内的当前位置将向前推进一个字节。如果发生异常，则流内的当前位置不变。 如果读操作成功，则流内的当前位置将向前推进一个字节。如果发生异常，则流内的当前位置不变。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Read the remaining Bytes, Byte by Byte.
While(count < memStream.Length)
    byteArray(count) = _
        Convert.ToByte(memStream.ReadByte())
    count += 1
End While

// Read the remaining bytes, byte by byte.
while(count < memStream.Length)
{
    byteArray[count++] =
        Convert.ToByte(memStream.ReadByte());
}

// Read the remaining bytes, byte by byte.
while ( count < memStream->Length )
{
   byteArray[ count++ ] = Convert::ToByte( memStream->ReadByte() );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.Seek 方法

MemoryStream
.
.
::
.
Seek 方法
MemoryStream 类

将当前流中的位置设置为指定值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Seek ( _
    offset As Long, _
    loc As SeekOrigin _
) As Long
public override long Seek(
    long offset,
    SeekOrigin loc
)
public:
virtual long long Seek(
    long long offset,
    SeekOrigin loc
) override
abstract Seek :
        offset:int64 *
        loc:SeekOrigin -> int64
override Seek :
        offset:int64 *
        loc:SeekOrigin -> int64

参数

offset
类型： System Int64
流内的新位置。它是相对于 loc 参数的位置，而且可正可负。 流内的新位置。它是相对于 loc 参数的位置，而且可正可负。
loc
类型： System.IO SeekOrigin
类型 SeekOrigin 的值，它用作查找参考点。

返回值

类型： System Int64
流内的新位置，通过将初始参考点和偏移量合并计算而得。
异常 | 条件
IOException | 尝试在流的开始位置之前查找。
ArgumentOutOfRangeException | offset 大于 MaxValue。
ArgumentException | SeekOrigin 无效。 - 或 - offset 导致算法溢出。
ObjectDisposedException | 当前流实例已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 Seek。

支持搜索到超出流长度的任何位置。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Set the stream position to the beginning of the stream.
memStream.Seek(0, SeekOrigin.Begin)

// Set the position to the beginning of the stream.
memStream.Seek(0, SeekOrigin.Begin);

// Set the stream position to the beginning of the stream.
memStream->Seek( 0, SeekOrigin::Begin );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.SetLength 方法

MemoryStream
.
.
::
.
SetLength 方法
MemoryStream 类

将当前流的长度设为指定值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub SetLength ( _
    value As Long _
)
public override void SetLength(
    long value
)
public:
virtual void SetLength(
    long long value
) override
abstract SetLength :
        value:int64 -> unit
override SetLength :
        value:int64 -> unit

参数

value
类型： System Int64
值，通过该值设置长度。
异常 | 条件
NotSupportedException | 当前流无法调整大小，而且 value 大于当前容量。 - 或 - 当前流不支持写入。
ArgumentOutOfRangeException | value 为负或者大于 MemoryStream 的最大长度，其中最大长度为 (MaxValue- origin)，origin 为基础缓冲区中作为流的起点的索引。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 SetLength。

如果指定值小于流的当前长度，则流被截断。如果截断后流内的当前位置超过流的末尾，则 ReadByte 方法返回 -1，Read 方法将向所提供的字节数组中读入零字节，同时 Write 和 WriteByte 方法将在流的末尾追加指定字节并增加其长度。如果指定值大于当前容量并且流可调整大小，则容量将增加，而流内的当前位置将保持不变。如果长度增加，则新旧长度之间的流的内容将被初始化为零。 如果指定值小于流的当前长度，则流被截断。如果截断后流内的当前位置超过流的末尾，则 ReadByte 方法返回 -1，Read 方法将向所提供的字节数组中读入零字节，同时 Write 和 WriteByte 方法将在流的末尾追加指定字节并增加其长度。如果指定值大于当前容量并且流可调整大小，则容量将增加，而流内的当前位置将保持不变。如果长度增加，则新旧长度之间的流的内容将被初始化为零。 如果指定值小于流的当前长度，则流被截断。如果截断后流内的当前位置超过流的末尾，则 ReadByte 方法返回 -1，Read 方法将向所提供的字节数组中读入零字节，同时 Write 和 WriteByte 方法将在流的末尾追加指定字节并增加其长度。如果指定值大于当前容量并且流可调整大小，则容量将增加，而流内的当前位置将保持不变。如果长度增加，则新旧长度之间的流的内容将被初始化为零。 如果指定值小于流的当前长度，则流被截断。如果截断后流内的当前位置超过流的末尾，则 ReadByte 方法返回 -1，Read 方法将向所提供的字节数组中读入零字节，同时 Write 和 WriteByte 方法将在流的末尾追加指定字节并增加其长度。如果指定值大于当前容量并且流可调整大小，则容量将增加，而流内的当前位置将保持不变。如果长度增加，则新旧长度之间的流的内容将被初始化为零。

说明 说明

MemoryStream 实例必须支持写入才能使此方法起作用。使用 CanWrite 属性可确定当前实例是否支持写入。有关附加信息，请参见CanWrite。 MemoryStream 实例必须支持写入才能使此方法起作用。使用 CanWrite 属性可确定当前实例是否支持写入。有关附加信息，请参见CanWrite。 MemoryStream 实例必须支持写入才能使此方法起作用。使用 CanWrite 属性可确定当前实例是否支持写入。有关附加信息，请参见CanWrite。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.ToArray 方法

MemoryStream
.
.
::
.
ToArray 方法
MemoryStream 类

将流内容写入字节数组，而与 Position 属性无关。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ToArray As Byte()
public virtual byte[] ToArray()
public:
virtual array<unsigned char>^ ToArray()
abstract ToArray : unit -> byte[]
override ToArray : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

新字节数组。

此方法会从数组中省略 MemoryStream 中未使用的字节。若要获取整个缓冲区，请使用 GetBuffer 方法。 此方法会从数组中省略 MemoryStream 中未使用的字节。若要获取整个缓冲区，请使用 GetBuffer 方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法将 MemoryStream 内容的副本作为字节数组返回。如果当前实例在给定的字节数组上构造，则返回数组中此实例可访问部分的副本。有关详细信息，请参见 MemoryStream 构造函数。 此方法将 MemoryStream 内容的副本作为字节数组返回。如果当前实例在给定的字节数组上构造，则返回数组中此实例可访问部分的副本。有关详细信息，请参见 MemoryStream 构造函数。 此方法将 MemoryStream 内容的副本作为字节数组返回。如果当前实例在给定的字节数组上构造，则返回数组中此实例可访问部分的副本。有关详细信息，请参见 MemoryStream 构造函数。

说明 说明

此方法在 MemoryStream 关闭后有效。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.Write 方法

MemoryStream
.
.
::
.
Write 方法
MemoryStream 类

使用从缓冲区读取的数据将字节块写入当前流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    buffer As Byte(), _
    offset As Integer, _
    count As Integer _
)
public override void Write(
    byte[] buffer,
    int offset,
    int count
)
public:
virtual void Write(
    array<unsigned char>^ buffer,
    int offset,
    int count
) override
abstract Write :
        buffer:byte[] *
        offset:int *
        count:int -> unit
override Write :
        buffer:byte[] *
        offset:int *
        count:int -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中写入数据的缓冲区。
offset
类型： System Int32
buffer 中的字节偏移量，从此处开始写入。
count
类型： System Int32
最多写入的字节数。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 流不支持写入。有关更多信息，请参见 CanWrite。 流不支持写入。有关更多信息，请参见 CanWrite。 - 或 - 当前位置到流结尾的距离小于 count 字节，并且无法修改容量。
ArgumentException | 缓冲区长度减去 offset 的结果小于 count。
ArgumentOutOfRangeException | offset 或 count 为负。
IOException | 发生 I/O 错误。
ObjectDisposedException | 当前流实例已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 Write。

offset 参数给出 buffer 中作为开始写入位置的第一个字节的偏移量，count 参数给出要写入的字节数。如果写操作成功，则流的当前位置前进写入的字节数。如果发生异常，则流内的当前位置不变。 offset 参数给出 buffer 中作为开始写入位置的第一个字节的偏移量，count 参数给出要写入的字节数。如果写操作成功，则流的当前位置前进写入的字节数。如果发生异常，则流内的当前位置不变。 offset 参数给出 buffer 中作为开始写入位置的第一个字节的偏移量，count 参数给出要写入的字节数。如果写操作成功，则流的当前位置前进写入的字节数。如果发生异常，则流内的当前位置不变。

除了用 byte[] 参数构造的 MemoryStream 外，MemoryStream 末尾的写操作扩展 MemoryStream。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Write the first string to the stream.
memStream.Write(firstString, 0 , firstString.Length)

// Write the first string to the stream.
memStream.Write(firstString, 0 , firstString.Length);

// Write the first string to the stream.
memStream->Write( firstString, 0, firstString->Length );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.WriteByte 方法

MemoryStream
.
.
::
.
WriteByte 方法
MemoryStream 类

将一个字节写入当前流中的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub WriteByte ( _
    value As Byte _
)
public override void WriteByte(
    byte value
)
public:
virtual void WriteByte(
    unsigned char value
) override
abstract WriteByte :
        value:byte -> unit
override WriteByte :
        value:byte -> unit

参数

value
类型： System Byte
写入的字节。
异常 | 条件
NotSupportedException | 流不支持写入。有关更多信息，请参见 CanWrite。 流不支持写入。有关更多信息，请参见 CanWrite。 - 或 - 当前位置位于流的末尾，而且容量不能被修改。
ObjectDisposedException | 当前流已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此方法重写 WriteByte。

除了用 byte[] 参数构造的 MemoryStream 外，MemoryStream 末尾的写操作扩展 MemoryStream。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Write the second string to the stream, byte by byte.
count = 0
While(count < secondString.Length)
    memStream.WriteByte(secondString(count))
    count += 1
End While

// Write the second string to the stream, byte by byte.
count = 0;
while(count < secondString.Length)
{
    memStream.WriteByte(secondString[count++]);
}

// Write the second string to the stream, byte by byte.
count = 0;
while ( count < secondString->Length )
{
   memStream->WriteByte( secondString[ count++ ] );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.WriteTo 方法

MemoryStream
.
.
::
.
WriteTo 方法
MemoryStream 类

将此内存流的整个内容写入另一个流中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteTo ( _
    stream As Stream _
)
public virtual void WriteTo(
    Stream stream
)
public:
virtual void WriteTo(
    Stream^ stream
)
abstract WriteTo :
        stream:Stream -> unit
override WriteTo :
        stream:Stream -> unit

参数

stream
类型： System.IO Stream
要将此内存流写入的流。
异常 | 条件
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | 当前流或目标流已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

在当前流打开时，此方法等效于在此流的基础缓冲区上调用 Stream..::.Write。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream 属性

MemoryStream 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
MemoryStream 类

MemoryStream 类型公开以下成员。

名称 说明
页首

参考

MemoryStream 类
System.IO 命名空间


MemoryStream ..::.CanRead 属性

MemoryStream
.
.
::
.
CanRead 属性
MemoryStream 类

获取一个值，该值指示当前流是否支持读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanRead As Boolean
    Get
public override bool CanRead { get; }
public:
virtual property bool CanRead {
    bool get () override;
}
abstract CanRead : bool
override CanRead : bool

属性值

类型： System Boolean
如果流是打开的，则为 true。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持读取，则对 Read 和 ReadByte 方法的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.CanSeek 属性

MemoryStream
.
.
::
.
CanSeek 属性
MemoryStream 类

获取一个值，该值指示当前流是否支持查找。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanSeek As Boolean
    Get
public override bool CanSeek { get; }
public:
virtual property bool CanSeek {
    bool get () override;
}
abstract CanSeek : bool
override CanSeek : bool

属性值

类型： System Boolean
如果流是打开的，则为 true。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持查找，则对 Length、SetLength、Position 和 Seek 的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.CanWrite 属性

MemoryStream
.
.
::
.
CanWrite 属性
MemoryStream 类

获取一个值，该值指示当前流是否支持写入。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanWrite As Boolean
    Get
public override bool CanWrite { get; }
public:
virtual property bool CanWrite {
    bool get () override;
}
abstract CanWrite : bool
override CanWrite : bool

属性值

类型： System Boolean
如果流支持写入，为 true；否则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持写入，则调用 SetLength、Write 或 WriteByte 将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.Capacity 属性

MemoryStream
.
.
::
.
Capacity 属性
MemoryStream 类

获取或设置分配给该流的字节数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Property Capacity As Integer
    Get
    Set
public virtual int Capacity { get; set; }
public:
virtual property int Capacity {
    int get ();
    void set (int value);
}
abstract Capacity : int with get, set
override Capacity : int with get, set

属性值

类型： System Int32
流的缓冲区可使用部分的长度。
异常 | 条件
ArgumentOutOfRangeException | 容量设置为负或小于流的当前长度。
ObjectDisposedException | 当前流已关闭。
NotSupportedException | 对不能修改其容量的流调用 set。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

Capacity 是系统提供的字节数组的缓冲区长度。不能将Capacity设置为小于当前流长度的值。 Capacity 是系统提供的字节数组的缓冲区长度。不能将Capacity设置为小于当前流长度的值。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Write the stream properties to the console.
Console.WriteLine( _
    "Capacity = {0}, Length = {1}, Position = {2}", _
    memStream.Capacity.ToString(), _
    memStream.Length.ToString(), _
    memStream.Position.ToString())

// Write the stream properties to the console.
Console.WriteLine(
    "Capacity = {0}, Length = {1}, Position = {2}\n",
    memStream.Capacity.ToString(),
    memStream.Length.ToString(),
    memStream.Position.ToString());

// Write the stream properties to the console.
Console::WriteLine( "Capacity = {0}, Length = {1}, "
"Position = {2}\n", memStream->Capacity.ToString(), memStream->Length.ToString(), memStream->Position.ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.Length 属性

MemoryStream
.
.
::
.
Length 属性
MemoryStream 类

获取用字节表示的流长度。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Length As Long
    Get
public override long Length { get; }
public:
virtual property long long Length {
    long long get () override;
}
abstract Length : int64
override Length : int64

属性值

类型： System Int64
流的长度（以字节为单位）。
异常 | 条件
ObjectDisposedException | 流已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Write the stream properties to the console.
Console.WriteLine( _
    "Capacity = {0}, Length = {1}, Position = {2}", _
    memStream.Capacity.ToString(), _
    memStream.Length.ToString(), _
    memStream.Position.ToString())

// Write the stream properties to the console.
Console.WriteLine(
    "Capacity = {0}, Length = {1}, Position = {2}\n",
    memStream.Capacity.ToString(),
    memStream.Length.ToString(),
    memStream.Position.ToString());

// Write the stream properties to the console.
Console::WriteLine( "Capacity = {0}, Length = {1}, "
"Position = {2}\n", memStream->Capacity.ToString(), memStream->Length.ToString(), memStream->Position.ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


MemoryStream ..::.Position 属性

MemoryStream
.
.
::
.
Position 属性
MemoryStream 类

获取或设置流中的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Property Position As Long
    Get
    Set
public override long Position { get; set; }
public:
virtual property long long Position {
    long long get () override;
    void set (long long value) override;
}
abstract Position : int64 with get, set
override Position : int64 with get, set

属性值

类型： System Int64
流中的当前位置。
异常 | 条件
ArgumentOutOfRangeException | 此位置设置为负值或大于 MaxValue 的值。
ObjectDisposedException | 流已关闭。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

此代码示例摘自一个为 MemoryStream 类提供的更大示例。

' Write the stream properties to the console.
Console.WriteLine( _
    "Capacity = {0}, Length = {1}, Position = {2}", _
    memStream.Capacity.ToString(), _
    memStream.Length.ToString(), _
    memStream.Position.ToString())

// Write the stream properties to the console.
Console.WriteLine(
    "Capacity = {0}, Length = {1}, Position = {2}\n",
    memStream.Capacity.ToString(),
    memStream.Length.ToString(),
    memStream.Position.ToString());

// Write the stream properties to the console.
Console::WriteLine( "Capacity = {0}, Length = {1}, "
"Position = {2}\n", memStream->Capacity.ToString(), memStream->Length.ToString(), memStream->Position.ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

MemoryStream 类
MemoryStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


NotifyFilters 枚举

NotifyFilters 枚举

指定要在文件或文件夹中监视的更改。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.IO
程序集： System（在 System.dll 中）
<FlagsAttribute> _
Public Enumeration NotifyFilters
[FlagsAttribute]
public enum NotifyFilters
[FlagsAttribute]
public enum class NotifyFilters
[<FlagsAttribute>]
type NotifyFilters
成员名称 | 说明
FileName | 文件名。
DirectoryName | 目录名。
Attributes | 文件或文件夹的特性。
Size | 文件或文件夹的大小。
LastWrite | 上一次向文件或文件夹写入内容的日期。
LastAccess | 文件或文件夹上一次打开的日期。
CreationTime | 文件或文件夹的创建时间。
Security | 文件或文件夹的安全设置。

可组合此枚举的成员以监视多种更改。例如，可监视文件或文件夹大小方面的更改和安全设置方面的更改。每当文件或文件夹的大小或安全设置方面有更改的时候，这将引发事件。 可组合此枚举的成员以监视多种更改。例如，可监视文件或文件夹大小方面的更改和安全设置方面的更改。每当文件或文件夹的大小或安全设置方面有更改的时候，这将引发事件。 可组合此枚举的成员以监视多种更改。例如，可监视文件或文件夹大小方面的更改和安全设置方面的更改。每当文件或文件夹的大小或安全设置方面有更改的时候，这将引发事件。

下面的示例创建 FileSystemWatcher，以监视运行时指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间的任何更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建 FileSystemWatcher，以监视运行时指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间的任何更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建 FileSystemWatcher，以监视运行时指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间的任何更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。 下面的示例创建 FileSystemWatcher，以监视运行时指定的目录。组件设置为监视 LastWrite 和 LastAccess 时间的任何更改，以及目录中文本文件的创建、删除或重命名。如果更改、创建或删除文件，文件路径将被输出到控制台。在文件重命名后，旧路径和新路径都输出到控制台。

在此示例中使用 System.Diagnostics 和 System.IO 命名空间。

Public Class Watcher

    Public Shared Sub Main()

         Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
    Private Shared Sub Run

      Dim args() As String = System.Environment.GetCommandLineArgs()
        ' If a directory is not specified, exit the program.
        If args.Length <> 2 Then
            ' Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)")
            Return
        End If

        ' Create a new FileSystemWatcher and set its properties.
        Dim watcher As New FileSystemWatcher()
        watcher.Path = args(1)
        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        ' Only watch text files.
        watcher.Filter = "*.txt"

        ' Add event handlers.
        AddHandler watcher.Changed, AddressOf OnChanged
        AddHandler watcher.Created, AddressOf OnChanged
        AddHandler watcher.Deleted, AddressOf OnChanged
        AddHandler watcher.Renamed, AddressOf OnRenamed

        ' Begin watching.
        watcher.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'q' to quit the sample.")
        While Chr(Console.Read()) <> "q"c
        End While
    End Sub

    ' Define the event handlers.
    Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
        ' Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
    End Sub

    Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
        ' Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
    End Sub

End Class

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

public ref class Watcher
{
private:
   // Define the event handlers.
   static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
   {
      // Specify what is done when a file is changed, created, or deleted.
      Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
   }

   static void OnRenamed( Object^ /*source*/, RenamedEventArgs^ e )
   {
      // Specify what is done when a file is renamed.
      Console::WriteLine( "File: {0} renamed to {1}", e->OldFullPath, e->FullPath );
   }

public:
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   int static run()
   {
      array<String^>^args = System::Environment::GetCommandLineArgs();

      // If a directory is not specified, exit program.
      if ( args->Length != 2 )
      {
         // Display the proper way to call the program.
         Console::WriteLine( "Usage: Watcher.exe (directory)" );
         return 0;
      }

      // Create a new FileSystemWatcher and set its properties.
      FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
      watcher->Path = args[ 1 ];

      /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
      watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
            NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);

      // Only watch text files.
      watcher->Filter = "*.txt";

      // Add event handlers.
      watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
      watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );

      // Begin watching.
      watcher->EnableRaisingEvents = true;

      // Wait for the user to quit the program.
      Console::WriteLine( "Press \'q\' to quit the sample." );
      while ( Console::Read() != 'q' )
         ;
   }
};

int main() {
   Watcher::run();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间
FileSystemEventArgs
FileSystemEventHandler
FileSystemWatcher
InternalBufferOverflowException
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


Path 类

Path 类
成员

对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。 对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(True)> _
Public NotInheritable Class Path
[ComVisibleAttribute(true)]
public static class Path
[ComVisibleAttribute(true)]
public ref class Path abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
[<ComVisibleAttribute(true)>]
type Path =  class end

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。 路径是提供文件或目录位置的字符串。路径不必指向磁盘上的位置；例如，路径可以映射到内存中或设备上的位置。路径的准确格式是由当前平台确定的。例如，在某些系统上，路径可以驱动器号或卷号开始，而此元素在其他系统中是不存在的。在某些系统上，文件路径可以包含扩展名，扩展名指示在文件中存储的信息的类型。文件扩展名的格式是与平台相关的；例如，某些系统将扩展名的长度限制为 3 个字符，而其他系统则没有这样的限制。当前平台还确定用于分隔路径中各元素的字符集，以及确定在指定路径时不能使用的字符集。因为这些差异，所以 Path 类的字段以及 Path 类的某些成员的准确行为是与平台相关的。

路径可以包含绝对或相对位置信息。绝对路径完整指定一个位置：文件或目录可被唯一标识，而与当前位置无关。相对路径指定部分位置：当定位用相对路径指定的文件时，当前位置用作起始点。若要确定当前目录，请调用 Directory..::.GetCurrentDirectory。
路径可以包含绝对或相对位置信息。绝对路径完整指定一个位置：文件或目录可被唯一标识，而与当前位置无关。相对路径指定部分位置：当定位用相对路径指定的文件时，当前位置用作起始点。若要确定当前目录，请调用 Directory..::.GetCurrentDirectory。
路径可以包含绝对或相对位置信息。绝对路径完整指定一个位置：文件或目录可被唯一标识，而与当前位置无关。相对路径指定部分位置：当定位用相对路径指定的文件时，当前位置用作起始点。若要确定当前目录，请调用 Directory..::.GetCurrentDirectory。
路径可以包含绝对或相对位置信息。绝对路径完整指定一个位置：文件或目录可被唯一标识，而与当前位置无关。相对路径指定部分位置：当定位用相对路径指定的文件时，当前位置用作起始点。若要确定当前目录，请调用 Directory..::.GetCurrentDirectory。

Path 类的大多数成员不与文件系统进行交互，且不验证路径字符串所指定的文件是否存在。修改路径字符串（如 ChangeExtension）的 Path 类对文件系统中的文件名没有任何影响。但是，Path 成员验证指定路径字符串的内容，如果字符串在路径字符串中包含无效字符（如 InvalidPathChars 中定义），则引发 ArgumentException。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 以及从 16 到 18 和从 20 到 25 的 Unicode 字符。 Path 类的大多数成员不与文件系统进行交互，且不验证路径字符串所指定的文件是否存在。修改路径字符串（如 ChangeExtension）的 Path 类对文件系统中的文件名没有任何影响。但是，Path 成员验证指定路径字符串的内容，如果字符串在路径字符串中包含无效字符（如 InvalidPathChars 中定义），则引发 ArgumentException。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 以及从 16 到 18 和从 20 到 25 的 Unicode 字符。 Path 类的大多数成员不与文件系统进行交互，且不验证路径字符串所指定的文件是否存在。修改路径字符串（如 ChangeExtension）的 Path 类对文件系统中的文件名没有任何影响。但是，Path 成员验证指定路径字符串的内容，如果字符串在路径字符串中包含无效字符（如 InvalidPathChars 中定义），则引发 ArgumentException。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 以及从 16 到 18 和从 20 到 25 的 Unicode 字符。 Path 类的大多数成员不与文件系统进行交互，且不验证路径字符串所指定的文件是否存在。修改路径字符串（如 ChangeExtension）的 Path 类对文件系统中的文件名没有任何影响。但是，Path 成员验证指定路径字符串的内容，如果字符串在路径字符串中包含无效字符（如 InvalidPathChars 中定义），则引发 ArgumentException。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 以及从 16 到 18 和从 20 到 25 的 Unicode 字符。

Path 类的成员使您可以快速方便地执行常见操作，例如确定文件扩展名是否是路径的一部分，以及将两个字符串组合成一个路径名。

Path 类的所有成员都是静态的，因此无需具有路径的实例即可被调用。

说明 说明

在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。 在接受路径作为输入字符串的成员中，路径必须是格式良好的，否则将引发异常。例如，如果路径是完全限定的但以空格开头，则路径在类的方法中不会被修剪。因此，路径的格式不正确，并将引发异常。同样，路径或路径的组合不能被完全限定两次。例如，“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时，请确保路径是格式良好的。

在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径： 在接受路径的成员中，路径可以是指文件或仅是目录。指定路径也可以是相对路径或者服务器和共享名称的统一命名约定 (UNC) 路径。例如，以下都是可接受的路径：

  • C# 中的“c:\\MyDir\\MyFile.txt”或 Visual Basic 中的“c:\MyDir\MyFile.txt”。

  • C# 中的“c:\\MyDir”或 Visual Basic 中的“c:\MyDir”。

  • C# 中的“MyDir\\MySubdir”或 Visual Basic 中的“MyDir\MySubDir”。

  • C# 中的“\\\\MyServer\\MyShare”或 Visual Basic 中的“\\MyServer\MyShare”。

因为所有这些操作都是对字符串执行的，所以不可能验证结果是否在所有方案中都有效。例如，GetExtension 方法分析您传递给它的字符串，并且从该字符串返回扩展名。但是，这并不意味着在磁盘上存在具有该扩展名的文件。 因为所有这些操作都是对字符串执行的，所以不可能验证结果是否在所有方案中都有效。例如，GetExtension 方法分析您传递给它的字符串，并且从该字符串返回扩展名。但是，这并不意味着在磁盘上存在具有该扩展名的文件。 因为所有这些操作都是对字符串执行的，所以不可能验证结果是否在所有方案中都有效。例如，GetExtension 方法分析您传递给它的字符串，并且从该字符串返回扩展名。但是，这并不意味着在磁盘上存在具有该扩展名的文件。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 Path 类的某些主要成员。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path1 As String = "c:\temp\MyTest.txt"
        Dim path2 As String = "c:\temp\MyTest"
        Dim path3 As String = "temp"

        If Path.HasExtension(path1) Then
            Console.WriteLine("{0} has an extension.", path1)
        End If

        If Path.HasExtension(path2) = False Then
            Console.WriteLine("{0} has no extension.", path2)
        End If

        If Path.IsPathRooted(path3) = False Then
            Console.WriteLine("The string {0} contains no root information.", path3)
        End If

        Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3))
        Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath())
        Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName())

        ' This code produces output similar to the following:
        ' c:\temp\MyTest.txt has an extension.
        ' c:\temp\MyTest has no extension.
        ' The string temp contains no root information.
        ' The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
        ' D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
        ' D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.

    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path1 = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp\MyTest";
        string path3 = @"temp";

        if (Path.HasExtension(path1))
        {
            Console.WriteLine("{0} has an extension.", path1);
        }

        if (!Path.HasExtension(path2))
        {
            Console.WriteLine("{0} has no extension.", path2);
        }

        if (!Path.IsPathRooted(path3))
        {
            Console.WriteLine("The string {0} contains no root information.", path3);
        }

        Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3));
        Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath());
        Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName());

        /* This code produces output similar to the following:
         * c:\temp\MyTest.txt has an extension.
         * c:\temp\MyTest has no extension.
         * The string temp contains no root information.
         * The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
         * D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
         * D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.
         */
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path1 = "c:\\temp\\MyTest.txt";
   String^ path2 = "c:\\temp\\MyTest";
   String^ path3 = "temp";
   if ( Path::HasExtension( path1 ) )
   {
      Console::WriteLine( "{0} has an extension.", path1 );
   }

   if (  !Path::HasExtension( path2 ) )
   {
      Console::WriteLine( "{0} has no extension.", path2 );
   }

   if (  !Path::IsPathRooted( path3 ) )
   {
      Console::WriteLine( "The string {0} contains no root information.", path3 );
   }

   Console::WriteLine( "The full path of {0} is {1}.", path3, Path::GetFullPath( path3 ) );
   Console::WriteLine( "{0} is the location for temporary files.", Path::GetTempPath() );
   Console::WriteLine( "{0} is a file available for use.", Path::GetTempFileName() );
   Console::WriteLine( "\r\nThe set of invalid characters in a path is:" );
   Console::WriteLine( "(Note that the wildcard characters '*' and '?' are not invalid.):" );
   Collections::IEnumerator^ myEnum = Path::InvalidPathChars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c =  *safe_cast<Char^>(myEnum->Current);
      Console::WriteLine( c );
   }
}

System.IO System.IO..::.PathPath
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


Path 成员

Path 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Path 类

对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。 对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。

Path 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

Path 类
System.IO 命名空间


Path 字段

Path 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Path 类

Path 类型公开以下成员。

名称 说明
页首

参考

Path 类
System.IO 命名空间


Path ..::.AltDirectorySeparatorChar 字段

Path
.
.
::
.
AltDirectorySeparatorChar 字段
Path 类

提供平台特定的替换字符，该替换字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly AltDirectorySeparatorChar As Char
public static readonly char AltDirectorySeparatorChar
public:
static initonly wchar_t AltDirectorySeparatorChar
static val AltDirectorySeparatorChar: char

在此字段中存储的字符不能位于 InvalidPathChars 中。可将此字段设置为与 DirectorySeparatorChar 相同的值。AltDirectorySeparatorChar 和 DirectorySeparatorChar 都可用于分隔路径字符串中的目录级别。 在此字段中存储的字符不能位于 InvalidPathChars 中。可将此字段设置为与 DirectorySeparatorChar 相同的值。AltDirectorySeparatorChar 和 DirectorySeparatorChar 都可用于分隔路径字符串中的目录级别。 在此字段中存储的字符不能位于 InvalidPathChars 中。可将此字段设置为与 DirectorySeparatorChar 相同的值。AltDirectorySeparatorChar 和 DirectorySeparatorChar 都可用于分隔路径字符串中的目录级别。

该字段的值在 Unix 上为反斜杠（“\”），在 Windows 和 Macintosh 操作系统上为斜杠（“/”）。

下面的代码示例演示 AltDirectorySeparatorChar 字段的用法。

Console.WriteLine("Path.AltDirectorySeparatorChar={0}", Path.AltDirectorySeparatorChar)
Console.WriteLine("Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar)
Console.WriteLine("Path.PathSeparator={0}", Path.PathSeparator)
Console.WriteLine("Path.VolumeSeparatorChar={0}", Path.VolumeSeparatorChar)

Console.Write("Path.GetInvalidPathChars()=")
Dim c As Char
For Each c In Path.GetInvalidPathChars()
    Console.Write(c)
Next c
Console.WriteLine()

' This code produces output similar to the following:
' Note that the InvalidPathCharacters contain characters
' outside of the printable character set.
'
' Path.AltDirectorySeparatorChar=/
' Path.DirectorySeparatorChar=\
' Path.PathSeparator=;
' Path.VolumeSeparatorChar=:

Console.WriteLine("Path.AltDirectorySeparatorChar={0}",
    Path.AltDirectorySeparatorChar);
Console.WriteLine("Path.DirectorySeparatorChar={0}",
    Path.DirectorySeparatorChar);
Console.WriteLine("Path.PathSeparator={0}",
    Path.PathSeparator);
Console.WriteLine("Path.VolumeSeparatorChar={0}",
    Path.VolumeSeparatorChar);

Console.Write("Path.GetInvalidPathChars()=");
foreach (char c in Path.GetInvalidPathChars())
    Console.Write(c);
Console.WriteLine();
// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Console::WriteLine( "Path::AltDirectorySeparatorChar={0}", (Path::AltDirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::DirectorySeparatorChar={0}", (Path::DirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::PathSeparator={0}", (Path::PathSeparator).ToString() );
Console::WriteLine( "Path::VolumeSeparatorChar={0}", (Path::VolumeSeparatorChar).ToString() );
Console::Write( "Path::InvalidPathChars=" );
for ( int i = 0; i < Path::InvalidPathChars->Length; i++ )
   Console::Write( Path::InvalidPathChars[ i ] );
Console::WriteLine();

// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.DirectorySeparatorChar 字段

Path
.
.
::
.
DirectorySeparatorChar 字段
Path 类

提供平台特定的字符，该字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly DirectorySeparatorChar As Char
public static readonly char DirectorySeparatorChar
public:
static initonly wchar_t DirectorySeparatorChar
static val DirectorySeparatorChar: char

在此字段中存储的字符不能位于 InvalidPathChars 中。AltDirectorySeparatorChar 和 DirectorySeparatorChar 都可用于分隔路径字符串中的目录级别。 在此字段中存储的字符不能位于 InvalidPathChars 中。AltDirectorySeparatorChar 和 DirectorySeparatorChar 都可用于分隔路径字符串中的目录级别。

该字段的值在 Unix 上为斜杠（“/”），在 Windows 和 Macintosh 操作系统上为反斜杠（“\”）。

下面的代码示例演示 DirectorySeparatorChar 字段的用法。

Console.WriteLine("Path.AltDirectorySeparatorChar={0}", Path.AltDirectorySeparatorChar)
Console.WriteLine("Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar)
Console.WriteLine("Path.PathSeparator={0}", Path.PathSeparator)
Console.WriteLine("Path.VolumeSeparatorChar={0}", Path.VolumeSeparatorChar)

Console.Write("Path.GetInvalidPathChars()=")
Dim c As Char
For Each c In Path.GetInvalidPathChars()
    Console.Write(c)
Next c
Console.WriteLine()

' This code produces output similar to the following:
' Note that the InvalidPathCharacters contain characters
' outside of the printable character set.
'
' Path.AltDirectorySeparatorChar=/
' Path.DirectorySeparatorChar=\
' Path.PathSeparator=;
' Path.VolumeSeparatorChar=:

Console.WriteLine("Path.AltDirectorySeparatorChar={0}",
    Path.AltDirectorySeparatorChar);
Console.WriteLine("Path.DirectorySeparatorChar={0}",
    Path.DirectorySeparatorChar);
Console.WriteLine("Path.PathSeparator={0}",
    Path.PathSeparator);
Console.WriteLine("Path.VolumeSeparatorChar={0}",
    Path.VolumeSeparatorChar);

Console.Write("Path.GetInvalidPathChars()=");
foreach (char c in Path.GetInvalidPathChars())
    Console.Write(c);
Console.WriteLine();
// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Console::WriteLine( "Path::AltDirectorySeparatorChar={0}", (Path::AltDirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::DirectorySeparatorChar={0}", (Path::DirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::PathSeparator={0}", (Path::PathSeparator).ToString() );
Console::WriteLine( "Path::VolumeSeparatorChar={0}", (Path::VolumeSeparatorChar).ToString() );
Console::Write( "Path::InvalidPathChars=" );
for ( int i = 0; i < Path::InvalidPathChars->Length; i++ )
   Console::Write( Path::InvalidPathChars[ i ] );
Console::WriteLine();

// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.InvalidPathChars 字段

Path
.
.
::
.
InvalidPathChars 字段
Path 类

注意：此 API 现在已过时。 非过时替代项是 GetInvalidPathChars 。

提供平台特定的字符数组，这些字符不能在传递到 Path 类的成员的路径字符串参数中指定。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("Please use GetInvalidPathChars or GetInvalidFileNameChars instead.")> _
Public Shared ReadOnly InvalidPathChars As Char()
[ObsoleteAttribute("Please use GetInvalidPathChars or GetInvalidFileNameChars instead.")]
public static readonly char[] InvalidPathChars
[ObsoleteAttribute(L"Please use GetInvalidPathChars or GetInvalidFileNameChars instead.")]
public:
static initonly array<wchar_t>^ InvalidPathChars
[<ObsoleteAttribute("Please use GetInvalidPathChars or GetInvalidFileNameChars instead.")>]
static val InvalidPathChars: char[]

字段值

类型：
array<
System Char
>
[]
()
[]

当前平台的无效路径字符的字符数组。

不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。 不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。 不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。

警告说明 警告

如果您认为代码可以与不受信任的代码在相同应用程序域中执行，请不要使用 InvalidPathChars。InvalidPathChars 是一个数组，因此其元素可被覆盖。如果不可信代码覆盖 InvalidPathChars 的元素，可能导致代码以被利用的方式错误运行。 如果您认为代码可以与不受信任的代码在相同应用程序域中执行，请不要使用 InvalidPathChars。InvalidPathChars 是一个数组，因此其元素可被覆盖。如果不可信代码覆盖 InvalidPathChars 的元素，可能导致代码以被利用的方式错误运行。 如果您认为代码可以与不受信任的代码在相同应用程序域中执行，请不要使用 InvalidPathChars。InvalidPathChars 是一个数组，因此其元素可被覆盖。如果不可信代码覆盖 InvalidPathChars 的元素，可能导致代码以被利用的方式错误运行。

下面的代码示例阐释了如何使用 InvalidPathChars 属性。

Console.WriteLine("Path.AltDirectorySeparatorChar={0}", Path.AltDirectorySeparatorChar)
Console.WriteLine("Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar)
Console.WriteLine("Path.PathSeparator={0}", Path.PathSeparator)
Console.WriteLine("Path.VolumeSeparatorChar={0}", Path.VolumeSeparatorChar)

Console.Write("Path.GetInvalidPathChars()=")
Dim c As Char
For Each c In Path.GetInvalidPathChars()
    Console.Write(c)
Next c
Console.WriteLine()

' This code produces output similar to the following:
' Note that the InvalidPathCharacters contain characters
' outside of the printable character set.
'
' Path.AltDirectorySeparatorChar=/
' Path.DirectorySeparatorChar=\
' Path.PathSeparator=;
' Path.VolumeSeparatorChar=:

Console.WriteLine("Path.AltDirectorySeparatorChar={0}",
    Path.AltDirectorySeparatorChar);
Console.WriteLine("Path.DirectorySeparatorChar={0}",
    Path.DirectorySeparatorChar);
Console.WriteLine("Path.PathSeparator={0}",
    Path.PathSeparator);
Console.WriteLine("Path.VolumeSeparatorChar={0}",
    Path.VolumeSeparatorChar);

Console.Write("Path.GetInvalidPathChars()=");
foreach (char c in Path.GetInvalidPathChars())
    Console.Write(c);
Console.WriteLine();
// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Console::WriteLine( "Path::AltDirectorySeparatorChar={0}", (Path::AltDirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::DirectorySeparatorChar={0}", (Path::DirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::PathSeparator={0}", (Path::PathSeparator).ToString() );
Console::WriteLine( "Path::VolumeSeparatorChar={0}", (Path::VolumeSeparatorChar).ToString() );
Console::Write( "Path::InvalidPathChars=" );
for ( int i = 0; i < Path::InvalidPathChars->Length; i++ )
   Console::Write( Path::InvalidPathChars[ i ] );
Console::WriteLine();

// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

XNA Framework

在 3.0 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 1.0 中过时（编译器警告）

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.PathSeparator 字段

Path
.
.
::
.
PathSeparator 字段
Path 类

用于在环境变量中分隔路径字符串的平台特定的分隔符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly PathSeparator As Char
public static readonly char PathSeparator
public:
static initonly wchar_t PathSeparator
static val PathSeparator: char

在基于 Windows 的桌面平台上，默认情况下该字段的值是分号 (;)，但在其他平台上可能会有所不同。

下面的代码示例演示 PathSeparator 字段的用法。

Console.WriteLine("Path.AltDirectorySeparatorChar={0}", Path.AltDirectorySeparatorChar)
Console.WriteLine("Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar)
Console.WriteLine("Path.PathSeparator={0}", Path.PathSeparator)
Console.WriteLine("Path.VolumeSeparatorChar={0}", Path.VolumeSeparatorChar)

Console.Write("Path.GetInvalidPathChars()=")
Dim c As Char
For Each c In Path.GetInvalidPathChars()
    Console.Write(c)
Next c
Console.WriteLine()

' This code produces output similar to the following:
' Note that the InvalidPathCharacters contain characters
' outside of the printable character set.
'
' Path.AltDirectorySeparatorChar=/
' Path.DirectorySeparatorChar=\
' Path.PathSeparator=;
' Path.VolumeSeparatorChar=:

Console.WriteLine("Path.AltDirectorySeparatorChar={0}",
    Path.AltDirectorySeparatorChar);
Console.WriteLine("Path.DirectorySeparatorChar={0}",
    Path.DirectorySeparatorChar);
Console.WriteLine("Path.PathSeparator={0}",
    Path.PathSeparator);
Console.WriteLine("Path.VolumeSeparatorChar={0}",
    Path.VolumeSeparatorChar);

Console.Write("Path.GetInvalidPathChars()=");
foreach (char c in Path.GetInvalidPathChars())
    Console.Write(c);
Console.WriteLine();
// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Console::WriteLine( "Path::AltDirectorySeparatorChar={0}", (Path::AltDirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::DirectorySeparatorChar={0}", (Path::DirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::PathSeparator={0}", (Path::PathSeparator).ToString() );
Console::WriteLine( "Path::VolumeSeparatorChar={0}", (Path::VolumeSeparatorChar).ToString() );
Console::Write( "Path::InvalidPathChars=" );
for ( int i = 0; i < Path::InvalidPathChars->Length; i++ )
   Console::Write( Path::InvalidPathChars[ i ] );
Console::WriteLine();

// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.VolumeSeparatorChar 字段

Path
.
.
::
.
VolumeSeparatorChar 字段
Path 类

提供平台特定的卷分隔符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly VolumeSeparatorChar As Char
public static readonly char VolumeSeparatorChar
public:
static initonly wchar_t VolumeSeparatorChar
static val VolumeSeparatorChar: char

该字段的值在 Windows 和 Macintosh 上为冒号 (:)，在 Unix 操作系统上为斜杠 (/)。这对于分析像“c:\windows”或“MacVolume:System Folder”这样的路径最为有用。 该字段的值在 Windows 和 Macintosh 上为冒号 (:)，在 Unix 操作系统上为斜杠 (/)。这对于分析像“c:\windows”或“MacVolume:System Folder”这样的路径最为有用。

下面的代码示例演示 VolumeSeparatorChar 字段的用法。

Console.WriteLine("Path.AltDirectorySeparatorChar={0}", Path.AltDirectorySeparatorChar)
Console.WriteLine("Path.DirectorySeparatorChar={0}", Path.DirectorySeparatorChar)
Console.WriteLine("Path.PathSeparator={0}", Path.PathSeparator)
Console.WriteLine("Path.VolumeSeparatorChar={0}", Path.VolumeSeparatorChar)

Console.Write("Path.GetInvalidPathChars()=")
Dim c As Char
For Each c In Path.GetInvalidPathChars()
    Console.Write(c)
Next c
Console.WriteLine()

' This code produces output similar to the following:
' Note that the InvalidPathCharacters contain characters
' outside of the printable character set.
'
' Path.AltDirectorySeparatorChar=/
' Path.DirectorySeparatorChar=\
' Path.PathSeparator=;
' Path.VolumeSeparatorChar=:

Console.WriteLine("Path.AltDirectorySeparatorChar={0}",
    Path.AltDirectorySeparatorChar);
Console.WriteLine("Path.DirectorySeparatorChar={0}",
    Path.DirectorySeparatorChar);
Console.WriteLine("Path.PathSeparator={0}",
    Path.PathSeparator);
Console.WriteLine("Path.VolumeSeparatorChar={0}",
    Path.VolumeSeparatorChar);

Console.Write("Path.GetInvalidPathChars()=");
foreach (char c in Path.GetInvalidPathChars())
    Console.Write(c);
Console.WriteLine();
// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Console::WriteLine( "Path::AltDirectorySeparatorChar={0}", (Path::AltDirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::DirectorySeparatorChar={0}", (Path::DirectorySeparatorChar).ToString() );
Console::WriteLine( "Path::PathSeparator={0}", (Path::PathSeparator).ToString() );
Console::WriteLine( "Path::VolumeSeparatorChar={0}", (Path::VolumeSeparatorChar).ToString() );
Console::Write( "Path::InvalidPathChars=" );
for ( int i = 0; i < Path::InvalidPathChars->Length; i++ )
   Console::Write( Path::InvalidPathChars[ i ] );
Console::WriteLine();

// This code produces output similar to the following:
// Note that the InvalidPathCharacters contain characters
// outside of the printable character set.
//
// Path.AltDirectorySeparatorChar=/
// Path.DirectorySeparatorChar=\
// Path.PathSeparator=;
// Path.VolumeSeparatorChar=:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path 方法

Path 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Path 类

Path 类型公开以下成员。

名称 说明
页首

参考

Path 类
System.IO 命名空间


Path ..::.ChangeExtension 方法

Path
.
.
::
.
ChangeExtension 方法
Path 类

更改路径字符串的扩展名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function ChangeExtension ( _
    path As String, _
    extension As String _
) As String
public static string ChangeExtension(
    string path,
    string extension
)
public:
static String^ ChangeExtension(
    String^ path,
    String^ extension
)
static member ChangeExtension :
        path:string *
        extension:string -> string

参数

path
类型： System String
要修改的路径信息。该路径不能包含在 GetInvalidPathChars 中定义的任何字符。 要修改的路径信息。该路径不能包含在 GetInvalidPathChars 中定义的任何字符。
extension
类型： System String
新的扩展名（有或没有前导句点）。指定 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 以从 path 移除现有扩展名。 新的扩展名（有或没有前导句点）。指定 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 以从 path 移除现有扩展名。

返回值

类型： System String
已修改的路径信息。
在基于 Windows 的桌面平台上，如果 path 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则返回的路径信息是未修改的。如果 extension 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的字符串包含指定的路径，其扩展名已移除。如果 path 不具有扩展名，并且 extension 不是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的路径字符串包含 extension，它追加到 path 的结尾。 在基于 Windows 的桌面平台上，如果 path 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则返回的路径信息是未修改的。如果 extension 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的字符串包含指定的路径，其扩展名已移除。如果 path 不具有扩展名，并且 extension 不是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的路径字符串包含 extension，它追加到 path 的结尾。 在基于 Windows 的桌面平台上，如果 path 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则返回的路径信息是未修改的。如果 extension 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的字符串包含指定的路径，其扩展名已移除。如果 path 不具有扩展名，并且 extension 不是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的路径字符串包含 extension，它追加到 path 的结尾。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。

如果 path 和 extension 都不包含句点 (.)，则 ChangeExtension 添加句点。

extension 参数可以包含多个句点和任何有效的路径字符，并且可以是任何长度。如果 extension 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的字符串包含 path 的内容，而其最后一个句点以及句点后的所有字符均被移除。 extension 参数可以包含多个句点和任何有效的路径字符，并且可以是任何长度。如果 extension 是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的字符串包含 path 的内容，而其最后一个句点以及句点后的所有字符均被移除。

如果 extension 是空字符串，则返回的路径字符串包含 path 的内容，其最后一个句点后的所有字符均被移除。

如果 path 不具有扩展名并且 extension 不是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回的字符串包含 path，后跟 extension。

如果 extension 不是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 并且不包含前导句点，则添加句点。

如果 path 包含由多个句点分隔的多个扩展名，则返回的字符串包含 path 的内容，其最后一个句点以及句点之后的所有字符均由 extension 代替。例如，如果 path 是“\Dir1\examples\pathtests.csx.txt”并且 extension 是“cs”，则修改后的路径是“\Dir1\examples\pathtests.csx.cs”。 如果 path 包含由多个句点分隔的多个扩展名，则返回的字符串包含 path 的内容，其最后一个句点以及句点之后的所有字符均由 extension 代替。例如，如果 path 是“\Dir1\examples\pathtests.csx.txt”并且 extension 是“cs”，则修改后的路径是“\Dir1\examples\pathtests.csx.cs”。

不可能验证返回的结果是否在所有方案中都有效。例如，如果 path 为空，则追加 extension。 不可能验证返回的结果是否在所有方案中都有效。例如，如果 path 为空，则追加 extension。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 ChangeExtension 方法的用法。

Imports System
Imports System.IO

Public Class PathSnippets
    Public Sub ChangeExtension()
        Dim goodFileName As String = "C:\mydir\myfile.com.extension"
        Dim badFileName As String = "C:\mydir\"
        Dim result As String
        result = Path.ChangeExtension(goodFileName, ".old")
        Console.WriteLine("ChangeExtension({0}, '.old') returns '{1}'", goodFileName, result)
        result = Path.ChangeExtension(goodFileName, "")
        Console.WriteLine("ChangeExtension({0}, '') returns '{1}'", goodFileName, result)
        result = Path.ChangeExtension(badFileName, ".old")
        Console.WriteLine("ChangeExtension({0}, '.old') returns '{1}'", badFileName, result)

        ' This code produces output similar to the following:
        '
        ' ChangeExtension(C:\mydir\myfile.com.extension, '.old') returns 'C:\mydir\myfile.com.old'
        ' ChangeExtension(C:\mydir\myfile.com.extension, '') returns 'C:\mydir\myfile.com.'
        ' ChangeExtension(C:\mydir\, '.old') returns 'C:\mydir\.old'

using System;
using System.IO;

public class PathSnippets
{

    public void ChangeExtension()
    {
        string goodFileName = @"C:\mydir\myfile.com.extension";
        string badFileName = @"C:\mydir\";
        string result;

        result = Path.ChangeExtension(goodFileName, ".old");
        Console.WriteLine("ChangeExtension({0}, '.old') returns '{1}'",
            goodFileName, result);

        result = Path.ChangeExtension(goodFileName, "");
        Console.WriteLine("ChangeExtension({0}, '') returns '{1}'",
            goodFileName, result);

        result = Path.ChangeExtension(badFileName, ".old");
        Console.WriteLine("ChangeExtension({0}, '.old') returns '{1}'",
            badFileName, result);

        // This code produces output similar to the following:
        //
        // ChangeExtension(C:\mydir\myfile.com.extension, '.old') returns 'C:\mydir\myfile.com.old'
        // ChangeExtension(C:\mydir\myfile.com.extension, '') returns 'C:\mydir\myfile.com.'
        // ChangeExtension(C:\mydir\, '.old') returns 'C:\mydir\.old'

#using <system.dll>

using namespace System;
using namespace System::IO;
void ChangeExtension()
{
   String^ goodFileName = "C:\\mydir\\myfile.com.extension";
   String^ badFileName = "C:\\mydir\\";
   String^ result;
   result = Path::ChangeExtension( goodFileName,  ".old" );
   Console::WriteLine( "ChangeExtension({0}, '.old') returns '{1}'", goodFileName, result );
   result = Path::ChangeExtension( goodFileName,  "" );
   Console::WriteLine( "ChangeExtension({0}, '') returns '{1}'", goodFileName, result );
   result = Path::ChangeExtension( badFileName,  ".old" );
   Console::WriteLine( "ChangeExtension({0}, '.old') returns '{1}'", badFileName, result );

   // This code produces output similar to the following:
   //
   // ChangeExtension(C:\mydir\myfile.com.extension, '.old') returns 'C:\mydir\myfile.com.old'
   // ChangeExtension(C:\mydir\myfile.com.extension, '') returns 'C:\mydir\myfile.com.'
   // ChangeExtension(C:\mydir\, '.old') returns 'C:\mydir\.old'

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.Combine 方法

Path
.
.
::
.
Combine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Path 类

将多个字符串组合成一个路径。

名称 说明
页首

参考

Path 类
Path 成员
System.IO 命名空间


Path ..::.Combine 方法 ( array<String >[]()[])

Path
.
.
::
.
Combine 方法 (
array<
String
>
[]
()
[]
)
Path 类

将字符串数组组合成一个路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Combine ( _
    ParamArray paths As String() _
) As String
public static string Combine(
    params string[] paths
)
public:
static String^ Combine(
    ... array<String^>^ paths
)
static member Combine :
        paths:string[] -> string

参数

paths
类型：
array<
System String
>
[]
()
[]

由路径的各部分构成的数组。

返回值

类型： System String
组合后的路径。
异常 | 条件
ArgumentException | 数组中的一个字符串包含 GetInvalidPathChars 中定义的一个或多个无效字符。
ArgumentNullException | 数组中的一个字符串为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

paths 应当是要合并的路径组成部分的数组。如果后续路径之一是绝对路径，则合并操作重置为从该绝对路径开始，丢弃所有先前合并的路径。 paths 应当是要合并的路径组成部分的数组。如果后续路径之一是绝对路径，则合并操作重置为从该绝对路径开始，丢弃所有先前合并的路径。

组合的路径中省略了零长度字符串。

如果参数有空格，则不会被分析。

不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。

下面的示例将一组字符串组合成一个路径。

Dim paths As String() = {"d:\archives", "2001", "media", "images"}
Dim fullPath As String = Path.Combine(paths)
Console.WriteLine(fullPath)

string[] paths = {@"d:\archives", "2001", "media", "images"};
string fullPath = Path.Combine(paths);
Console.WriteLine(fullPath);

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
Combine 重载
System.IO 命名空间


Path ..::.Combine 方法 (String, String)

Path
.
.
::
.
Combine 方法 (String, String)
Path 类

将两个字符串组合成一个路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Combine ( _
    path1 As String, _
    path2 As String _
) As String
public static string Combine(
    string path1,
    string path2
)
public:
static String^ Combine(
    String^ path1,
    String^ path2
)
static member Combine :
        path1:string *
        path2:string -> string

参数

path1
类型： System String
要组合的第一个路径。
path2
类型： System String
要组合的第二个路径。

返回值

类型： System String
组合后的路径。如果指定的路径之一是零长度字符串，则该方法返回其他路径。如果 path2 包含绝对路径，则该方法返回 path2。 组合后的路径。如果指定的路径之一是零长度字符串，则该方法返回其他路径。如果 path2 包含绝对路径，则该方法返回 path2。 组合后的路径。如果指定的路径之一是零长度字符串，则该方法返回其他路径。如果 path2 包含绝对路径，则该方法返回 path2。
异常 | 条件
ArgumentException | path1 或 path2 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。
ArgumentNullException | path1 或 path2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 path1 不是一个驱动器引用（即不是“C:”或“D:”）而且不是以 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 中定义的有效分隔符结束，则在串联前将 DirectorySeparatorChar 追加到 path1 中。

如果 path2 不包括根（例如，如果 path2 没有以分隔符或驱动器规格起始），则结果是两个路径的串联，具有介于其间的分隔符。如果 path2 包括根，则返回 path2。 如果 path2 不包括根（例如，如果 path2 没有以分隔符或驱动器规格起始），则结果是两个路径的串联，具有介于其间的分隔符。如果 path2 包括根，则返回 path2。

如果参数有空格，则不会被分析。因此，如果 path2 包括空白（例如“c:\\”），则 Combine 方法会将 path2 追加到 path1 而不是仅返回 path2。 如果参数有空格，则不会被分析。因此，如果 path2 包括空白（例如“c:\\”），则 Combine 方法会将 path2 追加到 path1 而不是仅返回 path2。

不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示如何在基于 Windows 的桌面平台上使用 Combine 方法。

Imports System
Imports System.IO

Public Class ChangeExtensionTest

    Public Shared Sub Main()
        Dim path1 As String = "c:\temp"
        Dim path2 As String = "subdir\file.txt"
        Dim path3 As String = "c:\temp.txt"
        Dim path4 As String = "c:^*&)(_=@#'\\^&#2.*(.txt"
        Dim path5 As String = ""
        Dim path6 As String = Nothing

        CombinePaths(path1, path2)
        CombinePaths(path1, path3)
        CombinePaths(path3, path2)
        CombinePaths(path4, path2)
        CombinePaths(path5, path2)
        CombinePaths(path6, path2)
    End Sub 'Main

    Private Shared Sub CombinePaths(p1 As String, p2 As String)

        Try
            Dim combination As String = Path.Combine(p1, p2)

            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment.NewLine, combination)
        Catch e As Exception
            If p1 = Nothing Then
                p1 = "Nothing"
            End If
            If p2 = Nothing Then
                p2 = "Nothing"
            End If
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment.NewLine, e.Message)
        End Try

        Console.WriteLine()
    End Sub 'CombinePaths
End Class 'ChangeExtensionTest
' This code produces output similar to the following:
'
' When you combine 'c:\temp' and 'subdir\file.txt', the result is:
' 'c:\temp\subdir\file.txt'
'
' When you combine 'c:\temp' and 'c:\temp.txt', the result is:
' 'c:\temp.txt'
'
' When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is:
' 'c:\temp.txt\subdir\file.txt'
'
' When you combine 'c:^*&)(_=@#'\^&#2.*(.txt' and 'subdir\file.txt', the result is:
' 'c:^*&)(_=@#'\^&#2.*(.txt\subdir\file.txt'
'
' When you combine '' and 'subdir\file.txt', the result is:
' 'subdir\file.txt'
'
' You cannot combine '' and 'subdir\file.txt' because:
' Value cannot be null.
' Parameter name: path1

using System;
using System.IO;

public class ChangeExtensionTest {

    public static void Main() {

        string path1 = "c:\\temp";
        string path2 = "subdir\\file.txt";
        string path3 = "c:\\temp.txt";
        string path4 = "c:^*&)(_=@#'\\^&#2.*(.txt";
        string path5 = "";
        string path6 = null;

        CombinePaths(path1, path2);
        CombinePaths(path1, path3);
        CombinePaths(path3, path2);
        CombinePaths(path4, path2);
        CombinePaths(path5, path2);
        CombinePaths(path6, path2);
    }

    private static void CombinePaths(string p1, string p2) {

        try {
            string combination = Path.Combine(p1, p2);

            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'",
                        p1, p2, Environment.NewLine, combination);
        } catch (Exception e) {
            if (p1 == null)
                p1 = "null";
            if (p2 == null)
                p2 = "null";
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}",
                        p1, p2, Environment.NewLine, e.Message);
        }

        Console.WriteLine();
    }
}
// This code produces output similar to the following:
//
// When you combine 'c:\temp' and 'subdir\file.txt', the result is:
// 'c:\temp\subdir\file.txt'
//
// When you combine 'c:\temp' and 'c:\temp.txt', the result is:
// 'c:\temp.txt'
//
// When you combine 'c:\temp.txt' and 'subdir\file.txt', the result is:
// 'c:\temp.txt\subdir\file.txt'
//
// When you combine 'c:^*&)(_=@#'\^&#2.*(.txt' and 'subdir\file.txt', the result is:
// 'c:^*&)(_=@#'\^&#2.*(.txt\subdir\file.txt'
//
// When you combine '' and 'subdir\file.txt', the result is:
// 'subdir\file.txt'
//
// You cannot combine '' and 'subdir\file.txt' because:
// Value cannot be null.
// Parameter name: path1

using namespace System;
using namespace System::IO;
void CombinePaths( String^ p1, String^ p2 )
{
   try
   {
      String^ combination = Path::Combine( p1, p2 );
      Console::WriteLine( "When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment::NewLine, combination );
   }
   catch ( Exception^ e )
   {
      if (p1 == nullptr)
         p1 = "nullptr";
      if (p2 == nullptr)
         p2 = "nullptr";
      Console::WriteLine( "You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment::NewLine, e->Message );
   }

   Console::WriteLine();
}

int main()
{
   String^ path1 = "c:\\temp";
   String^ path2 = "subdir\\file.txt";
   String^ path3 = "c:\\temp.txt";
   String^ path4 = "c:^*&)(_=@#'\\^&#2.*(.txt";
   String^ path5 = "";
   String^ path6 = nullptr;
   CombinePaths( path1, path2 );
   CombinePaths( path1, path3 );
   CombinePaths( path3, path2 );
   CombinePaths( path4, path2 );
   CombinePaths( path5, path2 );
   CombinePaths( path6, path2 );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
Combine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.Combine 方法 (String, String, String)

Path
.
.
::
.
Combine 方法 (String, String, String)
Path 类

将三个字符串组合成一个路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Combine ( _
    path1 As String, _
    path2 As String, _
    path3 As String _
) As String
public static string Combine(
    string path1,
    string path2,
    string path3
)
public:
static String^ Combine(
    String^ path1,
    String^ path2,
    String^ path3
)
static member Combine :
        path1:string *
        path2:string *
        path3:string -> string

参数

path1
类型： System String
要组合的第一个路径。
path2
类型： System String
要组合的第二个路径。
path3
类型： System String
要组合的第三个路径。

返回值

类型： System String
组合后的路径。
异常 | 条件
ArgumentException | path1、path2 或 path3 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。
ArgumentNullException | path1、path2 或 path3 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

path1 应该是绝对路径（例如“d:\archives”或“\\archives\public”）。如果 path2 或 path3 也是绝对路径，则合并操作将丢弃所有先前合并的路径，并将重置为该绝对路径。 path1 应该是绝对路径（例如“d:\archives”或“\\archives\public”）。如果 path2 或 path3 也是绝对路径，则合并操作将丢弃所有先前合并的路径，并将重置为该绝对路径。

组合的路径中省略了零长度字符串。

如果 path1 不是一个驱动器引用（即不是“C:”或“D:”）而且不是以 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 中定义的有效分隔符结束，则在串联前将 DirectorySeparatorChar 追加到 path1 中。

如果 path2 不包括根（例如，如果 path2 没有以分隔符或驱动器规格起始），则结果是两个路径的串联，具有介于其间的分隔符。如果 path2 包括根，则返回 path2。 如果 path2 不包括根（例如，如果 path2 没有以分隔符或驱动器规格起始），则结果是两个路径的串联，具有介于其间的分隔符。如果 path2 包括根，则返回 path2。

如果参数有空格，则不会被分析。因此，如果 path2 包括空白（例如“c:\\”），则 Combine 方法会将 path2 追加到 path1 而不是仅返回 path2。 如果参数有空格，则不会被分析。因此，如果 path2 包括空白（例如“c:\\”），则 Combine 方法会将 path2 追加到 path1 而不是仅返回 path2。

不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。

下面的示例组合三个路径。

Dim p1 As String = "d:\archives\"
Dim p2 As String = "media"
Dim p3 As String = "images"
Dim combined As String = Path.Combine(p1, p2, p3)
Console.WriteLine(combined)

string p1 = @"d:\archives\";
string p2 = "media";
string p3 = "images";
string combined = Path.Combine(p1, p2, p3);
Console.WriteLine(combined);

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
Combine 重载
System.IO 命名空间


Path ..::.Combine 方法 (String, String, String, String)

Path
.
.
::
.
Combine 方法 (String, String, String, String)
Path 类

将四个字符串组合成一个路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function Combine ( _
    path1 As String, _
    path2 As String, _
    path3 As String, _
    path4 As String _
) As String
public static string Combine(
    string path1,
    string path2,
    string path3,
    string path4
)
public:
static String^ Combine(
    String^ path1,
    String^ path2,
    String^ path3,
    String^ path4
)
static member Combine :
        path1:string *
        path2:string *
        path3:string *
        path4:string -> string

参数

path1
类型： System String
要组合的第一个路径。
path2
类型： System String
要组合的第二个路径。
path3
类型： System String
要组合的第三个路径。
path4
类型： System String
要组合的第四个路径。

返回值

类型： System String
组合后的路径。
异常 | 条件
ArgumentException | path1、path2、path3 或 path4 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。
ArgumentNullException | path1、path2、path3 或 path4 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

path1 应该是绝对路径（例如“d:\archives”或“\\archives\public”）。如果某个后续路径也是一个绝对路径，合并操作将丢弃所有先前合并的路径，并将重置为该绝对路径。

组合的路径中省略了零长度字符串。

如果 path1 不是一个驱动器引用（即不是“C:”或“D:”）而且不是以 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 中定义的有效分隔符结束，则在串联前将 DirectorySeparatorChar 追加到 path1 中。

如果 path2 不包括根（例如，如果 path2 没有以分隔符或驱动器规格起始），则结果是两个路径的串联，具有介于其间的分隔符。如果 path2 包括根，则返回 path2。 如果 path2 不包括根（例如，如果 path2 没有以分隔符或驱动器规格起始），则结果是两个路径的串联，具有介于其间的分隔符。如果 path2 包括根，则返回 path2。

如果参数有空格，则不会被分析。因此，如果 path2 包括空白（例如“c:\\”），则 Combine 方法会将 path2 追加到 path1 而不是仅返回 path2。 如果参数有空格，则不会被分析。因此，如果 path2 包括空白（例如“c:\\”），则 Combine 方法会将 path2 追加到 path1 而不是仅返回 path2。

不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。 不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的，因为您可以将这些字符用于搜索通配符。例如，尽管 Path.Combine("c:\\", "*.txt") 可能是无效的（如果您要根据它创建一个文件），但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。

下面的示例组合四个路径。

Dim path1 As String = "d:\archives\"
Dim path2 As String = "2001"
Dim path3 As String = "media"
Dim path4 As String = "imaged"
Dim combinedPath As String = Path.Combine(path1, path2, path3, path4)
Console.WriteLine(combined)

string path1 = @"d:\archives\";
string path2 = "2001";
string path3 = "media";
string path4 = "images";
string combinedPath = Path.Combine(path1, path2, path3, path4);
Console.WriteLine(combinedPath);

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
Combine 重载
System.IO 命名空间


Path ..::.GetDirectoryName 方法

Path
.
.
::
.
GetDirectoryName 方法
Path 类

返回指定路径字符串的目录信息。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetDirectoryName ( _
    path As String _
) As String
public static string GetDirectoryName(
    string path
)
public:
static String^ GetDirectoryName(
    String^ path
)
static member GetDirectoryName :
        path:string -> string

参数

path
类型： System String
文件或目录的路径。

返回值

类型： System String
path 的目录信息，如果 path 表示根目录或为 null，则该目录信息为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果 path 没有包含目录信息，则返回 String..::.Empty。 path 的目录信息，如果 path 表示根目录或为 null，则该目录信息为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果 path 没有包含目录信息，则返回 String..::.Empty。
异常 | 条件
ArgumentException | path 参数包含无效字符、为空、或仅包含空白。
PathTooLongException | path 参数的长度超过系统定义的最大长度。

大多数情况下，此方法返回的字符串由路径中最后的 DirectorySeparatorChar 或 AltDirectorySeparatorChar 之前（不包括该字符）的所有字符组成。如果路径由根目录组成，如“c:\”，则返回 null。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar，因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如，将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。 大多数情况下，此方法返回的字符串由路径中最后的 DirectorySeparatorChar 或 AltDirectorySeparatorChar 之前（不包括该字符）的所有字符组成。如果路径由根目录组成，如“c:\”，则返回 null。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar，因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如，将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。 大多数情况下，此方法返回的字符串由路径中最后的 DirectorySeparatorChar 或 AltDirectorySeparatorChar 之前（不包括该字符）的所有字符组成。如果路径由根目录组成，如“c:\”，则返回 null。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar，因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如，将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。 大多数情况下，此方法返回的字符串由路径中最后的 DirectorySeparatorChar 或 AltDirectorySeparatorChar 之前（不包括该字符）的所有字符组成。如果路径由根目录组成，如“c:\”，则返回 null。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar，因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如，将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。 大多数情况下，此方法返回的字符串由路径中最后的 DirectorySeparatorChar 或 AltDirectorySeparatorChar 之前（不包括该字符）的所有字符组成。如果路径由根目录组成，如“c:\”，则返回 null。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar，因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如，将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。 大多数情况下，此方法返回的字符串由路径中最后的 DirectorySeparatorChar 或 AltDirectorySeparatorChar 之前（不包括该字符）的所有字符组成。如果路径由根目录组成，如“c:\”，则返回 null。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorChar 或 AltDirectorySeparatorChar，因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如，将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示如何在基于 Windows 的桌面平台上使用 GetDirectoryName 方法。

Dim filepath As String = "C:\MyDir\MySubDir\myfile.ext"
Dim directoryName As String
Dim i As Integer = 0

While filepath <> Nothing
    directoryName = Path.GetDirectoryName(filepath)
    Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", _
        filepath, directoryName)
    filepath = directoryName
    If i = 1
       filepath = directoryName + "\"  ' this will preserve the previous path
    End If
    i = i + 1
End While

'This code produces the following output:
'
' GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
' GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
' GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
' GetDirectoryName('C:\MyDir') returns 'C:\'
' GetDirectoryName('C:\') returns ''

string filePath = @"C:\MyDir\MySubDir\myfile.ext";
string directoryName;
int i = 0;

while (filePath != null)
{
    directoryName = Path.GetDirectoryName(filePath);
    Console.WriteLine("GetDirectoryName('{0}') returns '{1}'",
        filePath, directoryName);
    filePath = directoryName;
    if (i == 1)
    {
        filePath = directoryName + @"\";  // this will preserve the previous path
    }
    i++;
}
/*
This code produces the following output:

GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir') returns 'C:\'
GetDirectoryName('C:\') returns ''
*/

String^ filePath = "C:\\MyDir\\MySubDir\\myfile.ext";
String^ directoryName;
int i = 0;

while (filePath != nullptr)
{
    directoryName = Path::GetDirectoryName(filePath);
    Console::WriteLine("GetDirectoryName('{0}') returns '{1}'",
        filePath, directoryName);
    filePath = directoryName;
    if (i == 1)
    {
        filePath = directoryName + "\\";  // this will preserve the previous path
    }
    i++;
}
/*
This code produces the following output:

GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir') returns 'C:\'
GetDirectoryName('C:\') returns ''
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetExtension 方法

Path
.
.
::
.
GetExtension 方法
Path 类

返回指定的路径字符串的扩展名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetExtension ( _
    path As String _
) As String
public static string GetExtension(
    string path
)
public:
static String^ GetExtension(
    String^ path
)
static member GetExtension :
        path:string -> string

参数

path
类型： System String
从其获取扩展名的路径字符串。

返回值

类型： System String
指定的路径的扩展名（包含句点“.”）、nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或 String..::.Empty。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则 GetExtension 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果 path 不具有扩展名信息，则 GetExtension 返回 String..::.Empty。 指定的路径的扩展名（包含句点“.”）、nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或 String..::.Empty。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则 GetExtension 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果 path 不具有扩展名信息，则 GetExtension 返回 String..::.Empty。 指定的路径的扩展名（包含句点“.”）、nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或 String..::.Empty。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则 GetExtension 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果 path 不具有扩展名信息，则 GetExtension 返回 String..::.Empty。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。

通过搜索 path 来查找句点 (.)、以路径中的最后一个字符为起始并继续直到路径的开始，获取 path 的扩展名。如果句点在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 字符之前找到，则返回的字符串包含该句点以及该句点之后的字符；否则，返回 Empty。 通过搜索 path 来查找句点 (.)、以路径中的最后一个字符为起始并继续直到路径的开始，获取 path 的扩展名。如果句点在 DirectorySeparatorChar 或 AltDirectorySeparatorChar 字符之前找到，则返回的字符串包含该句点以及该句点之后的字符；否则，返回 Empty。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示如何在基于 Windows 的桌面平台上使用 GetExtension 方法。

Dim fileName As String = "C:\mydir.old\myfile.ext"
Dim pathname As String = "C:\mydir.old\"
Dim extension As String

extension = Path.GetExtension(fileName)
Console.WriteLine("GetExtension('{0}') returns '{1}'", fileName, extension)

extension = Path.GetExtension(pathname)
Console.WriteLine("GetExtension('{0}') returns '{1}'", pathname, extension)

' This code produces output similar to the following:
'
' GetExtension('C:\mydir.old\myfile.ext') returns '.ext'
' GetExtension('C:\mydir.old\') returns ''

string fileName = @"C:\mydir.old\myfile.ext";
string path = @"C:\mydir.old\";
string extension;

extension = Path.GetExtension(fileName);
Console.WriteLine("GetExtension('{0}') returns '{1}'",
    fileName, extension);

extension = Path.GetExtension(path);
Console.WriteLine("GetExtension('{0}') returns '{1}'",
    path, extension);

// This code produces output similar to the following:
//
// GetExtension('C:\mydir.old\myfile.ext') returns '.ext'
// GetExtension('C:\mydir.old\') returns ''

String^ fileName = "C:\\mydir.old\\myfile.ext";
String^ path = "C:\\mydir.old\\";
String^ extension;
extension = Path::GetExtension( fileName );
Console::WriteLine( "GetExtension('{0}') returns '{1}'", fileName, extension );
extension = Path::GetExtension( path );
Console::WriteLine( "GetExtension('{0}') returns '{1}'", path, extension );

// This code produces output similar to the following:
//
// GetExtension('C:\mydir.old\myfile.ext') returns '.ext'
// GetExtension('C:\mydir.old\') returns ''

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetFileName 方法

Path
.
.
::
.
GetFileName 方法
Path 类

返回指定路径字符串的文件名和扩展名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFileName ( _
    path As String _
) As String
public static string GetFileName(
    string path
)
public:
static String^ GetFileName(
    String^ path
)
static member GetFileName :
        path:string -> string

参数

path
类型： System String
从其获取文件名和扩展名的路径字符串。

返回值

类型： System String
path 中最后的目录字符后的字符。如果 path 的最后一个字符是目录或卷分隔符，则此方法返回 String..::.Empty。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则此方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 path 中最后的目录字符后的字符。如果 path 的最后一个字符是目录或卷分隔符，则此方法返回 String..::.Empty。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则此方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 path 中最后的目录字符后的字符。如果 path 的最后一个字符是目录或卷分隔符，则此方法返回 String..::.Empty。如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则此方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。

如果文件路径为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

用于确定文件名起始的分隔符是 DirectorySeparatorChar 和 AltDirectorySeparatorChar。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 GetFileName 方法在基于 Windows 的桌面平台上的行为。

Dim fileName As String = "C:\mydir\myfile.ext"
Dim pathname As String = "C:\mydir\"
Dim result As String

result = Path.GetFileName(fileName)
Console.WriteLine("GetFileName('{0}') returns '{1}'", fileName, result)

result = Path.GetFileName(pathname)
Console.WriteLine("GetFileName('{0}') returns '{1}'", pathname, result)

' This code produces output similar to the following:
'
' GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext'
' GetFileName('C:\mydir\') returns ''

string fileName = @"C:\mydir\myfile.ext";
string path = @"C:\mydir\";
string result;

result = Path.GetFileName(fileName);
Console.WriteLine("GetFileName('{0}') returns '{1}'",
    fileName, result);

result = Path.GetFileName(path);
Console.WriteLine("GetFileName('{0}') returns '{1}'",
    path, result);

// This code produces output similar to the following:
//
// GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext'
// GetFileName('C:\mydir\') returns ''

String^ fileName = "C:\\mydir\\myfile.ext";
String^ path = "C:\\mydir\\";
String^ result;
result = Path::GetFileName( fileName );
Console::WriteLine( "GetFileName('{0}') returns '{1}'", fileName, result );
result = Path::GetFileName( path );
Console::WriteLine( "GetFileName('{0}') returns '{1}'", path, result );

// This code produces output similar to the following:
//
// GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext'
// GetFileName('C:\mydir\') returns ''

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetFileNameWithoutExtension 方法

Path
.
.
::
.
GetFileNameWithoutExtension 方法
Path 类

返回不具有扩展名的指定路径字符串的文件名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFileNameWithoutExtension ( _
    path As String _
) As String
public static string GetFileNameWithoutExtension(
    string path
)
public:
static String^ GetFileNameWithoutExtension(
    String^ path
)
static member GetFileNameWithoutExtension :
        path:string -> string

参数

path
类型： System String
文件的路径。

返回值

类型： System String
由 GetFileName 返回的字符串，但不包括最后的句点 (.)和该句点后的所有字符。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。

此方法不验证路径或文件名是否存在。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 GetFileNameWithoutExtension 方法的用法。

Dim fileName As String = "C:\mydir\myfile.ext"
Dim pathname As String = "C:\mydir\"
Dim result As String

result = Path.GetFileNameWithoutExtension(fileName)
Console.WriteLine("GetFileNameWithoutExtension('{0}') returns '{1}'", fileName, result)

result = Path.GetFileName(pathname)
Console.WriteLine("GetFileName('{0}') returns '{1}'", pathname, result)

' This code produces output similar to the following:
'
' GetFileNameWithoutExtension('C:\mydir\myfile.ext') returns 'myfile'
' GetFileName('C:\mydir\') returns ''

string fileName = @"C:\mydir\myfile.ext";
string path = @"C:\mydir\";
string result;

result = Path.GetFileNameWithoutExtension(fileName);
Console.WriteLine("GetFileNameWithoutExtension('{0}') returns '{1}'",
    fileName, result);

result = Path.GetFileName(path);
Console.WriteLine("GetFileName('{0}') returns '{1}'",
    path, result);

// This code produces output similar to the following:
//
// GetFileNameWithoutExtension('C:\mydir\myfile.ext') returns 'myfile'
// GetFileName('C:\mydir\') returns ''

String^ fileName = "C:\\mydir\\myfile.ext";
String^ path = "C:\\mydir\\";
String^ result;
result = Path::GetFileNameWithoutExtension( fileName );
Console::WriteLine( "GetFileNameWithoutExtension('{0}') returns '{1}'", fileName, result );
result = Path::GetFileName( path );
Console::WriteLine( "GetFileName('{0}') returns '{1}'", path, result );

// This code produces output similar to the following:
//
// GetFileNameWithoutExtension('C:\mydir\myfile.ext') returns 'myfile'
// GetFileName('C:\mydir\') returns ''

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetFullPath 方法

Path
.
.
::
.
GetFullPath 方法
Path 类

返回指定路径字符串的绝对路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetFullPath ( _
    path As String _
) As String
public static string GetFullPath(
    string path
)
public:
static String^ GetFullPath(
    String^ path
)
static member GetFullPath :
        path:string -> string

参数

path
类型： System String
要为其获取绝对路径信息的文件或目录。

返回值

类型： System String
path 的完全限定的位置，例如“C:\MyFile.txt”。
异常 | 条件
ArgumentException | path 是一个零长度字符串，仅包含空白或者包含 GetInvalidPathChars 中已定义一个或多个无效字符。 - 或 - 系统未能检索绝对路径。
SecurityException | 调用方没有所需的权限。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | path 包含一个冒号（“:”），此冒号不是卷标识符（如，“c:\”）的一部分。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

绝对路径包括在系统上定位文件或目录所需的所有信息。

path 指定的文件或目录不需要存在。例如，如果 c:\temp\newdir 是当前目录，则对文件名（例如 test.txt）调用 GetFullPath 将返回 c:\temp\newdir\test.txt。该文件不需要存在。 path 指定的文件或目录不需要存在。例如，如果 c:\temp\newdir 是当前目录，则对文件名（例如 test.txt）调用 GetFullPath 将返回 c:\temp\newdir\test.txt。该文件不需要存在。 path 指定的文件或目录不需要存在。例如，如果 c:\temp\newdir 是当前目录，则对文件名（例如 test.txt）调用 GetFullPath 将返回 c:\temp\newdir\test.txt。该文件不需要存在。

但是，如果 path 不存在，则调用方必须具有获取 path 的路径信息的权限。请注意，与 Path 类的大多数成员不同，此方法访问文件系统。 但是，如果 path 不存在，则调用方必须具有获取 path 的路径信息的权限。请注意，与 Path 类的大多数成员不同，此方法访问文件系统。

此方法使用当前目录和当前卷信息完全限定 path。如果只在 path 中指定文件名，则 GetFullPath 返回当前目录的完全限定路径。 此方法使用当前目录和当前卷信息完全限定 path。如果只在 path 中指定文件名，则 GetFullPath 返回当前目录的完全限定路径。

如果您以短文件名传递，则它将扩展为长文件名。

如果路径没有包含有效字符，则该路径无效，除非它包含后跟任意数目空格的一个或多个“.”字符，然后将它作为“.”或“..”进行分析。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示基于 Windows 的桌面平台上的 GetFullPath 方法。

Dim fileName As string = "myfile.ext"
Dim path1 As string = "mydir"
Dim path2 As string = "\mydir"
Dim fullPath As string

fullPath = Path.GetFullPath(path1)
Console.WriteLine("GetFullPath('{0}') returns '{1}'", _
    path1, fullPath)

fullPath = Path.GetFullPath(fileName)
Console.WriteLine("GetFullPath('{0}') returns '{1}'", _
    fileName, fullPath)

fullPath = Path.GetFullPath(path2)
Console.WriteLine("GetFullPath('{0}') returns '{1}'", _
    path2, fullPath)

' Output is based on your current directory, except
' in the last case, where it is based on the root drive
' GetFullPath('mydir') returns 'C:\temp\Demo\mydir'
' GetFullPath('myfile.ext') returns 'C:\temp\Demo\myfile.ext'
' GetFullPath('\mydir') returns 'C:\mydir'

string fileName = "myfile.ext";
string path1 = @"mydir";
string path2 = @"\mydir";
string fullPath;

fullPath = Path.GetFullPath(path1);
Console.WriteLine("GetFullPath('{0}') returns '{1}'",
    path1, fullPath);

fullPath = Path.GetFullPath(fileName);
Console.WriteLine("GetFullPath('{0}') returns '{1}'",
    fileName, fullPath);

fullPath = Path.GetFullPath(path2);
Console.WriteLine("GetFullPath('{0}') returns '{1}'",
    path2, fullPath);

// Output is based on your current directory, except
// in the last case, where it is based on the root drive
// GetFullPath('mydir') returns 'C:\temp\Demo\mydir'
// GetFullPath('myfile.ext') returns 'C:\temp\Demo\myfile.ext'
// GetFullPath('\mydir') returns 'C:\mydir'

String^ fileName = "myfile.ext";
String^ path = "\\mydir\\";
String^ fullPath;
fullPath = Path::GetFullPath( path );
Console::WriteLine( "GetFullPath('{0}') returns '{1}'", path, fullPath );
fullPath = Path::GetFullPath( fileName );
Console::WriteLine( "GetFullPath('{0}') returns '{1}'", fileName, fullPath );

// Output is based on your current directory, except
// in the last case, where it is based on the root drive
// GetFullPath('mydir') returns 'C:\temp\Demo\mydir'
// GetFullPath('myfile.ext') returns 'C:\temp\Demo\myfile.ext'
// GetFullPath('\mydir') returns 'C:\mydir'
  • FileIOPermission

    用于访问路径。关联的枚举：FileIOPermissionAccess..::.PathDiscovery 用于访问路径。关联的枚举：FileIOPermissionAccess..::.PathDiscovery

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetInvalidFileNameChars 方法

Path
.
.
::
.
GetInvalidFileNameChars 方法
Path 类

获取包含不允许在文件名中使用的字符的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetInvalidFileNameChars As Char()
public static char[] GetInvalidFileNameChars()
public:
static array<wchar_t>^ GetInvalidFileNameChars()
static member GetInvalidFileNameChars : unit -> char[]

返回值

类型：
array<
System Char
>
[]
()
[]

包含不允许在文件名中使用的字符的数组。

不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。 不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。 不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。

下面的代码示例演示用于验证路径的 GetInvalidFileNameChars 方法和 GetInvalidPathChars 方法。

Imports System
Imports System.IO

Namespace PathExample
    Public Class GetCharExample
        Public Shared Sub Main()
            ' Get a list of invalid path characters.
            Dim invalidPathChars() As Char = Path.GetInvalidPathChars()

            Console.WriteLine("The following characters are invalid in a path:")
            ShowChars(invalidPathChars)
            Console.WriteLine()

            ' Get a list of invalid file characters.
            Dim invalidFileChars() As Char = Path.GetInvalidFileNameChars()

            Console.WriteLine("The following characters are invalid in a filename:")
            ShowChars(invalidFileChars)
        End Sub

        Public Shared Sub ShowChars(charArray As Char())
            Console.WriteLine("Char" + vbTab + "Hex Value")
            ' Display each invalid character to the console.
            For Each someChar As Char In charArray
                If Char.IsWhiteSpace(someChar)
                    Console.WriteLine("," + vbTab + "{0:X4}", _
                        Microsoft.VisualBasic.Asc(someChar))
                Else
                    Console.WriteLine("{0:c}," + vbTab +"{1:X4}", someChar, _
                        Microsoft.VisualBasic.Asc(someChar))
                End If
            Next someChar
        End Sub
    End Class
End Namespace
' Note: Some characters may not be displayable on the console.
' The output will look something like:
'
' The following characters are invalid in a path:
' Char    Hex Value
' ",      0022
' <,      003C
' >,      003E
' |,      007C
' ...
'
' The following characters are invalid in a filename:
' Char    Hex Value
' ",      0022
' <,      003C
' >,      003E
' |,      007C
' ...

using System;
using System.IO;

namespace PathExample
{
    class GetCharExample
    {
        public static void Main()
        {
            // Get a list of invalid path characters.
            char[] invalidPathChars = Path.GetInvalidPathChars();

            Console.WriteLine("The following characters are invalid in a path:");
            ShowChars(invalidPathChars);
            Console.WriteLine();

            // Get a list of invalid file characters.
            char[] invalidFileChars = Path.GetInvalidFileNameChars();

            Console.WriteLine("The following characters are invalid in a filename:");
            ShowChars(invalidFileChars);
        }

        public static void ShowChars(char[] charArray)
        {
            Console.WriteLine("Char\tHex Value");
            // Display each invalid character to the console.
            foreach (char someChar in charArray)
            {
                if (Char.IsWhiteSpace(someChar))
                {
                    Console.WriteLine(",\t{0:X4}", (int)someChar);
                }
                else
                {
                    Console.WriteLine("{0:c},\t{1:X4}", someChar, (int)someChar);
                }
            }
        }
    }
}
// Note: Some characters may not be displayable on the console.
// The output will look something like:
//
// The following characters are invalid in a path:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...
//
// The following characters are invalid in a filename:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...

using namespace System;
using namespace System::IO;

namespace PathExample
{
    public ref class GetCharExample
    {
    public:
        static void Main()
        {
            // Get a list of invalid path characters.
            array<Char>^ invalidPathChars = Path::GetInvalidPathChars();

            Console::WriteLine("The following characters are invalid in a path:");
            ShowChars(invalidPathChars);
            Console::WriteLine();

            // Get a list of invalid file characters.
            array<Char>^ invalidFileChars = Path::GetInvalidFileNameChars();

            Console::WriteLine("The following characters are invalid in a filename:");
            ShowChars(invalidFileChars);
        }

        static void ShowChars(array<Char>^ charArray)
        {
            Console::WriteLine("Char\tHex Value");
            // Display each invalid character to the console.
            for each (Char someChar in charArray)
            {
                if (Char::IsWhiteSpace(someChar))
                {
                    Console::WriteLine(",\t{0:X4}", (Int16)someChar);
                }
                else
                {
                    Console::WriteLine("{0:c},\t{1:X4}", someChar, (Int16)someChar);
                }
            }
        }
    };
};

int main()
{
    PathExample::GetCharExample::Main();
}
// Note: Some characters may not be displayable on the console.
// The output will look something like:
//
// The following characters are invalid in a path:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...
//
// The following characters are invalid in a filename:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
System.IO 命名空间


Path ..::.GetInvalidPathChars 方法

Path
.
.
::
.
GetInvalidPathChars 方法
Path 类

获取包含不允许在路径名中使用的字符的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetInvalidPathChars As Char()
public static char[] GetInvalidPathChars()
public:
static array<wchar_t>^ GetInvalidPathChars()
static member GetInvalidPathChars : unit -> char[]

返回值

类型：
array<
System Char
>
[]
()
[]

包含不允许在路径名中使用的字符的数组。

不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。 不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。 不保证通过此方法返回的数组包含文件和目录名中无效的完整字符集。无效字符的完整字符集可能因文件系统而异。例如，在基于 Windows 的桌面平台上，无效路径字符可能包括从 1 到 31 的 ASCII/Unicode 字符，以及引号 (")、小于号 (<)、大于号 (>)、管道符号 (|)、退格 (\b)、null (\0) 和制表符 (\t)。

下面的代码示例演示用于验证路径的 GetInvalidFileNameChars 方法和 GetInvalidPathChars 方法。

Imports System
Imports System.IO

Namespace PathExample
    Public Class GetCharExample
        Public Shared Sub Main()
            ' Get a list of invalid path characters.
            Dim invalidPathChars() As Char = Path.GetInvalidPathChars()

            Console.WriteLine("The following characters are invalid in a path:")
            ShowChars(invalidPathChars)
            Console.WriteLine()

            ' Get a list of invalid file characters.
            Dim invalidFileChars() As Char = Path.GetInvalidFileNameChars()

            Console.WriteLine("The following characters are invalid in a filename:")
            ShowChars(invalidFileChars)
        End Sub

        Public Shared Sub ShowChars(charArray As Char())
            Console.WriteLine("Char" + vbTab + "Hex Value")
            ' Display each invalid character to the console.
            For Each someChar As Char In charArray
                If Char.IsWhiteSpace(someChar)
                    Console.WriteLine("," + vbTab + "{0:X4}", _
                        Microsoft.VisualBasic.Asc(someChar))
                Else
                    Console.WriteLine("{0:c}," + vbTab +"{1:X4}", someChar, _
                        Microsoft.VisualBasic.Asc(someChar))
                End If
            Next someChar
        End Sub
    End Class
End Namespace
' Note: Some characters may not be displayable on the console.
' The output will look something like:
'
' The following characters are invalid in a path:
' Char    Hex Value
' ",      0022
' <,      003C
' >,      003E
' |,      007C
' ...
'
' The following characters are invalid in a filename:
' Char    Hex Value
' ",      0022
' <,      003C
' >,      003E
' |,      007C
' ...

using System;
using System.IO;

namespace PathExample
{
    class GetCharExample
    {
        public static void Main()
        {
            // Get a list of invalid path characters.
            char[] invalidPathChars = Path.GetInvalidPathChars();

            Console.WriteLine("The following characters are invalid in a path:");
            ShowChars(invalidPathChars);
            Console.WriteLine();

            // Get a list of invalid file characters.
            char[] invalidFileChars = Path.GetInvalidFileNameChars();

            Console.WriteLine("The following characters are invalid in a filename:");
            ShowChars(invalidFileChars);
        }

        public static void ShowChars(char[] charArray)
        {
            Console.WriteLine("Char\tHex Value");
            // Display each invalid character to the console.
            foreach (char someChar in charArray)
            {
                if (Char.IsWhiteSpace(someChar))
                {
                    Console.WriteLine(",\t{0:X4}", (int)someChar);
                }
                else
                {
                    Console.WriteLine("{0:c},\t{1:X4}", someChar, (int)someChar);
                }
            }
        }
    }
}
// Note: Some characters may not be displayable on the console.
// The output will look something like:
//
// The following characters are invalid in a path:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...
//
// The following characters are invalid in a filename:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...

using namespace System;
using namespace System::IO;

namespace PathExample
{
    public ref class GetCharExample
    {
    public:
        static void Main()
        {
            // Get a list of invalid path characters.
            array<Char>^ invalidPathChars = Path::GetInvalidPathChars();

            Console::WriteLine("The following characters are invalid in a path:");
            ShowChars(invalidPathChars);
            Console::WriteLine();

            // Get a list of invalid file characters.
            array<Char>^ invalidFileChars = Path::GetInvalidFileNameChars();

            Console::WriteLine("The following characters are invalid in a filename:");
            ShowChars(invalidFileChars);
        }

        static void ShowChars(array<Char>^ charArray)
        {
            Console::WriteLine("Char\tHex Value");
            // Display each invalid character to the console.
            for each (Char someChar in charArray)
            {
                if (Char::IsWhiteSpace(someChar))
                {
                    Console::WriteLine(",\t{0:X4}", (Int16)someChar);
                }
                else
                {
                    Console::WriteLine("{0:c},\t{1:X4}", someChar, (Int16)someChar);
                }
            }
        }
    };
};

int main()
{
    PathExample::GetCharExample::Main();
}
// Note: Some characters may not be displayable on the console.
// The output will look something like:
//
// The following characters are invalid in a path:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...
//
// The following characters are invalid in a filename:
// Char    Hex Value
// ",      0022
// <,      003C
// >,      003E
// |,      007C
// ...

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间


Path ..::.GetPathRoot 方法

Path
.
.
::
.
GetPathRoot 方法
Path 类

获取指定路径的根目录信息。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetPathRoot ( _
    path As String _
) As String
public static string GetPathRoot(
    string path
)
public:
static String^ GetPathRoot(
    String^ path
)
static member GetPathRoot :
        path:string -> string

参数

path
类型： System String
从其获取根目录信息的路径。

返回值

类型： System String
path 的根目录，例如“C:\”；如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）；如果 path 不包含根目录信息，则为空字符串。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。 - 或 - String..::.Empty 被传递到 path。

此方法不验证路径或文件名是否存在。

由该方法返回的字符串的可能模式如下所示：

  • 空字符串（path 指定了当前驱动器或卷上的相对路径）。

  • “/”（path 指定了当前驱动器上的绝对路径）。

  • “X:”（指定驱动器上的相对路径的 path，其中 X 表示驱动器号或卷号）。

  • “X:/”（指定给定驱动器上的绝对路径的 path）。

  • "\\ComputerName\SharedFolder"(UNC 路径)。

.NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ". .NET Framework 不支持通过由设备名称构成的路径（如“\\）直接访问物理磁盘。\PHYSICALDRIVE0 ".

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 GetPathRoot 方法的用法。

Dim pathname As String = "\mydir\"
Dim fileName As String = "myfile.ext"
Dim fullPath As String = "C:\mydir\myfile.ext"
Dim pathnameRoot As String

pathnameRoot = Path.GetPathRoot(pathname)
Console.WriteLine("GetPathRoot('{0}') returns '{1}'", pathname, pathnameRoot)

pathnameRoot = Path.GetPathRoot(fileName)
Console.WriteLine("GetPathRoot('{0}') returns '{1}'", fileName, pathnameRoot)

pathnameRoot = Path.GetPathRoot(fullPath)
Console.WriteLine("GetPathRoot('{0}') returns '{1}'", fullPath, pathnameRoot)

' This code produces output similar to the following:
'
' GetPathRoot('\mydir\') returns '\'
' GetPathRoot('myfile.ext') returns ''
' GetPathRoot('C:\mydir\myfile.ext') returns 'C:\'

string path = @"\mydir\";
string fileName = "myfile.ext";
string fullPath = @"C:\mydir\myfile.ext";
string pathRoot;

pathRoot = Path.GetPathRoot(path);
Console.WriteLine("GetPathRoot('{0}') returns '{1}'",
    path, pathRoot);

pathRoot = Path.GetPathRoot(fileName);
Console.WriteLine("GetPathRoot('{0}') returns '{1}'",
    fileName, pathRoot);

pathRoot = Path.GetPathRoot(fullPath);
Console.WriteLine("GetPathRoot('{0}') returns '{1}'",
    fullPath, pathRoot);

// This code produces output similar to the following:
//
// GetPathRoot('\mydir\') returns '\'
// GetPathRoot('myfile.ext') returns ''
// GetPathRoot('C:\mydir\myfile.ext') returns 'C:\'

String^ path = "\\mydir\\";
String^ fileName = "myfile.ext";
String^ fullPath = "C:\\mydir\\myfile.ext";
String^ pathRoot;
pathRoot = Path::GetPathRoot( path );
Console::WriteLine( "GetPathRoot('{0}') returns '{1}'", path, pathRoot );
pathRoot = Path::GetPathRoot( fileName );
Console::WriteLine( "GetPathRoot('{0}') returns '{1}'", fileName, pathRoot );
pathRoot = Path::GetPathRoot( fullPath );
Console::WriteLine( "GetPathRoot('{0}') returns '{1}'", fullPath, pathRoot );

// This code produces output similar to the following:
//
// GetPathRoot('\mydir\') returns '\'
// GetPathRoot('myfile.ext') returns ''
// GetPathRoot('C:\mydir\myfile.ext') returns 'C:\'

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetRandomFileName 方法

Path
.
.
::
.
GetRandomFileName 方法
Path 类

返回随机文件夹名或文件名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetRandomFileName As String
public static string GetRandomFileName()
public:
static String^ GetRandomFileName()
static member GetRandomFileName : unit -> string

返回值

类型： System String
随机文件夹名或文件名。

GetRandomFileName 方法返回可用作文件夹名或文件名的加密的强随机字符串。与 GetTempFileName 不同，GetRandomFileName 不创建文件。当文件系统的安全性非常重要时，应使用此方法而不是 GetTempFileName。 GetRandomFileName 方法返回可用作文件夹名或文件名的加密的强随机字符串。与 GetTempFileName 不同，GetRandomFileName 不创建文件。当文件系统的安全性非常重要时，应使用此方法而不是 GetTempFileName。 GetRandomFileName 方法返回可用作文件夹名或文件名的加密的强随机字符串。与 GetTempFileName 不同，GetRandomFileName 不创建文件。当文件系统的安全性非常重要时，应使用此方法而不是 GetTempFileName。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
System.IO 命名空间


Path ..::.GetTempFileName 方法

Path
.
.
::
.
GetTempFileName 方法
Path 类

创建磁盘上唯一命名的零字节的临时文件并返回该文件的完整路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetTempFileName As String
public static string GetTempFileName()
public:
static String^ GetTempFileName()
static member GetTempFileName : unit -> string

返回值

类型： System String
临时文件的完整路径。
异常 | 条件
IOException | 发生 I/O 错误，例如没有提供唯一的临时文件名。 - 或 - 此方法无法创建临时文件。

此方法创建带 .TMP 文件扩展名的临时文件。

如果使用 GetTempFileName 方法创建超过 65535 个文件但不删除以前的临时文件，则将引发 IOException。

如果没有提供唯一的临时文件名，则 GetTempFileName 方法将引发 IOException。要解决此错误，请删除所有不需要的临时文件。 如果没有提供唯一的临时文件名，则 GetTempFileName 方法将引发 IOException。要解决此错误，请删除所有不需要的临时文件。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

  • FileIOPermission

    用于写入临时目录。关联的枚举：FileIOPermissionAccess..::.Write 用于写入临时目录。关联的枚举：FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.GetTempPath 方法

Path
.
.
::
.
GetTempPath 方法
Path 类

返回当前用户的临时文件夹的路径。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function GetTempPath As String
public static string GetTempPath()
public:
static String^ GetTempPath()
static member GetTempPath : unit -> string

返回值

类型： System String
临时文件夹的路径，以反斜杠结尾。
异常 | 条件
SecurityException | 调用方没有所需的权限。

此方法检查是否存在以下顺序的环境变量，并使用找到的第一个路径：

  1. 由 TMP 环境变量指定的路径。

  2. 由 TEMP 环境变量指定的路径。

  3. 由 USERPROFILE 环境变量指定的路径。

  4. Windows 目录。

  • EnvironmentPermission

    用于无限制访问环境变量。关联的枚举：PermissionState..::.Unrestricted 用于无限制访问环境变量。关联的枚举：PermissionState..::.Unrestricted

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.HasExtension 方法

Path
.
.
::
.
HasExtension 方法
Path 类

确定路径是否包括文件扩展名。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function HasExtension ( _
    path As String _
) As Boolean
public static bool HasExtension(
    string path
)
public:
static bool HasExtension(
    String^ path
)
static member HasExtension :
        path:string -> bool

参数

path
类型： System String
用于搜索扩展名的路径。

返回值

类型： System Boolean
如果路径中最后的目录分隔符（\\ 或 /）或卷分隔符 (:) 之后的字符包括句点 (.)，并且后面跟有一个或多个字符，则为 true；否则为 false。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。

此方法从 path 的末尾开始，搜索后面至少跟有一个字符的句点 (.)。如果在遇到 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 字符前找到此模式，则该方法返回 true。 此方法从 path 的末尾开始，搜索后面至少跟有一个字符的句点 (.)。如果在遇到 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 字符前找到此模式，则该方法返回 true。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 HasExtension 方法的用法。

Dim fileName1 As String = "myfile.ext"
Dim fileName2 As String = "mydir\myfile"
Dim pathname As String = "C:\mydir.ext\"
Dim result As Boolean

result = Path.HasExtension(fileName1)
Console.WriteLine("HasExtension('{0}') returns {1}", fileName1, result)

result = Path.HasExtension(fileName2)
Console.WriteLine("HasExtension('{0}') returns {1}", fileName2, result)

result = Path.HasExtension(pathname)
Console.WriteLine("HasExtension('{0}') returns {1}", pathname, result)

' This code produces output similar to the following:
'
' HasExtension('myfile.ext') returns True
' HasExtension('mydir\myfile') returns False
' HasExtension('C:\mydir.ext\') returns False

string fileName1 = "myfile.ext";
string fileName2 = @"mydir\myfile";
string path = @"C:\mydir.ext\";
bool result;

result = Path.HasExtension(fileName1);
Console.WriteLine("HasExtension('{0}') returns {1}",
    fileName1, result);

result = Path.HasExtension(fileName2);
Console.WriteLine("HasExtension('{0}') returns {1}",
    fileName2, result);

result = Path.HasExtension(path);
Console.WriteLine("HasExtension('{0}') returns {1}",
    path, result);

// This code produces output similar to the following:
//
// HasExtension('myfile.ext') returns True
// HasExtension('mydir\myfile') returns False
// HasExtension('C:\mydir.ext\') returns False

String^ fileName1 = "myfile.ext";
String^ fileName2 = "mydir\\myfile";
String^ path = "C:\\mydir.ext\\";
bool result;
result = Path::HasExtension( fileName1 );
Console::WriteLine( "HasExtension('{0}') returns {1}", fileName1, result.ToString() );
result = Path::HasExtension( fileName2 );
Console::WriteLine( "HasExtension('{0}') returns {1}", fileName2, result.ToString() );
result = Path::HasExtension( path );
Console::WriteLine( "HasExtension('{0}') returns {1}", path, result.ToString() );

// This code produces output similar to the following:
//
// HasExtension('myfile.ext') returns True
// HasExtension('mydir\myfile') returns False
// HasExtension('C:\mydir.ext\') returns False

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Path ..::.IsPathRooted 方法

Path
.
.
::
.
IsPathRooted 方法
Path 类

获取一个值，该值指示指定的路径字符串是包含绝对路径信息还是包含相对路径信息。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared Function IsPathRooted ( _
    path As String _
) As Boolean
public static bool IsPathRooted(
    string path
)
public:
static bool IsPathRooted(
    String^ path
)
static member IsPathRooted :
        path:string -> bool

参数

path
类型： System String
要测试的路径。

返回值

类型： System Boolean
如果 path 包含绝对路径，则为 true；否则为 false。
异常 | 条件
ArgumentException | path 包含 GetInvalidPathChars 中已定义的一个或多个无效字符。

此方法不验证路径或文件名是否存在。

IsPathRooted 为 path 字符串（例如“\\MyDir\\MyFile.txt”和“C:\\MyDir”）返回 true。它为 path 字符串（例如“MyDir”）返回 false。 IsPathRooted 为 path 字符串（例如“\\MyDir\\MyFile.txt”和“C:\\MyDir”）返回 true。它为 path 字符串（例如“MyDir”）返回 false。

如果第一个字符是目录分隔符，例如“\”，或者第二个字符是卷分隔符，例如“\\”中的第二个斜杠，则 IsPathRooted 返回 true。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 IsPathRooted 方法的用法。

Dim fileName As String = "C:\mydir\myfile.ext"
Dim UncPath As String = "\\myPc\mydir\myfile"
Dim relativePath As String = "mydir\sudir\"
Dim result As Boolean

result = Path.IsPathRooted(fileName)
Console.WriteLine("IsPathRooted('{0}') returns {1}", fileName, result)

result = Path.IsPathRooted(UncPath)
Console.WriteLine("IsPathRooted('{0}') returns {1}", UncPath, result)

result = Path.IsPathRooted(relativePath)
Console.WriteLine("IsPathRooted('{0}') returns {1}", relativePath, result)

' This code produces output similar to the following:
'
' IsPathRooted('C:\mydir\myfile.ext') returns True
' IsPathRooted('\\myPc\mydir\myfile') returns True
' IsPathRooted('mydir\sudir\') returns False

string fileName = @"C:\mydir\myfile.ext";
string UncPath = @"\\myPc\mydir\myfile";
string relativePath = @"mydir\sudir\";
bool result;

result = Path.IsPathRooted(fileName);
Console.WriteLine("IsPathRooted('{0}') returns {1}",
    fileName, result);

result = Path.IsPathRooted(UncPath);
Console.WriteLine("IsPathRooted('{0}') returns {1}",
    UncPath, result);

result = Path.IsPathRooted(relativePath);
Console.WriteLine("IsPathRooted('{0}') returns {1}",
    relativePath, result);

// This code produces output similar to the following:
//
// IsPathRooted('C:\mydir\myfile.ext') returns True
// IsPathRooted('\\myPc\mydir\myfile') returns True
// IsPathRooted('mydir\sudir\') returns False

String^ fileName = "C:\\mydir\\myfile.ext";
String^ UncPath = "\\\\myPc\\mydir\\myfile";
String^ relativePath = "mydir\\sudir\\";
bool result;
result = Path::IsPathRooted( fileName );
Console::WriteLine( "IsPathRooted('{0}') returns {1}", fileName, result.ToString() );
result = Path::IsPathRooted( UncPath );
Console::WriteLine( "IsPathRooted('{0}') returns {1}", UncPath, result.ToString() );
result = Path::IsPathRooted( relativePath );
Console::WriteLine( "IsPathRooted('{0}') returns {1}", relativePath, result.ToString() );

// This code produces output similar to the following:
//
// IsPathRooted('C:\mydir\myfile.ext') returns True
// IsPathRooted('\\myPc\mydir\myfile') returns True
// IsPathRooted('mydir\sudir\') returns False

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


PathTooLongException 类

PathTooLongException 类
成员

当路径名或文件名长度超过系统定义的最大长度时引发的异常。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class PathTooLongException _
    Inherits IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class PathTooLongException : IOException
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class PathTooLongException : public IOException
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type PathTooLongException =
    class
        inherit IOException
    end

PathTooLongException 使用值为 0x800700CE 的 HRESULT COR_E_PATHTOOLONG。

如果您的代码不具备 PathDiscovery 权限，此异常的错误消息可能仅包含文件或目录名称而不是完整路径。

完整路径不得超过 260 个字符，以维护与 Windows 操作系统的兼容性。有关此限制的更多信息，请参见 BCL 团队博客上的文章 Long Paths in .NET（.NET 中的长路径）。 完整路径不得超过 260 个字符，以维护与 Windows 操作系统的兼容性。有关此限制的更多信息，请参见 BCL 团队博客上的文章 Long Paths in .NET（.NET 中的长路径）。

System.IO System.IO..::.PathTooLongExceptionPathTooLongException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

PathTooLongException 成员
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


PathTooLongException 成员

PathTooLongException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PathTooLongException 类

当路径名或文件名长度超过系统定义的最大长度时引发的异常。

PathTooLongException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

PathTooLongException 类
System.IO 命名空间


PathTooLongException 构造函数

PathTooLongException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PathTooLongException 类

初始化 PathTooLongException 类的新实例。

名称 说明
页首

参考

PathTooLongException 类
PathTooLongException 成员
System.IO 命名空间


PathTooLongException 构造函数

PathTooLongException 构造函数
PathTooLongException 类

初始化 PathTooLongException 类的新实例，使其 HRESULT 设置为 COR_E_PATHTOOLONG。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public PathTooLongException()
public:
PathTooLongException()
new : unit -> PathTooLongException

此构造函数将新实例的 Message 属性初始化为系统提供的消息，该消息会对错误进行描述，例如“提供的路径太长”。此消息将考虑当前系统区域性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

PathTooLongException 类
PathTooLongException 成员
PathTooLongException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


PathTooLongException 构造函数 (String)

PathTooLongException 构造函数 (String)
PathTooLongException 类

初始化 PathTooLongException 类的新实例，使其消息字符串设置为 message，而其 HRESULT 设置为 COR_E_PATHTOOLONG。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String _
)
public PathTooLongException(
    string message
)
public:
PathTooLongException(
    String^ message
)
new :
        message:string -> PathTooLongException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。

此构造函数使用 message 初始化新实例的 Message 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

PathTooLongException 类
PathTooLongException 成员
PathTooLongException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


PathTooLongException 构造函数 (SerializationInfo, StreamingContext)

PathTooLongException 构造函数 (SerializationInfo, StreamingContext)
PathTooLongException 类

用指定的序列化和上下文信息初始化 PathTooLongException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected PathTooLongException(
    SerializationInfo info,
    StreamingContext context
)
protected:
PathTooLongException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> PathTooLongException

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

PathTooLongException 类
PathTooLongException 成员
PathTooLongException 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


PathTooLongException 构造函数 (String, Exception)

PathTooLongException 构造函数 (String, Exception)
PathTooLongException 类

使用指定错误消息和对作为此异常原因的内部异常的引用来初始化 PathTooLongException 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public PathTooLongException(
    string message,
    Exception innerException
)
public:
PathTooLongException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> PathTooLongException

参数

message
类型： System String
描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。 描述该错误的 String。message 的内容被设计为人可理解的形式。此构造函数的调用方需要确保此字符串已针对当前系统区域性进行了本地化。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

作为前一个异常的直接结果而引发的异常应在 InnerException 属性中包括对前一个异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 作为前一个异常的直接结果而引发的异常应在 InnerException 属性中包括对前一个异常的引用。InnerException 属性返回的值与传递到构造函数中的值相同；或者，如果 InnerException 属性没有向构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表显示 PathTooLongException 实例的初始属性值。

Property | 值
InnerException | 内部异常引用。
Message | 错误消息字符串。

有关内部异常的更多信息，请参见 InnerException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

PathTooLongException 类
PathTooLongException 成员
PathTooLongException 重载
System.IO 命名空间
Exception

其他资源

处理和引发异常
文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


PathTooLongException 方法

PathTooLongException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PathTooLongException 类

PathTooLongException 类型公开以下成员。

名称 说明
页首

参考

PathTooLongException 类
System.IO 命名空间


PathTooLongException 属性

PathTooLongException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PathTooLongException 类

PathTooLongException 类型公开以下成员。

名称 说明
页首

参考

PathTooLongException 类
System.IO 命名空间


PathTooLongException 事件

PathTooLongException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PathTooLongException 类

PathTooLongException 类型公开以下成员。

名称 说明
页首

参考

PathTooLongException 类
System.IO 命名空间


PipeException 类

PipeException 类
成员

当命名管道内出现错误时引发。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
<SerializableAttribute> _
Public Class PipeException _
    Inherits IOException
[SerializableAttribute]
public class PipeException : IOException
[SerializableAttribute]
public ref class PipeException : public IOException
[<SerializableAttribute>]
type PipeException =
    class
        inherit IOException
    end

System.IO System.IO..::.PipeExceptionPipeException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 成员
System.IO 命名空间


PipeException 成员

PipeException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PipeException 类

当命名管道内出现错误时引发。

PipeException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

PipeException 类
System.IO 命名空间


PipeException 构造函数

PipeException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PipeException 类

初始化 PipeException 类的新实例。

名称 说明
页首

参考

PipeException 类
PipeException 成员
System.IO 命名空间


PipeException 构造函数

PipeException 构造函数
PipeException 类

初始化 PipeException 类的新实例。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
Public Sub New
public PipeException()
public:
PipeException()
new : unit -> PipeException

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 类
PipeException 成员
PipeException 重载
System.IO 命名空间


PipeException 构造函数 (String)

PipeException 构造函数 (String)
PipeException 类

使用指定的错误消息初始化 PipeException 类的新实例。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
Public Sub New ( _
    message As String _
)
public PipeException(
    string message
)
public:
PipeException(
    String^ message
)
new :
        message:string -> PipeException

参数

message
类型： System String
一个字符串，它包含对异常原因进行解释的错误消息。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 类
PipeException 成员
PipeException 重载
System.IO 命名空间


PipeException 构造函数 (SerializationInfo, StreamingContext)

PipeException 构造函数 (SerializationInfo, StreamingContext)
PipeException 类

使用指定的序列化信息和流上下文初始化 PipeException 类的新实例。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected PipeException(
    SerializationInfo info,
    StreamingContext context
)
protected:
PipeException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> PipeException

参数

info
类型： System.Runtime.Serialization SerializationInfo
包含序列化异常所需的所有数据的 SerializationInfo。
context
类型： System.Runtime.Serialization StreamingContext
指定流的源和目标的 StreamingContext。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 类
PipeException 成员
PipeException 重载
System.IO 命名空间


PipeException 构造函数 (String, Exception)

PipeException 构造函数 (String, Exception)
PipeException 类

使用指定的错误消息和内部异常初始化 PipeException 类的新实例。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
Public Sub New ( _
    message As String, _
    inner As Exception _
)
public PipeException(
    string message,
    Exception inner
)
public:
PipeException(
    String^ message,
    Exception^ inner
)
new :
        message:string *
        inner:Exception -> PipeException

参数

message
类型： System String
一个字符串，它包含对异常原因进行解释的错误消息。
inner
类型： System Exception
导致引发当前异常的 Exception。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 类
PipeException 成员
PipeException 重载
System.IO 命名空间


PipeException 构造函数 (String, Int32)

PipeException 构造函数 (String, Int32)
PipeException 类

使用指定的错误消息和错误代码初始化 AddressAccessDeniedException 类的新实例。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
Public Sub New ( _
    message As String, _
    errorCode As Integer _
)
public PipeException(
    string message,
    int errorCode
)
public:
PipeException(
    String^ message,
    int errorCode
)
new :
        message:string *
        errorCode:int -> PipeException

参数

message
类型： System String
一个字符串，它包含对异常原因进行解释的错误消息。
errorCode
类型： System Int32
一个包含错误代码的整数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 类
PipeException 成员
PipeException 重载
System.IO 命名空间


PipeException 方法

PipeException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PipeException 类

PipeException 类型公开以下成员。

名称 说明
页首

参考

PipeException 类
System.IO 命名空间


PipeException 属性

PipeException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PipeException 类

PipeException 类型公开以下成员。

名称 说明
页首

参考

PipeException 类
System.IO 命名空间


PipeException ..::.ErrorCode 属性

PipeException
.
.
::
.
ErrorCode 属性
PipeException 类

获取与异常一起返回的错误代码。

命名空间： System.IO
程序集： System.ServiceModel（在 System.ServiceModel.dll 中）
Public Overridable ReadOnly Property ErrorCode As Integer
    Get
public virtual int ErrorCode { get; }
public:
virtual property int ErrorCode {
    int get ();
}
abstract ErrorCode : int
override ErrorCode : int

属性值

类型： System Int32
一个整数，它包含与异常一起返回的错误代码。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0

.NET Framework Client Profile

受以下版本支持：4

参考

PipeException 类
PipeException 成员
System.IO 命名空间


PipeException 事件

PipeException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PipeException 类

PipeException 类型公开以下成员。

名称 说明
页首

参考

PipeException 类
System.IO 命名空间


RenamedEventArgs 类

RenamedEventArgs 类
成员

为 Renamed 事件提供数据。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Class RenamedEventArgs _
    Inherits FileSystemEventArgs
public class RenamedEventArgs : FileSystemEventArgs
public ref class RenamedEventArgs : public FileSystemEventArgs
type RenamedEventArgs =
    class
        inherit FileSystemEventArgs
    end

此类从 FileSystemEventArgs 继承，并通过这种方式扩展它：添加旧名称字段和旧完整路径字段，以指定受影响的文件或目录的前一个名称和完整路径。

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

System.IO System.IO..::.RenamedEventArgsRenamedEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

RenamedEventArgs 成员
System.IO 命名空间
FileSystemEventArgs
FileSystemEventHandler
FileSystemWatcher
InternalBufferOverflowException
NotifyFilters
OnRenamed
Renamed
RenamedEventHandler
WaitForChangedResult
WatcherChangeTypes


RenamedEventArgs 成员

RenamedEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RenamedEventArgs 类

为 Renamed 事件提供数据。

RenamedEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

RenamedEventArgs 类
System.IO 命名空间


RenamedEventArgs 构造函数

RenamedEventArgs 构造函数
RenamedEventArgs 类

初始化 RenamedEventArgs 类的新实例。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Sub New ( _
    changeType As WatcherChangeTypes, _
    directory As String, _
    name As String, _
    oldName As String _
)
public RenamedEventArgs(
    WatcherChangeTypes changeType,
    string directory,
    string name,
    string oldName
)
public:
RenamedEventArgs(
    WatcherChangeTypes changeType,
    String^ directory,
    String^ name,
    String^ oldName
)
new :
        changeType:WatcherChangeTypes *
        directory:string *
        name:string *
        oldName:string -> RenamedEventArgs

参数

changeType
类型： System.IO WatcherChangeTypes
WatcherChangeTypes 值之一。
directory
类型： System String
受影响的文件或目录名。
name
类型： System String
受影响的文件或目录名。
oldName
类型： System String
受影响的文件或目录的旧名称。

此类从 FileSystemEventArgs 类继承，并通过这种方式扩展它：添加旧名称字段，以指定受影响的文件或目录的前一个名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

RenamedEventArgs 类
RenamedEventArgs 成员
System.IO 命名空间
FileSystemEventArgs
WatcherChangeTypes


RenamedEventArgs 方法

RenamedEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RenamedEventArgs 类

RenamedEventArgs 类型公开以下成员。

名称 说明
页首

参考

RenamedEventArgs 类
System.IO 命名空间


RenamedEventArgs 属性

RenamedEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
RenamedEventArgs 类

RenamedEventArgs 类型公开以下成员。

名称 说明
页首

参考

RenamedEventArgs 类
System.IO 命名空间


RenamedEventArgs ..::.OldFullPath 属性

RenamedEventArgs
.
.
::
.
OldFullPath 属性
RenamedEventArgs 类

获取受影响的文件或目录的前一个完全限定的路径。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public ReadOnly Property OldFullPath As String
    Get
public string OldFullPath { get; }
public:
property String^ OldFullPath {
    String^ get ();
}
member OldFullPath : string

属性值

类型： System String
受影响的文件或目录的前一个完全限定的路径。

下面的示例阐释了 OldFullPath 属性。此代码示例摘自一个为 RenamedEventArgs 类提供的更大示例。 下面的示例阐释了 OldFullPath 属性。此代码示例摘自一个为 RenamedEventArgs 类提供的更大示例。

' This method is called when a file is renamed.
Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

    ' Show that a file has been renamed.
    Dim wct As WatcherChangeTypes = e.ChangeType
    Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
End Sub

//  This method is called when a file is renamed.
private static void OnRenamed(object source, RenamedEventArgs e)
{
    //  Show that a file has been renamed.
    WatcherChangeTypes wct = e.ChangeType;
    Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
}
  • FileIOPermission

    用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read 用于读取文件。关联的枚举：FileIOPermissionAccess..::.Read

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

RenamedEventArgs 类
RenamedEventArgs 成员
System.IO 命名空间


RenamedEventArgs ..::.OldName 属性

RenamedEventArgs
.
.
::
.
OldName 属性
RenamedEventArgs 类

获取受影响的文件或目录的旧名称。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public ReadOnly Property OldName As String
    Get
public string OldName { get; }
public:
property String^ OldName {
    String^ get ();
}
member OldName : string

属性值

类型： System String
受影响的文件或目录的前一个名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

RenamedEventArgs 类
RenamedEventArgs 成员
System.IO 命名空间


RenamedEventHandler 委托

RenamedEventHandler 委托

表示将处理 FileSystemWatcher 类的 Renamed 事件的方法。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Delegate Sub RenamedEventHandler ( _
    sender As Object, _
    e As RenamedEventArgs _
)
public delegate void RenamedEventHandler(
    Object sender,
    RenamedEventArgs e
)
public delegate void RenamedEventHandler(
    Object^ sender,
    RenamedEventArgs^ e
)
type RenamedEventHandler =
    delegate of
        sender:Object *
        e:RenamedEventArgs -> unit

参数

sender
类型： System Object
事件源。
e
类型： System.IO RenamedEventArgs
包含事件数据的 RenamedEventArgs。

当创建 RenamedEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 RenamedEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 RenamedEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 RenamedEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间
FileSystemEventArgs
FileSystemEventHandler
FileSystemWatcher
InternalBufferOverflowException
NotifyFilters
OnRenamed
Renamed
RenamedEventArgs
WaitForChangedResult
WatcherChangeTypes


SearchOption 枚举

SearchOption 枚举

指定是搜索当前目录，还是搜索当前目录及其所有子目录。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration SearchOption
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum SearchOption
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class SearchOption
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type SearchOption
成员名称 | 说明
TopDirectoryOnly | 仅在搜索中包括当前目录。
AllDirectories | 在搜索操作中包括当前目录和所有子目录。此选项在搜索中包括重解析点，比如安装的驱动器和符号链接。 在搜索操作中包括当前目录和所有子目录。此选项在搜索中包括重解析点，比如安装的驱动器和符号链接。

如果在搜索中选择 AllDirectories 而且目录结构包含一个会产生循环的链接，则搜索操作会进入一个无限循环。

下面的代码示例列出了“c:\”中以字母“c”开头的所有目录和文件。在此示例中，SearchOption 用于指定不搜索所有子目录。 下面的代码示例列出了“c:\”中以字母“c”开头的所有目录和文件。在此示例中，SearchOption 用于指定不搜索所有子目录。

Imports System
Imports System.IO

Class App
    Public Shared Sub Main()
        ' Specify the directory you want to manipulate.
        Dim path As String = "c:\\"
        Dim searchPattern As String = "c*"

        Dim di As DirectoryInfo = New DirectoryInfo(path)
        Dim directories() As DirectoryInfo = _
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly)

        Dim files() As FileInfo = _
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly)

        Console.WriteLine( _
            "Directories that begin with the letter 'c' in {0}", path)
        Dim dir As DirectoryInfo
        For Each dir In directories
            Console.WriteLine( _
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime)
        Next dir

        Console.WriteLine()
        Console.WriteLine( _
            "Files that begin with the letter 'c' in {0}", path)
        Dim file As FileInfo
        For Each file In files
            Console.WriteLine( _
                "{0,-25} {1,25}", file.Name, file.LastWriteTime)
        Next file
    End Sub
End Class

using System;
using System.IO;

class App
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\";
        string searchPattern = "c*";

        DirectoryInfo di = new DirectoryInfo(path);
        DirectoryInfo[] directories =
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);

        FileInfo[] files =
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);

        Console.WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        foreach (DirectoryInfo dir in directories)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
        }

        Console.WriteLine();
        Console.WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        foreach (FileInfo file in files)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", file.Name, file.LastWriteTime);
        }
    } // Main()
} // App()

using namespace System;
using namespace System::IO;

ref class App
{
public:
    static void Main()
    {
        // Specify the directory you want to manipulate.
        String^ path = "c:\\";
        String^ searchPattern = "c*";

        DirectoryInfo^ di = gcnew DirectoryInfo(path);
        array<DirectoryInfo^>^ directories =
            di->GetDirectories(searchPattern, SearchOption::TopDirectoryOnly);

        array<FileInfo^>^ files =
            di->GetFiles(searchPattern, SearchOption::TopDirectoryOnly);

        Console::WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        for each (DirectoryInfo^ dir in directories)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", dir->FullName, dir->LastWriteTime);
        }

        Console::WriteLine();
        Console::WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        for each (FileInfo^ file in files)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", file->Name, file->LastWriteTime);
        }
    } // Main()
}; // App()

int main()
{
    App::Main();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间


SeekOrigin 枚举

SeekOrigin 枚举

提供表示流中的参考点以供进行查找的字段。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration SeekOrigin
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum SeekOrigin
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum class SeekOrigin
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type SeekOrigin
 | 成员名称 | 说明
由 XNA Framework 提供支持 | Begin | 指定流的开头。
由 XNA Framework 提供支持 | Current | 指定流内的当前位置。
由 XNA Framework 提供支持 | End | 指定流的结尾。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

SeekOrigin 由 Stream、BufferedStream、FileStream、MemoryStream、BinaryWriter 和其他类的 Seek 方法使用。Seek 方法采用一个相对于 SeekOrigin 所指定的位置的偏移量参数。 SeekOrigin 由 Stream、BufferedStream、FileStream、MemoryStream、BinaryWriter 和其他类的 Seek 方法使用。Seek 方法采用一个相对于 SeekOrigin 所指定的位置的偏移量参数。

有关使用每个 SeekOrigin 值的示例，请参见Seek 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream 类

Stream 类
成员

提供字节序列的一般视图。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class Stream _
    Inherits MarshalByRefObject _
    Implements IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject,
    IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class Stream abstract : public MarshalByRefObject,
    IDisposable
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type Stream =
    class
        inherit MarshalByRefObject
        interface IDisposable
    end

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

流涉及三个基本操作：

  1. 可以读取流。读取是从流到数据结构（如字节数组）的数据传输。 可以读取流。读取是从流到数据结构（如字节数组）的数据传输。

  2. 可以写入流。写入是从数据结构到流的数据传输。 可以写入流。写入是从数据结构到流的数据传输。

  3. 流可以支持查找。查找是对流内的当前位置进行的查询和修改。查找功能取决于流具有的后备存储区类型。例如，网络流没有当前位置的统一概念，因此一般不支持查找。 流可以支持查找。查找是对流内的当前位置进行的查询和修改。查找功能取决于流具有的后备存储区类型。例如，网络流没有当前位置的统一概念，因此一般不支持查找。 流可以支持查找。查找是对流内的当前位置进行的查询和修改。查找功能取决于流具有的后备存储区类型。例如，网络流没有当前位置的统一概念，因此一般不支持查找。 流可以支持查找。查找是对流内的当前位置进行的查询和修改。查找功能取决于流具有的后备存储区类型。例如，网络流没有当前位置的统一概念，因此一般不支持查找。

Stream 是所有流的抽象基类。流是字节序列的抽象概念，例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图，使程序员不必了解操作系统和基础设备的具体细节。 Stream 是所有流的抽象基类。流是字节序列的抽象概念，例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图，使程序员不必了解操作系统和基础设备的具体细节。 Stream 是所有流的抽象基类。流是字节序列的抽象概念，例如文件、输入/输出设备、内部进程通信管道或者 TCP/IP 套接字。Stream 类及其派生类提供这些不同类型的输入和输出的一般视图，使程序员不必了解操作系统和基础设备的具体细节。

根据基础数据源或储存库，流可能只支持这些功能中的一部分。通过使用 CanRead、CanWrite 和 CanSeek 属性，应用程序可以查询流的功能。 根据基础数据源或储存库，流可能只支持这些功能中的一部分。通过使用 CanRead、CanWrite 和 CanSeek 属性，应用程序可以查询流的功能。

Read 和 Write 方法读写各种不同格式的数据。对于支持查找的流，使用 Seek 和 SetLength 方法以及 Position 和 Length 属性可查询和修改流的当前位置和长度。 Read 和 Write 方法读写各种不同格式的数据。对于支持查找的流，使用 Seek 和 SetLength 方法以及 Position 和 Length 属性可查询和修改流的当前位置和长度。

有些流实现执行基础数据的本地缓冲以提高性能。对于这样的流，Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。 有些流实现执行基础数据的本地缓冲以提高性能。对于这样的流，Flush 方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。

在 Stream 调用 Close 可清空任何缓存的数据，从本质上为您调用 Flush。Close 还释放操作系统资源（如文件句柄、网络连接或用于任何内部缓冲的内存）。BufferedStream 类提供了将一个经过缓冲的流环绕另一个流的功能，以便提高读写性能。 在 Stream 调用 Close 可清空任何缓存的数据，从本质上为您调用 Flush。Close 还释放操作系统资源（如文件句柄、网络连接或用于任何内部缓冲的内存）。BufferedStream 类提供了将一个经过缓冲的流环绕另一个流的功能，以便提高读写性能。 在 Stream 调用 Close 可清空任何缓存的数据，从本质上为您调用 Flush。Close 还释放操作系统资源（如文件句柄、网络连接或用于任何内部缓冲的内存）。BufferedStream 类提供了将一个经过缓冲的流环绕另一个流的功能，以便提高读写性能。

如果需要不带后备存储区（即位存储桶）的流，请使用 Null。

对实现者的说明

在实现 Stream 的派生类时，必须提供 Read 和 Write 方法的实现。异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。同样，Read 和 Write 的实现也将与异步方法一起正常工作。ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组，然后调用 Read 和 Write 的实现。当从 Stream 派生时，如果有内部字节缓冲区，则强烈建议重写这些方法以访问内部缓冲区，这样性能将得到显著提高。还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。 在实现 Stream 的派生类时，必须提供 Read 和 Write 方法的实现。异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。同样，Read 和 Write 的实现也将与异步方法一起正常工作。ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组，然后调用 Read 和 Write 的实现。当从 Stream 派生时，如果有内部字节缓冲区，则强烈建议重写这些方法以访问内部缓冲区，这样性能将得到显著提高。还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。 在实现 Stream 的派生类时，必须提供 Read 和 Write 方法的实现。异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。同样，Read 和 Write 的实现也将与异步方法一起正常工作。ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组，然后调用 Read 和 Write 的实现。当从 Stream 派生时，如果有内部字节缓冲区，则强烈建议重写这些方法以访问内部缓冲区，这样性能将得到显著提高。还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。 在实现 Stream 的派生类时，必须提供 Read 和 Write 方法的实现。异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。同样，Read 和 Write 的实现也将与异步方法一起正常工作。ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组，然后调用 Read 和 Write 的实现。当从 Stream 派生时，如果有内部字节缓冲区，则强烈建议重写这些方法以访问内部缓冲区，这样性能将得到显著提高。还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。 在实现 Stream 的派生类时，必须提供 Read 和 Write 方法的实现。异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。同样，Read 和 Write 的实现也将与异步方法一起正常工作。ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组，然后调用 Read 和 Write 的实现。当从 Stream 派生时，如果有内部字节缓冲区，则强烈建议重写这些方法以访问内部缓冲区，这样性能将得到显著提高。还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。 在实现 Stream 的派生类时，必须提供 Read 和 Write 方法的实现。异步方法 BeginRead、EndRead、BeginWrite 和 EndWrite 通过同步方法 Read 和 Write 实现。同样，Read 和 Write 的实现也将与异步方法一起正常工作。ReadByte 和 WriteByte 的默认实现创建一个新的单元素字节数组，然后调用 Read 和 Write 的实现。当从 Stream 派生时，如果有内部字节缓冲区，则强烈建议重写这些方法以访问内部缓冲区，这样性能将得到显著提高。还必须提供 CanRead、CanSeek、CanWrite、Flush、Length、Position、Seek 和 SetLength 的实现。

不要重写 Close 方法，而应将所有 Stream 清理逻辑放入 Dispose 方法中。有关更多信息，请参见实现 Dispose 方法。 不要重写 Close 方法，而应将所有 Stream 清理逻辑放入 Dispose 方法中。有关更多信息，请参见实现 Dispose 方法。

System.IO System.IO..::.StreamStream

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 成员
System.IO 命名空间
FileStream
MemoryStream
BufferedStream

其他资源

文件和流 I/O


Stream 成员

Stream 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

提供字节序列的一般视图。

Stream 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

Stream 类
System.IO 命名空间


Stream 构造函数

Stream 构造函数
Stream 类

初始化 Stream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected Stream()
protected:
Stream()
new : unit -> Stream

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream 字段

Stream 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

Stream 类型公开以下成员。

名称 说明
页首

参考

Stream 类
System.IO 命名空间


Stream ..::.Null 字段

Stream
.
.
::
.
Null 字段
Stream 类

无后备存储区的 Stream。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly Null As Stream
public static readonly Stream Null
public:
static initonly Stream^ Null
static val Null: Stream

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

使用 Null 将输出重定向到不占用任何操作系统资源的流。当在 Null 上调用提供写入的 Stream 方法时，该调用只是返回，没有任何数据写入。Null 还实现一个返回零而不读取数据的 Read 方法。 使用 Null 将输出重定向到不占用任何操作系统资源的流。当在 Null 上调用提供写入的 Stream 方法时，该调用只是返回，没有任何数据写入。Null 还实现一个返回零而不读取数据的 Read 方法。 使用 Null 将输出重定向到不占用任何操作系统资源的流。当在 Null 上调用提供写入的 Stream 方法时，该调用只是返回，没有任何数据写入。Null 还实现一个返回零而不读取数据的 Read 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream 方法

Stream 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

Stream 类型公开以下成员。

名称 说明
页首

参考

Stream 类
System.IO 命名空间


Stream ..::.BeginRead 方法

Stream
.
.
::
.
BeginRead 方法
Stream 类

开始异步读操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Overridable Function BeginRead ( _
    buffer As Byte(), _
    offset As Integer, _
    count As Integer, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public virtual IAsyncResult BeginRead(
    byte[] buffer,
    int offset,
    int count,
    AsyncCallback callback,
    Object state
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
virtual IAsyncResult^ BeginRead(
    array<unsigned char>^ buffer,
    int offset,
    int count,
    AsyncCallback^ callback,
    Object^ state
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
abstract BeginRead :
        buffer:byte[] *
        offset:int *
        count:int *
        callback:AsyncCallback *
        state:Object -> IAsyncResult
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
override BeginRead :
        buffer:byte[] *
        offset:int *
        count:int *
        callback:AsyncCallback *
        state:Object -> IAsyncResult

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

数据读入的缓冲区。
offset
类型： System Int32
buffer 中的字节偏移量，从该偏移量开始写入从流中读取的数据。
count
类型： System Int32
最多读取的字节数。
callback
类型： System AsyncCallback
可选的异步回调，在完成读取时调用。
state
类型： System Object
一个用户提供的对象，它将该特定的异步读取请求与其他请求区别开来。

返回值

类型： System IAsyncResult
表示异步读取的 IAsyncResult（可能仍处于挂起状态）。
异常 | 条件
IOException | 尝试的异步读取超过了流的结尾，或者发生了磁盘错误。
ArgumentException | 一个或多个参数无效。
ObjectDisposedException | 在流关闭后调用方法。
NotSupportedException | 当前 Stream 实现不支持读取操作。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。

BeginRead 在流上的默认实现将同步调用 Read 方法，这意味着 Read 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginRead 的调用不会在那些流上阻塞。可以重写 BeginRead（例如，使用异步委托）以提供异步行为。 BeginRead 在流上的默认实现将同步调用 Read 方法，这意味着 Read 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginRead 的调用不会在那些流上阻塞。可以重写 BeginRead（例如，使用异步委托）以提供异步行为。 BeginRead 在流上的默认实现将同步调用 Read 方法，这意味着 Read 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginRead 的调用不会在那些流上阻塞。可以重写 BeginRead（例如，使用异步委托）以提供异步行为。 BeginRead 在流上的默认实现将同步调用 Read 方法，这意味着 Read 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginRead 的调用不会在那些流上阻塞。可以重写 BeginRead（例如，使用异步委托）以提供异步行为。

将 IAsyncResult 返回值传递给流的 EndRead 方法，以确定已读取的字节数并释放用于进行读取的操作系统资源。每次调用 BeginRead 时都必须调用一次 EndRead。这可以通过与调用 BeginRead 相同的代码来完成，或者在传递给 BeginRead 的回调中完成。 将 IAsyncResult 返回值传递给流的 EndRead 方法，以确定已读取的字节数并释放用于进行读取的操作系统资源。每次调用 BeginRead 时都必须调用一次 EndRead。这可以通过与调用 BeginRead 相同的代码来完成，或者在传递给 BeginRead 的回调中完成。 将 IAsyncResult 返回值传递给流的 EndRead 方法，以确定已读取的字节数并释放用于进行读取的操作系统资源。每次调用 BeginRead 时都必须调用一次 EndRead。这可以通过与调用 BeginRead 相同的代码来完成，或者在传递给 BeginRead 的回调中完成。

当发出异步读取或写入时而不是在完成 I/O 操作时，流中的当前位置被更新。

多个同时进行的异步请求会使请求完成顺序不确定。

使用 CanRead 属性可确定当前实例是否支持读取。

如果流已关闭或者传递了无效的参数，将立即从 BeginRead 中引发异常。异步读取请求期间出现的错误（如 I/O 请求期间的磁盘故障）发生在线程池线程上，并在调用 EndRead 时引发异常。 如果流已关闭或者传递了无效的参数，将立即从 BeginRead 中引发异常。异步读取请求期间出现的错误（如 I/O 请求期间的磁盘故障）发生在线程池线程上，并在调用 EndRead 时引发异常。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


Stream ..::.BeginWrite 方法

Stream
.
.
::
.
BeginWrite 方法
Stream 类

开始异步写操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Overridable Function BeginWrite ( _
    buffer As Byte(), _
    offset As Integer, _
    count As Integer, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public virtual IAsyncResult BeginWrite(
    byte[] buffer,
    int offset,
    int count,
    AsyncCallback callback,
    Object state
)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
virtual IAsyncResult^ BeginWrite(
    array<unsigned char>^ buffer,
    int offset,
    int count,
    AsyncCallback^ callback,
    Object^ state
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
abstract BeginWrite :
        buffer:byte[] *
        offset:int *
        count:int *
        callback:AsyncCallback *
        state:Object -> IAsyncResult
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>]
override BeginWrite :
        buffer:byte[] *
        offset:int *
        count:int *
        callback:AsyncCallback *
        state:Object -> IAsyncResult

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

从中写入数据的缓冲区。
offset
类型： System Int32
buffer 中的字节偏移量，从此处开始写入。
count
类型： System Int32
最多写入的字节数。
callback
类型： System AsyncCallback
可选的异步回调，在完成写入时调用。
state
类型： System Object
一个用户提供的对象，它将该特定的异步写入请求与其他请求区别开来。

返回值

类型： System IAsyncResult
表示异步写入的 IAsyncResult（可能仍处于挂起状态）。
异常 | 条件
IOException | 尝试进行的异步写入超过了流的结尾，或者发生了磁盘错误。
ArgumentException | 一个或多个参数无效。
ObjectDisposedException | 在流关闭后调用方法。
NotSupportedException | 当前 Stream 实现不支持写入操作。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。

BeginWrite 在流上的默认实现将同步调用 Write 方法，这意味着 Write 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginWrite 的调用不会在那些流上阻塞。可以重写 BeginWrite（例如，使用异步委托）以提供异步行为。 BeginWrite 在流上的默认实现将同步调用 Write 方法，这意味着 Write 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginWrite 的调用不会在那些流上阻塞。可以重写 BeginWrite（例如，使用异步委托）以提供异步行为。 BeginWrite 在流上的默认实现将同步调用 Write 方法，这意味着 Write 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginWrite 的调用不会在那些流上阻塞。可以重写 BeginWrite（例如，使用异步委托）以提供异步行为。 BeginWrite 在流上的默认实现将同步调用 Write 方法，这意味着 Write 在某些流上可能发生阻塞。但是，如果已经异步打开某些类（如 FileStream 和 NetworkStream）的实例，则这些实例将完全支持异步操作。因此，对 BeginWrite 的调用不会在那些流上阻塞。可以重写 BeginWrite（例如，使用异步委托）以提供异步行为。

将当前方法返回的 IAsyncResult 传递给 EndWrite 以确保写入操作完成并相应地释放资源。每次调用 BeginWrite 时都必须调用一次 EndWrite。这可以通过与调用 BeginWrite 相同的代码来完成，或者在传递给 BeginWrite 的回调中完成。如果在异步写入期间发生错误，则在使用此方法返回的 IAsyncResult 调用 EndWrite 之前，不会引发异常。 将当前方法返回的 IAsyncResult 传递给 EndWrite 以确保写入操作完成并相应地释放资源。每次调用 BeginWrite 时都必须调用一次 EndWrite。这可以通过与调用 BeginWrite 相同的代码来完成，或者在传递给 BeginWrite 的回调中完成。如果在异步写入期间发生错误，则在使用此方法返回的 IAsyncResult 调用 EndWrite 之前，不会引发异常。 将当前方法返回的 IAsyncResult 传递给 EndWrite 以确保写入操作完成并相应地释放资源。每次调用 BeginWrite 时都必须调用一次 EndWrite。这可以通过与调用 BeginWrite 相同的代码来完成，或者在传递给 BeginWrite 的回调中完成。如果在异步写入期间发生错误，则在使用此方法返回的 IAsyncResult 调用 EndWrite 之前，不会引发异常。 将当前方法返回的 IAsyncResult 传递给 EndWrite 以确保写入操作完成并相应地释放资源。每次调用 BeginWrite 时都必须调用一次 EndWrite。这可以通过与调用 BeginWrite 相同的代码来完成，或者在传递给 BeginWrite 的回调中完成。如果在异步写入期间发生错误，则在使用此方法返回的 IAsyncResult 调用 EndWrite 之前，不会引发异常。

如果流是可写的，则在流的末尾写入将使该流扩展。

当发出异步读取或写入时而不是在 I/O 操作完成时，流中的当前位置被更新。多个同时进行的异步请求会使请求完成顺序不确定。 当发出异步读取或写入时而不是在 I/O 操作完成时，流中的当前位置被更新。多个同时进行的异步请求会使请求完成顺序不确定。

使用 CanWrite 属性可确定当前实例是否支持写入。

如果流已关闭或者传递了无效的参数，将立即从 BeginWrite 中引发异常。异步写请求期间出现的错误（如 I/O 请求中期间出现的磁盘故障）发生在线程池线程上，并且在调用 EndWrite 时引发异常。 如果流已关闭或者传递了无效的参数，将立即从 BeginWrite 中引发异常。异步写请求期间出现的错误（如 I/O 请求中期间出现的磁盘故障）发生在线程池线程上，并且在调用 EndWrite 时引发异常。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：ExternalThreading。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间
EndWrite
CanWrite

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


Stream ..::.Close 方法

Stream
.
.
::
.
Close 方法
Stream 类

关闭当前流并释放与之关联的所有资源（如套接字和文件句柄）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Close
public virtual void Close()
public:
virtual void Close()
abstract Close : unit -> unit
override Close : unit -> unit

此方法调用 Dispose，指定 true 释放所有资源。

如果不显式调用 Flush 或 Close 的实现，刷新流将不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，其中某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 如果不显式调用 Flush 或 Close 的实现，刷新流将不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，其中某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 如果不显式调用 Flush 或 Close 的实现，刷新流将不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，其中某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 如果不显式调用 Flush 或 Close 的实现，刷新流将不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，其中某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

流的正常操作需要调用 Close。调用 Close 后，在流上进行其他操作会引发异常。如果流已关闭，对 Close 的调用不会引发异常。 流的正常操作需要调用 Close。调用 Close 后，在流上进行其他操作会引发异常。如果流已关闭，对 Close 的调用不会引发异常。 流的正常操作需要调用 Close。调用 Close 后，在流上进行其他操作会引发异常。如果流已关闭，对 Close 的调用不会引发异常。

在流关闭后，尝试对流进行操作可能会引发 ObjectDisposedException。

对实现者的说明

在派生类中不要重写 Close 方法，而应将所有 Stream 清理逻辑放入 Dispose 方法中。有关更多信息，请参见实现 Dispose 方法。 在派生类中不要重写 Close 方法，而应将所有 Stream 清理逻辑放入 Dispose 方法中。有关更多信息，请参见实现 Dispose 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.CopyTo 方法

Stream
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

将当前流的内容复制到另一个流中。

名称 说明
页首

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream ..::.CopyTo 方法 (Stream)

Stream
.
.
::
.
CopyTo 方法 (Stream)
Stream 类

从当前流中读取所有字节并将其写入到目标流中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub CopyTo ( _
    destination As Stream _
)
public void CopyTo(
    Stream destination
)
public:
void CopyTo(
    Stream^ destination
)
member CopyTo :
        destination:Stream -> unit

参数

destination
类型： System.IO Stream
将包含当前流的内容的流。
异常 | 条件
ArgumentNullException | destination 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 当前流不支持读取。 - 或 - destination 不支持写入。
ObjectDisposedException | 在调用 CopyTo 方法之前关闭了当前流或 destination。
IOException | 发生了 I/O 错误。

复制从当前流中的当前位置开始。

下面的示例将 FileStream 的内容复制到 MemoryStream 中。

' Create the streams.
Dim destination As New MemoryStream()

Using source As FileStream = File.Open("c:\temp\data.dat", _
                                       FileMode.Open)
    Console.WriteLine("Source length: {0}", source.Length.ToString())

    ' Copy source to destination.
    source.CopyTo(destination)

End Using
Console.WriteLine("Destination length: {0}", destination.Length.ToString())

// Create the streams.
MemoryStream destination = new MemoryStream();

using (FileStream source = File.Open(@"c:\temp\data.dat",
    FileMode.Open))
{

    Console.WriteLine("Source length: {0}", source.Length.ToString());

    // Copy source to destination.
    source.CopyTo(destination);
}

Console.WriteLine("Destination length: {0}", destination.Length.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Stream 类
Stream 成员
CopyTo 重载
System.IO 命名空间


Stream ..::.CopyTo 方法 (Stream, Int32)

Stream
.
.
::
.
CopyTo 方法 (Stream, Int32)
Stream 类

从当前流中读取所有字节并将其写入到目标流中（使用指定的缓冲区大小）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub CopyTo ( _
    destination As Stream, _
    bufferSize As Integer _
)
public void CopyTo(
    Stream destination,
    int bufferSize
)
public:
void CopyTo(
    Stream^ destination,
    int bufferSize
)
member CopyTo :
        destination:Stream *
        bufferSize:int -> unit

参数

destination
类型： System.IO Stream
将包含当前流的内容的流。
bufferSize
类型： System Int32
缓冲区的大小。此值必须大于零。默认大小为 4096。 缓冲区的大小。此值必须大于零。默认大小为 4096。 缓冲区的大小。此值必须大于零。默认大小为 4096。
异常 | 条件
ArgumentNullException | destination 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | bufferSize 为负或为零。
NotSupportedException | 当前流不支持读取。 - 或 - destination 不支持写入。
ObjectDisposedException | 在调用 CopyTo 方法之前关闭了当前流或 destination。
IOException | 发生了 I/O 错误。

复制从当前流中的当前位置开始。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Stream 类
Stream 成员
CopyTo 重载
System.IO 命名空间


Stream ..::.CreateWaitHandle 方法

Stream
.
.
::
.
CreateWaitHandle 方法
Stream 类

注意：此 API 现在已过时。

分配 WaitHandle 对象。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ObsoleteAttribute("CreateWaitHandle will be removed eventually.  Please use "new ManualResetEvent(false)" instead.")> _
Protected Overridable Function CreateWaitHandle As WaitHandle
[ObsoleteAttribute("CreateWaitHandle will be removed eventually.  Please use "new ManualResetEvent(false)" instead.")]
protected virtual WaitHandle CreateWaitHandle()
[ObsoleteAttribute(L"CreateWaitHandle will be removed eventually.  Please use "new ManualResetEvent(false)" instead.")]
protected:
virtual WaitHandle^ CreateWaitHandle()
[<ObsoleteAttribute("CreateWaitHandle will be removed eventually.  Please use "new ManualResetEvent(false)" instead.")>]
abstract CreateWaitHandle : unit -> WaitHandle
[<ObsoleteAttribute("CreateWaitHandle will be removed eventually.  Please use "new ManualResetEvent(false)" instead.")>]
override CreateWaitHandle : unit -> WaitHandle

返回值

类型： System.Threading WaitHandle
对已分配的 WaitHandle 的引用。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

第一次被调用时，当前方法将创建一个 WaitHandle 对象并返回它。在后续调用中，CreateWaitHandle 返回一个对新的等待句柄的引用。 第一次被调用时，当前方法将创建一个 WaitHandle 对象并返回它。在后续调用中，CreateWaitHandle 返回一个对新的等待句柄的引用。

如果实现异步方法，而且在异步操作完成前在 EndRead 或 EndWrite 中需要一种阻止方法，则使用此方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.Dispose 方法

Stream
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

释放由 Stream 对象占用的所有资源。

名称 说明
页首

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream ..::.Dispose 方法

Stream
.
.
::
.
Dispose 方法
Stream 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

释放由 Stream 占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

此方法将释放流，方法是将任何更改写入后备存储并关闭流以释放资源。

调用 Dispose 使您可以为其他目的而重新分配 Stream 所使用的资源。有关 Dispose 的更多信息，请参见 清理非托管资源。 调用 Dispose 使您可以为其他目的而重新分配 Stream 所使用的资源。有关 Dispose 的更多信息，请参见 清理非托管资源。

对实现者的说明

将流对象的所有清理逻辑放入 Stream..::.Dispose(Boolean) 中。 不要重写 Close。

请注意，因为向后兼容的需要，此方法的实现与"处置"模式推荐的指导不同。 此方法调用 Close，然后调用 Stream..::.Dispose(Boolean)。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
Dispose 重载
System.IO 命名空间


Stream ..::.Dispose 方法 (Boolean)

Stream
.
.
::
.
Dispose 方法 (Boolean)
Stream 类

释放由 Stream 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true，则释放托管资源和非托管资源；为 false，则仅释放非托管资源。

您应通过为 disposing 指定 true 释放所有资源。当 disposing 为 true 时，流也可以确保将数据刷新至基础缓冲区，并访问其他可终结对象。当由于终结器中缺少排序而从终结器调用时这不太可能。 您应通过为 disposing 指定 true 释放所有资源。当 disposing 为 true 时，流也可以确保将数据刷新至基础缓冲区，并访问其他可终结对象。当由于终结器中缺少排序而从终结器调用时这不太可能。 您应通过为 disposing 指定 true 释放所有资源。当 disposing 为 true 时，流也可以确保将数据刷新至基础缓冲区，并访问其他可终结对象。当由于终结器中缺少排序而从终结器调用时这不太可能。

如果流使用操作系统句柄与其资源通信，请考虑使用 SafeHandle 的子类用于此用途。

此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。

对继承者的说明

在派生类中不要重写 Close 方法，而应将所有流清理逻辑放入 Dispose 方法中。

Dispose 可由其他对象调用多次。重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已经释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已经释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已经释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
Dispose 重载
System.IO 命名空间


Stream ..::.EndRead 方法

Stream
.
.
::
.
EndRead 方法
Stream 类

等待挂起的异步读取完成。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function EndRead ( _
    asyncResult As IAsyncResult _
) As Integer
public virtual int EndRead(
    IAsyncResult asyncResult
)
public:
virtual int EndRead(
    IAsyncResult^ asyncResult
)
abstract EndRead :
        asyncResult:IAsyncResult -> int
override EndRead :
        asyncResult:IAsyncResult -> int

参数

asyncResult
类型： System IAsyncResult
对要完成的挂起异步请求的引用。

返回值

类型： System Int32
从流中读取的字节数，介于零 (0) 和所请求的字节数之间。流仅在流的末尾返回零 (0)，否则应一直阻止到至少有 1 个字节可用为止。 从流中读取的字节数，介于零 (0) 和所请求的字节数之间。流仅在流的末尾返回零 (0)，否则应一直阻止到至少有 1 个字节可用为止。
异常 | 条件
ArgumentNullException | asyncResult 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | asyncResult 并非源自当前流上的 BeginRead 方法。
IOException | 此流关闭或发生内部错误。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。

调用 EndRead 以确定已从流中读取的字节数。

对于 BeginRead 的每个 IAsyncResult，可以调用一次 EndRead。

此方法一直阻止到 I/O 操作已完成为止。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


Stream ..::.EndWrite 方法

Stream
.
.
::
.
EndWrite 方法
Stream 类

结束异步写操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub EndWrite ( _
    asyncResult As IAsyncResult _
)
public virtual void EndWrite(
    IAsyncResult asyncResult
)
public:
virtual void EndWrite(
    IAsyncResult^ asyncResult
)
abstract EndWrite :
        asyncResult:IAsyncResult -> unit
override EndWrite :
        asyncResult:IAsyncResult -> unit

参数

asyncResult
类型： System IAsyncResult
对未完成的异步 I/O 请求的引用。
异常 | 条件
ArgumentNullException | asyncResult 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | asyncResult 并非源自当前流上的 BeginWrite 方法。
IOException | 此流关闭或发生内部错误。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。有关异步文件 I/O 的示例，请参见异步文件 I/O。

对于 BeginWrite 中的每个 IAsyncResult，必须正好调用一次 EndWrite。

此方法一直阻止到 I/O 操作已完成为止。异步写请求期间出现的错误（例如 I/O 请求期间的磁盘失败）发生在线程池线程上，并且在调用 EndWrite 时变得可见。当调用 EndWrite 时，由线程池线程引发的异常将不可见。 此方法一直阻止到 I/O 操作已完成为止。异步写请求期间出现的错误（例如 I/O 请求期间的磁盘失败）发生在线程池线程上，并且在调用 EndWrite 时变得可见。当调用 EndWrite 时，由线程池线程引发的异常将不可见。 此方法一直阻止到 I/O 操作已完成为止。异步写请求期间出现的错误（例如 I/O 请求期间的磁盘失败）发生在线程池线程上，并且在调用 EndWrite 时变得可见。当调用 EndWrite 时，由线程池线程引发的异常将不可见。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
异步文件 I/O


Stream ..::.Flush 方法

Stream
.
.
::
.
Flush 方法
Stream 类

当在派生类中重写时，将清除该流的所有缓冲区，并使得所有缓冲数据被写入到基础设备。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Sub Flush
public abstract void Flush()
public:
virtual void Flush() abstract
abstract Flush : unit -> unit

异常 | 条件
IOException | 发生 I/O 错误。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

在实现缓冲区的流上重写 Flush。使用此方法将所有信息从基础缓冲区移动到其目标或清除缓冲区，或者同时执行这两种操作。根据对象的状态，可能需要修改流内的当前位置（例如，在基础流支持查找的情况下即如此）。有关更多信息，请参见 CanSeek。 在实现缓冲区的流上重写 Flush。使用此方法将所有信息从基础缓冲区移动到其目标或清除缓冲区，或者同时执行这两种操作。根据对象的状态，可能需要修改流内的当前位置（例如，在基础流支持查找的情况下即如此）。有关更多信息，请参见 CanSeek。 在实现缓冲区的流上重写 Flush。使用此方法将所有信息从基础缓冲区移动到其目标或清除缓冲区，或者同时执行这两种操作。根据对象的状态，可能需要修改流内的当前位置（例如，在基础流支持查找的情况下即如此）。有关更多信息，请参见 CanSeek。 在实现缓冲区的流上重写 Flush。使用此方法将所有信息从基础缓冲区移动到其目标或清除缓冲区，或者同时执行这两种操作。根据对象的状态，可能需要修改流内的当前位置（例如，在基础流支持查找的情况下即如此）。有关更多信息，请参见 CanSeek。

当使用 StreamWriter 或 BinaryWriter 类时，不要刷新 Stream 基对象。而应使用该类的 Flush 或 Close 方法，此方法确保首先将该数据刷新至基础流，然后再将其写入文件。 当使用 StreamWriter 或 BinaryWriter 类时，不要刷新 Stream 基对象。而应使用该类的 Flush 或 Close 方法，此方法确保首先将该数据刷新至基础流，然后再将其写入文件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.MemberwiseClone 方法

Stream
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

名称 说明
页首

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream ..::.ObjectInvariant 方法

Stream
.
.
::
.
ObjectInvariant 方法
Stream 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

提供对 Contract 的支持。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub ObjectInvariant
protected virtual void ObjectInvariant()
protected:
virtual void ObjectInvariant()
abstract ObjectInvariant : unit -> unit
override ObjectInvariant : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream ..::.Read 方法

Stream
.
.
::
.
Read 方法
Stream 类

当在派生类中重写时，从当前流读取字节序列，并将此流中的位置提升读取的字节数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Function Read ( _
    <OutAttribute> buffer As Byte(), _
    offset As Integer, _
    count As Integer _
) As Integer
public abstract int Read(
    byte[] buffer,
    int offset,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<unsigned char>^ buffer,
    int offset,
    int count
) abstract
abstract Read :
        buffer:byte[] byref *
        offset:int *
        count:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

字节数组。此方法返回时，该缓冲区包含指定的字符数组，该数组的 offset 和 (offset + count -1) 之间的值由从当前源中读取的字节替换。 字节数组。此方法返回时，该缓冲区包含指定的字符数组，该数组的 offset 和 (offset + count -1) 之间的值由从当前源中读取的字节替换。
offset
类型： System Int32
buffer 中的从零开始的字节偏移量，从此处开始存储从当前流中读取的数据。
count
类型： System Int32
要从当前流中最多读取的字节数。

返回值

类型： System Int32
读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多，则总字节数可能小于请求的字节数；如果已到达流的末尾，则为零 (0)。 读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多，则总字节数可能小于请求的字节数；如果已到达流的末尾，则为零 (0)。
异常 | 条件
ArgumentException | offset 与 count 的和大于缓冲区长度。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 count 为负。
IOException | 发生 I/O 错误。
NotSupportedException | 流不支持读取。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

使用 CanRead 属性可确定当前实例是否支持读取。

此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 此方法的实现从当前流中读取最多的 count 个字节，并将它们存储在从 offset 开始的 buffer 中。流中的当前位置提升已读取的字节数；但是，如果出现异常，流中的当前位置保持不变。实现返回已读取的字节数。仅当位置当前位于流的末尾时，返回值才为零。如果没有任何可用的数据，实现将会阻止，直到至少有一个字节的数据可供读取。仅当流中没有更多数据且预期不会有更多数据（如套接字已关闭或位于文件结尾）时，Read 才返回 0。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。

将 BinaryReader 用于读取基元数据类型。

下面的示例显示如何使用 Read 读取数据块。

Imports System
Imports System.IO

Public Class Block
    Public Shared Sub Main()
        Dim s As Stream = New MemoryStream()
        For i As Integer = 0 To 99
            s.WriteByte(CType(i, Byte))
        Next i
        s.Position = 0

        ' Now read s into a byte buffer.
        Dim bytes(s.Length) As Byte
        Dim numBytesToRead As Integer = s.Length
        Dim numBytesRead As Integer = 0
        Dim n As Integer
        While numBytesToRead > 0
            ' Read may return anything from 0 to 10.
            n = s.Read(bytes, numBytesRead, 10)
            ' The end of the file is reached.
            If n = 0 Then
                Exit While
            End If
            numBytesRead += n
            numBytesToRead -= n
        End While
        s.Close()
        ' numBytesToRead should be 0 now, and numBytesRead should
        ' equal 100.
        Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
    End Sub
End Class

using System;
using System.IO;

public class Block
{
    public static void Main()
    {
        Stream s = new MemoryStream();
        for (int i = 0; i < 100; i++)
        {
            s.WriteByte((byte)i);
        }
        s.Position = 0;

        // Now read s into a byte buffer.
        byte[] bytes = new byte[s.Length];
        int numBytesToRead = (int) s.Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to 10.
            int n = s.Read(bytes, numBytesRead, 10);
            // The end of the file is reached.
            if (n == 0)
            {
                break;
            }
            numBytesRead += n;
            numBytesToRead -= n;
        }
        s.Close();
        // numBytesToRead should be 0 now, and numBytesRead should
        // equal 100.
        Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
}

using namespace System;
using namespace System::IO;

public ref class Block
{
public:
    static void Main()
    {
        Stream^ s = gcnew MemoryStream();
        for (int i = 0; i < 100; i++)
        {
            s->WriteByte((Byte)i);
        }
        s->Position = 0;

        // Now read s into a byte buffer.
        array<Byte>^ bytes = gcnew array<Byte>(s->Length);
        int numBytesToRead = (int) s->Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to 10.
            int n = s->Read(bytes, numBytesRead, 10);
            // The end of the file is reached.
            if (n == 0)
            {
                break;
            }
            numBytesRead += n;
            numBytesToRead -= n;
        }
        s->Close();
        // numBytesToRead should be 0 now, and numBytesRead should
        // equal 100.
        Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
};

int main()
{
    Block::Main();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.ReadByte 方法

Stream
.
.
::
.
ReadByte 方法
Stream 类

从流中读取一个字节，并将流内的位置向前推进一个字节，如果已到达流的末尾，则返回 -1。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadByte As Integer
public virtual int ReadByte()
public:
virtual int ReadByte()
abstract ReadByte : unit -> int
override ReadByte : unit -> int

返回值

类型： System Int32
转换为 Int32 的无符号字节；如果到达流的末尾，则为 -1。
异常 | 条件
NotSupportedException | 流不支持读取。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

使用 CanRead 属性可确定当前实例是否支持读取。

在流关闭后，尝试对流进行操作可能会引发 ObjectDisposedException。

对实现者的说明

Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Read。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，并提供一个可以直接读取缓冲区的更为有效的版本，从而避免每次调用都要进行额外的数组分配。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.Seek 方法

Stream
.
.
::
.
Seek 方法
Stream 类

当在派生类中重写时，设置当前流中的位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Function Seek ( _
    offset As Long, _
    origin As SeekOrigin _
) As Long
public abstract long Seek(
    long offset,
    SeekOrigin origin
)
public:
virtual long long Seek(
    long long offset,
    SeekOrigin origin
) abstract
abstract Seek :
        offset:int64 *
        origin:SeekOrigin -> int64

参数

offset
类型： System Int64
相对于 origin 参数的字节偏移量。
origin
类型： System.IO SeekOrigin
SeekOrigin 类型的值，指示用于获取新位置的参考点。

返回值

类型： System Int64
当前流中的新位置。
异常 | 条件
IOException | 发生 I/O 错误。
NotSupportedException | 流不支持查找，例如在流通过管道或控制台输出构造的情况下即为如此。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

使用 CanSeek 属性确定当前实例是否支持查找。

如果 offset 为负，则要求新位置位于 origin 指定的位置之前，其间隔相差 offset 指定的字节数。如果 offset 为零 (0)，则要求新位置位于由 origin 指定的位置处。如果 offset 为正，则要求新位置位于 origin 指定的位置之后，其间隔相差 offset 指定的字节数。 如果 offset 为负，则要求新位置位于 origin 指定的位置之前，其间隔相差 offset 指定的字节数。如果 offset 为零 (0)，则要求新位置位于由 origin 指定的位置处。如果 offset 为正，则要求新位置位于 origin 指定的位置之后，其间隔相差 offset 指定的字节数。 如果 offset 为负，则要求新位置位于 origin 指定的位置之前，其间隔相差 offset 指定的字节数。如果 offset 为零 (0)，则要求新位置位于由 origin 指定的位置处。如果 offset 为正，则要求新位置位于 origin 指定的位置之后，其间隔相差 offset 指定的字节数。

从 Stream 派生且支持查找的类必须重写此方法以提供上述功能。

支持搜索到超出流长度的任何位置。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.SetLength 方法

Stream
.
.
::
.
SetLength 方法
Stream 类

当在派生类中重写时，设置当前流的长度。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Sub SetLength ( _
    value As Long _
)
public abstract void SetLength(
    long value
)
public:
virtual void SetLength(
    long long value
) abstract
abstract SetLength :
        value:int64 -> unit

参数

value
类型： System Int64
所需的当前流的长度（以字节表示）。
异常 | 条件
IOException | 发生 I/O 错误。
NotSupportedException | 流不支持写入和查找，例如在流通过管道或控制台输出构造的情况下即为如此。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果指定值小于流的当前长度，则流被截断。如果指定值大于当前流的长度，则流被扩展。如果流被扩展，则流的新旧长度之间的内容是未定义的。 如果指定值小于流的当前长度，则流被截断。如果指定值大于当前流的长度，则流被扩展。如果流被扩展，则流的新旧长度之间的内容是未定义的。 如果指定值小于流的当前长度，则流被截断。如果指定值大于当前流的长度，则流被扩展。如果流被扩展，则流的新旧长度之间的内容是未定义的。

为了使 SetLength 生效，流必须支持写入和搜索。

使用 CanWrite 属性确定当前实例是否支持写入，使用 CanSeek 属性确定是否支持查找。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.Synchronized 方法

Stream
.
.
::
.
Synchronized 方法
Stream 类

在指定的 Stream 对象周围创建线程安全（同步）包装。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)> _
Public Shared Function Synchronized ( _
    stream As Stream _
) As Stream
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public static Stream Synchronized(
    Stream stream
)
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true)]
public:
static Stream^ Synchronized(
    Stream^ stream
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)>]
static member Synchronized :
        stream:Stream -> Stream

参数

stream
类型： System.IO Stream
要同步的 Stream 对象。

返回值

类型： System.IO Stream
一个线程安全的 Stream 对象。
异常 | 条件
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法返回一个类，该类包装指定的 Stream 对象并限制从多个线程访问它。对 Stream 对象的所有访问都是线程安全的。 此方法返回一个类，该类包装指定的 Stream 对象并限制从多个线程访问它。对 Stream 对象的所有访问都是线程安全的。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream ..::.Write 方法

Stream
.
.
::
.
Write 方法
Stream 类

当在派生类中重写时，向当前流中写入字节序列，并将此流中的当前位置提升写入的字节数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Sub Write ( _
    buffer As Byte(), _
    offset As Integer, _
    count As Integer _
)
public abstract void Write(
    byte[] buffer,
    int offset,
    int count
)
public:
virtual void Write(
    array<unsigned char>^ buffer,
    int offset,
    int count
) abstract
abstract Write :
        buffer:byte[] *
        offset:int *
        count:int -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

字节数组。此方法将 count 个字节从 buffer 复制到当前流。 字节数组。此方法将 count 个字节从 buffer 复制到当前流。
offset
类型： System Int32
buffer 中的从零开始的字节偏移量，从此处开始将字节复制到当前流。
count
类型： System Int32
要写入当前流的字节数。
异常 | 条件
ArgumentException | offset 与 count 的和大于缓冲区长度。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 count 为负。
IOException | 发生 I/O 错误。
NotSupportedException | 流不支持写入。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

使用 CanWrite 属性可确定当前实例是否支持写入。

如果写操作成功，则流中的位置将提升写入的字节数。如果出现异常，则流中的位置保持不变。 如果写操作成功，则流中的位置将提升写入的字节数。如果出现异常，则流中的位置保持不变。

默认实现调用异步 BeginWrite 方法。

下面的示例说明如何使用 Write 方法将输入流复制到输出流。

Const size As Integer = 4096
Dim bytes(4096) As Byte
Dim numBytes As Integer
numBytes = input.Read(bytes, 0, size)
While numBytes > 0
    output.Write(bytes, 0, numBytes)
    numBytes = input.Read(bytes, 0, size)
End While

const int size = 4096;
byte[] bytes = new byte[4096];
int numBytes;
while((numBytes = input.Read(bytes, 0, size)) > 0)
    output.Write(bytes, 0, numBytes);

const int size = 4096;
array<Byte>^ bytes = gcnew array<Byte>(4096);
int numBytes;
while ( (numBytes = input->Read( bytes, 0, size )) > 0 )
      output->Write( bytes, 0, numBytes );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.WriteByte 方法

Stream
.
.
::
.
WriteByte 方法
Stream 类

将一个字节写入流内的当前位置，并将流内的位置向前推进一个字节。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteByte ( _
    value As Byte _
)
public virtual void WriteByte(
    byte value
)
public:
virtual void WriteByte(
    unsigned char value
)
abstract WriteByte :
        value:byte -> unit
override WriteByte :
        value:byte -> unit

参数

value
类型： System Byte
要写入流的字节。
异常 | 条件
IOException | 发生 I/O 错误。
NotSupportedException | 该流不支持写入，或者该流已关闭。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

使用 CanWrite 属性可确定当前实例是否支持写入。

对实现者的说明

Stream 的默认实现创建一个新的单字节数组，然后调用 Write。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，提供一个直接写入缓冲区的有效得多的版本，以避免每次调用时都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Write。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，提供一个直接写入缓冲区的有效得多的版本，以避免每次调用时都要进行额外的数组分配。 Stream 的默认实现创建一个新的单字节数组，然后调用 Write。虽然这样做形式上是正确的，但效率不高。所有具有内部缓冲区的流都应重写此方法，提供一个直接写入缓冲区的有效得多的版本，以避免每次调用时都要进行额外的数组分配。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream 属性

Stream 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Stream 类

Stream 类型公开以下成员。

名称 说明
页首

参考

Stream 类
System.IO 命名空间


Stream ..::.CanRead 属性

Stream
.
.
::
.
CanRead 属性
Stream 类

当在派生类中重写时，获取指示当前流是否支持读取的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property CanRead As Boolean
    Get
public abstract bool CanRead { get; }
public:
virtual property bool CanRead {
    bool get () abstract;
}
abstract CanRead : bool

属性值

类型： System Boolean
如果流支持读取，为 true；否则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持读取，则调用 Read、ReadByte 和 BeginRead 方法将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

下面是使用 CanRead 属性的示例。

Imports System
Imports System.IO

Class TestRW

    Public Shared Sub Main()
        Dim fs As New FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Read)
        If fs.CanRead And fs.CanWrite Then
            Console.WriteLine("MyFile.txt can be both written to and read from.")
        Else
            If fs.CanRead Then
                Console.WriteLine("MyFile.txt is not writable.")
            End If
        End If
    End Sub
End Class

using System;
using System.IO;

class TestRW
{
    public static void Main(String[] args)
    {
        FileStream fs = new FileStream("MyFile.txt", FileMode.OpenOrCreate, FileAccess.Read);
        if (fs.CanRead && fs.CanWrite)
        {
            Console.WriteLine("MyFile.txt can be both written to and read from.");
        }
        else if (fs.CanRead)
        {
            Console.WriteLine("MyFile.txt is not writable.");
        }
    }
}

using namespace System;
using namespace System::IO;
int main( void )
{
   FileStream^ fs = gcnew FileStream( "MyFile.txt",FileMode::OpenOrCreate,FileAccess::Read );
   if ( fs->CanRead && fs->CanWrite )
   {
      Console::WriteLine( "MyFile.txt can be both written to and read from." );
   }
   else
   {
      Console::WriteLine( "MyFile.txt is not writable" );
   }

   return 0;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.CanSeek 属性

Stream
.
.
::
.
CanSeek 属性
Stream 类

当在派生类中重写时，获取指示当前流是否支持查找功能的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property CanSeek As Boolean
    Get
public abstract bool CanSeek { get; }
public:
virtual property bool CanSeek {
    bool get () abstract;
}
abstract CanSeek : bool

属性值

类型： System Boolean
如果流支持查找，为 true；否则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持查找，则对 Length、SetLength、Position 和 Seek 的调用将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.CanTimeout 属性

Stream
.
.
::
.
CanTimeout 属性
Stream 类

获取一个值，该值确定当前流是否可以超时。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Overridable ReadOnly Property CanTimeout As Boolean
    Get
[ComVisibleAttribute(false)]
public virtual bool CanTimeout { get; }
[ComVisibleAttribute(false)]
public:
virtual property bool CanTimeout {
    bool get ();
}
[<ComVisibleAttribute(false)>]
abstract CanTimeout : bool
[<ComVisibleAttribute(false)>]
override CanTimeout : bool

属性值

类型： System Boolean
一个确定当前流是否可以超时的值。

CanTimeout 属性总是返回 false。某些流实现要求不同的行为，如 NetworkStream，它在网络连接中断或丢失时超时。如果实现一个必须能够超时的流，应重写此属性以返回 true。 CanTimeout 属性总是返回 false。某些流实现要求不同的行为，如 NetworkStream，它在网络连接中断或丢失时超时。如果实现一个必须能够超时的流，应重写此属性以返回 true。 CanTimeout 属性总是返回 false。某些流实现要求不同的行为，如 NetworkStream，它在网络连接中断或丢失时超时。如果实现一个必须能够超时的流，应重写此属性以返回 true。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间
ReadTimeout
WriteTimeout


Stream ..::.CanWrite 属性

Stream
.
.
::
.
CanWrite 属性
Stream 类

当在派生类中重写时，获取指示当前流是否支持写入功能的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property CanWrite As Boolean
    Get
public abstract bool CanWrite { get; }
public:
virtual property bool CanWrite {
    bool get () abstract;
}
abstract CanWrite : bool

属性值

类型： System Boolean
如果流支持写入，为 true；否则为 false。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

如果从 Stream 派生的类不支持写入，则调用 Write、BeginWrite 或 WriteByte 将引发 NotSupportedException。

如果该流已关闭，此属性将返回 false。

下面是使用 CanWrite 属性的示例。

Imports System
Imports System.IO

Class TestRW

    Public Shared Sub Main()
        Dim fs As New FileStream("MyFile.txt", FileMode.OpenOrCreate, _
           FileAccess.Write)
        If fs.CanRead And fs.CanWrite Then
            Console.WriteLine("MyFile.txt can be both written to and read from.")
        Else
            If fs.CanWrite Then
                Console.WriteLine("MyFile.txt is writable.")
            End If
        End If
    End Sub
End Class

'This code outputs "MyFile.txt is writable."
'To get the output message "MyFile.txt can be both written to and read from.",
'change the FileAccess parameter to ReadWrite in the FileStream constructor.

using System;
using System.IO;

class TestRW
{
  public static void Main(String[] args)
  {
    FileStream fs = new FileStream("MyFile.txt", FileMode.OpenOrCreate,
       FileAccess.Write);
    if (fs.CanRead && fs.CanWrite) {
        Console.WriteLine("MyFile.txt can be both written to and read from.");
    }
    else if (fs.CanWrite) {
        Console.WriteLine("MyFile.txt is writable.");
    }
  }
}
//This code outputs "MyFile.txt is writable."
//To get the output message "MyFile.txt can be both written to and read from.",
//change the FileAccess parameter to ReadWrite in the FileStream constructor.

using namespace System;
using namespace System::IO;
int main()
{
   FileStream^ fs = gcnew FileStream( "MyFile.txt",FileMode::OpenOrCreate,FileAccess::Write );
   if ( fs->CanRead && fs->CanWrite )
   {
      Console::WriteLine( "MyFile.txt can be both written to and read from." );
   }
   else
   if ( fs->CanWrite )
   {
      Console::WriteLine( "MyFile.txt is writable." );
   }
}

//This code outputs "MyFile.txt is writable."
//To get the output message "MyFile.txt can be both written to and read from.",
//change the FileAccess parameter to ReadWrite in the FileStream constructor.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.Length 属性

Stream
.
.
::
.
Length 属性
Stream 类

当在派生类中重写时，获取用字节表示的流长度。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property Length As Long
    Get
public abstract long Length { get; }
public:
virtual property long long Length {
    long long get () abstract;
}
abstract Length : int64

属性值

类型： System Int64
用字节表示流长度的长值。
异常 | 条件
NotSupportedException | 从 Stream 派生的类不支持查找。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.Position 属性

Stream
.
.
::
.
Position 属性
Stream 类

当在派生类中重写时，获取或设置当前流中的位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride Property Position As Long
    Get
    Set
public abstract long Position { get; set; }
public:
virtual property long long Position {
    long long get () abstract;
    void set (long long value) abstract;
}
abstract Position : int64 with get, set

属性值

类型： System Int64
流中的当前位置。
异常 | 条件
IOException | 发生 I/O 错误。
NotSupportedException | 流不支持查找。
ObjectDisposedException | 在流关闭后调用方法。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

流必须支持查找，才能获取或设置位置。使用 CanSeek 属性确定流是否支持查找。 流必须支持查找，才能获取或设置位置。使用 CanSeek 属性确定流是否支持查找。

支持搜索到超出流长度的任何位置。

Position 属性不会跟踪流中已使用的、跳过的或这两种情况的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


Stream ..::.ReadTimeout 属性

Stream
.
.
::
.
ReadTimeout 属性
Stream 类

获取或设置一个值（以毫秒为单位），该值确定流在超时前尝试读取多长时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Overridable Property ReadTimeout As Integer
    Get
    Set
[ComVisibleAttribute(false)]
public virtual int ReadTimeout { get; set; }
[ComVisibleAttribute(false)]
public:
virtual property int ReadTimeout {
    int get ();
    void set (int value);
}
[<ComVisibleAttribute(false)>]
abstract ReadTimeout : int with get, set
[<ComVisibleAttribute(false)>]
override ReadTimeout : int with get, set

属性值

类型： System Int32
一个确定流在超时前尝试读取多长时间的值（以毫秒为单位）。
异常 | 条件
InvalidOperationException | ReadTimeout 方法总是引发 InvalidOperationException。

对继承者的说明

应重写 ReadTimeout 属性以提供流的相应行为。如果流不支持超时，则此属性应引发 InvalidOperationException。 应重写 ReadTimeout 属性以提供流的相应行为。如果流不支持超时，则此属性应引发 InvalidOperationException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间


Stream ..::.WriteTimeout 属性

Stream
.
.
::
.
WriteTimeout 属性
Stream 类

获取或设置一个值（以毫秒为单位），该值确定流在超时前尝试写入多长时间。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<ComVisibleAttribute(False)> _
Public Overridable Property WriteTimeout As Integer
    Get
    Set
[ComVisibleAttribute(false)]
public virtual int WriteTimeout { get; set; }
[ComVisibleAttribute(false)]
public:
virtual property int WriteTimeout {
    int get ();
    void set (int value);
}
[<ComVisibleAttribute(false)>]
abstract WriteTimeout : int with get, set
[<ComVisibleAttribute(false)>]
override WriteTimeout : int with get, set

属性值

类型： System Int32
一个确定流在超时前尝试写入多长时间的值（以毫秒为单位）。
异常 | 条件
InvalidOperationException | WriteTimeout 方法总是引发 InvalidOperationException。

对继承者的说明

应重写 WriteTimeout 属性以提供流的相应行为。如果流不支持超时，则此属性应引发 InvalidOperationException。 应重写 WriteTimeout 属性以提供流的相应行为。如果流不支持超时，则此属性应引发 InvalidOperationException。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

Stream 类
Stream 成员
System.IO 命名空间


StreamReader 类

StreamReader 类
成员

实现一个 TextReader，使其以一种特定的编码从字节流中读取字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class StreamReader _
    Inherits TextReader
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamReader : TextReader
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class StreamReader : public TextReader
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type StreamReader =
    class
        inherit TextReader
    end

StreamReader 旨在以一种特定的编码输入字符，而 Stream 类用于字节的输入和输出。使用 StreamReader 读取标准文本文件的各行信息。 StreamReader 旨在以一种特定的编码输入字符，而 Stream 类用于字节的输入和输出。使用 StreamReader 读取标准文本文件的各行信息。

除非另外指定，StreamReader 的默认编码为 UTF-8，而不是当前系统的 ANSI 代码页。UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。 除非另外指定，StreamReader 的默认编码为 UTF-8，而不是当前系统的 ANSI 代码页。UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。

默认情况下，StreamReader 不是线程安全的。有关线程安全包装的信息，请参见 TextReader..::.Synchronized。 默认情况下，StreamReader 不是线程安全的。有关线程安全包装的信息，请参见 TextReader..::.Synchronized。

Read(array<Char>[]()[], Int32, Int32) 和 Write(array<Char>[]()[], Int32, Int32) 方法重载读取和写入 count 参数指定的字符数。这些区别于 BufferedStream..::.Read 和 BufferedStream..::.Write，后两者读写由 count 参数指定的字节数。仅将 BufferedStream 方法用于读写字节数组元素的整型数。 Read(array<Char>[]()[], Int32, Int32) 和 Write(array<Char>[]()[], Int32, Int32) 方法重载读取和写入 count 参数指定的字符数。这些区别于 BufferedStream..::.Read 和 BufferedStream..::.Write，后两者读写由 count 参数指定的字节数。仅将 BufferedStream 方法用于读写字节数组元素的整型数。 Read(array<Char>[]()[], Int32, Int32) 和 Write(array<Char>[]()[], Int32, Int32) 方法重载读取和写入 count 参数指定的字符数。这些区别于 BufferedStream..::.Read 和 BufferedStream..::.Write，后两者读写由 count 参数指定的字节数。仅将 BufferedStream 方法用于读写字节数组元素的整型数。

说明 说明

读取 Stream 时，使用大小与流的内部缓冲区相同的缓冲区会更有效。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例使用 StreamReader 的实例从文件中读取文本。

Imports System
Imports System.IO

Class Test
    Public Shared Sub Main()
        Try
            ' Create an instance of StreamReader to read from a file.
            Dim sr As StreamReader = New StreamReader("TestFile.txt")
            Dim line As String
            ' Read and display the lines from the file until the end
            ' of the file is reached.
            Do
                line = sr.ReadLine()
                Console.WriteLine(Line)
            Loop Until line Is Nothing
            sr.Close()
        Catch E As Exception
            ' Let the user know what went wrong.
            Console.WriteLine("The file could not be read:")
            Console.WriteLine(E.Message)
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                string line;
                // Read and display lines from the file until the end of
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      // Create an instance of StreamReader to read from a file.
      StreamReader^ sr = gcnew StreamReader( "TestFile.txt" );
      try
      {
         String^ line;

         // Read and display lines from the file until the end of
         // the file is reached.
         while ( line = sr->ReadLine() )
         {
            Console::WriteLine( line );
         }
      }
      finally
      {
         if ( sr )
            delete (IDisposable^)sr;
      }
   }
   catch ( Exception^ e )
   {
      // Let the user know what went wrong.
      Console::WriteLine( "The file could not be read:" );
      Console::WriteLine( e->Message );
   }
}

System.IO System.IO..::.StreamReaderStreamReader
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 成员
System.IO 命名空间
Encoding
Stream
StreamWriter

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


StreamReader 成员

StreamReader 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

实现一个 TextReader，使其以一种特定的编码从字节流中读取字符。

StreamReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

StreamReader 类
System.IO 命名空间


StreamReader 构造函数

StreamReader 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

为指定的流初始化 StreamReader 类的新实例。

名称 说明
页首

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间


StreamReader 构造函数 (Stream)

StreamReader 构造函数 (Stream)
StreamReader 类

为指定的流初始化 StreamReader 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream _
)
public StreamReader(
    Stream stream
)
public:
StreamReader(
    Stream^ stream
)
new :
        stream:Stream -> StreamReader

参数

stream
类型： System.IO Stream
要读取的流。
异常 | 条件
ArgumentException | stream 不支持读取。
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此构造函数将编码初始化为 UTF8Encoding，使用 stream 参数初始化 BaseStream 属性，并将内部缓冲区初始化为默认大小。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim fs As FileStream = New FileStream(path, FileMode.Open)

            Dim sr As StreamReader = New StreamReader(fs)

            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
            fs.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (FileStream fs = new FileStream(path, FileMode.Open))
            {
                using (StreamReader sr = new StreamReader(fs))
                {

                    while (sr.Peek() >= 0)
                    {
                        Console.WriteLine(sr.ReadLine());
                    }
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      FileStream^ fs = gcnew FileStream( path,FileMode::Open );
      try
      {
         StreamReader^ sr = gcnew StreamReader( fs );
         try
         {
            while ( sr->Peek() >= 0 )
            {
               Console::WriteLine( sr->ReadLine() );
            }
         }
         finally
         {
            delete sr;
         }
      }
      finally
      {
         delete fs;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (String)

StreamReader 构造函数 (String)
StreamReader 类

为指定的文件名初始化 StreamReader 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String _
)
public StreamReader(
    string path
)
public:
StreamReader(
    String^ path
)
new :
        path:string -> StreamReader

参数

path
类型： System String
要读取的完整文件路径。
异常 | 条件
ArgumentException | path 为空字符串 ("")。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 无法找到该文件。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | path 包括不正确或无效的文件名、目录名或卷标的语法。

完整的文件路径由 path 参数指定。使用了默认的字符编码和默认的缓冲区大小。 完整的文件路径由 path 参数指定。使用了默认的字符编码和默认的缓冲区大小。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                while (sr.Peek() >= 0)
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         while ( sr->Peek() >= 0 )
         {
            Console::WriteLine( sr->ReadLine() );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (Stream, Boolean)

StreamReader 构造函数 (Stream, Boolean)
StreamReader 类

用指定的字节顺序标记检测选项，为指定的流初始化 StreamReader 类的一个新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    detectEncodingFromByteOrderMarks As Boolean _
)
public StreamReader(
    Stream stream,
    bool detectEncodingFromByteOrderMarks
)
public:
StreamReader(
    Stream^ stream,
    bool detectEncodingFromByteOrderMarks
)
new :
        stream:Stream *
        detectEncodingFromByteOrderMarks:bool -> StreamReader

参数

stream
类型： System.IO Stream
要读取的流。
detectEncodingFromByteOrderMarks
类型： System Boolean
指示是否在文件头查找字节顺序标记。
异常 | 条件
ArgumentException | stream 不支持读取。
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此构造函数将编码初始化为 UTF8Encoding，使用 stream 参数初始化 BaseStream 属性，并将内部缓冲区初始化为默认大小。

detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (Stream, Encoding)

StreamReader 构造函数 (Stream, Encoding)
StreamReader 类

用指定的字符编码为指定的流初始化 StreamReader 类的一个新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    encoding As Encoding _
)
public StreamReader(
    Stream stream,
    Encoding encoding
)
public:
StreamReader(
    Stream^ stream,
    Encoding^ encoding
)
new :
        stream:Stream *
        encoding:Encoding -> StreamReader

参数

stream
类型： System.IO Stream
要读取的流。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
ArgumentException | stream 不支持读取。
ArgumentNullException | stream 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

字符编码由 encoding 参数设置，并且使用默认的缓冲区大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 字符编码由 encoding 参数设置，并且使用默认的缓冲区大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 字符编码由 encoding 参数设置，并且使用默认的缓冲区大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 字符编码由 encoding 参数设置，并且使用默认的缓冲区大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 字符编码由 encoding 参数设置，并且使用默认的缓冲区大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (String, Boolean)

StreamReader 构造函数 (String, Boolean)
StreamReader 类

为指定的文件名初始化 StreamReader 类的新实例，带有指定的字节顺序标记检测选项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    detectEncodingFromByteOrderMarks As Boolean _
)
public StreamReader(
    string path,
    bool detectEncodingFromByteOrderMarks
)
public:
StreamReader(
    String^ path,
    bool detectEncodingFromByteOrderMarks
)
new :
        path:string *
        detectEncodingFromByteOrderMarks:bool -> StreamReader

参数

path
类型： System String
要读取的完整文件路径。
detectEncodingFromByteOrderMarks
类型： System Boolean
指示是否在文件头查找字节顺序标记。
异常 | 条件
ArgumentException | path 为空字符串 ("")。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 无法找到该文件。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | path 包括不正确或无效的文件名、目录名或卷标的语法。

此构造函数将编码初始化为 UTF8Encoding，使用 stream 参数初始化 BaseStream 属性，并将内部缓冲区初始化为默认大小。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (String, Encoding)

StreamReader 构造函数 (String, Encoding)
StreamReader 类

用指定的字符编码，为指定的文件名初始化 StreamReader 类的一个新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    encoding As Encoding _
)
public StreamReader(
    string path,
    Encoding encoding
)
public:
StreamReader(
    String^ path,
    Encoding^ encoding
)
new :
        path:string *
        encoding:Encoding -> StreamReader

参数

path
类型： System String
要读取的完整文件路径。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
ArgumentException | path 为空字符串 ("")。
ArgumentNullException | path 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 无法找到该文件。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
NotSupportedException | path 包括不正确或无效的文件名、目录名或卷标的语法。

此构造函数按 encoding 参数的指定初始化编码，并将内部缓冲区初始化为默认大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 此构造函数按 encoding 参数的指定初始化编码，并将内部缓冲区初始化为默认大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 此构造函数按 encoding 参数的指定初始化编码，并将内部缓冲区初始化为默认大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 此构造函数按 encoding 参数的指定初始化编码，并将内部缓冲区初始化为默认大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 此构造函数按 encoding 参数的指定初始化编码，并将内部缓冲区初始化为默认大小。StreamReader 对象尝试通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (Stream, Encoding, Boolean)

StreamReader 构造函数 (Stream, Encoding, Boolean)
StreamReader 类

为指定的流初始化 StreamReader 类的新实例，带有指定的字符编码和字节顺序标记检测选项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    encoding As Encoding, _
    detectEncodingFromByteOrderMarks As Boolean _
)
public StreamReader(
    Stream stream,
    Encoding encoding,
    bool detectEncodingFromByteOrderMarks
)
public:
StreamReader(
    Stream^ stream,
    Encoding^ encoding,
    bool detectEncodingFromByteOrderMarks
)
new :
        stream:Stream *
        encoding:Encoding *
        detectEncodingFromByteOrderMarks:bool -> StreamReader

参数

stream
类型： System.IO Stream
要读取的流。
encoding
类型： System.Text Encoding
要使用的字符编码。
detectEncodingFromByteOrderMarks
类型： System Boolean
指示是否在文件头查找字节顺序标记。
异常 | 条件
ArgumentException | stream 不支持读取。
ArgumentNullException | stream 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此构造函数按 encoding 参数指定的要求初始化编码，并使用 stream 参数初始化 BaseStream 属性，同时将内部缓冲区初始化为默认大小。

detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (String, Encoding, Boolean)

StreamReader 构造函数 (String, Encoding, Boolean)
StreamReader 类

为指定的文件名初始化 StreamReader 类的新实例，带有指定的字符编码和字节顺序标记检测选项。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    encoding As Encoding, _
    detectEncodingFromByteOrderMarks As Boolean _
)
public StreamReader(
    string path,
    Encoding encoding,
    bool detectEncodingFromByteOrderMarks
)
public:
StreamReader(
    String^ path,
    Encoding^ encoding,
    bool detectEncodingFromByteOrderMarks
)
new :
        path:string *
        encoding:Encoding *
        detectEncodingFromByteOrderMarks:bool -> StreamReader

参数

path
类型： System String
要读取的完整文件路径。
encoding
类型： System.Text Encoding
要使用的字符编码。
detectEncodingFromByteOrderMarks
类型： System Boolean
指示是否在文件头查找字节顺序标记。
异常 | 条件
ArgumentException | path 为空字符串 ("")。
ArgumentNullException | path 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 无法找到该文件。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
NotSupportedException | path 包括不正确或无效的文件名、目录名或卷标的语法。

此构造函数按 encoding 参数的指定初始化编码，并将内部缓冲区初始化为默认大小。

detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (Stream, Encoding, Boolean, Int32)

StreamReader 构造函数 (Stream, Encoding, Boolean, Int32)
StreamReader 类

为指定的流初始化 StreamReader 类的新实例，带有指定的字符编码、字节顺序标记检测选项和缓冲区大小。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    encoding As Encoding, _
    detectEncodingFromByteOrderMarks As Boolean, _
    bufferSize As Integer _
)
public StreamReader(
    Stream stream,
    Encoding encoding,
    bool detectEncodingFromByteOrderMarks,
    int bufferSize
)
public:
StreamReader(
    Stream^ stream,
    Encoding^ encoding,
    bool detectEncodingFromByteOrderMarks,
    int bufferSize
)
new :
        stream:Stream *
        encoding:Encoding *
        detectEncodingFromByteOrderMarks:bool *
        bufferSize:int -> StreamReader

参数

stream
类型： System.IO Stream
要读取的流。
encoding
类型： System.Text Encoding
要使用的字符编码。
detectEncodingFromByteOrderMarks
类型： System Boolean
指示是否在文件头查找字节顺序标记。
bufferSize
类型： System Int32
最小缓冲区大小。
异常 | 条件
ArgumentException | 流不支持读取。
ArgumentNullException | stream 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | bufferSize 小于或等于零。

缓冲区大小（以 16 位字符数表示）由 bufferSize 参数设置。如果 bufferSize 小于最小允许大小（128 个字符），则使用最小允许大小。 缓冲区大小（以 16 位字符数表示）由 bufferSize 参数设置。如果 bufferSize 小于最小允许大小（128 个字符），则使用最小允许大小。

使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

说明 说明

读取 Stream 时，使用大小与流的内部缓冲区相同的缓冲区会更有效。
警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 构造函数 (String, Encoding, Boolean, Int32)

StreamReader 构造函数 (String, Encoding, Boolean, Int32)
StreamReader 类

为指定的文件名初始化 StreamReader 类的新实例，带有指定字符编码、字节顺序标记检测选项和缓冲区大小。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    encoding As Encoding, _
    detectEncodingFromByteOrderMarks As Boolean, _
    bufferSize As Integer _
)
public StreamReader(
    string path,
    Encoding encoding,
    bool detectEncodingFromByteOrderMarks,
    int bufferSize
)
public:
StreamReader(
    String^ path,
    Encoding^ encoding,
    bool detectEncodingFromByteOrderMarks,
    int bufferSize
)
new :
        path:string *
        encoding:Encoding *
        detectEncodingFromByteOrderMarks:bool *
        bufferSize:int -> StreamReader

参数

path
类型： System String
要读取的完整文件路径。
encoding
类型： System.Text Encoding
要使用的字符编码。
detectEncodingFromByteOrderMarks
类型： System Boolean
指示是否在文件头查找字节顺序标记。
bufferSize
类型： System Int32
最小缓冲区大小（以 16 位字符的数目为单位）。
异常 | 条件
ArgumentException | path 为空字符串 ("")。
ArgumentNullException | path 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
FileNotFoundException | 无法找到该文件。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
NotSupportedException | path 包括不正确或无效的文件名、目录名或卷标的语法。
ArgumentOutOfRangeException | buffersize 小于或等于零。

此构造函数按 encoding 参数指定的要求初始化编码。

使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。 使用此构造函数可以在第一次从 StreamReader 对象中读取时更改编码。detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头，该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则，使用用户提供的编码。有关更多信息，请参见 Encoding..::.GetPreamble 方法。

缓冲区大小（以 16 位字符数表示）由 bufferSize 参数设置。如果 bufferSize 小于最小允许大小（128 个字符），则使用最小允许大小。 缓冲区大小（以 16 位字符数表示）由 bufferSize 参数设置。如果 bufferSize 小于最小允许大小（128 个字符），则使用最小允许大小。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示此 StreamReader 构造函数。

Private Sub getNewStreamReader()
    Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'file using a buffer and byte order mark detection
    Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'file with byte order mark detection = false
    Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a file
    Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'file with byte order mark detection = false
    Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
    'Get a new StreamReader from a file
    Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false and a buffer
    Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII, False, 512)
    'Get a new StreamReader in ASCII format from a
    'FileStream with byte order mark detection = false
    Dim SrAsciiFromStreamFalse = New StreamReader(S, _
        System.Text.Encoding.ASCII, False)
    'Get a new StreamReader in ASCII format from a FileStream
    Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
        System.Text.Encoding.ASCII)
    'Get a new StreamReader from a
    'FileStream with byte order mark detection = false
    Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
    'Get a new StreamReader from a FileStream
    Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

private void getNewStreamReader()
{
    //Get a new StreamReader in ASCII format from a
    //file using a buffer and byte order mark detection
    StreamReader srAsciiFromFileFalse512 =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //file with byte order mark detection = false
    StreamReader srAsciiFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a file
    StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //file with byte order mark detection = false
    StreamReader srFromFileFalse =
        new StreamReader("C:\\Temp\\Test.txt", false);
    //Get a new StreamReader from a file
    StreamReader srFromFile =
        new StreamReader("C:\\Temp\\Test.txt");
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false and a buffer
    StreamReader srAsciiFromStreamFalse512 = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false, 512);
    //Get a new StreamReader in ASCII format from a
    //FileStream with byte order mark detection = false
    StreamReader srAsciiFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII, false);
    //Get a new StreamReader in ASCII format from a FileStream
    StreamReader srAsciiFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        System.Text.Encoding.ASCII);
    //Get a new StreamReader from a
    //FileStream with byte order mark detection = false
    StreamReader srFromStreamFalse = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
        false);
    //Get a new StreamReader from a FileStream
    StreamReader srFromStream = new StreamReader(
        (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

   void getNewStreamReader()
   {

      //Get a new StreamReader in ASCII format from a
      //file using a buffer and byte order mark detection
      StreamReader^ srAsciiFromFileFalse512 = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //file with byte order mark detection = false
      StreamReader^ srAsciiFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a file
      StreamReader^ srAsciiFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt",System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //file with byte order mark detection = false
      StreamReader^ srFromFileFalse = gcnew StreamReader(  "C:\\Temp\\Test.txt",false );

      //Get a new StreamReader from a file
      StreamReader^ srFromFile = gcnew StreamReader(  "C:\\Temp\\Test.txt" );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false and a buffer
      StreamReader^ srAsciiFromStreamFalse512 = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false,512 );

      //Get a new StreamReader in ASCII format from a
      //FileStream with byte order mark detection = false
      StreamReader^ srAsciiFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII,false );

      //Get a new StreamReader in ASCII format from a FileStream
      StreamReader^ srAsciiFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),System::Text::Encoding::ASCII );

      //Get a new StreamReader from a
      //FileStream with byte order mark detection = false
      StreamReader^ srFromStreamFalse = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ),false );

      //Get a new StreamReader from a FileStream
      StreamReader^ srFromStream = gcnew StreamReader( File::OpenRead(  "C:\\Temp\\Test.txt" ) );
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
StreamReader 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 字段

StreamReader 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

StreamReader 类型公开以下成员。

名称 说明
页首

参考

StreamReader 类
System.IO 命名空间


StreamReader ..::.Null 字段

StreamReader
.
.
::
.
Null 字段
StreamReader 类

空流周围的 StreamReader。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly Null As StreamReader
public static readonly StreamReader Null
public:
static initonly StreamReader^ Null
static val Null: StreamReader

在 Null 上调用读方法时，总是返回零。在 Null 上调用 ReadLine 时，返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 在 Null 上调用读方法时，总是返回零。在 Null 上调用 ReadLine 时，返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 方法

StreamReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

StreamReader 类型公开以下成员。

名称 说明
页首

参考

StreamReader 类
System.IO 命名空间


StreamReader ..::.Close 方法

StreamReader
.
.
::
.
Close 方法
StreamReader 类

关闭 StreamReader 对象和基础流，并释放与读取器关联的所有系统资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

此方法重写 Close 方法。

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，在这二者中，某些字符只有在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，在这二者中，某些字符只有在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，在这二者中，某些字符只有在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，在这二者中，某些字符只有在编码器收到相邻的一个或多个字符后才能进行编码。

调用 Close 后，对读取器进行的任何操作都可能引发异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.DiscardBufferedData 方法

StreamReader
.
.
::
.
DiscardBufferedData 方法
StreamReader 类

允许 StreamReader 对象丢弃其当前数据。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub DiscardBufferedData
public void DiscardBufferedData()
public:
void DiscardBufferedData()
member DiscardBufferedData : unit -> unit

使用 DiscardBufferedData 查找到基础流中的一个已知位置并从这一新位置开始读取，或者多次读取 StreamReader 对象的内容。因为此方法可导致性能下降，所以要少用，而且仅在特定情形下需要时才使用它。 使用 DiscardBufferedData 查找到基础流中的一个已知位置并从这一新位置开始读取，或者多次读取 StreamReader 对象的内容。因为此方法可导致性能下降，所以要少用，而且仅在特定情形下需要时才使用它。

因为读取方法不更新基础流的当前位置，所以一些类实例返回的字符会多于流中实际的字符数。解决此问题的一个办法是使用 DiscardBufferedData，它使 StreamReader 对象丢弃其内部缓冲区的内容。 因为读取方法不更新基础流的当前位置，所以一些类实例返回的字符会多于流中实际的字符数。解决此问题的一个办法是使用 DiscardBufferedData，它使 StreamReader 对象丢弃其内部缓冲区的内容。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.Dispose 方法

StreamReader
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

名称 说明
页首

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间


StreamReader ..::.Dispose 方法 (Boolean)

StreamReader
.
.
::
.
Dispose 方法 (Boolean)
StreamReader 类

关闭基础流，释放 StreamReader 使用的未托管资源，同时还可以根据需要释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的 Dispose 方法，将disposing参数设为真。Finalize 调用 Dispose，将disposing设为假。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的 Dispose 方法，将disposing参数设为真。Finalize 调用 Dispose，将disposing设为假。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的 Dispose 方法，将disposing参数设为真。Finalize 调用 Dispose，将disposing设为假。

当 disposing 参数为 true 时，此方法释放由该 StreamReader 对象引用的任何托管对象持有的全部资源。此方法调用每个被引用对象的 Dispose 方法。 当 disposing 参数为 true 时，此方法释放由该 StreamReader 对象引用的任何托管对象持有的全部资源。此方法调用每个被引用对象的 Dispose 方法。

.

对继承者的说明

Dispose 可以由其他对象多次调用。重写 Dispose 时，请注意不要引用在以前调用 Dispose[cref,...] 时已释放的对象。有关如何实现 Dispose 的更多信息，请参见 实现 Dispose 方法。 Dispose 可以由其他对象多次调用。重写 Dispose 时，请注意不要引用在以前调用 Dispose[cref,...] 时已释放的对象。有关如何实现 Dispose 的更多信息，请参见 实现 Dispose 方法。 Dispose 可以由其他对象多次调用。重写 Dispose 时，请注意不要引用在以前调用 Dispose[cref,...] 时已释放的对象。有关如何实现 Dispose 的更多信息，请参见 实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.MemberwiseClone 方法

StreamReader
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

名称 说明
页首

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间


StreamReader ..::.Peek 方法

StreamReader
.
.
::
.
Peek 方法
StreamReader 类

返回下一个可用的字符，但不使用它。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Peek As Integer
public override int Peek()
public:
virtual int Peek() override
abstract Peek : unit -> int
override Peek : unit -> int

返回值

类型： System Int32
表示下一个要读取的字符的整数，或者，如果没有要读取的字符或该流不支持查找，则为 -1。
异常 | 条件
IOException | 发生 I/O 错误。

Peek 方法返回一个整数值以便确定是否到达文件末尾，或发生其他错误。这样一来，用户在将返回值强制转换为 Char 类型之前就可以首先检查该值是否为 -1。 Peek 方法返回一个整数值以便确定是否到达文件末尾，或发生其他错误。这样一来，用户在将返回值强制转换为 Char 类型之前就可以首先检查该值是否为 -1。

此方法重写 Peek。

Peek 不会更改 StreamReader 对象的当前位置。

下面的代码示例从文件中读取行，一直读到文件尾。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() > -1
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {

                while (sr.Peek() > -1)
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         while ( sr->Peek() > -1 )
         {
            Console::WriteLine( sr->ReadLine() );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.Read 方法

StreamReader
.
.
::
.
Read 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

读取输入流中的下一个字符或下一组字符。

名称 说明
页首

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间


StreamReader ..::.Read 方法

StreamReader
.
.
::
.
Read 方法
StreamReader 类

读取输入流中的下一个字符并使该字符的位置提升一个字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read As Integer
public override int Read()
public:
virtual int Read() override
abstract Read : unit -> int
override Read : unit -> int

返回值

类型： System Int32
输入流中表示为 Int32 对象的下一个字符。如果不再有可用的字符，则为 -1。
异常 | 条件
IOException | 发生 I/O 错误。

此方法重写 Read。

此方法返回一个整数，以便在到达流的末尾时可以返回 -1。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 Read 方法的简单用法。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() >= 0
                Console.Write(Convert.ToChar(sr.Read()))
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                while (sr.Peek() >= 0)
                {
                    Console.Write((char)sr.Read());
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         while ( sr->Peek() >= 0 )
         {
            Console::Write( (Char)sr->Read() );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

下面的代码示例演示如何使用 Read()()() 方法重载读取单个字符，并将 ASCII 整数的输出格式设置为十进制和十六进制数。

Imports System
Imports System.IO

Class StrmRdrRead

   Public Shared Sub Main()
      'Create a FileInfo instance representing an existing text file.
      Dim MyFile As New FileInfo("c:\csc.txt")
      'Instantiate a StreamReader to read from the text file.
      Dim sr As StreamReader = MyFile.OpenText()
      'Read a single character.
      Dim FirstChar As Integer = sr.Read()
      'Display the ASCII number of the character read in both decimal and hexadecimal format.
      Console.WriteLine("The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.", FirstChar, FirstChar)
      sr.Close()
   End Sub 'Main
End Class 'StrmRdrRead

using System;
using System.IO;

class StrmRdrRead
{
public static void Main()
    {
    //Create a FileInfo instance representing an existing text file.
    FileInfo MyFile=new FileInfo(@"c:\csc.txt");
    //Instantiate a StreamReader to read from the text file.
    StreamReader sr=MyFile.OpenText();
    //Read a single character.
    int FirstChar=sr.Read();
    //Display the ASCII number of the character read in both decimal and hexadecimal format.
    Console.WriteLine("The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.",
        FirstChar, FirstChar);
    //
    sr.Close();
    }
}

using namespace System;
using namespace System::IO;
int main()
{

   //Create a FileInfo instance representing an existing text file.
   FileInfo^ MyFile = gcnew FileInfo( "c:\\csc.txt" );

   //Instantiate a StreamReader to read from the text file.
   StreamReader^ sr = MyFile->OpenText();

   //Read a single character.
   int FirstChar = sr->Read();

   //Display the ASCII number of the character read in both decimal and hexadecimal format.
   Console::WriteLine( "The ASCII number of the first character read is {0:D} in decimal and {1:X} in hexadecimal.", FirstChar, FirstChar );

   //
   sr->Close();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.Read 方法 ( array<Char >[]()[], Int32, Int32)

StreamReader
.
.
::
.
Read 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
StreamReader 类

从 index 开始，从当前流中将最多的 count 个字符读入 buffer。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read ( _
    <OutAttribute> buffer As Char(), _
    index As Integer, _
    count As Integer _
) As Integer
public override int Read(
    char[] buffer,
    int index,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<wchar_t>^ buffer,
    int index,
    int count
) override
abstract Read :
        buffer:char[] byref *
        index:int *
        count:int -> int
override Read :
        buffer:char[] byref *
        index:int *
        count:int -> int

参数

buffer
类型：
array<
System Char
>
[]
()
[]

此方法返回时，包含指定的字符数组，该数组的 index 和 (index + count - 1) 之间的值由从当前源中读取的字符替换。
index
类型： System Int32
开始写入的 buffer 的索引。
count
类型： System Int32
最多读取的字符数。

返回值

类型： System Int32
已读取的字符数，或者如果已到达流的末尾并且未读取任何数据，则为 0。该数小于或等于 count 参数，具体取决于流中是否有可用的数据。 已读取的字符数，或者如果已到达流的末尾并且未读取任何数据，则为 0。该数小于或等于 count 参数，具体取决于流中是否有可用的数据。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
IOException | 出现 I/O 错误，如流被关闭。

此方法重写 Read。

此方法返回一个整数，以便在到达流的末尾时可以返回 0。

使用 Read 方法时，较为高效的方法是使用与流的内部缓冲区大小一致的缓冲区，其中内部缓冲区设置为您想要的块大小，并始终读取小于此块大小的内容。如果构造流时未指定内部缓冲区大小，则缓冲区的默认大小为 4 KB（4096 字节）。 使用 Read 方法时，较为高效的方法是使用与流的内部缓冲区大小一致的缓冲区，其中内部缓冲区设置为您想要的块大小，并始终读取小于此块大小的内容。如果构造流时未指定内部缓冲区大小，则缓冲区的默认大小为 4 KB（4096 字节）。

在读取 count 参数指定的字符数或到达文件末尾之后，此方法将返回。ReadBlock 是 Read 的条块化版本。 在读取 count 参数指定的字符数或到达文件末尾之后，此方法将返回。ReadBlock 是 Read 的条块化版本。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例一次读取五个字符，直至到达文件的末尾。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() >= 0
                'This is an arbitrary size for this example.
                Dim c(5) As Char
                sr.Read(c, 0, c.Length)
                'The output will look odd, because
                'only five characters are read at a time.
                Console.WriteLine(c)
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                //This is an arbitrary size for this example.
                char[] c = null;

                while (sr.Peek() >= 0)
                {
                    c = new char[5];
                    sr.Read(c, 0, c.Length);
                    //The output will look odd, because
                    //only five characters are read at a time.
                    Console.WriteLine(c);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         //This is an arbitrary size for this example.
         array<Char>^c = nullptr;
         while ( sr->Peek() >= 0 )
         {
            c = gcnew array<Char>(5);
            sr->Read( c, 0, c->Length );

            //The output will look odd, because
            //only five characters are read at a time.
            Console::WriteLine( c );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.ReadLine 方法

StreamReader
.
.
::
.
ReadLine 方法
StreamReader 类

从当前流中读取一行字符并将数据作为字符串返回。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadLine As String
public override string ReadLine()
public:
virtual String^ ReadLine() override
abstract ReadLine : unit -> string
override ReadLine : unit -> string

返回值

类型： System String
输入流中的下一行；如果到达了输入流的末尾，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
OutOfMemoryException | 内存不足，无法为返回的字符串分配缓冲区。
IOException | 发生 I/O 错误。

将行定义为后面跟有下列符号的字符序列：换行符（“\n”）、回车符（“\r”）或跟有换行符的回车符（“\r\n”）。返回的字符串不包含终止回车或换行符。如果到达了输入流的末尾，返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 将行定义为后面跟有下列符号的字符序列：换行符（“\n”）、回车符（“\r”）或跟有换行符的回车符（“\r\n”）。返回的字符串不包含终止回车或换行符。如果到达了输入流的末尾，返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 将行定义为后面跟有下列符号的字符序列：换行符（“\n”）、回车符（“\r”）或跟有换行符的回车符（“\r\n”）。返回的字符串不包含终止回车或换行符。如果到达了输入流的末尾，返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法重写 ReadLine。

如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StreamReader 对象访问它们。如果流中的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream 对象。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StreamReader 对象访问它们。如果流中的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream 对象。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StreamReader 对象访问它们。如果流中的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream 对象。

为避免这种情况并生成可靠的代码，应使用 Read 方法并将已读取的字符存储在预先分配的缓冲区内。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例从文件中读取行，一直读到文件尾。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                while (sr.Peek() >= 0)
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         while ( sr->Peek() >= 0 )
         {
            Console::WriteLine( sr->ReadLine() );
         }
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.ReadToEnd 方法

StreamReader
.
.
::
.
ReadToEnd 方法
StreamReader 类

从流的当前位置到末尾读取流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadToEnd As String
public override string ReadToEnd()
public:
virtual String^ ReadToEnd() override
abstract ReadToEnd : unit -> string
override ReadToEnd : unit -> string

返回值

类型： System String
字符串形式的流的其余部分（从当前位置到末尾）。如果当前位置位于流的末尾，则返回空字符串 ("")。 字符串形式的流的其余部分（从当前位置到末尾）。如果当前位置位于流的末尾，则返回空字符串 ("")。
异常 | 条件
OutOfMemoryException | 内存不足，无法为返回的字符串分配缓冲区。
IOException | 发生 I/O 错误。

此方法重写 TextReader..::.ReadToEnd。

当需要从流的当前位置到末尾读取所有输入时，ReadToEnd 的性能最佳。如果需要对从流中读取的字符数进行进一步的控制，请使用 Read(array<Char>[]()[], Int32, Int32) 方法重载，它通常可达到更佳的性能。 当需要从流的当前位置到末尾读取所有输入时，ReadToEnd 的性能最佳。如果需要对从流中读取的字符数进行进一步的控制，请使用 Read(array<Char>[]()[], Int32, Int32) 方法重载，它通常可达到更佳的性能。

ReadToEnd 假定流在到达末尾时会知道已到达末尾。对于交互式协议（服务器仅当被请求时才发送数据而且不关闭连接），ReadToEnd 可能被无限期阻止，应避免出现这种情况。 ReadToEnd 假定流在到达末尾时会知道已到达末尾。对于交互式协议（服务器仅当被请求时才发送数据而且不关闭连接），ReadToEnd 可能被无限期阻止，应避免出现这种情况。

请注意，当使用 Read 方法时，使用大小与流的内部缓冲区相同的缓冲区会更有效。如果构造流时未指定缓冲区大小，则缓冲区的默认大小为 4 KB（4096 字节）。 请注意，当使用 Read 方法时，使用大小与流的内部缓冲区相同的缓冲区会更有效。如果构造流时未指定缓冲区大小，则缓冲区的默认大小为 4 KB（4096 字节）。

如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StreamReader 对象访问它们。如果流中的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream 对象。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StreamReader 对象访问它们。如果流中的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream 对象。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StreamReader 对象访问它们。如果流中的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream 对象。

为避免这种情况并生成可靠的代码，应使用 Read 方法并将已读取的字符存储在预先分配的缓冲区内。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例在一次操作中一直读到文件的末尾。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            'This allows you to do one Read operation.
            Console.WriteLine(sr.ReadToEnd())
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path))
            {
                //This allows you to do one Read operation.
                Console.WriteLine(sr.ReadToEnd());
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }
      StreamWriter^ sw = gcnew StreamWriter( path );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path );
      try
      {
         //This allows you to do one Read operation.
         Console::WriteLine( sr->ReadToEnd() );
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader 属性

StreamReader 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamReader 类

StreamReader 类型公开以下成员。

名称 说明
页首

参考

StreamReader 类
System.IO 命名空间


StreamReader ..::.BaseStream 属性

StreamReader
.
.
::
.
BaseStream 属性
StreamReader 类

返回基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property BaseStream As Stream
    Get
public virtual Stream BaseStream { get; }
public:
virtual property Stream^ BaseStream {
    Stream^ get ();
}
abstract BaseStream : Stream
override BaseStream : Stream

属性值

类型： System.IO Stream
基础流。

StreamReader 可能缓冲输入，使得基础流的位置与 StreamReader 的位置不匹配。带 detectEncodingFromByteOrderMarks 参数的 StreamReader 构造函数可以在您第一次从 StreamReader 对象中读取时更改编码。 StreamReader 可能缓冲输入，使得基础流的位置与 StreamReader 的位置不匹配。带 detectEncodingFromByteOrderMarks 参数的 StreamReader 构造函数可以在您第一次从 StreamReader 对象中读取时更改编码。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.CurrentEncoding 属性

StreamReader
.
.
::
.
CurrentEncoding 属性
StreamReader 类

获取当前 StreamReader 对象正在使用的当前字符编码。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property CurrentEncoding As Encoding
    Get
public virtual Encoding CurrentEncoding { get; }
public:
virtual property Encoding^ CurrentEncoding {
    Encoding^ get ();
}
abstract CurrentEncoding : Encoding
override CurrentEncoding : Encoding

属性值

类型： System.Text Encoding
当前读取器所使用的当前字符编码。第一次调用 StreamReader 的任何 Read 方法后，该值可能会不同，因为直到第一次调用 Read 方法时，才会进行编码的自动检测。 当前读取器所使用的当前字符编码。第一次调用 StreamReader 的任何 Read 方法后，该值可能会不同，因为直到第一次调用 Read 方法时，才会进行编码的自动检测。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例获取指定的 StreamReader 对象的编码。

Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            'Use an encoding other than the default (UTF8).
            Dim sw As StreamWriter = New StreamWriter(path, False, New UnicodeEncoding())
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path, True)

            Do While sr.Peek() >= 0
                Console.Write(Convert.ToChar(sr.Read()))
            Loop

            'Test for the encoding after reading, or at least
            'after the first read.
            Console.WriteLine("The encoding used was {0}.", sr.CurrentEncoding)
            Console.WriteLine()

            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        try
        {
            if (File.Exists(path))
            {
                File.Delete(path);
            }

            //Use an encoding other than the default (UTF8).
            using (StreamWriter sw = new StreamWriter(path, false, new UnicodeEncoding()))
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path, true))
            {
                while (sr.Peek() >= 0)
                {
                    Console.Write((char)sr.Read());
                }

                //Test for the encoding after reading, or at least
                //after the first read.
                Console.WriteLine("The encoding used was {0}.", sr.CurrentEncoding);
                Console.WriteLine();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   try
   {
      if ( File::Exists( path ) )
      {
         File::Delete( path );
      }

      //Use an encoding other than the default (UTF8).
      StreamWriter^ sw = gcnew StreamWriter( path,false,gcnew UnicodeEncoding );
      try
      {
         sw->WriteLine( "This" );
         sw->WriteLine( "is some text" );
         sw->WriteLine( "to test" );
         sw->WriteLine( "Reading" );
      }
      finally
      {
         delete sw;
      }

      StreamReader^ sr = gcnew StreamReader( path,true );
      try
      {
         while ( sr->Peek() >= 0 )
         {
            Console::Write( (Char)sr->Read() );
         }

         //Test for the encoding after reading, or at least
         //after the first read.
         Console::WriteLine( "The encoding used was {0}.", sr->CurrentEncoding );
         Console::WriteLine();
      }
      finally
      {
         delete sr;
      }
   }
   catch ( Exception^ e )
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamReader ..::.EndOfStream 属性

StreamReader
.
.
::
.
EndOfStream 属性
StreamReader 类

获取一个值，该值表示当前的流位置是否在流的末尾。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property EndOfStream As Boolean
    Get
public bool EndOfStream { get; }
public:
property bool EndOfStream {
    bool get ();
}
member EndOfStream : bool

属性值

类型： System Boolean
如果当前的流位置在流的末尾，则为 true；否则为 false。
异常 | 条件
ObjectDisposedException | 基础流已释放。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamReader 类
StreamReader 成员
System.IO 命名空间


StreamWriter 类

StreamWriter 类
成员

实现一个 TextWriter，使其以一种特定的编码向流中写入字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class StreamWriter _
    Inherits TextWriter
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamWriter : TextWriter
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class StreamWriter : public TextWriter
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type StreamWriter =
    class
        inherit TextWriter
    end

StreamWriter 旨在以一种特定的编码输出字符，而从 Stream 派生的类则用于字节的输入和输出。

StreamWriter 默认使用 UTF8Encoding 的实例，除非指定了其他编码。UTF8Encoding 的实例不使用字节顺序标记 (BOM) 创建，因此它的 GetPreamble 方法返回一个空字节数组。要使用 UTF-8 编码和 BOM 创建 StreamWriter，请考虑使用指定编码的构造函数，例如 StreamWriter(String, Boolean, Encoding)。 StreamWriter 默认使用 UTF8Encoding 的实例，除非指定了其他编码。UTF8Encoding 的实例不使用字节顺序标记 (BOM) 创建，因此它的 GetPreamble 方法返回一个空字节数组。要使用 UTF-8 编码和 BOM 创建 StreamWriter，请考虑使用指定编码的构造函数，例如 StreamWriter(String, Boolean, Encoding)。 StreamWriter 默认使用 UTF8Encoding 的实例，除非指定了其他编码。UTF8Encoding 的实例不使用字节顺序标记 (BOM) 创建，因此它的 GetPreamble 方法返回一个空字节数组。要使用 UTF-8 编码和 BOM 创建 StreamWriter，请考虑使用指定编码的构造函数，例如 StreamWriter(String, Boolean, Encoding)。

默认情况下，StreamWriter 不是线程安全的。有关线程安全包装的信息，请参见 TextWriter..::.Synchronized。 默认情况下，StreamWriter 不是线程安全的。有关线程安全包装的信息，请参见 TextWriter..::.Synchronized。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示如何使用 StreamWriter 对象写入一个列出 C 驱动器上目录的文件，然后使用 StreamReader 对象读取和显示每个目录的名称。一种好的做法是使用 using 语句中的这些对象以便正确释放非托管资源。using 语句在使用它的代码完成后，将自动调用对象上的 Dispose。 下面的示例演示如何使用 StreamWriter 对象写入一个列出 C 驱动器上目录的文件，然后使用 StreamReader 对象读取和显示每个目录的名称。一种好的做法是使用 using 语句中的这些对象以便正确释放非托管资源。using 语句在使用它的代码完成后，将自动调用对象上的 Dispose。 下面的示例演示如何使用 StreamWriter 对象写入一个列出 C 驱动器上目录的文件，然后使用 StreamReader 对象读取和显示每个目录的名称。一种好的做法是使用 using 语句中的这些对象以便正确释放非托管资源。using 语句在使用它的代码完成后，将自动调用对象上的 Dispose。

Imports System.IO
Class Program

    Shared Sub Main()

        ' Get the directores currently on the C drive.
        Dim cDirs As DirectoryInfo() = New DirectoryInfo("c:\").GetDirectories()

        ' Write each directory name to a file.
        Using sw As StreamWriter = New StreamWriter("CDriveDirs.txt")
            For Each Dir As DirectoryInfo In cDirs
                sw.WriteLine(Dir.Name)
            Next
        End Using

        'Read and show each line from the file.
        Dim line As String = ""
        Using sr As StreamReader = New StreamReader("CDriveDirs.txt")
            Do
                line = sr.ReadLine()
                Console.WriteLine(line)
            Loop Until line Is Nothing
        End Using

    End Sub

End Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace StreamReadWrite
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the directories currently on the C drive.
            DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();

            // Write each directory name to a file.
            using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
            {
                foreach (DirectoryInfo dir in cDirs)
                {
                    sw.WriteLine(dir.Name);

                }
            }

            // Read and show each line from the file.
            string line = "";
            using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
    }
}

System.IO System.IO..::.StreamWriterStreamWriter
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 成员
System.IO 命名空间
Stream
StreamReader
Encoder
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


StreamWriter 成员

StreamWriter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

实现一个 TextWriter，使其以一种特定的编码向流中写入字符。

StreamWriter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

StreamWriter 类
System.IO 命名空间


StreamWriter 构造函数

StreamWriter 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

初始化 StreamWriter 类的新实例。

名称 说明
页首

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间


StreamWriter 构造函数 (Stream)

StreamWriter 构造函数 (Stream)
StreamWriter 类

用 UTF-8 编码及默认缓冲区大小，为指定的流初始化 StreamWriter 类的一个新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream _
)
public StreamWriter(
    Stream stream
)
public:
StreamWriter(
    Stream^ stream
)
new :
        stream:Stream -> StreamWriter

参数

stream
类型： System.IO Stream
要写入的流。
异常 | 条件
ArgumentException | stream 不可写。
ArgumentNullException | stream 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此构造函数使用 UTF-8 编码而不使用字节顺序标记 (BOM) 创建 StreamWriter，因此它的 GetPreamble 方法返回一个空字节数组。使用 stream 参数初始化 BaseStream 属性。 此构造函数使用 UTF-8 编码而不使用字节顺序标记 (BOM) 创建 StreamWriter，因此它的 GetPreamble 方法返回一个空字节数组。使用 stream 参数初始化 BaseStream 属性。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 构造函数 (String)

StreamWriter 构造函数 (String)
StreamWriter 类

使用默认编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String _
)
public StreamWriter(
    string path
)
public:
StreamWriter(
    String^ path
)
new :
        path:string -> StreamWriter

参数

path
类型： System String
要写入的完整文件路径。path 可以是一个文件名。 要写入的完整文件路径。path 可以是一个文件名。
异常 | 条件
UnauthorizedAccessException | 访问被拒绝。
ArgumentException | path 为空字符串 ("")。 - 或 - path 包含系统设备的名称（com1、com2 等等）。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
IOException | path 包含不正确或无效的文件名、目录名或卷标的语法。
SecurityException | 调用方没有所要求的权限。

此构造函数使用 UTF-8 编码而不使用字节顺序标记 (BOM) 创建 StreamWriter，因此它的 GetPreamble 方法返回一个空字节数组。要使用 UTF-8 编码和 BOM 创建 StreamWriter，请考虑使用指定编码的构造函数，例如 StreamWriter(String, Boolean, Encoding)。 此构造函数使用 UTF-8 编码而不使用字节顺序标记 (BOM) 创建 StreamWriter，因此它的 GetPreamble 方法返回一个空字节数组。要使用 UTF-8 编码和 BOM 创建 StreamWriter，请考虑使用指定编码的构造函数，例如 StreamWriter(String, Boolean, Encoding)。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。如果此文件已存在，将覆盖它；否则，将创建一个新文件。 path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。如果此文件已存在，将覆盖它；否则，将创建一个新文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}
  • FileIOPermission

    用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 构造函数 (Stream, Encoding)

StreamWriter 构造函数 (Stream, Encoding)
StreamWriter 类

用指定的编码及默认缓冲区大小，为指定的流初始化 StreamWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    encoding As Encoding _
)
public StreamWriter(
    Stream stream,
    Encoding encoding
)
public:
StreamWriter(
    Stream^ stream,
    Encoding^ encoding
)
new :
        stream:Stream *
        encoding:Encoding -> StreamWriter

参数

stream
类型： System.IO Stream
要写入的流。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
ArgumentNullException | stream 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | stream 不可写。

此构造函数使用 encoding 参数初始化 Encoding 属性，并使用 stream 参数初始化 BaseStream 属性。有关更多信息，请参见 Encoding。 此构造函数使用 encoding 参数初始化 Encoding 属性，并使用 stream 参数初始化 BaseStream 属性。有关更多信息，请参见 Encoding。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 构造函数 (String, Boolean)

StreamWriter 构造函数 (String, Boolean)
StreamWriter 类

使用默认编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。 使用默认编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。 使用默认编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    append As Boolean _
)
public StreamWriter(
    string path,
    bool append
)
public:
StreamWriter(
    String^ path,
    bool append
)
new :
        path:string *
        append:bool -> StreamWriter

参数

path
类型： System String
要写入的完整文件路径。
append
类型： System Boolean
确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。
异常 | 条件
UnauthorizedAccessException | 访问被拒绝。
ArgumentException | path 为空。 - 或 - path 包含系统设备的名称（com1、com2 等等）。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | path 包含不正确或无效的文件名、目录名或卷标的语法。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。

此构造函数使用 UTF-8 编码而不使用字节顺序标记 (BOM) 创建 StreamWriter，因此它的 GetPreamble 方法返回一个空字节数组。有关更多信息，请参见 Encoding。 此构造函数使用 UTF-8 编码而不使用字节顺序标记 (BOM) 创建 StreamWriter，因此它的 GetPreamble 方法返回一个空字节数组。有关更多信息，请参见 Encoding。

path 参数可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 参数必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的代码示例演示 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}
  • FileIOPermission

    用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 构造函数 (Stream, Encoding, Int32)

StreamWriter 构造函数 (Stream, Encoding, Int32)
StreamWriter 类

用指定的编码及缓冲区大小，为指定的流初始化 StreamWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    stream As Stream, _
    encoding As Encoding, _
    bufferSize As Integer _
)
public StreamWriter(
    Stream stream,
    Encoding encoding,
    int bufferSize
)
public:
StreamWriter(
    Stream^ stream,
    Encoding^ encoding,
    int bufferSize
)
new :
        stream:Stream *
        encoding:Encoding *
        bufferSize:int -> StreamWriter

参数

stream
类型： System.IO Stream
要写入的流。
encoding
类型： System.Text Encoding
要使用的字符编码。
bufferSize
类型： System Int32
设置缓冲区大小。
异常 | 条件
ArgumentNullException | stream 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | bufferSize 为负。
ArgumentException | stream 不可写。

此构造函数使用 encoding 参数初始化 Encoding 属性，并使用 stream 参数初始化 BaseStream 属性。有关更多信息，请参见 Encoding。 此构造函数使用 encoding 参数初始化 Encoding 属性，并使用 stream 参数初始化 BaseStream 属性。有关更多信息，请参见 Encoding。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 构造函数 (String, Boolean, Encoding)

StreamWriter 构造函数 (String, Boolean, Encoding)
StreamWriter 类

使用指定编码和默认缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。 使用指定编码和默认缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。 使用指定编码和默认缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    append As Boolean, _
    encoding As Encoding _
)
public StreamWriter(
    string path,
    bool append,
    Encoding encoding
)
public:
StreamWriter(
    String^ path,
    bool append,
    Encoding^ encoding
)
new :
        path:string *
        append:bool *
        encoding:Encoding -> StreamWriter

参数

path
类型： System String
要写入的完整文件路径。
append
类型： System Boolean
确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。
encoding
类型： System.Text Encoding
要使用的字符编码。
异常 | 条件
UnauthorizedAccessException | 访问被拒绝。
ArgumentException | path 为空。 - 或 - path 包含系统设备的名称（com1、com2 等等）。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
IOException | path 包含不正确或无效的文件名、目录名或卷标的语法。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。
SecurityException | 调用方没有所要求的权限。

此构造函数使用编码参数初始化 Encoding 属性。有关更多信息，请参见 Encoding。 此构造函数使用编码参数初始化 Encoding 属性。有关更多信息，请参见 Encoding。

path 可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}
  • FileIOPermission

    用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 构造函数 (String, Boolean, Encoding, Int32)

StreamWriter 构造函数 (String, Boolean, Encoding, Int32)
StreamWriter 类

使用指定编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。 使用指定编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。 使用指定编码和缓冲区大小，为指定路径上的指定文件初始化 StreamWriter 类的新实例。如果该文件存在，则可以将其覆盖或向其追加。如果该文件不存在，则此构造函数将创建一个新文件。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    path As String, _
    append As Boolean, _
    encoding As Encoding, _
    bufferSize As Integer _
)
public StreamWriter(
    string path,
    bool append,
    Encoding encoding,
    int bufferSize
)
public:
StreamWriter(
    String^ path,
    bool append,
    Encoding^ encoding,
    int bufferSize
)
new :
        path:string *
        append:bool *
        encoding:Encoding *
        bufferSize:int -> StreamWriter

参数

path
类型： System String
要写入的完整文件路径。
append
类型： System Boolean
确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。 确定是否将数据追加到文件。如果该文件存在，并且 append 为 false，则该文件被覆盖。如果该文件存在，并且 append 为 true，则数据被追加到该文件中。否则，将创建新文件。
encoding
类型： System.Text Encoding
要使用的字符编码。
bufferSize
类型： System Int32
设置缓冲区大小。
异常 | 条件
ArgumentException | path 为空字符串 ("")。 - 或 - path 包含系统设备的名称（com1、com2 等等）。
ArgumentNullException | path 或 encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | bufferSize 为负。
IOException | path 包含不正确或无效的文件名、目录名或卷标的语法。
SecurityException | 调用方没有所要求的权限。
UnauthorizedAccessException | 访问被拒绝。
DirectoryNotFoundException | 指定的路径无效，比如在未映射的驱动器上。
PathTooLongException | 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。 指定的路径、文件名或者两者都超出了系统定义的最大长度。例如，在基于 Windows 的平台上，路径必须小于 248 个字符，文件名必须小于 260 个字符。

此构造函数使用编码参数初始化 Encoding 属性。有关更多信息，请参见 Encoding。 此构造函数使用编码参数初始化 Encoding 属性。有关更多信息，请参见 Encoding。

path 可以是文件名，包括统一命名约定 (UNC) 共享上的文件。

不要求 path 必须是存储在磁盘上的文件；它可以是系统中支持通过流进行访问的任何部分。

警告说明 警告

当编译一组具有特定区域性设置的字符并检索具有不同区域性设置的相同字符时，这些字符可能是无法解释的，并可能导致引发异常。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例演示了 StreamWriter 构造函数。

Public Sub CreateTextFile(ByVal FileName As String, _
    ByVal TextToAdd As String)

    Dim Fs As FileStream = New FileStream(FileName, _
        FileMode.CreateNew, FileAccess.Write, FileShare.None)

    Dim SwFromFile As StreamWriter = New StreamWriter(FileName)
    SwFromFile.Write(TextToAdd)
    SwFromFile.Flush()
    SwFromFile.Close()

    Dim SwFromFileStream As StreamWriter = New StreamWriter(Fs)
    SwFromFileStream.Write(TextToAdd)
    SwFromFileStream.Flush()
    SwFromFileStream.Close()

    Dim SwFromFileStreamDefaultEnc As StreamWriter = _
     New StreamWriter(Fs, System.Text.Encoding.Default)
    SwFromFileStreamDefaultEnc.Write(TextToAdd)
    SwFromFileStreamDefaultEnc.Flush()
    SwFromFileStreamDefaultEnc.Close()

    Dim SwFromFileTrue As StreamWriter = _
     New StreamWriter(FileName, True)
    SwFromFileTrue.Write(TextToAdd)
    SwFromFileTrue.Flush()
    SwFromFileTrue.Close()

    Dim SwFromFileTrueUTF8Buffer = _
     New StreamWriter(FileName, _
     True, System.Text.Encoding.UTF8, 512)
    SwFromFileTrueUTF8Buffer.Write(TextToAdd)
    SwFromFileTrueUTF8Buffer.Flush()
    SwFromFileTrueUTF8Buffer.Close()

    Dim SwFromFileTrueUTF8 = _
     New StreamWriter(FileName, True, _
     System.Text.Encoding.UTF8)
    SwFromFileTrueUTF8.Write(TextToAdd)
    SwFromFileTrueUTF8.Flush()
    SwFromFileTrueUTF8.Close()

    Dim SwFromFileStreamUTF8Buffer = _
     New StreamWriter(Fs, System.Text.Encoding.UTF8, 512)
    SwFromFileStreamUTF8Buffer.Write(textToAdd)
    SwFromFileStreamUTF8Buffer.Flush()
    SwFromFileStreamUTF8Buffer.Close()

End Sub

        public void CreateTextFile(string fileName, string textToAdd)
        {
            string logFile = DateTime.Now.ToShortDateString()
                .Replace(@"/",@"-").Replace(@"\",@"-") + ".log";

            FileStream fs = new FileStream(fileName,
                FileMode.CreateNew, FileAccess.Write, FileShare.None);

            StreamWriter swFromFile = new StreamWriter(logFile);
            swFromFile.Write(textToAdd);
            swFromFile.Flush();
            swFromFile.Close();

            StreamWriter swFromFileStream = new StreamWriter(fs);
            swFromFileStream.Write(textToAdd);
            swFromFileStream.Flush();
            swFromFileStream.Close();

            StreamWriter swFromFileStreamDefaultEnc =
                new System.IO.StreamWriter(fs,
                System.Text.Encoding.Default);
            swFromFileStreamDefaultEnc.Write(textToAdd);
            swFromFileStreamDefaultEnc.Flush();
            swFromFileStreamDefaultEnc.Close();

            StreamWriter swFromFileTrue =
                new StreamWriter(fileName,true);
            swFromFileTrue.Write(textToAdd);
            swFromFileTrue.Flush();
            swFromFileTrue.Close();

            StreamWriter swFromFileTrueUTF8Buffer =
                new StreamWriter(fileName,
                true, System.Text.Encoding.UTF8,512);
            swFromFileTrueUTF8Buffer.Write(textToAdd);
            swFromFileTrueUTF8Buffer.Flush();
            swFromFileTrueUTF8Buffer.Close();

            StreamWriter swFromFileTrueUTF8 =
                new StreamWriter(fileName, true,
                System.Text.Encoding.UTF8);
            swFromFileTrueUTF8.Write(textToAdd);
            swFromFileTrueUTF8.Flush();
            swFromFileTrueUTF8.Close();

            StreamWriter swFromFileStreamUTF8Buffer =
                new StreamWriter(fs, System.Text.Encoding.UTF8, 512);
            swFromFileStreamUTF8Buffer.Write(textToAdd);
            swFromFileStreamUTF8Buffer.Flush();
            swFromFileStreamUTF8Buffer.Close();
        }

void CreateTextFile( String^ fileName, String^ textToAdd )
{
   String^ logFile = String::Concat( DateTime::Now.ToShortDateString()
      ->Replace( "/", "-" )->Replace( "\\", "-" ), ".log" );

   FileStream^ fs = gcnew FileStream( fileName,
      FileMode::CreateNew, FileAccess::Write, FileShare::None );

   StreamWriter^ swFromFile = gcnew StreamWriter( logFile );
   swFromFile->Write( textToAdd );
   swFromFile->Flush();
   swFromFile->Close();

   StreamWriter^ swFromFileStream = gcnew StreamWriter( fs );
   swFromFileStream->Write( textToAdd );
   swFromFileStream->Flush();
   swFromFileStream->Close();

   StreamWriter^ swFromFileStreamDefaultEnc =
      gcnew System::IO::StreamWriter( fs,
         System::Text::Encoding::Default );
   swFromFileStreamDefaultEnc->Write( textToAdd );
   swFromFileStreamDefaultEnc->Flush();
   swFromFileStreamDefaultEnc->Close();

   StreamWriter^ swFromFileTrue =
      gcnew StreamWriter( fileName,true );
   swFromFileTrue->Write( textToAdd );
   swFromFileTrue->Flush();
   swFromFileTrue->Close();

   StreamWriter^ swFromFileTrueUTF8Buffer =
      gcnew StreamWriter( fileName,
         true, System::Text::Encoding::UTF8, 512 );
   swFromFileTrueUTF8Buffer->Write( textToAdd );
   swFromFileTrueUTF8Buffer->Flush();
   swFromFileTrueUTF8Buffer->Close();

   StreamWriter^ swFromFileTrueUTF8 =
      gcnew StreamWriter( fileName, true,
         System::Text::Encoding::UTF8 );
   swFromFileTrueUTF8->Write( textToAdd );
   swFromFileTrueUTF8->Flush();
   swFromFileTrueUTF8->Close();

   StreamWriter^ swFromFileStreamUTF8Buffer =
      gcnew StreamWriter( fs, System::Text::Encoding::UTF8, 512 );
   swFromFileStreamUTF8Buffer->Write( textToAdd );
   swFromFileStreamUTF8Buffer->Flush();
   swFromFileStreamUTF8Buffer->Close();
}
  • FileIOPermission

    用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write 用于读取和写入文件。关联的枚举：FileIOPermissionAccess..::.Read、FileIOPermissionAccess..::.Write

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
StreamWriter 重载
System.IO 命名空间
Encoding

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 字段

StreamWriter 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

StreamWriter 类型公开以下成员。

名称 说明
页首

参考

StreamWriter 类
System.IO 命名空间


StreamWriter ..::.Null 字段

StreamWriter
.
.
::
.
Null 字段
StreamWriter 类

提供 StreamWriter，它不带任何可写入但无法从中读取的后备存储区。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly Null As StreamWriter
public static readonly StreamWriter Null
public:
static initonly StreamWriter^ Null
static val Null: StreamWriter

使用 Null 将输出重定向到不占用任何操作系统资源的 StreamWriter。

在 Null 上调用 StreamWriter.Write 方法时，调用只是返回，并没有任何数据实际写入任何后备存储区。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例说明 Null 字段的一种用法。

If Sw.Equals(StreamWriter.Null) Then
    Sw.WriteLine("The store can be written to, but not read from.")
End If

if(sw.Equals(StreamWriter.Null))
{
    sw.WriteLine("The store can be written to, but not read from.");
}

if ( sw->Equals( StreamWriter::Null ) )
{
   sw->WriteLine( "The store can be written to, but not read from." );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter 方法

StreamWriter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

StreamWriter 类型公开以下成员。

名称 说明
页首

参考

StreamWriter 类
System.IO 命名空间


StreamWriter ..::.Close 方法

StreamWriter
.
.
::
.
Close 方法
StreamWriter 类

关闭当前的 StreamWriter 对象和基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit
异常 | 条件
EncoderFallbackException | 当前编码不支持显示半个 Unicode 代理项对。

此方法重写 Close。

Close 的此实现调用传递 true 值的 Dispose 方法。

必须调用 Close 以确保所有数据正确写出到基础流中。调用 Close 后，在 StreamWriter 上进行的任何操作都可能引发异常。如果磁盘上没有足够的空间，则调用 Close 将引发异常。 必须调用 Close 以确保所有数据正确写出到基础流中。调用 Close 后，在 StreamWriter 上进行的任何操作都可能引发异常。如果磁盘上没有足够的空间，则调用 Close 将引发异常。 必须调用 Close 以确保所有数据正确写出到基础流中。调用 Close 后，在 StreamWriter 上进行的任何操作都可能引发异常。如果磁盘上没有足够的空间，则调用 Close 将引发异常。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

下面的代码示例说明了 Close 方法。

' Close the file by closing the writer.
Sw.Close()

// close the file by closing the writer
sw.Close();

// close the file by closing the writer
sw->Close();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.Dispose 方法

StreamWriter
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

名称 说明
页首

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间


StreamWriter ..::.Dispose 方法 (Boolean)

StreamWriter
.
.
::
.
Dispose 方法 (Boolean)
StreamWriter 类

释放由 StreamWriter 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。
异常 | 条件
EncoderFallbackException | 当前编码不支持显示半个 Unicode 代理项对。

当 disposing 参数为 true 时，此方法释放该 StreamWriter 引用的、由任何托管对象持有的全部资源。此方法调用每个被引用对象的 Dispose 方法。 当 disposing 参数为 true 时，此方法释放该 StreamWriter 引用的、由任何托管对象持有的全部资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

Dispose 可由其他对象多次调用。在重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已被释放的对象。 Dispose 可由其他对象多次调用。在重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已被释放的对象。

此方法将调用基类的释放方法 TextWriter..::.Dispose。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.Flush 方法

StreamWriter
.
.
::
.
Flush 方法
StreamWriter 类

清理当前编写器的所有缓冲区，并使所有缓冲数据写入基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit
异常 | 条件
ObjectDisposedException | 当前编写器已关闭。
IOException | 出现 I/O 错误。
EncoderFallbackException | 当前编码不支持显示半个 Unicode 代理项对。

此方法重写 Flush。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间
Close

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.MemberwiseClone 方法

StreamWriter
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

名称 说明
页首

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间


StreamWriter ..::.Write 方法

StreamWriter
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

写入流。

名称 说明
页首

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间


StreamWriter ..::.Write 方法 (Char)

StreamWriter
.
.
::
.
Write 方法 (Char)
StreamWriter 类

将字符写入流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    value As Char _
)
public override void Write(
    char value
)
public:
virtual void Write(
    wchar_t value
) override
abstract Write :
        value:char -> unit
override Write :
        value:char -> unit

参数

value
类型： System Char
要写入文本流中的字符。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且当前编写器已关闭。
NotSupportedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且由于 StreamWriter 位于基础固定大小流的结尾，缓冲区的内容无法写入该流。

此方法重写 TextWriter..::.Write。

指定字符被写入基础流，除非提前达到流的末尾。如果 AutoFlush 为 true，则自动调用 Flush。 指定字符被写入基础流，除非提前达到流的末尾。如果 AutoFlush 为 true，则自动调用 Flush。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.Write 方法 ( array<Char >[]()[])

StreamWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
)
StreamWriter 类

将字符数组写入流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    buffer As Char() _
)
public override void Write(
    char[] buffer
)
public:
virtual void Write(
    array<wchar_t>^ buffer
) override
abstract Write :
        buffer:char[] -> unit
override Write :
        buffer:char[] -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

包含要写入的数据的字符数组。如果 buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何内容。 包含要写入的数据的字符数组。如果 buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何内容。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且当前编写器已关闭。
NotSupportedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且由于 StreamWriter 位于基础固定大小流的结尾，缓冲区的内容无法写入该流。

此方法重写 TextWriter..::.Write。

指定字符被写入基础流，除非提前达到流的末尾。如果 AutoFlush 为 true，则自动调用 Flush。 指定字符被写入基础流，除非提前达到流的末尾。如果 AutoFlush 为 true，则自动调用 Flush。

此方法提供的性能可能比 Write (char[],int,int) 更高，因为它要检查的参数较少。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.Write 方法 (String)

StreamWriter
.
.
::
.
Write 方法 (String)
StreamWriter 类

将字符串写入流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    value As String _
)
public override void Write(
    string value
)
public:
virtual void Write(
    String^ value
) override
abstract Write :
        value:string -> unit
override Write :
        value:string -> unit

参数

value
类型： System String
要写入流的字符串。如果 value 为 null，则不写入任何内容。 要写入流的字符串。如果 value 为 null，则不写入任何内容。
异常 | 条件
ObjectDisposedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且当前编写器已关闭。
NotSupportedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且由于 StreamWriter 位于基础固定大小流的结尾，缓冲区的内容无法写入该流。
IOException | 发生 I/O 错误。

此方法重写 TextWriter..::.Write。

指定的 String 被写入基础流，除非提前到达流的末尾。

如果 AutoFlush 为 true，将自动调用 Flush。如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何项。 如果 AutoFlush 为 true，将自动调用 Flush。如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何项。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

StreamWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
StreamWriter 类

将字符的子数组写入流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public override void Write(
    char[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
) override
abstract Write :
        buffer:char[] *
        index:int *
        count:int -> unit
override Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

包含要写入的数据的字符数组。
index
类型： System Int32
开始写入的 buffer 中的索引。
count
类型： System Int32
将从 buffer 中读取的字符数。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentOutOfRangeException | index 或 count 为负。
IOException | 发生 I/O 错误。
ObjectDisposedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且当前编写器已关闭。
NotSupportedException | AutoFlush 为 true 或 StreamWriter 缓冲区已满，并且由于 StreamWriter 位于基础固定大小流的结尾，缓冲区的内容无法写入该流。

此方法重写 TextWriter..::.Write。

从 index 的 buffer 开始处读取这些字符，并继续贯穿 index + (count - 1)。所有字符被写入基础流，除非提前达到底层流的末尾。如果 AutoFlush 为 true，将自动调用 Flush。 从 index 的 buffer 开始处读取这些字符，并继续贯穿 index + (count - 1)。所有字符被写入基础流，除非提前达到底层流的末尾。如果 AutoFlush 为 true，将自动调用 Flush。 从 index 的 buffer 开始处读取这些字符，并继续贯穿 index + (count - 1)。所有字符被写入基础流，除非提前达到底层流的末尾。如果 AutoFlush 为 true，将自动调用 Flush。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

此示例将 8 个字符从一个包含 13 个元素的数组写入文件（从数组的第三个元素开始）。

Imports System
Imports System.IO

Public Class SWBuff

    Public Shared Sub Main()
        Dim sb As New FileStream("MyFile.txt", FileMode.OpenOrCreate)
        Dim b As Char() = {"a"c, "b"c, "c"c, "d"c, "e"c, "f"c, "g"c, _
           "h"c, "i"c, "j"c, "k"c, "l"c, "m"c}
        Dim sw As New StreamWriter(sb)
        sw.Write(b, 3, 8)
        sw.Close()
    End Sub
End Class

using System;
using System.IO;

public class SWBuff
{
    public static void Main(String[] args)
    {
        FileStream sb = new FileStream("MyFile.txt", FileMode.OpenOrCreate);
        char[] b = {'a','b','c','d','e','f','g','h','i','j','k','l','m'};
        StreamWriter sw = new StreamWriter(sb);
        sw.Write(b, 3, 8);
        sw.Close();
    }
}

using namespace System;
using namespace System::IO;

int main()
{
   FileStream^ sb = gcnew FileStream( "MyFile.txt",FileMode::OpenOrCreate );
   array<Char>^b = {'a','b','c','d','e','f','g','h','i','j','k','l','m'};
   StreamWriter^ sw = gcnew StreamWriter( sb );
   sw->Write( b, 3, 8 );
   sw->Close();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.WriteLine 方法

StreamWriter
.
.
::
.
WriteLine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

写入重载参数指定的某些数据，后跟行结束符。

名称 说明
页首

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间


StreamWriter 属性

StreamWriter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StreamWriter 类

StreamWriter 类型公开以下成员。

名称 说明
页首

参考

StreamWriter 类
System.IO 命名空间


StreamWriter ..::.AutoFlush 属性

StreamWriter
.
.
::
.
AutoFlush 属性
StreamWriter 类

获取或设置一个值，该值指示 StreamWriter 是否在每次调用 StreamWriter..::.Write 之后，将其缓冲区刷新到基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Property AutoFlush As Boolean
    Get
    Set
public virtual bool AutoFlush { get; set; }
public:
virtual property bool AutoFlush {
    bool get ();
    void set (bool value);
}
abstract AutoFlush : bool with get, set
override AutoFlush : bool with get, set

属性值

类型： System Boolean
强制 StreamWriter 刷新其缓冲区时，为 true；否则，为 false。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

当 AutoFlush 设置为 false 时， StreamWriter 将对您传入的编码同时在内部和可能的编码器中执行有限的缓冲。只要在使用 StreamWriter 完成写入之后始终调用 Close（或至少 Flush），就可以通过将 AutoFlush 设置为 false 来获得更好的性能。 当 AutoFlush 设置为 false 时， StreamWriter 将对您传入的编码同时在内部和可能的编码器中执行有限的缓冲。只要在使用 StreamWriter 完成写入之后始终调用 Close（或至少 Flush），就可以通过将 AutoFlush 设置为 false 来获得更好的性能。

例如，您在写入设备时，若用户期望立刻得到反馈，则将 AutoFlush 设置为 true。Console.Out 即属于这种情况：内部用于向 Console 写入的 StreamWriter 在您每次调用 StreamWriter..::.Write 后，都刷新其所有的内部状态，编码器状态除外。 例如，您在写入设备时，若用户期望立刻得到反馈，则将 AutoFlush 设置为 true。Console.Out 即属于这种情况：内部用于向 Console 写入的 StreamWriter 在您每次调用 StreamWriter..::.Write 后，都刷新其所有的内部状态，编码器状态除外。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例显示了使用 AutoFlush 属性的语法。

' Gets or sets a value indicating whether the StreamWriter
' will flush its buffer to the underlying stream after every
' call to StreamWriter.Write.
Sw.AutoFlush = True

// Gets or sets a value indicating whether the StreamWriter
// will flush its buffer to the underlying stream after every
// call to StreamWriter.Write.
sw.AutoFlush = true;

// Gets or sets a value indicating whether the StreamWriter
// will flush its buffer to the underlying stream after every
// call to StreamWriter.Write.
sw->AutoFlush = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.BaseStream 属性

StreamWriter
.
.
::
.
BaseStream 属性
StreamWriter 类

获取同后备存储区连接的基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property BaseStream As Stream
    Get
public virtual Stream BaseStream { get; }
public:
virtual property Stream^ BaseStream {
    Stream^ get ();
}
abstract BaseStream : Stream
override BaseStream : Stream

属性值

类型： System.IO Stream
此 StreamWriter 正在写入的基础流。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StreamWriter ..::.Encoding 属性

StreamWriter
.
.
::
.
Encoding 属性
StreamWriter 类

获取将输出写入到其中的 Encoding。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Encoding As Encoding
    Get
public override Encoding Encoding { get; }
public:
virtual property Encoding^ Encoding {
    Encoding^ get () override;
}
abstract Encoding : Encoding
override Encoding : Encoding

属性值

类型： System.Text Encoding
在当前实例的构造函数中指定的 Encoding；或者如果未指定编码，则为 UTF8Encoding。

此属性对于某些 XML 方案是必需的，在这些方案中，必须写入包含 StreamWriter 所使用的编码的标头。这允许 XML 代码使用任意的 StreamWriter 并生成正确的 XML 标题。 此属性对于某些 XML 方案是必需的，在这些方案中，必须写入包含 StreamWriter 所使用的编码的标头。这允许 XML 代码使用任意的 StreamWriter 并生成正确的 XML 标题。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

下面的示例检索指定的 StreamWriter 实例的编码。

' Write out the current text encoding.
Sw.WriteLine("Encoding: {0}", _
 Sw.Encoding.ToString())

// Write out the current text encoding
sw.WriteLine("Encoding: {0}",
    sw.Encoding.ToString());

// Write out the current text encoding
sw->WriteLine( "Encoding: {0}",
   sw->Encoding->ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StreamWriter 类
StreamWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader 类

StringReader 类
成员

实现从字符串进行读取的 TextReader。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class StringReader _
    Inherits TextReader
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StringReader : TextReader
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class StringReader : public TextReader
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type StringReader =
    class
        inherit TextReader
    end

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

下面的代码示例阐释了如何用一组双倍间距的句子创建一个连续的段落，然后将该段落重新转换为原来的文本。

Option Explicit
Option Strict

Imports Microsoft.VisualBasic
Imports System
Imports System.IO

Public Class StrReader

    Shared Sub Main()

        Dim textReaderText As String = "TextReader is the " & _
            "abstract base class of StreamReader and " & _
            "StringReader, which read characters from streams " & _
            "and strings, respectively." & _
            vbCrLf & vbCrLf & _
            "Create an instance of TextReader to open a text " & _
            "file for reading a specified range of characters, " & _
            "or to create a reader based on an existing stream." & _
            vbCrLf & vbCrLf & _
            "You can also use an instance of TextReader to read " & _
            "text from a custom backing store using the same " & _
            "APIs you would use for a string or a stream." & _
            vbCrLf & vbCrLf

        Console.WriteLine("Original text:" & vbCrLf & vbCrLf & _
            textReaderText)

        ' From textReaderText, create a continuous paragraph
        ' with two spaces between each sentence.
        Dim aLine, aParagraph As String
        Dim strReader As New StringReader(textReaderText)
        While True
            aLine = strReader.ReadLine()
            If aLine Is Nothing Then
                aParagraph = aParagraph & vbCrLf
                Exit While
            Else
                aParagraph = aParagraph & aLine & " "
            End If
        End While
        Console.WriteLine("Modified text:" & vbCrLf & vbCrLf & _
            aParagraph)

        ' Re-create textReaderText from aParagraph.
        Dim intCharacter As Integer
        Dim convertedCharacter As Char
        Dim strWriter As New StringWriter()
        strReader = New StringReader(aParagraph)
        While True
            intCharacter = strReader.Read()

            ' Check for the end of the string
            ' before converting to a character.
            If intCharacter = -1 Then
                Exit While
            End If

            convertedCharacter = Convert.ToChar(intCharacter)
            If convertedCharacter = "."C Then
                strWriter.Write("." & vbCrLf & vbCrLf)

                ' Bypass the spaces between sentences.
                strReader.Read()
                strReader.Read()
            Else
                strWriter.Write(convertedCharacter)
            End If
        End While
        Console.WriteLine(vbCrLf & "Original text:" & vbCrLf & _
            vbCrLf & strWriter.ToString())

    End Sub
End Class

using System;
using System.IO;

class StringRW
{
    static void Main()
    {
        string textReaderText = "TextReader is the abstract base " +
            "class of StreamReader and StringReader, which read " +
            "characters from streams and strings, respectively.\n\n" +

            "Create an instance of TextReader to open a text file " +
            "for reading a specified range of characters, or to " +
            "create a reader based on an existing stream.\n\n" +

            "You can also use an instance of TextReader to read " +
            "text from a custom backing store using the same " +
            "APIs you would use for a string or a stream.\n\n";

        Console.WriteLine("Original text:\n\n{0}", textReaderText);

        // From textReaderText, create a continuous paragraph
        // with two spaces between each sentence.
        string aLine, aParagraph = null;
        StringReader strReader = new StringReader(textReaderText);
        while(true)
        {
            aLine = strReader.ReadLine();
            if(aLine != null)
            {
                aParagraph = aParagraph + aLine + " ";
            }
            else
            {
                aParagraph = aParagraph + "\n";
                break;
            }
        }
        Console.WriteLine("Modified text:\n\n{0}", aParagraph);

        // Re-create textReaderText from aParagraph.
        int intCharacter;
        char convertedCharacter;
        StringWriter strWriter = new StringWriter();
        strReader = new StringReader(aParagraph);
        while(true)
        {
            intCharacter = strReader.Read();

            // Check for the end of the string
            // before converting to a character.
            if(intCharacter == -1) break;

            convertedCharacter = Convert.ToChar(intCharacter);
            if(convertedCharacter == '.')
            {
                strWriter.Write(".\n\n");

                // Bypass the spaces between sentences.
                strReader.Read();
                strReader.Read();
            }
            else
            {
                strWriter.Write(convertedCharacter);
            }
        }
        Console.WriteLine("\nOriginal text:\n\n{0}",
            strWriter.ToString());
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ textReaderText = "TextReader is the abstract base "
   "class of StreamReader and StringReader, which read "
   "characters from streams and strings, respectively.\n\n"
   "Create an instance of TextReader to open a text file "
   "for reading a specified range of characters, or to "
   "create a reader based on an existing stream.\n\n"
   "You can also use an instance of TextReader to read "
   "text from a custom backing store using the same "
   "APIs you would use for a string or a stream.\n\n";
   Console::WriteLine(  "Original text:\n\n{0}", textReaderText );

   // From textReaderText, create a continuous paragraph
   // with two spaces between each sentence.
      String^ aLine;
   String^ aParagraph;
   StringReader^ strReader = gcnew StringReader( textReaderText );
   while ( true )
   {
      aLine = strReader->ReadLine();
      if ( aLine != nullptr )
      {
         aParagraph = String::Concat( aParagraph, aLine,  " " );
      }
      else
      {
         aParagraph = String::Concat( aParagraph,  "\n" );
         break;
      }
   }

   Console::WriteLine(  "Modified text:\n\n{0}", aParagraph );

   // Re-create textReaderText from aParagraph.
   int intCharacter;
   Char convertedCharacter;
   StringWriter^ strWriter = gcnew StringWriter;
   strReader = gcnew StringReader( aParagraph );
   while ( true )
   {
      intCharacter = strReader->Read();

      // Check for the end of the string
      // before converting to a character.
      if ( intCharacter == -1 )
            break;

      convertedCharacter = Convert::ToChar( intCharacter );
      if ( convertedCharacter == '.' )
      {
         strWriter->Write(  ".\n\n" );

         // Bypass the spaces between sentences.
         strReader->Read();
         strReader->Read();
      }
      else
      {
         strWriter->Write( convertedCharacter );
      }
   }

   Console::WriteLine(  "\nOriginal text:\n\n{0}", strWriter->ToString() );
}

System.IO System.IO..::.StringReaderStringReader
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 成员
System.IO 命名空间
TextReader
StringWriter

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader 成员

StringReader 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringReader 类

实现从字符串进行读取的 TextReader。

StringReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

StringReader 类
System.IO 命名空间


StringReader 构造函数

StringReader 构造函数
StringReader 类

初始化从指定字符串进行读取的 StringReader 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    s As String _
)
public StringReader(
    string s
)
public:
StringReader(
    String^ s
)
new :
        s:string -> StringReader

参数

s
类型： System String
应将 StringReader 初始化为的字符串。
异常 | 条件
ArgumentNullException | s 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例摘自一个为 StringReader 类提供的更大示例。

' From textReaderText, create a continuous paragraph
' with two spaces between each sentence.
Dim aLine, aParagraph As String
Dim strReader As New StringReader(textReaderText)
While True
    aLine = strReader.ReadLine()
    If aLine Is Nothing Then
        aParagraph = aParagraph & vbCrLf
        Exit While
    Else
        aParagraph = aParagraph & aLine & " "
    End If
End While
Console.WriteLine("Modified text:" & vbCrLf & vbCrLf & _
    aParagraph)

// From textReaderText, create a continuous paragraph
// with two spaces between each sentence.
string aLine, aParagraph = null;
StringReader strReader = new StringReader(textReaderText);
while(true)
{
    aLine = strReader.ReadLine();
    if(aLine != null)
    {
        aParagraph = aParagraph + aLine + " ";
    }
    else
    {
        aParagraph = aParagraph + "\n";
        break;
    }
}
Console.WriteLine("Modified text:\n\n{0}", aParagraph);

// From textReaderText, create a continuous paragraph
// with two spaces between each sentence.
   String^ aLine;
String^ aParagraph;
StringReader^ strReader = gcnew StringReader( textReaderText );
while ( true )
{
   aLine = strReader->ReadLine();
   if ( aLine != nullptr )
   {
      aParagraph = String::Concat( aParagraph, aLine,  " " );
   }
   else
   {
      aParagraph = String::Concat( aParagraph,  "\n" );
      break;
   }
}

Console::WriteLine(  "Modified text:\n\n{0}", aParagraph );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader 方法

StringReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringReader 类

StringReader 类型公开以下成员。

名称 说明
页首

参考

StringReader 类
System.IO 命名空间


StringReader ..::.Close 方法

StringReader
.
.
::
.
Close 方法
StringReader 类

关闭 StringReader。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

此方法重写 Stream..::.Close 方法。

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

其他方法可能在调用 Close 后引发异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader ..::.Dispose 方法

StringReader
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringReader 类

名称 说明
页首

参考

StringReader 类
StringReader 成员
System.IO 命名空间


StringReader ..::.Dispose 方法 (Boolean)

StringReader
.
.
::
.
Dispose 方法 (Boolean)
StringReader 类

释放由 StringReader 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

当 disposing 参数为 true 时，此方法释放该 StringReader 引用的、由任何托管对象持有的全部资源。此方法调用每个引用对象的 Dispose 方法。 当 disposing 参数为 true 时，此方法释放该 StringReader 引用的、由任何托管对象持有的全部资源。此方法调用每个引用对象的 Dispose 方法。

对继承者的说明

Dispose 可以由其他对象多次调用。在重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已被释放的对象。 Dispose 可以由其他对象多次调用。在重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已被释放的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader ..::.MemberwiseClone 方法

StringReader
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringReader 类

名称 说明
页首

参考

StringReader 类
StringReader 成员
System.IO 命名空间


StringReader ..::.Peek 方法

StringReader
.
.
::
.
Peek 方法
StringReader 类

返回下一个可用的字符，但不使用它。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Peek As Integer
public override int Peek()
public:
virtual int Peek() override
abstract Peek : unit -> int
override Peek : unit -> int

返回值

类型： System Int32
表示下一个要读取的字符的整数，或者，如果没有更多的可用字符或该流不支持查找，则为 -1。
异常 | 条件
ObjectDisposedException | 当前读取器已关闭。

Peek 方法将返回一个整数值，从而确定文件结束了还是发生了其他错误。这样一来，用户在将返回值强制转换为 Char 类型之前就可以首先检查该值是否为 -1。 Peek 方法将返回一个整数值，从而确定文件结束了还是发生了其他错误。这样一来，用户在将返回值强制转换为 Char 类型之前就可以首先检查该值是否为 -1。

此方法重写 TextReader..::.Peek 方法。

此操作未更改 StringReader 的当前位置。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
获取文件大小。 | FileInfo Length

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader ..::.Read 方法

StringReader
.
.
::
.
Read 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringReader 类

读取输入字符串中的下一个字符或下一组字符。

名称 说明
页首

参考

StringReader 类
StringReader 成员
System.IO 命名空间


StringReader ..::.Read 方法

StringReader
.
.
::
.
Read 方法
StringReader 类

读取输入字符串中的下一个字符并将该字符的位置提升一个字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read As Integer
public override int Read()
public:
virtual int Read() override
abstract Read : unit -> int
override Read : unit -> int

返回值

类型： System Int32
基础字符串中的下一个字符，或者如果没有更多的可用字符，则为 -1。
异常 | 条件
ObjectDisposedException | 当前读取器已关闭。

此方法重写 TextReader..::.Read 方法。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例摘自一个为 StringReader 类提供的更大示例。

convertedCharacter = Convert.ToChar(intCharacter)
If convertedCharacter = "."C Then
    strWriter.Write("." & vbCrLf & vbCrLf)

    ' Bypass the spaces between sentences.
    strReader.Read()
    strReader.Read()

convertedCharacter = Convert.ToChar(intCharacter);
if(convertedCharacter == '.')
{
    strWriter.Write(".\n\n");

    // Bypass the spaces between sentences.
    strReader.Read();
    strReader.Read();
}

convertedCharacter = Convert::ToChar( intCharacter );
if ( convertedCharacter == '.' )
{
   strWriter->Write(  ".\n\n" );

   // Bypass the spaces between sentences.
   strReader->Read();
   strReader->Read();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader ..::.Read 方法 ( array<Char >[]()[], Int32, Int32)

StringReader
.
.
::
.
Read 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
StringReader 类

读取输入字符串中的字符块，并将字符位置提升 count。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read ( _
    <OutAttribute> buffer As Char(), _
    index As Integer, _
    count As Integer _
) As Integer
public override int Read(
    char[] buffer,
    int index,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<wchar_t>^ buffer,
    int index,
    int count
) override
abstract Read :
        buffer:char[] byref *
        index:int *
        count:int -> int
override Read :
        buffer:char[] byref *
        index:int *
        count:int -> int

参数

buffer
类型：
array<
System Char
>
[]
()
[]

此方法返回时，包含指定的字符数组，该数组的 index 和 (index + count - 1) 之间的值由从当前源中读取的字符替换。
index
类型： System Int32
缓存区中的起始索引。
count
类型： System Int32
要读取的字符数。

返回值

类型： System Int32
读入缓冲区的总字符数。如果当前没有那么多字符可用，则总字符数可能会少于所请求的字符数，或者如果已到达基础字符串的结尾，则总字符数为零。 读入缓冲区的总字符数。如果当前没有那么多字符可用，则总字符数可能会少于所请求的字符数，或者如果已到达基础字符串的结尾，则总字符数为零。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | 当前读取器已关闭。

此方法重写 TextReader..::.Read。

该方法将多达 count 个字符从 StringReader 读取到 buffer 字符数组（从 index 位置开始）。返回读取的实际字符数，或者如果已到达字符串的结尾并且未读取任何字符，则为零。 该方法将多达 count 个字符从 StringReader 读取到 buffer 字符数组（从 index 位置开始）。返回读取的实际字符数，或者如果已到达字符串的结尾并且未读取任何字符，则为零。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader ..::.ReadLine 方法

StringReader
.
.
::
.
ReadLine 方法
StringReader 类

从基础字符串中读取一行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadLine As String
public override string ReadLine()
public:
virtual String^ ReadLine() override
abstract ReadLine : unit -> string
override ReadLine : unit -> string

返回值

类型： System String
基础字符串中的下一行；或者如果到达了基础字符串的末尾，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ObjectDisposedException | 当前读取器已关闭。
OutOfMemoryException | 内存不足，无法为返回的字符串分配缓冲区。

此方法重写 TextReader..::.ReadLine 方法。

将行定义为后面跟有下列符号的字符序列：换行符（“\n”）、回车符（“\r”）或后跟换行符的回车符（“\r\n”）。所产生的字符串不包含终止回车符和/或换行符。如果已到达基础字符串的结尾，则返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 将行定义为后面跟有下列符号的字符序列：换行符（“\n”）、回车符（“\r”）或后跟换行符的回车符（“\r\n”）。所产生的字符串不包含终止回车符和/或换行符。如果已到达基础字符串的结尾，则返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 将行定义为后面跟有下列符号的字符序列：换行符（“\n”）、回车符（“\r”）或后跟换行符的回车符（“\r\n”）。所产生的字符串不包含终止回车符和/或换行符。如果已到达基础字符串的结尾，则返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果当前方法引发 OutOfMemoryException，则读取器在基础字符串中的位置将会向前推进此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被放弃。因为无法更改读取器在字符串中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StringReader 访问它们。为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。 如果当前方法引发 OutOfMemoryException，则读取器在基础字符串中的位置将会向前推进此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被放弃。因为无法更改读取器在字符串中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StringReader 访问它们。为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。 如果当前方法引发 OutOfMemoryException，则读取器在基础字符串中的位置将会向前推进此方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被放弃。因为无法更改读取器在字符串中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StringReader 访问它们。为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例摘自一个为 StringReader 类提供的更大示例。

' From textReaderText, create a continuous paragraph
' with two spaces between each sentence.
Dim aLine, aParagraph As String
Dim strReader As New StringReader(textReaderText)
While True
    aLine = strReader.ReadLine()
    If aLine Is Nothing Then
        aParagraph = aParagraph & vbCrLf
        Exit While
    Else
        aParagraph = aParagraph & aLine & " "
    End If
End While
Console.WriteLine("Modified text:" & vbCrLf & vbCrLf & _
    aParagraph)

// From textReaderText, create a continuous paragraph
// with two spaces between each sentence.
string aLine, aParagraph = null;
StringReader strReader = new StringReader(textReaderText);
while(true)
{
    aLine = strReader.ReadLine();
    if(aLine != null)
    {
        aParagraph = aParagraph + aLine + " ";
    }
    else
    {
        aParagraph = aParagraph + "\n";
        break;
    }
}
Console.WriteLine("Modified text:\n\n{0}", aParagraph);

// From textReaderText, create a continuous paragraph
// with two spaces between each sentence.
   String^ aLine;
String^ aParagraph;
StringReader^ strReader = gcnew StringReader( textReaderText );
while ( true )
{
   aLine = strReader->ReadLine();
   if ( aLine != nullptr )
   {
      aParagraph = String::Concat( aParagraph, aLine,  " " );
   }
   else
   {
      aParagraph = String::Concat( aParagraph,  "\n" );
      break;
   }
}

Console::WriteLine(  "Modified text:\n\n{0}", aParagraph );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringReader ..::.ReadToEnd 方法

StringReader
.
.
::
.
ReadToEnd 方法
StringReader 类

将整个流或从流的当前位置到流的结尾作为字符串读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadToEnd As String
public override string ReadToEnd()
public:
virtual String^ ReadToEnd() override
abstract ReadToEnd : unit -> string
override ReadToEnd : unit -> string

返回值

类型： System String
从当前位置到基础字符串的结尾之间的内容。
异常 | 条件
OutOfMemoryException | 内存不足，无法为返回的字符串分配缓冲区。
ObjectDisposedException | 当前读取器已关闭。

此方法重写 TextReader..::.ReadToEnd 方法。

如果当前方法引发 OutOfMemoryException，则读取器在基础字符串中的位置将会向前推进此方法能够读取的字符数，而已经读入内部 ReadToEnd 缓冲区中的字符将被放弃。因为无法更改读取器在字符串中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StringReader 访问它们。为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。 如果当前方法引发 OutOfMemoryException，则读取器在基础字符串中的位置将会向前推进此方法能够读取的字符数，而已经读入内部 ReadToEnd 缓冲区中的字符将被放弃。因为无法更改读取器在字符串中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StringReader 访问它们。为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。 如果当前方法引发 OutOfMemoryException，则读取器在基础字符串中的位置将会向前推进此方法能够读取的字符数，而已经读入内部 ReadToEnd 缓冲区中的字符将被放弃。因为无法更改读取器在字符串中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 StringReader 访问它们。为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例摘自一个为 TextReader 类提供的更大示例。

Shared Sub ReadText(aTextReader As TextReader)
    Console.WriteLine("From {0} - {1}", _
        aTextReader.GetType().Name, aTextReader.ReadToEnd())
End Sub

static void ReadText(TextReader textReader)
{
    Console.WriteLine("From {0} - {1}",
        textReader.GetType().Name, textReader.ReadToEnd());
}

void ReadText( TextReader^ textReader )
{
   Console::WriteLine( "From {0} - {1}", textReader->GetType()->Name, textReader->ReadToEnd() );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringReader 类
StringReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter 类

StringWriter 类
成员

实现一个用于将信息写入字符串的 TextWriter。该信息存储在基础 StringBuilder 中。 实现一个用于将信息写入字符串的 TextWriter。该信息存储在基础 StringBuilder 中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class StringWriter _
    Inherits TextWriter
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StringWriter : TextWriter
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class StringWriter : public TextWriter
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type StringWriter =
    class
        inherit TextWriter
    end

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

下面的代码示例阐释了如何用一组双倍间距的句子创建一个连续的段落，然后将该段落重新转换为原来的文本。

Option Explicit
Option Strict

Imports Microsoft.VisualBasic
Imports System
Imports System.IO

Public Class StrReader

    Shared Sub Main()

        Dim textReaderText As String = "TextReader is the " & _
            "abstract base class of StreamReader and " & _
            "StringReader, which read characters from streams " & _
            "and strings, respectively." & _
            vbCrLf & vbCrLf & _
            "Create an instance of TextReader to open a text " & _
            "file for reading a specified range of characters, " & _
            "or to create a reader based on an existing stream." & _
            vbCrLf & vbCrLf & _
            "You can also use an instance of TextReader to read " & _
            "text from a custom backing store using the same " & _
            "APIs you would use for a string or a stream." & _
            vbCrLf & vbCrLf

        Console.WriteLine("Original text:" & vbCrLf & vbCrLf & _
            textReaderText)

        ' From textReaderText, create a continuous paragraph
        ' with two spaces between each sentence.
        Dim aLine, aParagraph As String
        Dim strReader As New StringReader(textReaderText)
        While True
            aLine = strReader.ReadLine()
            If aLine Is Nothing Then
                aParagraph = aParagraph & vbCrLf
                Exit While
            Else
                aParagraph = aParagraph & aLine & " "
            End If
        End While
        Console.WriteLine("Modified text:" & vbCrLf & vbCrLf & _
            aParagraph)

        ' Re-create textReaderText from aParagraph.
        Dim intCharacter As Integer
        Dim convertedCharacter As Char
        Dim strWriter As New StringWriter()
        strReader = New StringReader(aParagraph)
        While True
            intCharacter = strReader.Read()

            ' Check for the end of the string
            ' before converting to a character.
            If intCharacter = -1 Then
                Exit While
            End If

            convertedCharacter = Convert.ToChar(intCharacter)
            If convertedCharacter = "."C Then
                strWriter.Write("." & vbCrLf & vbCrLf)

                ' Bypass the spaces between sentences.
                strReader.Read()
                strReader.Read()
            Else
                strWriter.Write(convertedCharacter)
            End If
        End While
        Console.WriteLine(vbCrLf & "Original text:" & vbCrLf & _
            vbCrLf & strWriter.ToString())

    End Sub
End Class

using System;
using System.IO;

class StringRW
{
    static void Main()
    {
        string textReaderText = "TextReader is the abstract base " +
            "class of StreamReader and StringReader, which read " +
            "characters from streams and strings, respectively.\n\n" +

            "Create an instance of TextReader to open a text file " +
            "for reading a specified range of characters, or to " +
            "create a reader based on an existing stream.\n\n" +

            "You can also use an instance of TextReader to read " +
            "text from a custom backing store using the same " +
            "APIs you would use for a string or a stream.\n\n";

        Console.WriteLine("Original text:\n\n{0}", textReaderText);

        // From textReaderText, create a continuous paragraph
        // with two spaces between each sentence.
        string aLine, aParagraph = null;
        StringReader strReader = new StringReader(textReaderText);
        while(true)
        {
            aLine = strReader.ReadLine();
            if(aLine != null)
            {
                aParagraph = aParagraph + aLine + " ";
            }
            else
            {
                aParagraph = aParagraph + "\n";
                break;
            }
        }
        Console.WriteLine("Modified text:\n\n{0}", aParagraph);

        // Re-create textReaderText from aParagraph.
        int intCharacter;
        char convertedCharacter;
        StringWriter strWriter = new StringWriter();
        strReader = new StringReader(aParagraph);
        while(true)
        {
            intCharacter = strReader.Read();

            // Check for the end of the string
            // before converting to a character.
            if(intCharacter == -1) break;

            convertedCharacter = Convert.ToChar(intCharacter);
            if(convertedCharacter == '.')
            {
                strWriter.Write(".\n\n");

                // Bypass the spaces between sentences.
                strReader.Read();
                strReader.Read();
            }
            else
            {
                strWriter.Write(convertedCharacter);
            }
        }
        Console.WriteLine("\nOriginal text:\n\n{0}",
            strWriter.ToString());
    }
}

using namespace System;
using namespace System::IO;
int main()
{
   String^ textReaderText = "TextReader is the abstract base "
   "class of StreamReader and StringReader, which read "
   "characters from streams and strings, respectively.\n\n"
   "Create an instance of TextReader to open a text file "
   "for reading a specified range of characters, or to "
   "create a reader based on an existing stream.\n\n"
   "You can also use an instance of TextReader to read "
   "text from a custom backing store using the same "
   "APIs you would use for a string or a stream.\n\n";
   Console::WriteLine(  "Original text:\n\n{0}", textReaderText );

   // From textReaderText, create a continuous paragraph
   // with two spaces between each sentence.
      String^ aLine;
   String^ aParagraph;
   StringReader^ strReader = gcnew StringReader( textReaderText );
   while ( true )
   {
      aLine = strReader->ReadLine();
      if ( aLine != nullptr )
      {
         aParagraph = String::Concat( aParagraph, aLine,  " " );
      }
      else
      {
         aParagraph = String::Concat( aParagraph,  "\n" );
         break;
      }
   }

   Console::WriteLine(  "Modified text:\n\n{0}", aParagraph );

   // Re-create textReaderText from aParagraph.
   int intCharacter;
   Char convertedCharacter;
   StringWriter^ strWriter = gcnew StringWriter;
   strReader = gcnew StringReader( aParagraph );
   while ( true )
   {
      intCharacter = strReader->Read();

      // Check for the end of the string
      // before converting to a character.
      if ( intCharacter == -1 )
            break;

      convertedCharacter = Convert::ToChar( intCharacter );
      if ( convertedCharacter == '.' )
      {
         strWriter->Write(  ".\n\n" );

         // Bypass the spaces between sentences.
         strReader->Read();
         strReader->Read();
      }
      else
      {
         strWriter->Write( convertedCharacter );
      }
   }

   Console::WriteLine(  "\nOriginal text:\n\n{0}", strWriter->ToString() );
}

System.IO System.IO..::.StringWriterStringWriter
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 成员
System.IO 命名空间
StringBuilder
StringReader

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter 成员

StringWriter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

实现一个用于将信息写入字符串的 TextWriter。该信息存储在基础 StringBuilder 中。 实现一个用于将信息写入字符串的 TextWriter。该信息存储在基础 StringBuilder 中。

StringWriter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

StringWriter 类
System.IO 命名空间


StringWriter 构造函数

StringWriter 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

初始化 StringWriter 类的新实例。

名称 说明
页首

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间


StringWriter 构造函数

StringWriter 构造函数
StringWriter 类

初始化 StringWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New
public StringWriter()
public:
StringWriter()
new : unit -> StringWriter

自动创建新的 StringBuilder 并将其与新的 StringWriter 关联。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

下面的代码示例阐释了如何使用 StringWriter 类构造字符串。

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Text

Public Class StrWriter

    Shared Sub Main()

        Dim strWriter As StringWriter = new StringWriter()

        ' Use the three overloads of the Write method that are
        ' overridden by the StringWriter class.
        strWriter.Write("file path characters are: ")
        strWriter.Write( _
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length)
        strWriter.Write("."C)

        ' Use the underlying StringBuilder for more complex
        ' manipulations of the string.
        strWriter.GetStringBuilder().Insert(0, "Invalid ")

        Console.WriteLine("The following string is {0} encoded." _
            & vbCrLf & "{1}", _
            strWriter.Encoding.EncodingName, strWriter.ToString())

    End Sub
End Class

using System;
using System.IO;
using System.Text;

class StrWriter
{
    static void Main()
    {
        StringWriter strWriter  = new StringWriter();

        // Use the three overloads of the Write method that are
        // overridden by the StringWriter class.
        strWriter.Write("file path characters are: ");
        strWriter.Write(
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);
        strWriter.Write('.');

        // Use the underlying StringBuilder for more complex
        // manipulations of the string.
        strWriter.GetStringBuilder().Insert(0, "Invalid ");

        Console.WriteLine("The following string is {0} encoded.\n{1}",
            strWriter.Encoding.EncodingName, strWriter.ToString());
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   StringWriter^ strWriter = gcnew StringWriter;

   // Use the three overloads of the Write method that are
   // overridden by the StringWriter class.
   strWriter->Write( "file path characters are: " );
   strWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );
   strWriter->Write( Char::Parse( "." ) );

   // Use the underlying StringBuilder for more complex
   // manipulations of the string.
   strWriter->GetStringBuilder()->Insert( 0, "Invalid " );

   Console::WriteLine( "The following string is {0} encoded.\n{1}", strWriter->Encoding->EncodingName, strWriter->ToString() );

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
StringWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter 构造函数 (IFormatProvider)

StringWriter 构造函数 (IFormatProvider)
StringWriter 类

使用指定的格式控制初始化 StringWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    formatProvider As IFormatProvider _
)
public StringWriter(
    IFormatProvider formatProvider
)
public:
StringWriter(
    IFormatProvider^ formatProvider
)
new :
        formatProvider:IFormatProvider -> StringWriter

参数

formatProvider
类型： System IFormatProvider
控制格式设置的 IFormatProvider 对象。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

下面的代码示例阐释了如何以特定的区域性构造字符串。

Imports Microsoft.VisualBasic
Imports System
Imports System.Globalization
Imports System.IO

Public Class StrWriter

    Shared Sub Main()
        Dim strWriter As New StringWriter(New CultureInfo("ar-DZ"))

        strWriter.Write(DateTime.Now)

        Console.WriteLine( _
            "Current date and time using the invariant culture: {0}" _
            & vbCrLf & _
            "Current date and time using the Algerian culture: {1}", _
            DateTime.Now.ToString(), strWriter.ToString())
    End Sub

End Class

using System;
using System.Globalization;
using System.IO;

class StrWriter
{
    static void Main()
    {
        StringWriter strWriter =
            new StringWriter(new CultureInfo("ar-DZ"));

        strWriter.Write(DateTime.Now);

        Console.WriteLine(
            "Current date and time using the invariant culture: {0}\n" +
            "Current date and time using the Algerian culture: {1}",
            DateTime.Now.ToString(), strWriter.ToString());
    }
}

using namespace System;
using namespace System::Globalization;
using namespace System::IO;
int main()
{
   StringWriter^ strWriter = gcnew StringWriter( gcnew CultureInfo(  "ar-DZ" ) );
   strWriter->Write( DateTime::Now );

   Console::WriteLine( "Current date and time using the invariant culture: {0}\n"
   "Current date and time using the Algerian culture: {1}", DateTime::Now.ToString(), strWriter->ToString() );

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
StringWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter 构造函数 (StringBuilder)

StringWriter 构造函数 (StringBuilder)
StringWriter 类

初始化写入指定 StringBuilder 的 StringWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    sb As StringBuilder _
)
public StringWriter(
    StringBuilder sb
)
public:
StringWriter(
    StringBuilder^ sb
)
new :
        sb:StringBuilder -> StringWriter

参数

sb
类型： System.Text StringBuilder
要写入的 StringBuilder。
异常 | 条件
ArgumentNullException | sb 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

下面的代码示例阐释了如何使用 StringBuilder 类修改关闭的 StringWriter 中的基础字符串。

Imports System
Imports System.IO
Imports System.Text

Public Class StrWriter

    Shared Sub Main()
        Dim strBuilder As New StringBuilder( _
            "file path characters are: ")
        Dim strWriter As New StringWriter(strBuilder)

        strWriter.Write( _
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length)

        strWriter.Close()

        ' Since the StringWriter is closed, an exception will
        ' be thrown if the Write method is called. However,
        ' the StringBuilder can still manipulate the string.
        strBuilder.Insert(0, "Invalid ")
        Console.WriteLine(strWriter.ToString())
    End Sub

End Class

using System;
using System.IO;
using System.Text;

class StrWriter
{
    static void Main()
    {
        StringBuilder strBuilder =
            new StringBuilder("file path characters are: ");
        StringWriter strWriter = new StringWriter(strBuilder);

        strWriter.Write(
            Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);

        strWriter.Close();

        // Since the StringWriter is closed, an exception will
        // be thrown if the Write method is called. However,
        // the StringBuilder can still manipulate the string.
        strBuilder.Insert(0, "Invalid ");
        Console.WriteLine(strWriter.ToString());
    }
}

using namespace System;
using namespace System::IO;
using namespace System::Text;
int main()
{
   StringBuilder^ strBuilder = gcnew StringBuilder( "file path characters are: " );
   StringWriter^ strWriter = gcnew StringWriter( strBuilder );
   strWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );

   strWriter->Close();

   // Since the StringWriter is closed, an exception will
   // be thrown if the Write method is called. However,
   // the StringBuilder can still manipulate the string.
   strBuilder->Insert( 0, "Invalid " );
   Console::WriteLine( strWriter->ToString() );

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
StringWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter 构造函数 (StringBuilder, IFormatProvider)

StringWriter 构造函数 (StringBuilder, IFormatProvider)
StringWriter 类

初始化写入指定 StringBuilder 并具有指定格式提供程序的 StringWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    sb As StringBuilder, _
    formatProvider As IFormatProvider _
)
public StringWriter(
    StringBuilder sb,
    IFormatProvider formatProvider
)
public:
StringWriter(
    StringBuilder^ sb,
    IFormatProvider^ formatProvider
)
new :
        sb:StringBuilder *
        formatProvider:IFormatProvider -> StringWriter

参数

sb
类型： System.Text StringBuilder
要写入的 StringBuilder。
formatProvider
类型： System IFormatProvider
控制格式设置的 IFormatProvider 对象。
异常 | 条件
ArgumentNullException | sb 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
StringWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter 字段

StringWriter 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

StringWriter 类型公开以下成员。

名称 说明
页首

参考

StringWriter 类
System.IO 命名空间


StringWriter 方法

StringWriter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

StringWriter 类型公开以下成员。

名称 说明
页首

参考

StringWriter 类
System.IO 命名空间


StringWriter ..::.Close 方法

StringWriter
.
.
::
.
Close 方法
StringWriter 类

关闭当前的 StringWriter 和基础流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见 如何：对新建的数据文件进行读取和写入。

此方法重写 Stream..::.Close。

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

此代码示例是为 StringWriter(StringBuilder) 构造函数提供的一个更大示例的一部分。

strWriter.Close()

' Since the StringWriter is closed, an exception will
' be thrown if the Write method is called. However,
' the StringBuilder can still manipulate the string.
strBuilder.Insert(0, "Invalid ")
Console.WriteLine(strWriter.ToString())

strWriter.Close();

// Since the StringWriter is closed, an exception will
// be thrown if the Write method is called. However,
// the StringBuilder can still manipulate the string.
strBuilder.Insert(0, "Invalid ");
Console.WriteLine(strWriter.ToString());

strWriter->Close();

// Since the StringWriter is closed, an exception will
// be thrown if the Write method is called. However,
// the StringBuilder can still manipulate the string.
strBuilder->Insert( 0, "Invalid " );
Console::WriteLine( strWriter->ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.Dispose 方法

StringWriter
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

名称 说明
页首

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间


StringWriter ..::.Dispose 方法 (Boolean)

StringWriter
.
.
::
.
Dispose 方法 (Boolean)
StringWriter 类

释放由 StringWriter 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

当 disposing 参数为 true 时，此方法释放该 StringWriter 引用的、由任何托管对象持有的全部资源。此方法调用每个引用对象的 Dispose 方法。 当 disposing 参数为 true 时，此方法释放该 StringWriter 引用的、由任何托管对象持有的全部资源。此方法调用每个引用对象的 Dispose 方法。

对继承者的说明

Dispose 可以由其他对象多次调用。在重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已被释放的对象。 Dispose 可以由其他对象多次调用。在重写 Dispose 时，注意不要引用在以前对 Dispose 的调用中已被释放的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.GetStringBuilder 方法

StringWriter
.
.
::
.
GetStringBuilder 方法
StringWriter 类

返回基础 StringBuilder。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function GetStringBuilder As StringBuilder
public virtual StringBuilder GetStringBuilder()
public:
virtual StringBuilder^ GetStringBuilder()
abstract GetStringBuilder : unit -> StringBuilder
override GetStringBuilder : unit -> StringBuilder

返回值

类型： System.Text StringBuilder
基础 StringBuilder。

这或者是传递到构造函数的 StringBuilder 或者是自动创建的 StringBuilder。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本

此代码示例是为 StringWriter()()() 构造函数提供的一个更大示例的一部分。

' Use the underlying StringBuilder for more complex
' manipulations of the string.
strWriter.GetStringBuilder().Insert(0, "Invalid ")

// Use the underlying StringBuilder for more complex
// manipulations of the string.
strWriter.GetStringBuilder().Insert(0, "Invalid ");

// Use the underlying StringBuilder for more complex
// manipulations of the string.
strWriter->GetStringBuilder()->Insert( 0, "Invalid " );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.MemberwiseClone 方法

StringWriter
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

名称 说明
页首

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间


StringWriter ..::.ToString 方法

StringWriter
.
.
::
.
ToString 方法
StringWriter 类

返回包含迄今为止写入到当前 StringWriter 中的字符的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
包含写入到当前 StringWriter 中的字符的字符串。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本

此代码示例是为 StringWriter(IFormatProvider) 构造函数提供的一个更大示例的一部分。

Console.WriteLine( _
    "Current date and time using the invariant culture: {0}" _
    & vbCrLf & _
    "Current date and time using the Algerian culture: {1}", _
    DateTime.Now.ToString(), strWriter.ToString())

Console.WriteLine(
    "Current date and time using the invariant culture: {0}\n" +
    "Current date and time using the Algerian culture: {1}",
    DateTime.Now.ToString(), strWriter.ToString());

Console::WriteLine( "Current date and time using the invariant culture: {0}\n"
"Current date and time using the Algerian culture: {1}", DateTime::Now.ToString(), strWriter->ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.Write 方法

StringWriter
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

写入到 StringWriter 的此实例中。

名称 说明
页首

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间


StringWriter ..::.Write 方法 (Char)

StringWriter
.
.
::
.
Write 方法 (Char)
StringWriter 类

将一个字符写入到 StringWriter 的此实例中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    value As Char _
)
public override void Write(
    char value
)
public:
virtual void Write(
    wchar_t value
) override
abstract Write :
        value:char -> unit
override Write :
        value:char -> unit

参数

value
类型： System Char
要写入的字符。
异常 | 条件
ObjectDisposedException | 编写器已关闭。

此方法重写 TextWriter..::.Write。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例是为 StringWriter()()() 构造函数提供的一个更大示例的一部分。

' Use the three overloads of the Write method that are
' overridden by the StringWriter class.
strWriter.Write("file path characters are: ")
strWriter.Write( _
    Path.InvalidPathChars, 0, Path.InvalidPathChars.Length)
strWriter.Write("."C)

// Use the three overloads of the Write method that are
// overridden by the StringWriter class.
strWriter.Write("file path characters are: ");
strWriter.Write(
    Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);
strWriter.Write('.');

// Use the three overloads of the Write method that are
// overridden by the StringWriter class.
strWriter->Write( "file path characters are: " );
strWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );
strWriter->Write( Char::Parse( "." ) );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.Write 方法 (String)

StringWriter
.
.
::
.
Write 方法 (String)
StringWriter 类

将字符串写入到 StringWriter 的此实例中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    value As String _
)
public override void Write(
    string value
)
public:
virtual void Write(
    String^ value
) override
abstract Write :
        value:string -> unit
override Write :
        value:string -> unit

参数

value
类型： System String
要写入的字符串。
异常 | 条件
ObjectDisposedException | 编写器已关闭。

此方法重写 TextWriter..::.Write。

如果指定的字符串为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何内容。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例摘自一个为 StringWriter 类提供的更大示例。

convertedCharacter = Convert.ToChar(intCharacter)
If convertedCharacter = "."C Then
    strWriter.Write("." & vbCrLf & vbCrLf)

    ' Bypass the spaces between sentences.
    strReader.Read()
    strReader.Read()

convertedCharacter = Convert.ToChar(intCharacter);
if(convertedCharacter == '.')
{
    strWriter.Write(".\n\n");

    // Bypass the spaces between sentences.
    strReader.Read();
    strReader.Read();
}

convertedCharacter = Convert::ToChar( intCharacter );
if ( convertedCharacter == '.' )
{
   strWriter->Write(  ".\n\n" );

   // Bypass the spaces between sentences.
   strReader->Read();
   strReader->Read();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

StringWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
StringWriter 类

将字符数组的指定区域写入到 StringWriter 的此实例中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public override void Write(
    char[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
) override
abstract Write :
        buffer:char[] *
        index:int *
        count:int -> unit
override Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

将从中读取数据的字符数组。
index
类型： System Int32
从 buffer 的索引处开始读取。
count
类型： System Int32
要写入的最大字符数。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ArgumentException | (index + count)> buffer。Length. (index + count)> buffer。Length.
ObjectDisposedException | 编写器已关闭。

此方法重写 TextWriter..::.Write。

该方法将数据的 count 个字符从 buffer 写入到此 StringWriter 中，并从 index 位置开始写入。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本
向文件中追加文本。 | 如何：打开并追加到日志文件 File AppendText FileInfo AppendText
获取文件大小。 | FileInfo Length
获取文件特性。 | File GetAttributes
设置文件特性。 | File SetAttributes
确定文件是否存在。 | File Exists
读取二进制文件。 | 如何：对新建的数据文件进行读取和写入
写入二进制文件。 | 如何：对新建的数据文件进行读取和写入

此代码示例是为 StringWriter()()() 构造函数提供的一个更大示例的一部分。

' Use the three overloads of the Write method that are
' overridden by the StringWriter class.
strWriter.Write("file path characters are: ")
strWriter.Write( _
    Path.InvalidPathChars, 0, Path.InvalidPathChars.Length)
strWriter.Write("."C)

// Use the three overloads of the Write method that are
// overridden by the StringWriter class.
strWriter.Write("file path characters are: ");
strWriter.Write(
    Path.InvalidPathChars, 0, Path.InvalidPathChars.Length);
strWriter.Write('.');

// Use the three overloads of the Write method that are
// overridden by the StringWriter class.
strWriter->Write( "file path characters are: " );
strWriter->Write( Path::InvalidPathChars, 0, Path::InvalidPathChars->Length );
strWriter->Write( Char::Parse( "." ) );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


StringWriter ..::.WriteLine 方法

StringWriter
.
.
::
.
WriteLine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

写入重载参数指定的某些数据，后跟行结束符。

名称 说明
页首

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间


StringWriter 属性

StringWriter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StringWriter 类

StringWriter 类型公开以下成员。

名称 说明
页首

参考

StringWriter 类
System.IO 命名空间


StringWriter ..::.Encoding 属性

StringWriter
.
.
::
.
Encoding 属性
StringWriter 类

获取将输出写入到其中的 Encoding。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Encoding As Encoding
    Get
public override Encoding Encoding { get; }
public:
virtual property Encoding^ Encoding {
    Encoding^ get () override;
}
abstract Encoding : Encoding
override Encoding : Encoding

属性值

类型： System.Text Encoding
用来写入输出的 Encoding。

此属性对于某些 XML 方案是必需的，在这些方案中，必须写入包含 StringWriter 所使用的编码的标头。这允许 XML 代码使用任意的 StringWriter 并生成正确的 XML 标题。 此属性对于某些 XML 方案是必需的，在这些方案中，必须写入包含 StringWriter 所使用的编码的标头。这允许 XML 代码使用任意的 StringWriter 并生成正确的 XML 标题。

下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作... | 请参见本主题中的示例...
创建文本文件。 | 如何：向文件写入文本
写入文本文件。 | 如何：向文件写入文本
读取文本文件。 | 如何：从文件读取文本

此代码示例是为 StringWriter()()() 构造函数提供的一个更大示例的一部分。

Console.WriteLine("The following string is {0} encoded." _
    & vbCrLf & "{1}", _
    strWriter.Encoding.EncodingName, strWriter.ToString())

Console.WriteLine("The following string is {0} encoded.\n{1}",
    strWriter.Encoding.EncodingName, strWriter.ToString());

Console::WriteLine( "The following string is {0} encoded.\n{1}", strWriter->Encoding->EncodingName, strWriter->ToString() );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

StringWriter 类
StringWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader 类

TextReader 类
成员

表示可读取连续字符系列的读取器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class TextReader _
    Inherits MarshalByRefObject _
    Implements IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class TextReader : MarshalByRefObject,
    IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class TextReader abstract : public MarshalByRefObject,
    IDisposable
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type TextReader =
    class
        inherit MarshalByRefObject
        interface IDisposable
    end

TextReader 为 StreamReader 和 StringReader 的抽象基类，它们分别从流和字符串读取字符。使用这些派生类可打开一个文本文件以读取指定范围的字符，或基于现有的流创建一个读取器。 TextReader 为 StreamReader 和 StringReader 的抽象基类，它们分别从流和字符串读取字符。使用这些派生类可打开一个文本文件以读取指定范围的字符，或基于现有的流创建一个读取器。

对继承者的说明

派生类必须至少实现 Peek 和 Read 方法以创建一个有用的 TextReader 实例。

System.IO System.IO..::.TextReaderTextReader

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


TextReader 成员

TextReader 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextReader 类

表示可读取连续字符系列的读取器。

TextReader 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

TextReader 类
System.IO 命名空间


TextReader 构造函数

TextReader 构造函数
TextReader 类

初始化 TextReader 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected TextReader()
protected:
TextReader()
new : unit -> TextReader

对派生类使用此构造函数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader 字段

TextReader 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextReader 类

TextReader 类型公开以下成员。

名称 说明
页首

参考

TextReader 类
System.IO 命名空间


TextReader ..::.Null 字段

TextReader
.
.
::
.
Null 字段
TextReader 类

提供一个无数据可供读取的 TextReader。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly Null As TextReader
public static readonly TextReader Null
public:
static initonly TextReader^ Null
static val Null: TextReader

从 Null 文本读取器读取类似于从流的结尾读取：

  • Read 和 Peek 方法返回 -1。

  • ReadBlock 方法将返回零。

  • ReadLine 方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

  • ReadToEnd 方法将返回空字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader 方法

TextReader 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextReader 类

TextReader 类型公开以下成员。

名称 说明
页首

参考

TextReader 类
System.IO 命名空间


TextReader ..::.Close 方法

TextReader
.
.
::
.
Close 方法
TextReader 类

关闭 TextReader 并释放与该 TextReader 关联的所有系统资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Close
public virtual void Close()
public:
virtual void Close()
abstract Close : unit -> unit
override Close : unit -> unit

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式调用 Close，否则刷新该流时不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

调用 Close 后，在 TextReader 上进行的任何操作均可能引发异常。此默认方法为空，但派生类可重写该方法以提供适当的功能。 调用 Close 后，在 TextReader 上进行的任何操作均可能引发异常。此默认方法为空，但派生类可重写该方法以提供适当的功能。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.Dispose 方法

TextReader
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextReader 类

释放由 TextReader 对象占用的所有资源。

名称 说明
页首

参考

TextReader 类
TextReader 成员
System.IO 命名空间


TextReader ..::.Dispose 方法

TextReader
.
.
::
.
Dispose 方法
TextReader 类

释放由 TextReader 对象占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

使用完 TextReader 后调用 Dispose。Dispose 方法使 TextReader 处于不可用状态。调用 Dispose 后，必须释放对 TextReader 的所有引用，这样垃圾回收器才能回收 TextReader 占用的内存。 使用完 TextReader 后调用 Dispose。Dispose 方法使 TextReader 处于不可用状态。调用 Dispose 后，必须释放对 TextReader 的所有引用，这样垃圾回收器才能回收 TextReader 占用的内存。 使用完 TextReader 后调用 Dispose。Dispose 方法使 TextReader 处于不可用状态。调用 Dispose 后，必须释放对 TextReader 的所有引用，这样垃圾回收器才能回收 TextReader 占用的内存。

有关更多信息，请参见清理非托管资源和 实现 Dispose 方法。

说明 说明

释放对 TextReader 的最后一个引用之前，始终应先调用 Dispose。否则，在垃圾回收器调用 TextReader 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。 释放对 TextReader 的最后一个引用之前，始终应先调用 Dispose。否则，在垃圾回收器调用 TextReader 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
Dispose 重载
System.IO 命名空间


TextReader ..::.Dispose 方法 (Boolean)

TextReader
.
.
::
.
Dispose 方法 (Boolean)
TextReader 类

释放由 TextReader 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由公共的 Dispose 方法和 Finalize 方法调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。 此方法由公共的 Dispose 方法和 Finalize 方法调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。 此方法由公共的 Dispose 方法和 Finalize 方法调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。

disposing 参数为 true 时，此方法释放此 TextReader 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 TextReader 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。

有关 IDisposable..::.Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.MemberwiseClone 方法

TextReader
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextReader 类

名称 说明
页首

参考

TextReader 类
TextReader 成员
System.IO 命名空间


TextReader ..::.Peek 方法

TextReader
.
.
::
.
Peek 方法
TextReader 类

读取下一个字符，而不更改读取器状态或字符源。返回下一个可用字符，而实际上并不从输入流中读取此字符。 读取下一个字符，而不更改读取器状态或字符源。返回下一个可用字符，而实际上并不从输入流中读取此字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Peek As Integer
public virtual int Peek()
public:
virtual int Peek()
abstract Peek : unit -> int
override Peek : unit -> int

返回值

类型： System Int32
一个整数，它表示下一个要读取的字符，或者如果没有更多的可用字符或此流不支持查找，则为 -1。
异常 | 条件
ObjectDisposedException | TextReader 是关闭的。
IOException | 发生 I/O 错误。

Peek 方法返回一个整数值，以确定是到达文件结尾还是发生另一个错误。这样一来，用户在将返回值强制转换为 Char 类型之前就可以首先检查该值是否为 -1。 Peek 方法返回一个整数值，以确定是到达文件结尾还是发生另一个错误。这样一来，用户在将返回值强制转换为 Char 类型之前就可以首先检查该值是否为 -1。

此操作未更改 TextReader 的当前位置。如果没有更多字符可用，则返回的值为 –1。默认实现将返回 -1。 此操作未更改 TextReader 的当前位置。如果没有更多字符可用，则返回的值为 –1。默认实现将返回 -1。 此操作未更改 TextReader 的当前位置。如果没有更多字符可用，则返回的值为 –1。默认实现将返回 -1。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.Read 方法

TextReader
.
.
::
.
Read 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextReader 类

从输入流读取数据。

名称 说明
页首

参考

TextReader 类
TextReader 成员
System.IO 命名空间


TextReader ..::.Read 方法

TextReader
.
.
::
.
Read 方法
TextReader 类

读取输入流中的下一个字符并使该字符的位置提升一个字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Read As Integer
public virtual int Read()
public:
virtual int Read()
abstract Read : unit -> int
override Read : unit -> int

返回值

类型： System Int32
输入流中的下一个字符，或者如果没有更多的可用字符，则为 -1。默认实现将返回 -1。 输入流中的下一个字符，或者如果没有更多的可用字符，则为 -1。默认实现将返回 -1。
异常 | 条件
ObjectDisposedException | TextReader 是关闭的。
IOException | 发生 I/O 错误。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.Read 方法 ( array<Char >[]()[], Int32, Int32)

TextReader
.
.
::
.
Read 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
TextReader 类

从当前流中读取最大 count 的字符并从 index 开始将该数据写入 buffer。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function Read ( _
    <OutAttribute> buffer As Char(), _
    index As Integer, _
    count As Integer _
) As Integer
public virtual int Read(
    char[] buffer,
    int index,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<wchar_t>^ buffer,
    int index,
    int count
)
abstract Read :
        buffer:char[] byref *
        index:int *
        count:int -> int
override Read :
        buffer:char[] byref *
        index:int *
        count:int -> int

参数

buffer
类型：
array<
System Char
>
[]
()
[]

此方法返回时，包含指定的字符数组，该数组的 index 和 (index + count - 1) 之间的值由从当前源中读取的字符替换。
index
类型： System Int32
buffer 中开始写入的位置。
count
类型： System Int32
最多读取的字符数。如果在将 count 个字符读入 buffer 之前已到达流的末尾，则当前方法将返回。 最多读取的字符数。如果在将 count 个字符读入 buffer 之前已到达流的末尾，则当前方法将返回。

返回值

类型： System Int32
已读取的字符数。该数小于或等于 count，具体取决于流中是否有可用的数据。如果调用此方法时没有更多的字符留下可供读取，则此方法返回 0。 已读取的字符数。该数小于或等于 count，具体取决于流中是否有可用的数据。如果调用此方法时没有更多的字符留下可供读取，则此方法返回 0。 已读取的字符数。该数小于或等于 count，具体取决于流中是否有可用的数据。如果调用此方法时没有更多的字符留下可供读取，则此方法返回 0。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | TextReader 是关闭的。
IOException | 发生 I/O 错误。

在读取 count 个字符或到达文件末尾之后，此方法将返回。ReadBlock 是此方法的条块化版本。 在读取 count 个字符或到达文件末尾之后，此方法将返回。ReadBlock 是此方法的条块化版本。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
Read 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.ReadBlock 方法

TextReader
.
.
::
.
ReadBlock 方法
TextReader 类

从当前流中读取最大 count 的字符并从 index 开始将该数据写入 buffer。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadBlock ( _
    <OutAttribute> buffer As Char(), _
    index As Integer, _
    count As Integer _
) As Integer
public virtual int ReadBlock(
    char[] buffer,
    int index,
    int count
)
public:
virtual int ReadBlock(
    [InAttribute] [OutAttribute] array<wchar_t>^ buffer,
    int index,
    int count
)
abstract ReadBlock :
        buffer:char[] byref *
        index:int *
        count:int -> int
override ReadBlock :
        buffer:char[] byref *
        index:int *
        count:int -> int

参数

buffer
类型：
array<
System Char
>
[]
()
[]

此方法返回时，此参数包含指定的字符数组，该数组中从 index 到 (index + count -1) 之间的值由从当前源中读取的字符替换。
index
类型： System Int32
buffer 中开始读取的位置。
count
类型： System Int32
最多读取的字符数。

返回值

类型： System Int32
基础流的位置由读入 buffer 的字符编号提前。
已读取的字符数。该数字将小于或等于 count，具体取决于是否所有的输入字符都已读取。 已读取的字符数。该数字将小于或等于 count，具体取决于是否所有的输入字符都已读取。
异常 | 条件
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | TextReader 是关闭的。
IOException | 发生 I/O 错误。

此方法将阻塞，直到读取数目为 count 的字符或读取了所有字符。这是 Read 的条块化版本。 此方法将阻塞，直到读取数目为 count 的字符或读取了所有字符。这是 Read 的条块化版本。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.ReadLine 方法

TextReader
.
.
::
.
ReadLine 方法
TextReader 类

从当前流中读取一行字符并将数据作为字符串返回。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadLine As String
public virtual string ReadLine()
public:
virtual String^ ReadLine()
abstract ReadLine : unit -> string
override ReadLine : unit -> string

返回值

类型： System String
输入流的下一行，或者如果已读取了所有字符，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
IOException | 发生 I/O 错误。
OutOfMemoryException | 内存不足，无法为返回的字符串分配缓冲区。
ObjectDisposedException | TextReader 是关闭的。
ArgumentOutOfRangeException | 下一行中的字符数大于 MaxValue

将行定义为一个后跟回车符 (0x000d)、换行符 (0x000a)、跟有换行符的回车符、Environment..::.NewLine 或流末尾标记的字符序列。返回的字符串不包含终止回车符和/或换行符。如果到达了输入流的末尾，返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 将行定义为一个后跟回车符 (0x000d)、换行符 (0x000a)、跟有换行符的回车符、Environment..::.NewLine 或流末尾标记的字符序列。返回的字符串不包含终止回车符和/或换行符。如果到达了输入流的末尾，返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 将行定义为一个后跟回车符 (0x000d)、换行符 (0x000a)、跟有换行符的回车符、Environment..::.NewLine 或流末尾标记的字符序列。返回的字符串不包含终止回车符和/或换行符。如果到达了输入流的末尾，返回值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 中的位置会向前推进该方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被放弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 TextReader 访问它们。如果流内的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 中的位置会向前推进该方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被放弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 TextReader 访问它们。如果流内的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 中的位置会向前推进该方法能够读取的字符数，而已经读入内部 ReadLine 缓冲区中的字符将被放弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 TextReader 访问它们。如果流内的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream。

为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.ReadToEnd 方法

TextReader
.
.
::
.
ReadToEnd 方法
TextReader 类

读取从当前位置到 TextReader 的结尾的所有字符并将它们作为一个字符串返回。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Function ReadToEnd As String
public virtual string ReadToEnd()
public:
virtual String^ ReadToEnd()
abstract ReadToEnd : unit -> string
override ReadToEnd : unit -> string

返回值

类型： System String
包含从当前位置到 TextReader 的结尾的所有字符的字符串。
异常 | 条件
IOException | 发生 I/O 错误。
ObjectDisposedException | TextReader 是关闭的。
OutOfMemoryException | 内存不足，无法为返回的字符串分配缓冲区。
ArgumentOutOfRangeException | 下一行中的字符数大于 MaxValue

如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 中的位置会向前推进该方法能够读取的字符数，而已经读入内部 ReadToEnd 缓冲区中的字符将被放弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 TextReader 访问它们。如果流内的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 中的位置会向前推进该方法能够读取的字符数，而已经读入内部 ReadToEnd 缓冲区中的字符将被放弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 TextReader 访问它们。如果流内的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream。 如果当前方法引发 OutOfMemoryException，则读取器在基础 Stream 中的位置会向前推进该方法能够读取的字符数，而已经读入内部 ReadToEnd 缓冲区中的字符将被放弃。因为无法更改读取器在流中的位置，所以已经读取的字符是无法恢复的，只能通过重新初始化 TextReader 访问它们。如果流内的初始位置未知，或者流不支持查找，则也需要重新初始化基础 Stream。

为避免这种情况并产生可靠的代码，应使用 Read 方法，并将已读取的字符存储在预先分配的缓冲区内。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextReader ..::.Synchronized 方法

TextReader
.
.
::
.
Synchronized 方法
TextReader 类

在指定 TextReader 周围创建线程安全包装。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)> _
Public Shared Function Synchronized ( _
    reader As TextReader _
) As TextReader
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public static TextReader Synchronized(
    TextReader reader
)
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true)]
public:
static TextReader^ Synchronized(
    TextReader^ reader
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)>]
static member Synchronized :
        reader:TextReader -> TextReader

参数

reader
类型： System.IO TextReader
要同步的 TextReader。

返回值

类型： System.IO TextReader
一个线程安全的 TextReader。
异常 | 条件
ArgumentNullException | reader 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当前方法返回一个类，该类包装指定的 TextReader 实例，并限制多个线程对该实例的访问。从返回的包装进行的所有读取将是线程安全的。 当前方法返回一个类，该类包装指定的 TextReader 实例，并限制多个线程对该实例的访问。从返回的包装进行的所有读取将是线程安全的。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextReader 类
TextReader 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter 类

TextWriter 类
成员

表示可以编写一个有序字符系列的编写器。该类为抽象类。 表示可以编写一个有序字符系列的编写器。该类为抽象类。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class TextWriter _
    Inherits MarshalByRefObject _
    Implements IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class TextWriter : MarshalByRefObject,
    IDisposable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class TextWriter abstract : public MarshalByRefObject,
    IDisposable
[<AbstractClassAttribute>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type TextWriter =
    class
        inherit MarshalByRefObject
        interface IDisposable
    end

TextWriter 是 StreamWriter 和 StringWriter 的抽象基类，它们将字符分别写入流和字符串。创建一个 TextWriter 实例，将对象写入字符串，或将字符串写入文件，或序列化 XML。也可使用 TextWriter 的实例将文本写入自定义后备存储区（所使用的 API 与用于字符串或流的 API 相同），或者增加对文本格式化的支持。 TextWriter 是 StreamWriter 和 StringWriter 的抽象基类，它们将字符分别写入流和字符串。创建一个 TextWriter 实例，将对象写入字符串，或将字符串写入文件，或序列化 XML。也可使用 TextWriter 的实例将文本写入自定义后备存储区（所使用的 API 与用于字符串或流的 API 相同），或者增加对文本格式化的支持。 TextWriter 是 StreamWriter 和 StringWriter 的抽象基类，它们将字符分别写入流和字符串。创建一个 TextWriter 实例，将对象写入字符串，或将字符串写入文件，或序列化 XML。也可使用 TextWriter 的实例将文本写入自定义后备存储区（所使用的 API 与用于字符串或流的 API 相同），或者增加对文本格式化的支持。

TextWriter 的所有使用基元数据类型作为参数的 Write 方法都将值作为字符串写出。

默认情况下，TextWriter 不是线程安全的。有关线程安全包装的信息，请参见 TextWriter..::.Synchronized。 默认情况下，TextWriter 不是线程安全的。有关线程安全包装的信息，请参见 TextWriter..::.Synchronized。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

对继承者的说明

派生类必须至少实现 Write 方法才能创建有用的 TextWriter 实例。

System.IO System.IO..::.TextWriterTextWriter

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本
基本的文件 I/O
如何：对新建的数据文件进行读取和写入


TextWriter 成员

TextWriter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

表示可以编写一个有序字符系列的编写器。该类为抽象类。 表示可以编写一个有序字符系列的编写器。该类为抽象类。

TextWriter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

TextWriter 类
System.IO 命名空间


TextWriter 构造函数

TextWriter 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

初始化 TextWriter 类的新实例。

名称 说明
页首

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间


TextWriter 构造函数

TextWriter 构造函数
TextWriter 类

初始化 TextWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected TextWriter()
protected:
TextWriter()
new : unit -> TextWriter

对派生类使用此构造函数。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
TextWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter 构造函数 (IFormatProvider)

TextWriter 构造函数 (IFormatProvider)
TextWriter 类

使用指定的格式提供程序初始化 TextWriter 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New ( _
    formatProvider As IFormatProvider _
)
protected TextWriter(
    IFormatProvider formatProvider
)
protected:
TextWriter(
    IFormatProvider^ formatProvider
)
new :
        formatProvider:IFormatProvider -> TextWriter

参数

formatProvider
类型： System IFormatProvider
控制格式设置的 IFormatProvider 对象。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
TextWriter 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter 字段

TextWriter 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

TextWriter 类型公开以下成员。

名称 说明
页首

参考

TextWriter 类
System.IO 命名空间


TextWriter ..::.CoreNewLine 字段

TextWriter
.
.
::
.
CoreNewLine 字段
TextWriter 类

存储用于此 TextWriter 的换行符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected CoreNewLine As Char()
protected char[] CoreNewLine
protected:
array<wchar_t>^ CoreNewLine
val mutable CoreNewLine: char[]

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Null 字段

TextWriter
.
.
::
.
Null 字段
TextWriter 类

提供 TextWriter，它不带任何可写入但无法从中读取的后备存储区。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Shared ReadOnly Null As TextWriter
public static readonly TextWriter Null
public:
static initonly TextWriter^ Null
static val Null: TextWriter

使用 Null 将输出重定向到不占用任何操作系统资源的流。

在 Null 上调用 TextWriter..::.Write 方法时，调用只是返回，并没有任何数据实际写入任何后备存储区。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter 方法

TextWriter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

TextWriter 类型公开以下成员。

名称 说明
页首

参考

TextWriter 类
System.IO 命名空间


TextWriter ..::.Close 方法

TextWriter
.
.
::
.
Close 方法
TextWriter 类

关闭当前编写器并释放任何与该编写器关联的系统资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Close
public virtual void Close()
public:
virtual void Close()
abstract Close : unit -> unit
override Close : unit -> unit

Close 的此实现调用传递 true 值的 Dispose 方法。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

调用 Close 后，对编写器进行的任何操作都可能引发异常。此默认方法不执行任何操作，但派生类可以重写此方法以提供适当的功能。 调用 Close 后，对编写器进行的任何操作都可能引发异常。此默认方法不执行任何操作，但派生类可以重写此方法以提供适当的功能。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Dispose 方法

TextWriter
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

释放由 TextWriter 对象占用的所有资源。

名称 说明
页首

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间


TextWriter ..::.Dispose 方法

TextWriter
.
.
::
.
Dispose 方法
TextWriter 类

释放由 TextWriter 对象占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

使用完 TextWriter 后调用 Dispose。Dispose 方法使 TextWriter 处于不可用状态。调用 Dispose 后，必须释放对 TextWriter 的所有引用，这样垃圾回收器才能回收 TextWriter 占用的内存。 使用完 TextWriter 后调用 Dispose。Dispose 方法使 TextWriter 处于不可用状态。调用 Dispose 后，必须释放对 TextWriter 的所有引用，这样垃圾回收器才能回收 TextWriter 占用的内存。 使用完 TextWriter 后调用 Dispose。Dispose 方法使 TextWriter 处于不可用状态。调用 Dispose 后，必须释放对 TextWriter 的所有引用，这样垃圾回收器才能回收 TextWriter 占用的内存。

有关更多信息，请参见清理非托管资源和 实现 Dispose 方法。

注意 在释放上次对 TextWriter 的引用之前，应始终调用 Dispose。否则，在垃圾回收器调用 TextWriter 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。 注意 在释放上次对 TextWriter 的引用之前，应始终调用 Dispose。否则，在垃圾回收器调用 TextWriter 对象的 Finalize 方法之前，该对象所使用的资源将不会被释放。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Dispose 重载
System.IO 命名空间


TextWriter ..::.Dispose 方法 (Boolean)

TextWriter
.
.
::
.
Dispose 方法 (Boolean)
TextWriter 类

释放由 TextWriter 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由 Dispose 和 Finalize 调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。 此方法由 Dispose 和 Finalize 调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。 此方法由 Dispose 和 Finalize 调用。默认情况下，此方法将 disposing 参数指定为 true。Finalize 将 disposing 参数指定为 false。

disposing 参数为 true 时，此方法释放此 TextWriter 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 TextWriter 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

TextWriter..::.Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。 TextWriter..::.Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。 TextWriter..::.Dispose 可由其他对象调用多次。重写此方法时，注意不要引用在以前的 Dispose 调用中已释放的对象。有关如何实现此方法的更多信息，请参见 实现 Dispose 方法。

有关 IDisposable..::.Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Dispose 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Flush 方法

TextWriter
.
.
::
.
Flush 方法
TextWriter 类

清理当前编写器的所有缓冲区，使所有缓冲数据写入基础设备。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Flush
public virtual void Flush()
public:
virtual void Flush()
abstract Flush : unit -> unit
override Flush : unit -> unit

此默认方法不执行任何操作，但派生类可以重写此方法以提供适当的功能。

除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。 除非显式地调用 Flush 或 Close，否则，刷新流不会刷新其基础编码器。将 AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中，但不刷新编码器状态。这将允许编码器保持其状态（不完全字符），以便它可以正确地对下一个字符块进行编码。此方案影响 UTF8 和 UTF7，这二者中，某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.MemberwiseClone 方法

TextWriter
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

名称 说明
页首

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间


TextWriter ..::.Synchronized 方法

TextWriter
.
.
::
.
Synchronized 方法
TextWriter 类

在指定 TextWriter 周围创建线程安全包装。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)> _
Public Shared Function Synchronized ( _
    writer As TextWriter _
) As TextWriter
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public static TextWriter Synchronized(
    TextWriter writer
)
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true)]
public:
static TextWriter^ Synchronized(
    TextWriter^ writer
)
[<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)>]
static member Synchronized :
        writer:TextWriter -> TextWriter

参数

writer
类型： System.IO TextWriter
要同步的 TextWriter。

返回值

类型： System.IO TextWriter
线程安全包装。
异常 | 条件
ArgumentNullException | writer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

对返回的包装的所有写入都将具有线程安全性。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法

TextWriter
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

将给定数据类型写入文本流。

名称 说明
页首

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间


TextWriter ..::.Write 方法 (Boolean)

TextWriter
.
.
::
.
Write 方法 (Boolean)
TextWriter 类

将 Boolean 值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Boolean _
)
public virtual void Write(
    bool value
)
public:
virtual void Write(
    bool value
)
abstract Write :
        value:bool -> unit
override Write :
        value:bool -> unit

参数

value
类型： System Boolean
要写入的 Boolean。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

此方法输出 Boolean..::.TrueString 或 Boolean..::.FalseString。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (Char)

TextWriter
.
.
::
.
Write 方法 (Char)
TextWriter 类

将字符写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Char _
)
public virtual void Write(
    char value
)
public:
virtual void Write(
    wchar_t value
)
abstract Write :
        value:char -> unit
override Write :
        value:char -> unit

参数

value
类型： System Char
要写入文本流中的字符。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此默认方法不执行任何操作，但派生类可以重写此方法以提供适当的功能。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 ( array<Char >[]()[])

TextWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
)
TextWriter 类

将字符数组写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    buffer As Char() _
)
public virtual void Write(
    char[] buffer
)
public:
virtual void Write(
    array<wchar_t>^ buffer
)
abstract Write :
        buffer:char[] -> unit
override Write :
        buffer:char[] -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

要写入文本流中的字符数组。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

此默认方法调用 Write，并传递整个字符数组。如果字符数组为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何内容。 此默认方法调用 Write，并传递整个字符数组。如果字符数组为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不写入任何内容。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (Decimal)

TextWriter
.
.
::
.
Write 方法 (Decimal)
TextWriter 类

将十进制值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Decimal _
)
public virtual void Write(
    decimal value
)
public:
virtual void Write(
    Decimal value
)
abstract Write :
        value:decimal -> unit
override Write :
        value:decimal -> unit

参数

value
类型： System Decimal
要写入的十进制值。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

dd

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (Double)

TextWriter
.
.
::
.
Write 方法 (Double)
TextWriter 类

将 8 字节浮点值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Double _
)
public virtual void Write(
    double value
)
public:
virtual void Write(
    double value
)
abstract Write :
        value:float -> unit
override Write :
        value:float -> unit

参数

value
类型： System Double
要写入的 8 字节浮点值。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (Int32)

TextWriter
.
.
::
.
Write 方法 (Int32)
TextWriter 类

将 4 字节带符号整数的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Integer _
)
public virtual void Write(
    int value
)
public:
virtual void Write(
    int value
)
abstract Write :
        value:int -> unit
override Write :
        value:int -> unit

参数

value
类型： System Int32
要写入的 4 字节带符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (Int64)

TextWriter
.
.
::
.
Write 方法 (Int64)
TextWriter 类

将 8 字节带符号整数的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Long _
)
public virtual void Write(
    long value
)
public:
virtual void Write(
    long long value
)
abstract Write :
        value:int64 -> unit
override Write :
        value:int64 -> unit

参数

value
类型： System Int64
要写入的 8 字节带符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

如何：向文件写入文本

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间


TextWriter ..::.Write 方法 (Object)

TextWriter
.
.
::
.
Write 方法 (Object)
TextWriter 类

通过在对象上调用 ToString 将此对象的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Object _
)
public virtual void Write(
    Object value
)
public:
virtual void Write(
    Object^ value
)
abstract Write :
        value:Object -> unit
override Write :
        value:Object -> unit

参数

value
类型： System Object
要写入的对象。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此版本的 Write 等效于 Write。

如果指定的对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不采取任何操作且不引发任何异常。否则，将调用该对象的 ToString 方法以生成字符串表示形式，然后将结果字符串写入输出流。 如果指定的对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不采取任何操作且不引发任何异常。否则，将调用该对象的 ToString 方法以生成字符串表示形式，然后将结果字符串写入输出流。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (Single)

TextWriter
.
.
::
.
Write 方法 (Single)
TextWriter 类

将 4 字节浮点值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As Single _
)
public virtual void Write(
    float value
)
public:
virtual void Write(
    float value
)
abstract Write :
        value:float32 -> unit
override Write :
        value:float32 -> unit

参数

value
类型： System Single
要写入的 4 字节浮点值。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (String)

TextWriter
.
.
::
.
Write 方法 (String)
TextWriter 类

将字符串写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    value As String _
)
public virtual void Write(
    string value
)
public:
virtual void Write(
    String^ value
)
abstract Write :
        value:string -> unit
override Write :
        value:string -> unit

参数

value
类型： System String
要写入的字符串。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此版本的 Write 等效于 Write。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不会将任何内容写入文本流。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (UInt32)

TextWriter
.
.
::
.
Write 方法 (UInt32)
TextWriter 类

将 4 字节无符号整数的文本表示形式写入文本流。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub Write ( _
    value As UInteger _
)
[CLSCompliantAttribute(false)]
public virtual void Write(
    uint value
)
[CLSCompliantAttribute(false)]
public:
virtual void Write(
    unsigned int value
)
[<CLSCompliantAttribute(false)>]
abstract Write :
        value:uint32 -> unit
[<CLSCompliantAttribute(false)>]
override Write :
        value:uint32 -> unit

参数

value
类型： System UInt32
要写入的 4 字节无符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (UInt64)

TextWriter
.
.
::
.
Write 方法 (UInt64)
TextWriter 类

将 8 字节无符号整数的文本表示形式写入文本流。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub Write ( _
    value As ULong _
)
[CLSCompliantAttribute(false)]
public virtual void Write(
    ulong value
)
[CLSCompliantAttribute(false)]
public:
virtual void Write(
    unsigned long long value
)
[<CLSCompliantAttribute(false)>]
abstract Write :
        value:uint64 -> unit
[<CLSCompliantAttribute(false)>]
override Write :
        value:uint64 -> unit

参数

value
类型： System UInt64
要写入的 8 字节无符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (String, Object)

TextWriter
.
.
::
.
Write 方法 (String, Object)
TextWriter 类

使用与 String..::.Format 相同的语义写出格式化的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    format As String, _
    arg0 As Object _
)
public virtual void Write(
    string format,
    Object arg0
)
public:
virtual void Write(
    String^ format,
    Object^ arg0
)
abstract Write :
        format:string *
        arg0:Object -> unit
override Write :
        format:string *
        arg0:Object -> unit

参数

format
类型： System String
格式化字符串。
arg0
类型： System Object
要写入格式化字符串的对象。
异常 | 条件
ArgumentNullException | format 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (String, array<Object >[]()[])

TextWriter
.
.
::
.
Write 方法 (String,
array<
Object
>
[]
()
[]
)
TextWriter 类

使用与 String..::.Format 相同的语义写出格式化的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    format As String, _
    ParamArray arg As Object() _
)
public virtual void Write(
    string format,
    params Object[] arg
)
public:
virtual void Write(
    String^ format,
    ... array<Object^>^ arg
)
abstract Write :
        format:string *
        arg:Object[] -> unit
override Write :
        format:string *
        arg:Object[] -> unit

参数

format
类型： System String
格式化字符串。
arg
类型：
array<
System Object
>
[]
()
[]

要写入格式化字符串的对象数组。
异常 | 条件
ArgumentNullException | format 或 arg 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用来指示要设置格式的参数的数字小于零，或者大于或等于 arg。Length. 用来指示要设置格式的参数的数字小于零，或者大于或等于 arg。Length.

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

TextWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
TextWriter 类

将字符的子数组写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public virtual void Write(
    char[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
)
abstract Write :
        buffer:char[] *
        index:int *
        count:int -> unit
override Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

要从中写出数据的字符数组。
index
类型： System Int32
在缓冲区中开始索引。
count
类型： System Int32
要写入的字符数。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentNullException | buffer 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此方法将数据的 count 个字符从 buffer 字符数组写入到此 TextWriter 中（从 index 位置开始）。

此版本的 Write 等效于在 index 和 (index + count) 之间的 buffer 中的每个字符所对应的 Write。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (String, Object, Object)

TextWriter
.
.
::
.
Write 方法 (String, Object, Object)
TextWriter 类

使用与 String..::.Format 相同的语义写出格式化的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    format As String, _
    arg0 As Object, _
    arg1 As Object _
)
public virtual void Write(
    string format,
    Object arg0,
    Object arg1
)
public:
virtual void Write(
    String^ format,
    Object^ arg0,
    Object^ arg1
)
abstract Write :
        format:string *
        arg0:Object *
        arg1:Object -> unit
override Write :
        format:string *
        arg0:Object *
        arg1:Object -> unit

参数

format
类型： System String
格式化字符串。
arg0
类型： System Object
要写入格式化字符串的对象。
arg1
类型： System Object
要写入格式化字符串的对象。
异常 | 条件
ArgumentNullException | format 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.Write 方法 (String, Object, Object, Object)

TextWriter
.
.
::
.
Write 方法 (String, Object, Object, Object)
TextWriter 类

使用与 String..::.Format 相同的语义写出格式化的字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub Write ( _
    format As String, _
    arg0 As Object, _
    arg1 As Object, _
    arg2 As Object _
)
public virtual void Write(
    string format,
    Object arg0,
    Object arg1,
    Object arg2
)
public:
virtual void Write(
    String^ format,
    Object^ arg0,
    Object^ arg1,
    Object^ arg2
)
abstract Write :
        format:string *
        arg0:Object *
        arg1:Object *
        arg2:Object -> unit
override Write :
        format:string *
        arg0:Object *
        arg1:Object *
        arg2:Object -> unit

参数

format
类型： System String
格式化字符串。
arg0
类型： System Object
要写入格式化字符串的对象。
arg1
类型： System Object
要写入格式化字符串的对象。
arg2
类型： System Object
要写入格式化字符串的对象。
异常 | 条件
ArgumentNullException | format 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

TextWriter 类
TextWriter 成员
Write 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法

TextWriter
.
.
::
.
WriteLine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

写入重载参数指定的某些数据，后跟行结束符。

名称 说明
页首

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间


TextWriter ..::.WriteLine 方法

TextWriter
.
.
::
.
WriteLine 方法
TextWriter 类

将行结束符写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine
public virtual void WriteLine()
public:
virtual void WriteLine()
abstract WriteLine : unit -> unit
override WriteLine : unit -> unit
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Boolean)

TextWriter
.
.
::
.
WriteLine 方法 (Boolean)
TextWriter 类

将后跟行结束符的 Boolean 的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Boolean _
)
public virtual void WriteLine(
    bool value
)
public:
virtual void WriteLine(
    bool value
)
abstract WriteLine :
        value:bool -> unit
override WriteLine :
        value:bool -> unit

参数

value
类型： System Boolean
要写入的 Boolean。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

此方法输出 Boolean..::.TrueString 或 Boolean..::.FalseString。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Char)

TextWriter
.
.
::
.
WriteLine 方法 (Char)
TextWriter 类

将后跟行结束符的字符写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Char _
)
public virtual void WriteLine(
    char value
)
public:
virtual void WriteLine(
    wchar_t value
)
abstract WriteLine :
        value:char -> unit
override WriteLine :
        value:char -> unit

参数

value
类型： System Char
要写入文本流中的字符。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此版本的 WriteLine 等效于 Write 后加 WriteLine。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 ( array<Char >[]()[])

TextWriter
.
.
::
.
WriteLine 方法 (
array<
Char
>
[]
()
[]
)
TextWriter 类

将后跟行结束符的字符数组写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    buffer As Char() _
)
public virtual void WriteLine(
    char[] buffer
)
public:
virtual void WriteLine(
    array<wchar_t>^ buffer
)
abstract WriteLine :
        buffer:char[] -> unit
override WriteLine :
        buffer:char[] -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

从其读取数据的字符数组。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

buffer 中的所有字符都被写入基础流。如果字符数组为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则仅写入行结束符。 buffer 中的所有字符都被写入基础流。如果字符数组为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则仅写入行结束符。

此版本的 WriteLine 等效于 Write 后加 WriteLine。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Decimal)

TextWriter
.
.
::
.
WriteLine 方法 (Decimal)
TextWriter 类

将后面带有行结束符的十进制值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Decimal _
)
public virtual void WriteLine(
    decimal value
)
public:
virtual void WriteLine(
    Decimal value
)
abstract WriteLine :
        value:decimal -> unit
override WriteLine :
        value:decimal -> unit

参数

value
类型： System Decimal
要写入的十进制值。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Double)

TextWriter
.
.
::
.
WriteLine 方法 (Double)
TextWriter 类

将后跟行结束符的 8 字节浮点值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Double _
)
public virtual void WriteLine(
    double value
)
public:
virtual void WriteLine(
    double value
)
abstract WriteLine :
        value:float -> unit
override WriteLine :
        value:float -> unit

参数

value
类型： System Double
要写入的 8 字节浮点值。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Int32)

TextWriter
.
.
::
.
WriteLine 方法 (Int32)
TextWriter 类

将后跟行结束符的 4 字节带符号整数的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Integer _
)
public virtual void WriteLine(
    int value
)
public:
virtual void WriteLine(
    int value
)
abstract WriteLine :
        value:int -> unit
override WriteLine :
        value:int -> unit

参数

value
类型： System Int32
要写入的 4 字节带符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Int64)

TextWriter
.
.
::
.
WriteLine 方法 (Int64)
TextWriter 类

将后跟行结束符的 8 字节带符号整数的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Long _
)
public virtual void WriteLine(
    long value
)
public:
virtual void WriteLine(
    long long value
)
abstract WriteLine :
        value:int64 -> unit
override WriteLine :
        value:int64 -> unit

参数

value
类型： System Int64
要写入的 8 字节带符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Object)

TextWriter
.
.
::
.
WriteLine 方法 (Object)
TextWriter 类

通过在对象上调用 ToString 将后跟行结束符的此对象的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Object _
)
public virtual void WriteLine(
    Object value
)
public:
virtual void WriteLine(
    Object^ value
)
abstract WriteLine :
        value:Object -> unit
override WriteLine :
        value:Object -> unit

参数

value
类型： System Object
要写入的对象。如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则仅写入行结束字符。 要写入的对象。如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则仅写入行结束字符。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此版本的 WriteLine 等效于 Write。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (Single)

TextWriter
.
.
::
.
WriteLine 方法 (Single)
TextWriter 类

将后跟行结束符的 4 字节浮点值的文本表示形式写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As Single _
)
public virtual void WriteLine(
    float value
)
public:
virtual void WriteLine(
    float value
)
abstract WriteLine :
        value:float32 -> unit
override WriteLine :
        value:float32 -> unit

参数

value
类型： System Single
要写入的 4 字节浮点值。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (String)

TextWriter
.
.
::
.
WriteLine 方法 (String)
TextWriter 类

将后跟行结束符的字符串写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    value As String _
)
public virtual void WriteLine(
    string value
)
public:
virtual void WriteLine(
    String^ value
)
abstract WriteLine :
        value:string -> unit
override WriteLine :
        value:string -> unit

参数

value
类型： System String
要写入的字符串。如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则仅写入行结束字符。 要写入的字符串。如果 value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则仅写入行结束字符。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此版本的 WriteLine 等效于 Write。

行结束符字符串由 NewLine 属性定义。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (UInt32)

TextWriter
.
.
::
.
WriteLine 方法 (UInt32)
TextWriter 类

将后跟行结束符的 4 字节无符号整数的文本表示形式写入文本流。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub WriteLine ( _
    value As UInteger _
)
[CLSCompliantAttribute(false)]
public virtual void WriteLine(
    uint value
)
[CLSCompliantAttribute(false)]
public:
virtual void WriteLine(
    unsigned int value
)
[<CLSCompliantAttribute(false)>]
abstract WriteLine :
        value:uint32 -> unit
[<CLSCompliantAttribute(false)>]
override WriteLine :
        value:uint32 -> unit

参数

value
类型： System UInt32
要写入的 4 字节无符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (UInt64)

TextWriter
.
.
::
.
WriteLine 方法 (UInt64)
TextWriter 类

将后跟行结束符的 8 字节无符号整数的文本表示形式写入文本流。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Sub WriteLine ( _
    value As ULong _
)
[CLSCompliantAttribute(false)]
public virtual void WriteLine(
    ulong value
)
[CLSCompliantAttribute(false)]
public:
virtual void WriteLine(
    unsigned long long value
)
[<CLSCompliantAttribute(false)>]
abstract WriteLine :
        value:uint64 -> unit
[<CLSCompliantAttribute(false)>]
override WriteLine :
        value:uint64 -> unit

参数

value
类型： System UInt64
要写入的 8 字节无符号整数。
异常 | 条件
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

通过调用 ToString 产生指定值的文本表示形式。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (String, Object)

TextWriter
.
.
::
.
WriteLine 方法 (String, Object)
TextWriter 类

使用与 Format 相同的语义写出格式化的字符串和一个新行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    format As String, _
    arg0 As Object _
)
public virtual void WriteLine(
    string format,
    Object arg0
)
public:
virtual void WriteLine(
    String^ format,
    Object^ arg0
)
abstract WriteLine :
        format:string *
        arg0:Object -> unit
override WriteLine :
        format:string *
        arg0:Object -> unit

参数

format
类型： System String
格式化的字符串。
arg0
类型： System Object
要写入已格式化字符串的对象。
异常 | 条件
ArgumentNullException | format 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (String, array<Object >[]()[])

TextWriter
.
.
::
.
WriteLine 方法 (String,
array<
Object
>
[]
()
[]
)
TextWriter 类

使用与 Format 相同的语义写出格式化的字符串和一个新行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    format As String, _
    ParamArray arg As Object() _
)
public virtual void WriteLine(
    string format,
    params Object[] arg
)
public:
virtual void WriteLine(
    String^ format,
    ... array<Object^>^ arg
)
abstract WriteLine :
        format:string *
        arg:Object[] -> unit
override WriteLine :
        format:string *
        arg:Object[] -> unit

参数

format
类型： System String
格式化字符串。
arg
类型：
array<
System Object
>
[]
()
[]

要写入格式化字符串的对象数组。
异常 | 条件
ArgumentNullException | 字符串或对象作为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 传入。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用来指示要设置格式的参数的数字小于零，或者大于或等于 arg.Length。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 ( array<Char >[]()[], Int32, Int32)

TextWriter
.
.
::
.
WriteLine 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
TextWriter 类

将后跟行结束符的字符子数组写入文本流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public virtual void WriteLine(
    char[] buffer,
    int index,
    int count
)
public:
virtual void WriteLine(
    array<wchar_t>^ buffer,
    int index,
    int count
)
abstract WriteLine :
        buffer:char[] *
        index:int *
        count:int -> unit
override WriteLine :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

从其读取数据的字符数组。
index
类型： System Int32
开始读取的 buffer 中的索引。
count
类型： System Int32
要写入的最大字符数。
异常 | 条件
ArgumentException | 缓冲区长度减去 index 小于 count。
ArgumentNullException | buffer 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 或 count 为负。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。

此方法将数据的 count 个字符从 buffer 字符数组写入到此 TextWriter 中（从 index 位置开始）。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

此版本 WriteLine 等效于对 buffer 中位于 index 与 (index + count) 之间的每个字符应用 Write 后跟 WriteLine。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (String, Object, Object)

TextWriter
.
.
::
.
WriteLine 方法 (String, Object, Object)
TextWriter 类

使用与 Format 相同的语义写出格式化的字符串和一个新行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    format As String, _
    arg0 As Object, _
    arg1 As Object _
)
public virtual void WriteLine(
    string format,
    Object arg0,
    Object arg1
)
public:
virtual void WriteLine(
    String^ format,
    Object^ arg0,
    Object^ arg1
)
abstract WriteLine :
        format:string *
        arg0:Object *
        arg1:Object -> unit
override WriteLine :
        format:string *
        arg0:Object *
        arg1:Object -> unit

参数

format
类型： System String
格式化字符串。
arg0
类型： System Object
要写入格式字符串的对象。
arg1
类型： System Object
要写入格式字符串的对象。
异常 | 条件
ArgumentNullException | format 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.WriteLine 方法 (String, Object, Object, Object)

TextWriter
.
.
::
.
WriteLine 方法 (String, Object, Object, Object)
TextWriter 类

使用与 Format 相同的语义写出格式化的字符串和一个新行。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Sub WriteLine ( _
    format As String, _
    arg0 As Object, _
    arg1 As Object, _
    arg2 As Object _
)
public virtual void WriteLine(
    string format,
    Object arg0,
    Object arg1,
    Object arg2
)
public:
virtual void WriteLine(
    String^ format,
    Object^ arg0,
    Object^ arg1,
    Object^ arg2
)
abstract WriteLine :
        format:string *
        arg0:Object *
        arg1:Object *
        arg2:Object -> unit
override WriteLine :
        format:string *
        arg0:Object *
        arg1:Object *
        arg2:Object -> unit

参数

format
类型： System String
格式化字符串。
arg0
类型： System Object
要写入格式字符串的对象。
arg1
类型： System Object
要写入格式字符串的对象。
arg2
类型： System Object
要写入格式字符串的对象。
异常 | 条件
ArgumentNullException | format 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ObjectDisposedException | TextWriter 是关闭的。
IOException | 发生 I/O 错误。
FormatException | 格式中的格式规范无效。 - 或 - 用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。

此方法不在指定的 String 中搜索各换行符（十六进制 0x000a），也不用 NewLine 替换它们。

如果未在格式字符串中引用指定对象，则会将其忽略。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

TextWriter 类
TextWriter 成员
WriteLine 重载
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter 属性

TextWriter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TextWriter 类

TextWriter 类型公开以下成员。

名称 说明
页首

参考

TextWriter 类
System.IO 命名空间


TextWriter ..::.Encoding 属性

TextWriter
.
.
::
.
Encoding 属性
TextWriter 类

当在派生类中重写时，返回用来写输出的 Encoding。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public MustOverride ReadOnly Property Encoding As Encoding
    Get
public abstract Encoding Encoding { get; }
public:
virtual property Encoding^ Encoding {
    Encoding^ get () abstract;
}
abstract Encoding : Encoding

属性值

类型： System.Text Encoding
用来写入输出的 Encoding。

此属性对于某些 XML 方案是必需的，在这些方案中，必须写入包含 TextWriter 所使用的编码的标头。这允许 XML 代码使用任意的 TextWriter 并生成正确的 XML 标题。 此属性对于某些 XML 方案是必需的，在这些方案中，必须写入包含 TextWriter 所使用的编码的标头。这允许 XML 代码使用任意的 TextWriter 并生成正确的 XML 标题。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.FormatProvider 属性

TextWriter
.
.
::
.
FormatProvider 属性
TextWriter 类

获取控制格式设置的对象。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable ReadOnly Property FormatProvider As IFormatProvider
    Get
public virtual IFormatProvider FormatProvider { get; }
public:
virtual property IFormatProvider^ FormatProvider {
    IFormatProvider^ get ();
}
abstract FormatProvider : IFormatProvider
override FormatProvider : IFormatProvider

属性值

类型： System IFormatProvider
特定区域性的 IFormatProvider 对象，或者如果未指定任何其他区域性，则为当前区域性的格式设置。

有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。 有关创建文件和向文件中写入文本的示例，请参见 如何：向文件写入文本。有关从文件中读取文本的示例，请参见 如何：从文件读取文本。有关读取和写入二进制文件的示例，请参见如何：对新建的数据文件进行读取和写入。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


TextWriter ..::.NewLine 属性

TextWriter
.
.
::
.
NewLine 属性
TextWriter 类

获取或设置由当前 TextWriter 使用的行结束符字符串。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overridable Property NewLine As String
    Get
    Set
public virtual string NewLine { get; set; }
public:
virtual property String^ NewLine {
    String^ get ();
    void set (String^ value);
}
abstract NewLine : string with get, set
override NewLine : string with get, set

属性值

类型： System String
当前 TextWriter 的行结束符字符串。

默认行结束符字符串是回车符后接一个换行符（“\r\n”）。

每当调用 WriteLine 方法之一时，行结束符字符串都会写入到文本流中。为了使 TextReader 可以读取由 TextWriter 撰写的文本，只应使用“\n”或“\r\n”作为结束符字符串。如果 NewLine 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则改用默认的换行符。 每当调用 WriteLine 方法之一时，行结束符字符串都会写入到文本流中。为了使 TextReader 可以读取由 TextWriter 撰写的文本，只应使用“\n”或“\r\n”作为结束符字符串。如果 NewLine 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则改用默认的换行符。 每当调用 WriteLine 方法之一时，行结束符字符串都会写入到文本流中。为了使 TextReader 可以读取由 TextWriter 撰写的文本，只应使用“\n”或“\r\n”作为结束符字符串。如果 NewLine 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则改用默认的换行符。

有关通用 I/O 任务的列表，请参见通用 I/O 任务。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

XNA Framework

受以下版本支持：3.0、2.0、1.0

参考

TextWriter 类
TextWriter 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何：从文件读取文本
如何：向文件写入文本


UnmanagedMemoryAccessor 类

UnmanagedMemoryAccessor 类
成员

提供从托管代码随机访问非托管内存块的能力。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Class UnmanagedMemoryAccessor _
    Implements IDisposable
public class UnmanagedMemoryAccessor : IDisposable
public ref class UnmanagedMemoryAccessor : IDisposable
type UnmanagedMemoryAccessor =
    class
        interface IDisposable
    end

MemoryMappedFile 对象的 CreateViewAccessor 方法返回内存的非托管块，以便处理内存映射文件的视图。

System.IO System.IO..::.UnmanagedMemoryAccessorUnmanagedMemoryAccessor

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor 成员

UnmanagedMemoryAccessor 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryAccessor 类

提供从托管代码随机访问非托管内存块的能力。

UnmanagedMemoryAccessor 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

UnmanagedMemoryAccessor 类
System.IO 命名空间


UnmanagedMemoryAccessor 构造函数

UnmanagedMemoryAccessor 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryAccessor 类

初始化 UnmanagedMemoryAccessor 类的新实例。

名称 说明
页首

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor 构造函数

UnmanagedMemoryAccessor 构造函数
UnmanagedMemoryAccessor 类

初始化 UnmanagedMemoryAccessor 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected UnmanagedMemoryAccessor()
protected:
UnmanagedMemoryAccessor()
new : unit -> UnmanagedMemoryAccessor

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
UnmanagedMemoryAccessor 重载
System.IO 命名空间


UnmanagedMemoryAccessor 构造函数 (SafeBuffer, Int64, Int64)

UnmanagedMemoryAccessor 构造函数 (SafeBuffer, Int64, Int64)
UnmanagedMemoryAccessor 类

使用指定的缓冲区、偏移量和容量初始化 UnmanagedMemoryAccessor 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As SafeBuffer, _
    offset As Long, _
    capacity As Long _
)
public UnmanagedMemoryAccessor(
    SafeBuffer buffer,
    long offset,
    long capacity
)
public:
UnmanagedMemoryAccessor(
    SafeBuffer^ buffer,
    long long offset,
    long long capacity
)
new :
        buffer:SafeBuffer *
        offset:int64 *
        capacity:int64 -> UnmanagedMemoryAccessor

参数

buffer
类型： System.Runtime.InteropServices SafeBuffer
要包含访问器的缓冲区。
offset
类型： System Int64
启动访问器的字节位置。
capacity
类型： System Int64
要分配的内存大小（以字节为单位）。
异常 | 条件
ArgumentException | offset 与 capacity 之和大于 buffer。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 capacity 小于零。
InvalidOperationException | offset 与 capacity 之和将环绕地址空间的高端。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
UnmanagedMemoryAccessor 重载
System.IO 命名空间


UnmanagedMemoryAccessor 构造函数 (SafeBuffer, Int64, Int64, FileAccess)

UnmanagedMemoryAccessor 构造函数 (SafeBuffer, Int64, Int64, FileAccess)
UnmanagedMemoryAccessor 类

使用指定的缓冲区、偏移量、容量和访问权限初始化 UnmanagedMemoryAccessor 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As SafeBuffer, _
    offset As Long, _
    capacity As Long, _
    access As FileAccess _
)
public UnmanagedMemoryAccessor(
    SafeBuffer buffer,
    long offset,
    long capacity,
    FileAccess access
)
public:
UnmanagedMemoryAccessor(
    SafeBuffer^ buffer,
    long long offset,
    long long capacity,
    FileAccess access
)
new :
        buffer:SafeBuffer *
        offset:int64 *
        capacity:int64 *
        access:FileAccess -> UnmanagedMemoryAccessor

参数

buffer
类型： System.Runtime.InteropServices SafeBuffer
要包含访问器的缓冲区。
offset
类型： System Int64
启动访问器的字节位置。
capacity
类型： System Int64
要分配的内存大小（以字节为单位）。
access
类型： System.IO FileAccess
内存允许的访问类型。默认值为 ReadWrite。 内存允许的访问类型。默认值为 ReadWrite。
异常 | 条件
ArgumentException | offset 与 capacity 之和大于 buffer。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 capacity 小于零。 - 或 - access 不是有效的 MemoryMappedFileAccess 枚举值。
InvalidOperationException | offset 与 capacity 之和将环绕地址空间的高端。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
UnmanagedMemoryAccessor 重载
System.IO 命名空间


UnmanagedMemoryAccessor 方法

UnmanagedMemoryAccessor 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryAccessor 类

UnmanagedMemoryAccessor 类型公开以下成员。

名称 说明
页首

参考

UnmanagedMemoryAccessor 类
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Dispose 方法

UnmanagedMemoryAccessor
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryAccessor 类

释放由 UnmanagedMemoryAccessor 占用的资源。

名称 说明
页首

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Dispose 方法

UnmanagedMemoryAccessor
.
.
::
.
Dispose 方法
UnmanagedMemoryAccessor 类

释放由 UnmanagedMemoryAccessor 占用的所有资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Dispose 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Dispose 方法 (Boolean)

UnmanagedMemoryAccessor
.
.
::
.
Dispose 方法 (Boolean)
UnmanagedMemoryAccessor 类

释放由 UnmanagedMemoryAccessor 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由公共的 Dispose() 方法和 Finalize 方法调用。Dispose() 调用受保护的 Dispose(Boolean) 方法，将 disposing 参数设置为 true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose() 方法和 Finalize 方法调用。Dispose() 调用受保护的 Dispose(Boolean) 方法，将 disposing 参数设置为 true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose() 方法和 Finalize 方法调用。Dispose() 调用受保护的 Dispose(Boolean) 方法，将 disposing 参数设置为 true。Finalize 调用 disposing 设置为 false 的 Dispose。

disposing 参数为 true 时，此方法将释放所有由此 UnmanagedMemoryAccessor 所引用的任何托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose() 方法。 disposing 参数为 true 时，此方法将释放所有由此 UnmanagedMemoryAccessor 所引用的任何托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose() 方法。

对继承者的说明

Dispose 可由其他对象调用多次。重写 Dispose(Boolean) 时，请注意不要引用在以前调用 Dispose 时已释放的对象。有关如何实现 Dispose(Boolean) 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose(Boolean) 时，请注意不要引用在以前调用 Dispose 时已释放的对象。有关如何实现 Dispose(Boolean) 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose(Boolean) 时，请注意不要引用在以前调用 Dispose 时已释放的对象。有关如何实现 Dispose(Boolean) 的更多信息，请参见实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Dispose 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Initialize 方法

UnmanagedMemoryAccessor
.
.
::
.
Initialize 方法
UnmanagedMemoryAccessor 类

设置访问器的初始值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Protected Sub Initialize ( _
    buffer As SafeBuffer, _
    offset As Long, _
    capacity As Long, _
    access As FileAccess _
)
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
protected void Initialize(
    SafeBuffer buffer,
    long offset,
    long capacity,
    FileAccess access
)
[SecurityPermissionAttribute(SecurityAction::Demand, Flags = SecurityPermissionFlag::UnmanagedCode)]
protected:
void Initialize(
    SafeBuffer^ buffer,
    long long offset,
    long long capacity,
    FileAccess access
)
[<SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)>]
member Initialize :
        buffer:SafeBuffer *
        offset:int64 *
        capacity:int64 *
        access:FileAccess -> unit

参数

buffer
类型： System.Runtime.InteropServices SafeBuffer
要包含访问器的缓冲区。
offset
类型： System Int64
启动访问器的字节位置。
capacity
类型： System Int64
要分配的内存大小（以字节为单位）。
access
类型： System.IO FileAccess
内存允许的访问类型。默认值为 ReadWrite。 内存允许的访问类型。默认值为 ReadWrite。
异常 | 条件
ArgumentException | offset 与 capacity 之和大于 buffer。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 或 capacity 小于零。 - 或 - access 不是有效的 MemoryMappedFileAccess 枚举值。
InvalidOperationException | offset 与 capacity 之和将环绕地址空间的高端。

此方法由此类的构造函数调用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Read <(Of <(T >)>) 方法

UnmanagedMemoryAccessor
.
.
::
.
Read
<
(Of
<
(
T
>
)
>
)
方法
UnmanagedMemoryAccessor 类

将 T 类型的结构从访问器读取到提供的引用中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Read(Of T As {Structure, New}) ( _
    position As Long, _
    <OutAttribute> ByRef structure As T _
)
public void Read<T>(
    long position,
    out T structure
)
where T : struct, new()

public:
generic<typename T>
where T : value class, gcnew()
void Read(
    long long position,
    [OutAttribute] T% structure
)
member Read :
        position:int64 *
        structure:'T byref -> unit  when 'T : struct, new()

类型参数

T

结构的类型。

参数

position
类型： System Int64
访问器中开始读取的位置。
structure
类型：T%
包含读取数据的结构。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读入 T 类型的结构。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

使用此方法可读取此类中的其他读取方法不易适应的大中型结构。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadArray <(Of <(T >)>) 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadArray
<
(Of
<
(
T
>
)
>
)
方法
UnmanagedMemoryAccessor 类

将 T 类型的结构从访问器读取到 T 类型的数组中。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadArray(Of T As {Structure, New}) ( _
    position As Long, _
    array As T(), _
    offset As Integer, _
    count As Integer _
) As Integer
public int ReadArray<T>(
    long position,
    T[] array,
    int offset,
    int count
)
where T : struct, new()

public:
generic<typename T>
where T : value class, gcnew()
int ReadArray(
    long long position,
    array<T>^ array,
    int offset,
    int count
)
member ReadArray :
        position:int64 *
        array:'T[] *
        offset:int *
        count:int -> int  when 'T : struct, new()

类型参数

T

结构的类型。

参数

position
类型： System Int64
array 中要将第一个复制的结构放置到的索引。
array
类型：
array<
T
>
[]
()
[]

包含从访问器读取的结构的数组。
offset
类型： System Int32
访问器中的字节偏移量，从此处开始读取。
count
类型： System Int32
要从访问器读取的 T 类型的结构的数目。

返回值

类型： System Int32
读入 array 的结构数。如果可用结构较少，则此值可能小于 count；如果到达访问器末尾，则为零。 读入 array 的结构数。如果可用结构较少，则此值可能小于 count；如果到达访问器末尾，则为零。
异常 | 条件
ArgumentException | array 不足够大，无法包含结构的 count（从 position 开始）。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

此方法是不安全的。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadBoolean 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadBoolean 方法
UnmanagedMemoryAccessor 类

从访问器读取一个布尔值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadBoolean ( _
    position As Long _
) As Boolean
public bool ReadBoolean(
    long position
)
public:
bool ReadBoolean(
    long long position
)
member ReadBoolean :
        position:int64 -> bool

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Boolean
true 或 false。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadByte 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadByte 方法
UnmanagedMemoryAccessor 类

从访问器读取一个字节值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadByte ( _
    position As Long _
) As Byte
public byte ReadByte(
    long position
)
public:
unsigned char ReadByte(
    long long position
)
member ReadByte :
        position:int64 -> byte

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Byte
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadChar 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadChar 方法
UnmanagedMemoryAccessor 类

从访问器读取一个字符。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadChar ( _
    position As Long _
) As Char
public char ReadChar(
    long position
)
public:
wchar_t ReadChar(
    long long position
)
member ReadChar :
        position:int64 -> char

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Char
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadDecimal 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadDecimal 方法
UnmanagedMemoryAccessor 类

从访问器读取一个小数值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadDecimal ( _
    position As Long _
) As Decimal
public decimal ReadDecimal(
    long position
)
public:
Decimal ReadDecimal(
    long long position
)
member ReadDecimal :
        position:int64 -> decimal

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Decimal
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。 - 或 - 要读取的小数无效。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadDouble 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadDouble 方法
UnmanagedMemoryAccessor 类

从访问器读取一个双精度浮点值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadDouble ( _
    position As Long _
) As Double
public double ReadDouble(
    long position
)
public:
double ReadDouble(
    long long position
)
member ReadDouble :
        position:int64 -> float

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Double
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadInt16 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadInt16 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 16 位整数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadInt16 ( _
    position As Long _
) As Short
public short ReadInt16(
    long position
)
public:
short ReadInt16(
    long long position
)
member ReadInt16 :
        position:int64 -> int16

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Int16
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadInt32 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadInt32 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 32 位整数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadInt32 ( _
    position As Long _
) As Integer
public int ReadInt32(
    long position
)
public:
int ReadInt32(
    long long position
)
member ReadInt32 :
        position:int64 -> int

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Int32
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadInt64 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadInt64 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 64 位整数。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadInt64 ( _
    position As Long _
) As Long
public long ReadInt64(
    long position
)
public:
long long ReadInt64(
    long long position
)
member ReadInt64 :
        position:int64 -> int64

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Int64
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadSByte 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadSByte 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 8 位带符号整数。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Int16。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Function ReadSByte ( _
    position As Long _
) As SByte
[CLSCompliantAttribute(false)]
public sbyte ReadSByte(
    long position
)
[CLSCompliantAttribute(false)]
public:
signed char ReadSByte(
    long long position
)
[<CLSCompliantAttribute(false)>]
member ReadSByte :
        position:int64 -> sbyte

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System SByte
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadSingle 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadSingle 方法
UnmanagedMemoryAccessor 类

从访问器读取一个单精度浮点值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Function ReadSingle ( _
    position As Long _
) As Single
public float ReadSingle(
    long position
)
public:
float ReadSingle(
    long long position
)
member ReadSingle :
        position:int64 -> float32

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System Single
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadUInt16 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadUInt16 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 16 位无符号整数。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Int32。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Function ReadUInt16 ( _
    position As Long _
) As UShort
[CLSCompliantAttribute(false)]
public ushort ReadUInt16(
    long position
)
[CLSCompliantAttribute(false)]
public:
unsigned short ReadUInt16(
    long long position
)
[<CLSCompliantAttribute(false)>]
member ReadUInt16 :
        position:int64 -> uint16

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System UInt16
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadUInt32 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadUInt32 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 32 位无符号整数。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Int64。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Function ReadUInt32 ( _
    position As Long _
) As UInteger
[CLSCompliantAttribute(false)]
public uint ReadUInt32(
    long position
)
[CLSCompliantAttribute(false)]
public:
unsigned int ReadUInt32(
    long long position
)
[<CLSCompliantAttribute(false)>]
member ReadUInt32 :
        position:int64 -> uint32

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System UInt32
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.ReadUInt64 方法

UnmanagedMemoryAccessor
.
.
::
.
ReadUInt64 方法
UnmanagedMemoryAccessor 类

从访问器读取一个 64 位无符号整数。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Decimal。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Function ReadUInt64 ( _
    position As Long _
) As ULong
[CLSCompliantAttribute(false)]
public ulong ReadUInt64(
    long position
)
[CLSCompliantAttribute(false)]
public:
unsigned long long ReadUInt64(
    long long position
)
[<CLSCompliantAttribute(false)>]
member ReadUInt64 :
        position:int64 -> uint64

参数

position
类型： System Int64
访问器中起始读取位置的字节偏移量。

返回值

类型： System UInt64
读取的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供读取值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持读取。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法

UnmanagedMemoryAccessor
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryAccessor 类

将一个值写入访问器。

名称 说明
页首

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Boolean)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Boolean)
UnmanagedMemoryAccessor 类

将一个布尔值写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Boolean _
)
public void Write(
    long position,
    bool value
)
public:
void Write(
    long long position,
    bool value
)
member Write :
        position:int64 *
        value:bool -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Boolean
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Byte)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Byte)
UnmanagedMemoryAccessor 类

将一个字节值写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Byte _
)
public void Write(
    long position,
    byte value
)
public:
void Write(
    long long position,
    unsigned char value
)
member Write :
        position:int64 *
        value:byte -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Byte
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Char)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Char)
UnmanagedMemoryAccessor 类

将一个字符写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Char _
)
public void Write(
    long position,
    char value
)
public:
void Write(
    long long position,
    wchar_t value
)
member Write :
        position:int64 *
        value:char -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Char
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Decimal)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Decimal)
UnmanagedMemoryAccessor 类

将一个小数值写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Decimal _
)
public void Write(
    long position,
    decimal value
)
public:
void Write(
    long long position,
    Decimal value
)
member Write :
        position:int64 *
        value:decimal -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Decimal
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。 - 或 - 小数无效。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Double)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Double)
UnmanagedMemoryAccessor 类

将一个 Double 值写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Double _
)
public void Write(
    long position,
    double value
)
public:
void Write(
    long long position,
    double value
)
member Write :
        position:int64 *
        value:float -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Double
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Int16)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Int16)
UnmanagedMemoryAccessor 类

将一个 16 位整数写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Short _
)
public void Write(
    long position,
    short value
)
public:
void Write(
    long long position,
    short value
)
member Write :
        position:int64 *
        value:int16 -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Int16
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Int32)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Int32)
UnmanagedMemoryAccessor 类

将一个 32 位整数写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Integer _
)
public void Write(
    long position,
    int value
)
public:
void Write(
    long long position,
    int value
)
member Write :
        position:int64 *
        value:int -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Int32
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Int64)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Int64)
UnmanagedMemoryAccessor 类

将一个 64 位整数写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Long _
)
public void Write(
    long position,
    long value
)
public:
void Write(
    long long position,
    long long value
)
member Write :
        position:int64 *
        value:int64 -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Int64
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, SByte)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, SByte)
UnmanagedMemoryAccessor 类

将一个 8 位整数写入访问器。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Int16。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Sub Write ( _
    position As Long, _
    value As SByte _
)
[CLSCompliantAttribute(false)]
public void Write(
    long position,
    sbyte value
)
[CLSCompliantAttribute(false)]
public:
void Write(
    long long position,
    signed char value
)
[<CLSCompliantAttribute(false)>]
member Write :
        position:int64 *
        value:sbyte -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System SByte
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, Single)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, Single)
UnmanagedMemoryAccessor 类

将一个 Single 写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write ( _
    position As Long, _
    value As Single _
)
public void Write(
    long position,
    float value
)
public:
void Write(
    long long position,
    float value
)
member Write :
        position:int64 *
        value:float32 -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System Single
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, UInt16)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, UInt16)
UnmanagedMemoryAccessor 类

将一个 16 位无符号整数写入访问器。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Int32。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Sub Write ( _
    position As Long, _
    value As UShort _
)
[CLSCompliantAttribute(false)]
public void Write(
    long position,
    ushort value
)
[CLSCompliantAttribute(false)]
public:
void Write(
    long long position,
    unsigned short value
)
[<CLSCompliantAttribute(false)>]
member Write :
        position:int64 *
        value:uint16 -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System UInt16
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, UInt32)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, UInt32)
UnmanagedMemoryAccessor 类

将一个 32 位无符号整数写入访问器。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Int64。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Sub Write ( _
    position As Long, _
    value As UInteger _
)
[CLSCompliantAttribute(false)]
public void Write(
    long position,
    uint value
)
[CLSCompliantAttribute(false)]
public:
void Write(
    long long position,
    unsigned int value
)
[<CLSCompliantAttribute(false)>]
member Write :
        position:int64 *
        value:uint32 -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System UInt32
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write 方法 (Int64, UInt64)

UnmanagedMemoryAccessor
.
.
::
.
Write 方法 (Int64, UInt64)
UnmanagedMemoryAccessor 类

将一个 64 位无符号整数写入访问器。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 Decimal。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Public Sub Write ( _
    position As Long, _
    value As ULong _
)
[CLSCompliantAttribute(false)]
public void Write(
    long position,
    ulong value
)
[CLSCompliantAttribute(false)]
public:
void Write(
    long long position,
    unsigned long long value
)
[<CLSCompliantAttribute(false)>]
member Write :
        position:int64 *
        value:uint64 -> unit

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
value
类型： System UInt64
要写入的值。
异常 | 条件
ArgumentException | position 后面没有足够的字节数可供写入值。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Write <(Of <(T >)>) 方法 (Int64, T%)

UnmanagedMemoryAccessor
.
.
::
.
Write
<
(Of
<
(
T
>
)
>
)
方法 (Int64, T%)
UnmanagedMemoryAccessor 类

将一个结构写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub Write(Of T As {Structure, New}) ( _
    position As Long, _
    ByRef structure As T _
)
public void Write<T>(
    long position,
    ref T structure
)
where T : struct, new()

public:
generic<typename T>
where T : value class, gcnew()
void Write(
    long long position,
    T% structure
)
member Write :
        position:int64 *
        structure:'T byref -> unit  when 'T : struct, new()

类型参数

T

结构的类型。

参数

position
类型： System Int64
访问器中起始写入位置的字节偏移量。
structure
类型：T%
要写入的结构。
异常 | 条件
ArgumentException | 取值函数的 position 后面没有足够的字节数可供写入 T 类型的结构。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。

使用此方法可写入此类中的其他 Write 方法不易适应的大中型结构。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
Write 重载
System.IO 命名空间


UnmanagedMemoryAccessor ..::.WriteArray <(Of <(T >)>) 方法

UnmanagedMemoryAccessor
.
.
::
.
WriteArray
<
(Of
<
(
T
>
)
>
)
方法
UnmanagedMemoryAccessor 类

将结构从 T 类型的数组写入访问器。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub WriteArray(Of T As {Structure, New}) ( _
    position As Long, _
    array As T(), _
    offset As Integer, _
    count As Integer _
)
public void WriteArray<T>(
    long position,
    T[] array,
    int offset,
    int count
)
where T : struct, new()

public:
generic<typename T>
where T : value class, gcnew()
void WriteArray(
    long long position,
    array<T>^ array,
    int offset,
    int count
)
member WriteArray :
        position:int64 *
        array:'T[] *
        offset:int *
        count:int -> unit  when 'T : struct, new()

类型参数

T

结构的类型。

参数

position
类型： System Int64
要写入的 array 中第一个结构的索引。
array
类型：
array<
T
>
[]
()
[]

要写入访问器的数组。
offset
类型： System Int32
访问器中的字节，从此处开始写入。
count
类型： System Int32
要写入的 array 中的结构数。
异常 | 条件
ArgumentException | 取值函数的 position 后面没有足够的字节数可供写入 count 所指定数量的结构。
ArgumentOutOfRangeException | position 小于零或大于访问器的容量。 - 或 - offset 或 count 小于零。
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | 访问器不支持写入。
ObjectDisposedException | 已释放访问器。
  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor 属性

UnmanagedMemoryAccessor 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryAccessor 类

UnmanagedMemoryAccessor 类型公开以下成员。

名称 说明
页首

参考

UnmanagedMemoryAccessor 类
System.IO 命名空间


UnmanagedMemoryAccessor ..::.CanRead 属性

UnmanagedMemoryAccessor
.
.
::
.
CanRead 属性
UnmanagedMemoryAccessor 类

确定访问器是否可读。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property CanRead As Boolean
    Get
public bool CanRead { get; }
public:
property bool CanRead {
    bool get ();
}
member CanRead : bool

属性值

类型： System Boolean
如果访问器可读，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.CanWrite 属性

UnmanagedMemoryAccessor
.
.
::
.
CanWrite 属性
UnmanagedMemoryAccessor 类

确定访问器是否可写。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property CanWrite As Boolean
    Get
public bool CanWrite { get; }
public:
property bool CanWrite {
    bool get ();
}
member CanWrite : bool

属性值

类型： System Boolean
如果访问器可写，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.Capacity 属性

UnmanagedMemoryAccessor
.
.
::
.
Capacity 属性
UnmanagedMemoryAccessor 类

获取访问器的容量。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Capacity As Long
    Get
public long Capacity { get; }
public:
property long long Capacity {
    long long get ();
}
member Capacity : int64

属性值

类型： System Int64
访问器的容量。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryAccessor ..::.IsOpen 属性

UnmanagedMemoryAccessor
.
.
::
.
IsOpen 属性
UnmanagedMemoryAccessor 类

确定访问器当前是否由进程打开。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected ReadOnly Property IsOpen As Boolean
    Get
protected bool IsOpen { get; }
protected:
property bool IsOpen {
    bool get ();
}
member IsOpen : bool

属性值

类型： System Boolean
如果访问器已打开，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryAccessor 类
UnmanagedMemoryAccessor 成员
System.IO 命名空间


UnmanagedMemoryStream 类

UnmanagedMemoryStream 类
成员

提供从托管代码访问非托管内存块的能力。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Class UnmanagedMemoryStream _
    Inherits Stream
public class UnmanagedMemoryStream : Stream
public ref class UnmanagedMemoryStream : public Stream
type UnmanagedMemoryStream =
    class
        inherit Stream
    end

此类支持使用现有的基于流的模型访问非托管内存，并且不要求将非托管内存中的内容复制到堆。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。

// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{

    static void Main()
    {

            // Create some data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");

        // Allocate a block of unmanaged memory and return an IntPtr object.
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}

System.IO System.IO..::.UnmanagedMemoryStreamUnmanagedMemoryStream

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream 成员

UnmanagedMemoryStream 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

提供从托管代码访问非托管内存块的能力。

UnmanagedMemoryStream 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

UnmanagedMemoryStream 类
System.IO 命名空间


UnmanagedMemoryStream 构造函数

UnmanagedMemoryStream 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

初始化 UnmanagedMemoryStream 类的新实例。

名称 说明
页首

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream 构造函数

UnmanagedMemoryStream 构造函数
UnmanagedMemoryStream 类

初始化 UnmanagedMemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub New
protected UnmanagedMemoryStream()
protected:
UnmanagedMemoryStream()
new : unit -> UnmanagedMemoryStream
异常 | 条件
SecurityException | 用户没有必需的权限。
  • UnmanagedCode

    用于访问非托管内存。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
UnmanagedMemoryStream 重载
System.IO 命名空间


UnmanagedMemoryStream 构造函数 (Byte*, Int64)

UnmanagedMemoryStream 构造函数 (Byte*, Int64)
UnmanagedMemoryStream 类

用指定的位置和内存长度初始化 UnmanagedMemoryStream 类的新实例。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Visual Basic 不支持使用或返回不安全类型的 API。
[CLSCompliantAttribute(false)]
public UnmanagedMemoryStream(
    byte* pointer,
    long length
)
[CLSCompliantAttribute(false)]
public:
UnmanagedMemoryStream(
    unsigned char* pointer,
    long long length
)
[<CLSCompliantAttribute(false)>]
new :
        pointer:nativeptr<byte> *
        length:int64 -> UnmanagedMemoryStream

参数

pointer
类型： System Byte*
指向非托管内存位置的指针。
length
类型： System Int64
要使用的内存的长度。
异常 | 条件
SecurityException | 用户没有必需的权限。
ArgumentNullException | pointer 值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | length 值小于零。 - 或 - length 太大，引起溢出。

此构造函数创建 UnmanagedMemoryStream 类的新实例，并在默认情况下将 CanWrite 属性设置为 false，将 CanRead 属性设置为 true。Length 属性设置为 length 参数的值，且不能更改。 此构造函数创建 UnmanagedMemoryStream 类的新实例，并在默认情况下将 CanWrite 属性设置为 false，将 CanRead 属性设置为 true。Length 属性设置为 length 参数的值，且不能更改。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}
  • UnmanagedCode

    用于访问非托管内存。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
UnmanagedMemoryStream 重载
System.IO 命名空间


UnmanagedMemoryStream 构造函数 (SafeBuffer, Int64, Int64)

UnmanagedMemoryStream 构造函数 (SafeBuffer, Int64, Int64)
UnmanagedMemoryStream 类

在具有指定的偏移量和长度的安全缓冲区中初始化 UnmanagedMemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As SafeBuffer, _
    offset As Long, _
    length As Long _
)
public UnmanagedMemoryStream(
    SafeBuffer buffer,
    long offset,
    long length
)
public:
UnmanagedMemoryStream(
    SafeBuffer^ buffer,
    long long offset,
    long long length
)
new :
        buffer:SafeBuffer *
        offset:int64 *
        length:int64 -> UnmanagedMemoryStream

参数

buffer
类型： System.Runtime.InteropServices SafeBuffer
要包含非托管内存流的缓冲区。
offset
类型： System Int64
启动非托管内存流的缓冲区字节位置。
length
类型： System Int64
非托管内存流的长度。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
UnmanagedMemoryStream 重载
System.IO 命名空间


UnmanagedMemoryStream 构造函数 (Byte*, Int64, Int64, FileAccess)

UnmanagedMemoryStream 构造函数 (Byte*, Int64, Int64, FileAccess)
UnmanagedMemoryStream 类

使用指定的位置、内存长度、内存总量和文件访问值初始化 UnmanagedMemoryStream 类的新实例。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Visual Basic 不支持使用或返回不安全类型的 API。
[CLSCompliantAttribute(false)]
public UnmanagedMemoryStream(
    byte* pointer,
    long length,
    long capacity,
    FileAccess access
)
[CLSCompliantAttribute(false)]
public:
UnmanagedMemoryStream(
    unsigned char* pointer,
    long long length,
    long long capacity,
    FileAccess access
)
[<CLSCompliantAttribute(false)>]
new :
        pointer:nativeptr<byte> *
        length:int64 *
        capacity:int64 *
        access:FileAccess -> UnmanagedMemoryStream

参数

pointer
类型： System Byte*
指向非托管内存位置的指针。
length
类型： System Int64
要使用的内存的长度。
capacity
类型： System Int64
分配给流的内存总量。
access
类型： System.IO FileAccess
FileAccess 值之一。
异常 | 条件
SecurityException | 用户没有必需的权限。
ArgumentNullException | pointer 值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | length 值小于零。 - 或 - capacity 值小于零。 - 或 - length 值大于 capacity 值。

length 参数确定当前使用的内存量。如果将数据读取或追加到流中，则 length 值应等于从中读取或保留的流中的有效数据量。如果写入流，此值应为零。 length 参数确定当前使用的内存量。如果将数据读取或追加到流中，则 length 值应等于从中读取或保留的流中的有效数据量。如果写入流，此值应为零。 length 参数确定当前使用的内存量。如果将数据读取或追加到流中，则 length 值应等于从中读取或保留的流中的有效数据量。如果写入流，此值应为零。

capacity 参数指示可用的内存总量。此值可以描述超过指定长度的区域，或指示可以追加的区域。任何超出此范围的编写尝试都将失败。 capacity 参数指示可用的内存总量。此值可以描述超过指定长度的区域，或指示可以追加的区域。任何超出此范围的编写尝试都将失败。 capacity 参数指示可用的内存总量。此值可以描述超过指定长度的区域，或指示可以追加的区域。任何超出此范围的编写尝试都将失败。

access 参数设置 CanRead 和 CanWrite 属性。请注意，指定 Write 并不保证流是可写的。访问参数允许实施者创建一个对象，该对象的实现可以与提供的实际流相匹配。 access 参数设置 CanRead 和 CanWrite 属性。请注意，指定 Write 并不保证流是可写的。访问参数允许实施者创建一个对象，该对象的实现可以与提供的实际流相匹配。 access 参数设置 CanRead 和 CanWrite 属性。请注意，指定 Write 并不保证流是可写的。访问参数允许实施者创建一个对象，该对象的实现可以与提供的实际流相匹配。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。

// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{

    static void Main()
    {

            // Create some data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");

        // Allocate a block of unmanaged memory and return an IntPtr object.
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}
  • UnmanagedCode

    用于访问非托管内存。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
UnmanagedMemoryStream 重载
System.IO 命名空间


UnmanagedMemoryStream 构造函数 (SafeBuffer, Int64, Int64, FileAccess)

UnmanagedMemoryStream 构造函数 (SafeBuffer, Int64, Int64, FileAccess)
UnmanagedMemoryStream 类

在具有指定的偏移量、长度和文件访问的安全缓冲区中初始化 UnmanagedMemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Sub New ( _
    buffer As SafeBuffer, _
    offset As Long, _
    length As Long, _
    access As FileAccess _
)
public UnmanagedMemoryStream(
    SafeBuffer buffer,
    long offset,
    long length,
    FileAccess access
)
public:
UnmanagedMemoryStream(
    SafeBuffer^ buffer,
    long long offset,
    long long length,
    FileAccess access
)
new :
        buffer:SafeBuffer *
        offset:int64 *
        length:int64 *
        access:FileAccess -> UnmanagedMemoryStream

参数

buffer
类型： System.Runtime.InteropServices SafeBuffer
要包含非托管内存流的缓冲区。
offset
类型： System Int64
启动非托管内存流的缓冲区字节位置。
length
类型： System Int64
非托管内存流的长度。
access
类型： System.IO FileAccess
非托管内存流的文件访问模式。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
UnmanagedMemoryStream 重载
System.IO 命名空间


UnmanagedMemoryStream 方法

UnmanagedMemoryStream 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

UnmanagedMemoryStream 类型公开以下成员。

名称 说明
页首

参考

UnmanagedMemoryStream 类
System.IO 命名空间


UnmanagedMemoryStream ..::.CopyTo 方法

UnmanagedMemoryStream
.
.
::
.
CopyTo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

将当前流的内容复制到另一个流中。

名称 说明
页首

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Dispose 方法

UnmanagedMemoryStream
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

名称 说明
页首

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Dispose 方法 (Boolean)

UnmanagedMemoryStream
.
.
::
.
Dispose 方法 (Boolean)
UnmanagedMemoryStream 类

释放由 UnmanagedMemoryStream 占用的非托管资源，还可以另外再释放托管资源。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Overrides Sub Dispose ( _
    disposing As Boolean _
)
protected override void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
) override
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。 此方法由公共的 Dispose 方法和 Finalize 方法调用。Dispose 调用受保护的Dispose方法，将disposing参数设置为true。Finalize 调用 disposing 设置为 false 的 Dispose。

disposing 参数为 true 时，此方法释放此 UnmanagedMemoryStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。 disposing 参数为 true 时，此方法释放此 UnmanagedMemoryStream 引用的所有托管对象占用的所有资源。此方法调用每个被引用对象的 Dispose 方法。

对继承者的说明

Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。 Dispose 可由其他对象调用多次。重写 Dispose 时，请注意不要引用以前在较早的 Dispose 调用中释放的对象。有关如何实现 Dispose 的更多信息，请参见实现 Dispose 方法。

有关 Dispose 和 Finalize 的更多信息，请参见 清理非托管资源 和 重写 Finalize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
Dispose 重载
System.IO 命名空间


UnmanagedMemoryStream ..::.Flush 方法

UnmanagedMemoryStream
.
.
::
.
Flush 方法
UnmanagedMemoryStream 类

重写 Flush 方法以便不执行任何操作。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit
异常 | 条件
ObjectDisposedException | 流已关闭。

此方法对此类不执行任何操作，它只是作为 Stream 基类的一部分包括进来的。因为任何数据都写入 RAM，所以此方法是多余的。 此方法对此类不执行任何操作，它只是作为 Stream 基类的一部分包括进来的。因为任何数据都写入 RAM，所以此方法是多余的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Initialize 方法

UnmanagedMemoryStream
.
.
::
.
Initialize 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

在安全缓冲区中或使用指向非托管内存位置的指针初始化 UnmanagedMemoryStream 类的新实例。

名称 说明
页首

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Initialize 方法 (Byte*, Int64, Int64, FileAccess)

UnmanagedMemoryStream
.
.
::
.
Initialize 方法 (Byte*, Int64, Int64, FileAccess)
UnmanagedMemoryStream 类

使用指向非托管内存位置的指针初始化 UnmanagedMemoryStream 类的新实例。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
<CLSCompliantAttribute(False)> _
Protected Sub Initialize ( _
    pointer As Byte*, _
    length As Long, _
    capacity As Long, _
    access As FileAccess _
)
[CLSCompliantAttribute(false)]
protected void Initialize(
    byte* pointer,
    long length,
    long capacity,
    FileAccess access
)
[CLSCompliantAttribute(false)]
protected:
void Initialize(
    unsigned char* pointer,
    long long length,
    long long capacity,
    FileAccess access
)
[<CLSCompliantAttribute(false)>]
member Initialize :
        pointer:nativeptr<byte> *
        length:int64 *
        capacity:int64 *
        access:FileAccess -> unit

参数

pointer
类型： System Byte*
指向非托管内存位置的指针。
length
类型： System Int64
要使用的内存的长度。
capacity
类型： System Int64
分配给流的内存总量。
access
类型： System.IO FileAccess
FileAccess 值之一。
异常 | 条件
SecurityException | 用户没有必需的权限。
ArgumentNullException | pointer 值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | length 值小于零。 - 或 - capacity 值小于零。 - 或 - length 值太大，导致溢出。

此方法等效于 UnmanagedMemoryStream 构造函数。它支持需要在设置流变量前初始化指针，因而无法调用参数化构造函数的方法。这类方法应使用默认构造函数 UnmanagedMemoryStream()()()，初始化指针，然后调用 Initialize 方法。
此方法等效于 UnmanagedMemoryStream 构造函数。它支持需要在设置流变量前初始化指针，因而无法调用参数化构造函数的方法。这类方法应使用默认构造函数 UnmanagedMemoryStream()()()，初始化指针，然后调用 Initialize 方法。
此方法等效于 UnmanagedMemoryStream 构造函数。它支持需要在设置流变量前初始化指针，因而无法调用参数化构造函数的方法。这类方法应使用默认构造函数 UnmanagedMemoryStream()()()，初始化指针，然后调用 Initialize 方法。

  • UnmanagedCode

    用于访问非托管内存。

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
Initialize 重载
System.IO 命名空间


UnmanagedMemoryStream ..::.Initialize 方法 (SafeBuffer, Int64, Int64, FileAccess)

UnmanagedMemoryStream
.
.
::
.
Initialize 方法 (SafeBuffer, Int64, Int64, FileAccess)
UnmanagedMemoryStream 类

在具有指定的偏移量、长度和文件访问的安全缓冲区中初始化 UnmanagedMemoryStream 类的新实例。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Protected Sub Initialize ( _
    buffer As SafeBuffer, _
    offset As Long, _
    length As Long, _
    access As FileAccess _
)
protected void Initialize(
    SafeBuffer buffer,
    long offset,
    long length,
    FileAccess access
)
protected:
void Initialize(
    SafeBuffer^ buffer,
    long long offset,
    long long length,
    FileAccess access
)
member Initialize :
        buffer:SafeBuffer *
        offset:int64 *
        length:int64 *
        access:FileAccess -> unit

参数

buffer
类型： System.Runtime.InteropServices SafeBuffer
要包含非托管内存流的缓冲区。
offset
类型： System Int64
启动非托管内存流的缓冲区字节位置。
length
类型： System Int64
access
类型： System.IO FileAccess
非托管内存流的文件访问模式。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
Initialize 重载
System.IO 命名空间


UnmanagedMemoryStream ..::.MemberwiseClone 方法

UnmanagedMemoryStream
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

名称 说明
页首

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Read 方法

UnmanagedMemoryStream
.
.
::
.
Read 方法
UnmanagedMemoryStream 类

将指定数目的字节读入指定的数组。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Read ( _
    <OutAttribute> buffer As Byte(), _
    offset As Integer, _
    count As Integer _
) As Integer
public override int Read(
    byte[] buffer,
    int offset,
    int count
)
public:
virtual int Read(
    [InAttribute] [OutAttribute] array<unsigned char>^ buffer,
    int offset,
    int count
) override
abstract Read :
        buffer:byte[] byref *
        offset:int *
        count:int -> int
override Read :
        buffer:byte[] byref *
        offset:int *
        count:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

此方法返回时包含指定的字节数组，数组中 offset 和 (offset + count - 1) 之间的值由从当前源中读取的字节替换。该参数未经初始化即被传递。 此方法返回时包含指定的字节数组，数组中 offset 和 (offset + count - 1) 之间的值由从当前源中读取的字节替换。该参数未经初始化即被传递。
offset
类型： System Int32
buffer 中的从零开始的字节偏移量，从此处开始存储从当前流中读取的数据。
count
类型： System Int32
要从当前流中读取的最大字节数。

返回值

类型： System Int32
读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多，则总字节数可能小于请求的字节数；如果已到达流的末尾，则为零 (0)。 读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多，则总字节数可能小于请求的字节数；如果已到达流的末尾，则为零 (0)。
异常 | 条件
ObjectDisposedException | 流已关闭。
NotSupportedException | 基础内存不支持读取。 - 或 - CanRead 属性设置为 false。
ArgumentNullException | buffer 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | offset 参数小于零。 - 或 - count 参数小于零。
ArgumentException | 缓冲区数组的长度减去 offset 参数小于 count 参数。

offset 参数给出 array 参数中字节的偏移量（缓冲区索引，从此处开始读取），count 参数给出从此流中读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。 offset 参数给出 array 参数中字节的偏移量（缓冲区索引，从此处开始读取），count 参数给出从此流中读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。 offset 参数给出 array 参数中字节的偏移量（缓冲区索引，从此处开始读取），count 参数给出从此流中读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。 offset 参数给出 array 参数中字节的偏移量（缓冲区索引，从此处开始读取），count 参数给出从此流中读取的最大字节数。返回的值是读取字节的实际数量，或如果到达流的结尾，则该值为零。如果读操作成功，则流的当前位置前进读取的字节数。如果发生异常，则流的当前位置不变。

只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻塞，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻塞，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻塞，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。 只有在到达流的末尾后，Read 方法才返回零。否则，Read 在返回前始终至少从流读取一个字节。如果在调用 Read 之后流中无可用数据，则该方法将一直阻塞，直到至少可返回一个字节的数据。即使尚未到达流的末尾，实现仍可以随意返回少于所请求的字节。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。

// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{

    static void Main()
    {

            // Create some data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");

        // Allocate a block of unmanaged memory and return an IntPtr object.
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.ReadByte 方法

UnmanagedMemoryStream
.
.
::
.
ReadByte 方法
UnmanagedMemoryStream 类

从流中读取一个字节，并将流内的位置向前推进一个字节，如果已到达流的末尾，则返回 -1。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function ReadByte As Integer
public override int ReadByte()
public:
virtual int ReadByte() override
abstract ReadByte : unit -> int
override ReadByte : unit -> int

返回值

类型： System Int32
转换为 Int32 对象的无符号字节；如果到达流的末尾，则为 -1。
异常 | 条件
ObjectDisposedException | 流已关闭。
NotSupportedException | 基础内存不支持读取。 - 或 - 当前位置在流的末尾。

使用此方法返回流中的整数值。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试读取内容并将其显示到控制台之前检查 CanRead 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试读取内容并将其显示到控制台之前检查 CanRead 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试读取内容并将其显示到控制台之前检查 CanRead 属性。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Seek 方法

UnmanagedMemoryStream
.
.
::
.
Seek 方法
UnmanagedMemoryStream 类

将当前流的当前位置设置为给定值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Function Seek ( _
    offset As Long, _
    loc As SeekOrigin _
) As Long
public override long Seek(
    long offset,
    SeekOrigin loc
)
public:
virtual long long Seek(
    long long offset,
    SeekOrigin loc
) override
abstract Seek :
        offset:int64 *
        loc:SeekOrigin -> int64
override Seek :
        offset:int64 *
        loc:SeekOrigin -> int64

参数

offset
类型： System Int64
相对于 origin 的点，从此处开始查找。
loc
类型： System.IO SeekOrigin
使用 SeekOrigin 类型的值，将开始位置、结束位置或当前位置指定为 origin 的参考点。

返回值

类型： System Int64
流中的新位置。
异常 | 条件
IOException | 尝试在流的开始位置之前查找。
ArgumentOutOfRangeException | offset 值大于流的最大大小。
ArgumentException | loc 无效。
ObjectDisposedException | 流已关闭。

有关查找的更多信息，请参见 Seek。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.SetLength 方法

UnmanagedMemoryStream
.
.
::
.
SetLength 方法
UnmanagedMemoryStream 类

将流的长度设置为指定的值。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub SetLength ( _
    value As Long _
)
public override void SetLength(
    long value
)
public:
virtual void SetLength(
    long long value
) override
abstract SetLength :
        value:int64 -> unit
override SetLength :
        value:int64 -> unit

参数

value
类型： System Int64
流的长度。
异常 | 条件
IOException | 出现 I/O 错误。
ObjectDisposedException | 流已关闭。
NotSupportedException | 基础内存不支持写入。 - 或 - 尝试写入流，但 CanWrite 属性为 false。
ArgumentOutOfRangeException | 指定的 value 超出流的容量。 - 或 - 指定的 value 是负数。

如果给定值小于流的当前长度，则截断流。如果给定值大于流的当前长度，则扩展流。如果扩展流，则流的新旧长度之间的内容是未定义的。 如果给定值小于流的当前长度，则截断流。如果给定值大于流的当前长度，则扩展流。如果扩展流，则流的新旧长度之间的内容是未定义的。 如果给定值小于流的当前长度，则截断流。如果给定值大于流的当前长度，则扩展流。如果扩展流，则流的新旧长度之间的内容是未定义的。

为了使 SetLength 生效，流必须支持写入和搜索。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Write 方法

UnmanagedMemoryStream
.
.
::
.
Write 方法
UnmanagedMemoryStream 类

使用缓冲区中的数据将字节块写入当前流。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub Write ( _
    buffer As Byte(), _
    offset As Integer, _
    count As Integer _
)
public override void Write(
    byte[] buffer,
    int offset,
    int count
)
public:
virtual void Write(
    array<unsigned char>^ buffer,
    int offset,
    int count
) override
abstract Write :
        buffer:byte[] *
        offset:int *
        count:int -> unit
override Write :
        buffer:byte[] *
        offset:int *
        count:int -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

字节数组，从该字节数组将字节复制到当前流中。
offset
类型： System Int32
缓冲区中的偏移量，从此处开始将字节复制到当前流中。
count
类型： System Int32
要写入当前流的字节数。
异常 | 条件
ObjectDisposedException | 流已关闭。
NotSupportedException | 基础内存不支持写入。 - 或 - 尝试写入流，但 CanWrite 属性为 false。 - 或 - count 值大于流的容量。 - 或 - 位置在流容量的末尾。
IOException | 发生 I/O 错误。
ArgumentOutOfRangeException | 其中一个指定的参数小于 0。
ArgumentException | offset 参数减去 buffer 参数的长度小于 count 参数。
ArgumentNullException | buffer 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在流的当前位置发生写操作。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。

// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{

    static void Main()
    {

            // Create some data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");

        // Allocate a block of unmanaged memory and return an IntPtr object.
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);

        // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.WriteByte 方法

UnmanagedMemoryStream
.
.
::
.
WriteByte 方法
UnmanagedMemoryStream 类

将一个字节写入文件流的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Sub WriteByte ( _
    value As Byte _
)
public override void WriteByte(
    byte value
)
public:
virtual void WriteByte(
    unsigned char value
) override
abstract WriteByte :
        value:byte -> unit
override WriteByte :
        value:byte -> unit

参数

value
类型： System Byte
写入流的字节值。
异常 | 条件
ObjectDisposedException | 流已关闭。
NotSupportedException | 基础内存不支持写入。 - 或 - 尝试写入流，但 CanWrite 属性为 false。 - 或 - 当前位置在流容量的末尾。
IOException | 提供的 value 导致流超出它的最大容量。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将数据写入流中之前检查 CanWrite 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将数据写入流中之前检查 CanWrite 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将数据写入流中之前检查 CanWrite 属性。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream 属性

UnmanagedMemoryStream 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
UnmanagedMemoryStream 类

UnmanagedMemoryStream 类型公开以下成员。

名称 说明
页首

参考

UnmanagedMemoryStream 类
System.IO 命名空间


UnmanagedMemoryStream ..::.CanRead 属性

UnmanagedMemoryStream
.
.
::
.
CanRead 属性
UnmanagedMemoryStream 类

获取一个值，该值指示流是否支持读取。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanRead As Boolean
    Get
public override bool CanRead { get; }
public:
virtual property bool CanRead {
    bool get () override;
}
abstract CanRead : bool
override CanRead : bool

属性值

类型： System Boolean
如果对象是用一个构造函数创建的，而该构造函数的 access 参数不包括读取流，或者流已关闭，则为 false，否则为 true。

此属性指示当前流对象是否支持读取。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将内容显示到控制台之前检查 CanRead 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将内容显示到控制台之前检查 CanRead 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将内容显示到控制台之前检查 CanRead 属性。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.CanSeek 属性

UnmanagedMemoryStream
.
.
::
.
CanSeek 属性
UnmanagedMemoryStream 类

获取一个值，该值指示流是否支持查找。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanSeek As Boolean
    Get
public override bool CanSeek { get; }
public:
virtual property bool CanSeek {
    bool get () override;
}
abstract CanSeek : bool
override CanSeek : bool

属性值

类型： System Boolean
如果流已关闭，则为 false；否则为 true。

此属性指示当前流对象是否支持查找。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.CanWrite 属性

UnmanagedMemoryStream
.
.
::
.
CanWrite 属性
UnmanagedMemoryStream 类

获取一个值，该值指示流是否支持写入。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property CanWrite As Boolean
    Get
public override bool CanWrite { get; }
public:
virtual property bool CanWrite {
    bool get () override;
}
abstract CanWrite : bool
override CanWrite : bool

属性值

类型： System Boolean
如果对象是用一个构造函数创建的，而该构造函数的 access 参数值支持写入，或者对象是用一个不带参数的构造函数创建的，或者流已关闭，则为 false，否则为 true。

此属性指示当前流对象是否支持写入。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将数据写入流中之前检查 CanWrite 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将数据写入流中之前检查 CanWrite 属性。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。在此示例中，UnmanagedMemoryStream 对象将被传递给一个方法，该方法在尝试将数据写入流中之前检查 CanWrite 属性。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Capacity 属性

UnmanagedMemoryStream
.
.
::
.
Capacity 属性
UnmanagedMemoryStream 类

获取流的长度（大小）或分配给流的内存总量（容量）。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public ReadOnly Property Capacity As Long
    Get
public long Capacity { get; }
public:
property long long Capacity {
    long long get ();
}
member Capacity : int64

属性值

类型： System Int64
流的大小或容量。
异常 | 条件
ObjectDisposedException | 流已关闭。

此属性返回提供给构造函数的 capacity 值。如果初始化流时没有指定 capacity 值，此属性返回流长度。 此属性返回提供给构造函数的 capacity 值。如果初始化流时没有指定 capacity 值，此属性返回流长度。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Length 属性

UnmanagedMemoryStream
.
.
::
.
Length 属性
UnmanagedMemoryStream 类

获取流的数据长度。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides ReadOnly Property Length As Long
    Get
public override long Length { get; }
public:
virtual property long long Length {
    long long get () override;
}
abstract Length : int64
override Length : int64

属性值

类型： System Int64
流的数据长度。
异常 | 条件
ObjectDisposedException | 流已关闭。

如果自初始化流后未改变，此属性返回提供给构造函数的长度值。如果发生了对流的更改，则此属性反映任何对数据长度的更改。 如果自初始化流后未改变，此属性返回提供给构造函数的长度值。如果发生了对流的更改，则此属性反映任何对数据长度的更改。

下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。 下面的代码示例演示如何使用 UnmanagedMemoryStream 类读取和写入非托管内存。使用 Marshal 类分配和解除分配非托管内存块。

// Note: You must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

unsafe class Program
{
    static void Main()
    {
        // Create some data to write.
        byte[] text = UnicodeEncoding.Unicode.GetBytes("Data to write.");

        // Allocate a block of unmanaged memory.
        IntPtr memIntPtr = Marshal.AllocHGlobal(text.Length);

        // Get a byte pointer from the unmanaged memory block.
        byte* memBytePtr = (byte*)memIntPtr.ToPointer();

        UnmanagedMemoryStream writeStream =
            new UnmanagedMemoryStream(
            memBytePtr, text.Length, text.Length, FileAccess.Write);

        // Write the data.
        WriteToStream(writeStream, text);

        // Close the stream.
        writeStream.Close();

        // Create another UnmanagedMemoryStream for reading.
        UnmanagedMemoryStream readStream =
            new UnmanagedMemoryStream(memBytePtr, text.Length);

        // Display the contents of the stream to the console.
        PrintStream(readStream);

        // Close the reading stream.
        readStream.Close();

        // Free up the unmanaged memory.
        Marshal.FreeHGlobal(memIntPtr);

    }

    public static void WriteToStream(UnmanagedMemoryStream writeStream, byte[] text)
    {
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (writeStream.CanWrite)
        {
            // Write the data, byte by byte
            for (int i = 0; i < writeStream.Length; i++)
            {
                writeStream.WriteByte(text[i]);
            }
        }
    }

    public static void PrintStream(UnmanagedMemoryStream readStream)
    {
        byte[] text = new byte[readStream.Length];
        // Verify that the stream is writable:
        // By default, UnmanagedMemoryStream objects do not have write access,
        // write access must be set explicitly.
        if (readStream.CanRead)
        {
            // Write the data, byte by byte
            for (int i = 0; i < readStream.Length; i++)
            {
                text[i] = (byte)readStream.ReadByte();
            }
        }

        Console.WriteLine(UnicodeEncoding.Unicode.GetString(text));
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.Position 属性

UnmanagedMemoryStream
.
.
::
.
Position 属性
UnmanagedMemoryStream 类

获取或设置流中的当前位置。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Public Overrides Property Position As Long
    Get
    Set
public override long Position { get; set; }
public:
virtual property long long Position {
    long long get () override;
    void set (long long value) override;
}
abstract Position : int64 with get, set
override Position : int64 with get, set

属性值

类型： System Int64
流中的当前新位置。
异常 | 条件
ObjectDisposedException | 流已关闭。
ArgumentOutOfRangeException | 位置被设置为小于 0 的值，或者位置大于 MaxValue 或在添加到当前指针时导致溢出。

当初始化流时，此属性设置为 0。

尽管可以将流的位置设置为超出流的容量，但是无法使用 Read 和 Write 方法来访问该区域。Read 将返回 0，Write 将引发 NotSupportedException。此支持主要用于设计以及与基本流操作之间的代码兼容性。 尽管可以将流的位置设置为超出流的容量，但是无法使用 Read 和 Write 方法来访问该区域。Read 将返回 0，Write 将引发 NotSupportedException。此支持主要用于设计以及与基本流操作之间的代码兼容性。 尽管可以将流的位置设置为超出流的容量，但是无法使用 Read 和 Write 方法来访问该区域。Read 将返回 0，Write 将引发 NotSupportedException。此支持主要用于设计以及与基本流操作之间的代码兼容性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


UnmanagedMemoryStream ..::.PositionPointer 属性

UnmanagedMemoryStream
.
.
::
.
PositionPointer 属性
UnmanagedMemoryStream 类

获取或设置基于流中当前位置的指向流的字节指针。

此 API 不兼容 CLS。

命名空间： System.IO
程序集： mscorlib（在 mscorlib.dll 中）
Visual Basic 不支持使用或返回不安全类型的 API。
[CLSCompliantAttribute(false)]
public byte* PositionPointer { get; set; }
[CLSCompliantAttribute(false)]
public:
property unsigned char* PositionPointer {
    unsigned char* get ();
    void set (unsigned char* value);
}
[<CLSCompliantAttribute(false)>]
member PositionPointer : nativeptr<byte> with get, set

属性值

类型： System Byte*
字节指针。
异常 | 条件
IndexOutOfRangeException | 当前位置大于流的容量。
ArgumentOutOfRangeException | 所设置的位置不是当前流中的有效位置。
IOException | 指针被设置为比流的开始位置小的值。
NotSupportedException | 流已初始化，可用于 SafeBuffer。PositionPointer 属性仅对使用 Byte 指针初始化的流有效。 流已初始化，可用于 SafeBuffer。PositionPointer 属性仅对使用 Byte 指针初始化的流有效。

若要返回指向整个流的指针，请将 Position 属性设置为 0，然后调用此属性。

  • SecurityPermission

    用于调用非托管代码，例如，使用平台调用或 COM 集成调用本机代码。安全操作：LinkDemand。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode
用于调用非托管代码，例如，使用平台调用或 COM 集成调用本机代码。安全操作：LinkDemand。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode
用于调用非托管代码，例如，使用平台调用或 COM 集成调用本机代码。安全操作：LinkDemand。关联的枚举：SecurityPermissionFlag..::.UnmanagedCode

  • SecurityCriticalAttribute

    需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。 需要完全信任直接调用方。此成员不能由部分受信任或透明的代码使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

.NET Framework Client Profile

受以下版本支持：4

参考

UnmanagedMemoryStream 类
UnmanagedMemoryStream 成员
System.IO 命名空间


WaitForChangedResult 结构

WaitForChangedResult 结构
成员

包含关于所发生更改的信息。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Structure WaitForChangedResult
public struct WaitForChangedResult
public value class WaitForChangedResult
[<SealedAttribute>]
type WaitForChangedResult =  struct end

此示例演示如何让 FileSystemWatcher 等待特定文件更改通知发生，以此同步使用它。

Imports System.IO

Module Module1
    Sub Main()
        ' Define a path and a file name for a temporary file.
        Dim pathname As String = "C:\"
        Dim filename As String = "JunkFile.tmp"
        Dim filepathname As String = Path.Combine(pathname, filename)

        ' Create the temporary file and then close it.
        File.Create(filepathname).Close()

        Console.WriteLine("This application will terminate when you delete the {0} file", filepathname)

        ' Have a FileSystemWatcher monitor the path and file for changes.
        Dim fsw As New FileSystemWatcher(pathname, filename)
        fsw.NotifyFilter = NotifyFilters.FileName
        fsw.EnableRaisingEvents = True

        ' Suspend the calling thread until the file has been deleted.
        Dim cr As IO.WaitForChangedResult = fsw.WaitForChanged(WatcherChangeTypes.Deleted)

        ' Tell the user the file is deleted and exit.
        Console.WriteLine("The {0} files is deleted; program is exiting", cr.Name)
    End Sub
End Module

' This code produces the following output.
'
'  This application will terminate when you delete the C:\JunkFile.tmp file
'  The JunkFile.tmp files is deleted; program is exiting
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

WaitForChangedResult 成员
System.IO 命名空间
FileSystemEventArgs
FileSystemEventHandler
FileSystemWatcher
InternalBufferOverflowException
NotifyFilters
RenamedEventArgs
RenamedEventHandler
WaitForChanged
WatcherChangeTypes


WaitForChangedResult 成员

WaitForChangedResult 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WaitForChangedResult 结构

包含关于所发生更改的信息。

WaitForChangedResult 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

WaitForChangedResult 结构
System.IO 命名空间


WaitForChangedResult 方法

WaitForChangedResult 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WaitForChangedResult 结构

WaitForChangedResult 类型公开以下成员。

名称 说明
页首

参考

WaitForChangedResult 结构
System.IO 命名空间


WaitForChangedResult 属性

WaitForChangedResult 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WaitForChangedResult 结构

WaitForChangedResult 类型公开以下成员。

名称 说明
页首

参考

WaitForChangedResult 结构
System.IO 命名空间


WaitForChangedResult ..::.ChangeType 属性

WaitForChangedResult
.
.
::
.
ChangeType 属性
WaitForChangedResult 结构

获取或设置所发生更改的类型。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Property ChangeType As WatcherChangeTypes
    Get
    Set
public WatcherChangeTypes ChangeType { get; set; }
public:
property WatcherChangeTypes ChangeType {
    WatcherChangeTypes get ();
    void set (WatcherChangeTypes value);
}
member ChangeType : WatcherChangeTypes with get, set

属性值

类型： System.IO WatcherChangeTypes
WatcherChangeTypes 值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

WaitForChangedResult 结构
WaitForChangedResult 成员
System.IO 命名空间
WatcherChangeTypes


WaitForChangedResult ..::.Name 属性

WaitForChangedResult
.
.
::
.
Name 属性
WaitForChangedResult 结构

获取或设置已更改的文件或目录的名称。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Property Name As String
    Get
    Set
public string Name { get; set; }
public:
property String^ Name {
    String^ get ();
    void set (String^ value);
}
member Name : string with get, set

属性值

类型： System String
已更改的文件或目录的名称。

下面的示例阐释了 Name 属性。此代码示例摘自一个为 WaitForChangedResult 结构提供的更大示例。 下面的示例阐释了 Name 属性。此代码示例摘自一个为 WaitForChangedResult 结构提供的更大示例。

' Suspend the calling thread until the file has been deleted.
Dim cr As IO.WaitForChangedResult = fsw.WaitForChanged(WatcherChangeTypes.Deleted)

' Tell the user the file is deleted and exit.
Console.WriteLine("The {0} files is deleted; program is exiting", cr.Name)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

WaitForChangedResult 结构
WaitForChangedResult 成员
System.IO 命名空间


WaitForChangedResult ..::.OldName 属性

WaitForChangedResult
.
.
::
.
OldName 属性
WaitForChangedResult 结构

获取或设置已重命名的文件或目录的原始名称。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Property OldName As String
    Get
    Set
public string OldName { get; set; }
public:
property String^ OldName {
    String^ get ();
    void set (String^ value);
}
member OldName : string with get, set

属性值

类型： System String
已重命名的文件或目录的原始名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

WaitForChangedResult 结构
WaitForChangedResult 成员
System.IO 命名空间


WaitForChangedResult ..::.TimedOut 属性

WaitForChangedResult
.
.
::
.
TimedOut 属性
WaitForChangedResult 结构

获取或设置一个值，该值指示等待操作是否已超时。

命名空间： System.IO
程序集： System（在 System.dll 中）
Public Property TimedOut As Boolean
    Get
    Set
public bool TimedOut { get; set; }
public:
property bool TimedOut {
    bool get ();
    void set (bool value);
}
member TimedOut : bool with get, set

属性值

类型： System Boolean
如果 WaitForChanged 方法超时，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

WaitForChangedResult 结构
WaitForChangedResult 成员
System.IO 命名空间
WaitForChanged


WatcherChangeTypes 枚举

WatcherChangeTypes 枚举

可能会发生的文件或目录更改。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.IO
程序集： System（在 System.dll 中）
<FlagsAttribute> _
Public Enumeration WatcherChangeTypes
[FlagsAttribute]
public enum WatcherChangeTypes
[FlagsAttribute]
public enum class WatcherChangeTypes
[<FlagsAttribute>]
type WatcherChangeTypes
成员名称 | 说明
Created | 文件或文件夹的创建。
Deleted | 文件或文件夹的删除。
Changed | 文件或文件夹的更改。更改的类型包括大小、特性、安全设置、最近写入时间和最近访问时间方面的更改。 文件或文件夹的更改。更改的类型包括大小、特性、安全设置、最近写入时间和最近访问时间方面的更改。
Renamed | 文件或文件夹的重命名。
All | 文件或文件夹的创建、删除、更改或重命名。

每个 WatcherChangeTypes 成员与 FileSystemWatcher 中的事件关联。有关事件的更多信息，请参见 Created、Deleted、Changed 和 Renamed。 每个 WatcherChangeTypes 成员与 FileSystemWatcher 中的事件关联。有关事件的更多信息，请参见 Created、Deleted、Changed 和 Renamed。

下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。 下面的示例演示如何创建 FileSystemWatcher，以监视磁盘驱动器上文件的改动（创建、删除、重命名和更改）。此示例还演示如何正确接收错误通知。

Imports System.IO

Module Module1
    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        Dim fsw As New FileSystemWatcher("C:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        ' Begin watching.
        fsw.EnableRaisingEvents = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        //  Create a FileSystemWatcher to monitor all files on drive C.
        FileSystemWatcher fsw = new FileSystemWatcher("C:\\");

        //  Watch for changes in LastAccess and LastWrite times, and
        //  the renaming of files or directories.
        fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
            | NotifyFilters.FileName |NotifyFilters.DirectoryName;

        //  Register a handler that gets called when a
        //  file is created, changed, or deleted.
        fsw.Changed += new FileSystemEventHandler(OnChanged);

        fsw.Created += new FileSystemEventHandler(OnChanged);

        fsw.Deleted += new FileSystemEventHandler(OnChanged);

        //  Register a handler that gets called when a file is renamed.
        fsw.Renamed += new RenamedEventHandler(OnRenamed);

        //  Register a handler that gets called if the
        //  FileSystemWatcher needs to report an error.
        fsw.Error += new ErrorEventHandler(OnError);

        //  Begin watching.
        fsw.EnableRaisingEvents = true;

        Console.WriteLine("Press \'Enter\' to quit the sample.");
        Console.ReadLine();

    }

    //  This method is called when a file is created, changed, or deleted.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        //  Show that a file has been created, changed, or deleted.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString());
    }

    //  This method is called when a file is renamed.
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        //  Show that a file has been renamed.
        WatcherChangeTypes wct = e.ChangeType;
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString());
    }

    //  This method is called when the FileSystemWatcher detects an error.
    private static void OnError(object source, ErrorEventArgs e)
    {
        //  Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error");
        //  Give more information if the error is due to an internal buffer overflow.
        if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
        {
            //  This can happen if Windows is reporting many file system events quickly
            //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
            //  rate of events. The InternalBufferOverflowException error informs the application
            //  that some of the file system events are being lost.
            Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
        }
    }

}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持：4

参考

System.IO 命名空间
Changed
Created
Deleted
FileSystemEventArgs
FileSystemEventHandler
FileSystemWatcher
InternalBufferOverflowException
NotifyFilters
Renamed
RenamedEventArgs
RenamedEventHandler
WaitForChangedResult


System.Linq 命名空间

System.Linq 命名空间

The System.Linq namespace provides classes and interfaces that support queries that use 语言集成查询 (LINQ).

The Enumerable class contains LINQ standard query operators that operate on objects that implement IEnumerable<(Of <(T>)>).

The Queryable class contains LINQ standard query operators that operate on objects that implement IQueryable<(Of <(T>)>).

 | 类 | 说明
公共类 | Enumerable | 提供一组用于查询实现 IEnumerable<(Of <(T>)>) 的对象的 static（在 Visual Basic 中为 Shared）方法。
公共类 | EnumerableExecutor | 表示一个表达式树，并提供在重写该表达式树后执行该表达式树的功能。
公共类 | EnumerableExecutor T | 基础结构。 表示一个表达式树，并提供在重写该表达式树后执行该表达式树的功能。
公共类 | EnumerableQuery | 基础结构。 将 IEnumerable 表示为 EnumerableQuery 数据源。
公共类 | EnumerableQuery T | 基础结构。 将 IEnumerable<(Of <(T>)>) 集合表示为 IQueryable<(Of <(T>)>) 数据源。
公共类 | Lookup TKey, TElement | 表示映射到一个或多个值的各个键的集合。
公共类 | OrderedParallelQuery TSource | 表示已排序的并行序列。
公共类 | ParallelEnumerable | 提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。这是 Enumerable 的并行等效项。 提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。这是 Enumerable 的并行等效项。
公共类 | ParallelQuery | 表示并行序列。
公共类 | ParallelQuery TSource | 表示并行序列。
公共类 | Queryable | 提供一组用于查询实现 IQueryable<(Of <(T>)>) 的数据结构的 static（在 Visual Basic 中为 Shared）方法。
 | 接口 | 说明
公共接口 | IGrouping TKey, TElement | 表示具有公共键的对象的集合。
公共接口 | ILookup TKey, TElement | 定义索引器、大小属性以及将键映射到 IEnumerable<(Of <(T>)>) 值序列的数据结构的布尔搜索方法。
公共接口 | IOrderedEnumerable TElement | 表示已排序序列。
公共接口 | IOrderedQueryable | 表示排序操作的结果。
公共接口 | IOrderedQueryable T | 表示排序操作的结果。
公共接口 | IQueryable | 提供对未指定数据类型的特定数据源的查询进行计算的功能。
公共接口 | IQueryable T | 提供对数据类型已知的特定数据源的查询进行计算的功能。
公共接口 | IQueryProvider | 定义用于创建和执行 IQueryable 对象所描述的查询的方法。
 | 枚举 | 说明
公共枚举 | ParallelExecutionMode | 查询执行模式是一种提示，它指定系统在并行化查询时应如何使性能达到平衡。
公共枚举 | ParallelMergeOptions | 指定查询中要使用的输出合并的首选类型。换言之，它指示 PLINQ 如何将多个分区的结果合并回单个结果序列。这仅是一个提示，系统在并行处理所有查询时可能不会考虑这一点。 指定查询中要使用的输出合并的首选类型。换言之，它指示 PLINQ 如何将多个分区的结果合并回单个结果序列。这仅是一个提示，系统在并行处理所有查询时可能不会考虑这一点。 指定查询中要使用的输出合并的首选类型。换言之，它指示 PLINQ 如何将多个分区的结果合并回单个结果序列。这仅是一个提示，系统在并行处理所有查询时可能不会考虑这一点。


Enumerable 类

Enumerable 类
成员

提供一组用于查询实现 IEnumerable<(Of <(T>)>) 的对象的 static（在 Visual Basic 中为 Shared）方法。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public NotInheritable Class Enumerable
public static class Enumerable
[ExtensionAttribute]
public ref class Enumerable abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
type Enumerable =  class end

该类中的方法提供标准查询运算符的实现，该运算符用于查询实现 IEnumerable<(Of <(T>)>) 的数据源。标准查询运算符是通用方法，它们遵循 LINQ 模式，使用它们可以在任何基于 .NET 的编程语言中表示数据的遍历、筛选和投影运算。 该类中的方法提供标准查询运算符的实现，该运算符用于查询实现 IEnumerable<(Of <(T>)>) 的数据源。标准查询运算符是通用方法，它们遵循 LINQ 模式，使用它们可以在任何基于 .NET 的编程语言中表示数据的遍历、筛选和投影运算。

该类中的大多数方法被定义为扩展 IEnumerable<(Of <(T>)>) 的扩展方法。这意味着可以像调用实现 IEnumerable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。 该类中的大多数方法被定义为扩展 IEnumerable<(Of <(T>)>) 的扩展方法。这意味着可以像调用实现 IEnumerable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。

只有枚举查询对象时，返回一个值序列的查询所使用的方法才使用目标数据。这就是延迟执行。返回单一实例值的查询所使用的方法可立即执行和使用目标数据。 只有枚举查询对象时，返回一个值序列的查询所使用的方法才使用目标数据。这就是延迟执行。返回单一实例值的查询所使用的方法可立即执行和使用目标数据。 只有枚举查询对象时，返回一个值序列的查询所使用的方法才使用目标数据。这就是延迟执行。返回单一实例值的查询所使用的方法可立即执行和使用目标数据。

System.Linq System.Linq..::.EnumerableEnumerable
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 成员
System.Linq 命名空间

其他资源

Standard Query Operators Overview
扩展方法（C# 编程指南）
扩展方法 (Visual Basic)


Enumerable 成员

Enumerable 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

提供一组用于查询实现 IEnumerable<(Of <(T>)>) 的对象的 static（在 Visual Basic 中为 Shared）方法。

Enumerable 类型公开以下成员。

名称 说明
页首

参考

Enumerable 类
System.Linq 命名空间


Enumerable 方法

Enumerable 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

Enumerable 类型公开以下成员。

名称 说明
页首

参考

Enumerable 类
System.Linq 命名空间


Enumerable ..::.Aggregate 方法

Enumerable
.
.
::
.
Aggregate 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

对序列应用累加器函数。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Aggregate <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TSource, TSource >)>))

Enumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TSource, TSource
>
)
>
)
)
Enumerable 类

对序列应用累加器函数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    func As Func(Of TSource, TSource, TSource) _
) As TSource
public static TSource Aggregate<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, TSource, TSource> func
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Aggregate(
    IEnumerable<TSource>^ source,
    Func<TSource, TSource, TSource>^ func
)
static member Aggregate :
        source:IEnumerable<'TSource> *
        func:Func<'TSource, 'TSource, 'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要聚合的 IEnumerable<(Of <(T>)>)。
func
类型： System Func
<
(Of
<
(
TSource, TSource, TSource
>
)
>
)

要对每个元素调用的累加器函数。

返回值

类型：TSource
累加器的最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 func 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 source 的第一个元素用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 source 的第一个元素用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 source 的第一个元素用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 source 的第一个元素用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 source 的第一个元素用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 source 的第一个元素用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TSource, TSource>)>)) 返回 func 的最终结果。

若要简化一般的聚合运算，标准查询运算符还可以包含一个通用的计数方法（即 Count）和四个数值聚合方法（即 Min、Max、Sum 和 Average）。

下面的代码示例演示如何使用 Aggregate 从一个字符串数组生成一个句子。

    Sub AggregateEx1()
        Dim sentence As String = _
            "the quick brown fox jumps over the lazy dog"
        ' Split the string into individual words.
        Dim words() As String = sentence.Split(" "c)
        ' Prepend each word to the beginning of the new sentence to reverse the word order.
        Dim reversed As String = _
            words.Aggregate(Function(ByVal current, ByVal word) word & " " & current)

        ' Display the output.
        MsgBox(reversed)
    End Sub

    ' This code produces the following output:
    '
    ' dog lazy the over jumps fox brown quick the

            string sentence = "the quick brown fox jumps over the lazy dog";

            // Split the string into individual words.
            string[] words = sentence.Split(' ');

            // Prepend each word to the beginning of the
            // new sentence to reverse the word order.
            string reversed = words.Aggregate((workingSentence, next) =>
                                                  next + " " + workingSentence);

            Console.WriteLine(reversed);

            // This code produces the following output:
            //
            // dog lazy the over jumps fox brown quick the

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Aggregate 重载
System.Linq 命名空间


Enumerable ..::.Aggregate <(Of <(TSource, TAccumulate >)>) 方法 (IEnumerable <(Of <(TSource >)>), TAccumulate, Func <(Of <(TAccumulate, TSource, TAccumulate >)>))

Enumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
)
Enumerable 类

对序列应用累加器函数。将指定的种子值用作累加器初始值。 对序列应用累加器函数。将指定的种子值用作累加器初始值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate) ( _
    source As IEnumerable(Of TSource), _
    seed As TAccumulate, _
    func As Func(Of TAccumulate, TSource, TAccumulate) _
) As TAccumulate
public static TAccumulate Aggregate<TSource, TAccumulate>(
    this IEnumerable<TSource> source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate> func
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate>
static TAccumulate Aggregate(
    IEnumerable<TSource>^ source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate>^ func
)
static member Aggregate :
        source:IEnumerable<'TSource> *
        seed:'TAccumulate *
        func:Func<'TAccumulate, 'TSource, 'TAccumulate> -> 'TAccumulate

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要聚合的 IEnumerable<(Of <(T>)>)。
seed
类型：TAccumulate
累加器的初始值。
func
类型： System Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)

要对每个元素调用的累加器函数。

返回值

类型：TAccumulate
累加器的最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 func 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 返回 func 的最终结果。 Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。Aggregate<(Of <(TSource, TAccumulate>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>)) 返回 func 的最终结果。

若要简化一般的聚合运算，标准查询运算符还可以包含一个通用的计数方法（即 Count）和四个数值聚合方法（即 Min、Max、Sum 和 Average）。

下面的代码示例演示如何使用 Aggregate 应用累加器函数和使用种子值。

    Sub AggregateEx2()
        ' Create an array of Integers.
        Dim ints() As Integer = {4, 8, 8, 3, 9, 0, 7, 8, 2}

        ' Count the even numbers in the array, using a seed value of 0.
        Dim numEven As Integer = _
            ints.Aggregate(0, _
                           Function(ByVal total, ByVal number) _
                               IIf(number Mod 2 = 0, total + 1, total))

        ' Display the output.
        MsgBox("The number of even integers is " & numEven)
    End Sub

    ' This code produces the following output:
    '
    'The number of even integers is 6

            int[] ints = { 4, 8, 8, 3, 9, 0, 7, 8, 2 };

            // Count the even numbers in the array, using a seed value of 0.
            int numEven = ints.Aggregate(0, (total, next) =>
                                                next % 2 == 0 ? total + 1 : total);

            Console.WriteLine("The number of even integers is: {0}", numEven);

            // This code produces the following output:
            //
            // The number of even integers is: 6

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Aggregate 重载
System.Linq 命名空间


Enumerable ..::.Aggregate <(Of <(TSource, TAccumulate, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), TAccumulate, Func <(Of <(TAccumulate, TSource, TAccumulate >)>), Func <(Of <(TAccumulate, TResult >)>))

Enumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)
)
Enumerable 类

对序列应用累加器函数。将指定的种子值用作累加器的初始值，并使用指定的函数选择结果值。 对序列应用累加器函数。将指定的种子值用作累加器的初始值，并使用指定的函数选择结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate, TResult) ( _
    source As IEnumerable(Of TSource), _
    seed As TAccumulate, _
    func As Func(Of TAccumulate, TSource, TAccumulate), _
    resultSelector As Func(Of TAccumulate, TResult) _
) As TResult
public static TResult Aggregate<TSource, TAccumulate, TResult>(
    this IEnumerable<TSource> source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate> func,
    Func<TAccumulate, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate, typename TResult>
static TResult Aggregate(
    IEnumerable<TSource>^ source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate>^ func,
    Func<TAccumulate, TResult>^ resultSelector
)
static member Aggregate :
        source:IEnumerable<'TSource> *
        seed:'TAccumulate *
        func:Func<'TAccumulate, 'TSource, 'TAccumulate> *
        resultSelector:Func<'TAccumulate, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

TResult

结果值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要聚合的 IEnumerable<(Of <(T>)>)。
seed
类型：TAccumulate
累加器的初始值。
func
类型： System Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)

要对每个元素调用的累加器函数。
resultSelector
类型： System Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)

将累加器的最终值转换为结果值的函数。

返回值

类型：TResult
已转换的累加器最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 func 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。将 func 的最终结果传递给 resultSelector 以获取 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 的最终结果。 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。将 func 的最终结果传递给 resultSelector 以获取 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 的最终结果。 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。将 func 的最终结果传递给 resultSelector 以获取 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 的最终结果。 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。将 func 的最终结果传递给 resultSelector 以获取 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 的最终结果。 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。将 func 的最终结果传递给 resultSelector 以获取 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 的最终结果。 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 方法可简化在值序列上执行的计算。此方法的工作原理是对 source 中的每个元素调用一次 func。每次调用 func 时，Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 都将传递序列中的元素和聚合值（作为 func 的第一个参数）。将 seed 参数的值用作聚合的初始值。用 func 的结果替换以前的聚合值。将 func 的最终结果传递给 resultSelector 以获取 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IEnumerable<(Of <(TSource>)>), TAccumulate, Func<(Of <(TAccumulate, TSource, TAccumulate>)>), Func<(Of <(TAccumulate, TResult>)>)) 的最终结果。

若要简化一般的聚合运算，标准查询运算符还可以包含一个通用的计数方法（即 Count）和四个数值聚合方法（即 Min、Max、Sum 和 Average）。

下面的代码示例演示如何使用 Aggregate 应用累加器函数和结果选择器。

    Sub AggregateEx3()
        Dim fruits() As String = _
            {"apple", "mango", "orange", "passionfruit", "grape"}

        ' Determine whether any string in the array is longer than "banana".
        Dim longestName As String = _
            fruits.Aggregate("banana", _
                             Function(ByVal longest, ByVal fruit) _
                                 IIf(fruit.Length > longest.Length, fruit, longest), _
                             Function(ByVal fruit) fruit.ToUpper())

        ' Display the output.
        MsgBox("The fruit with the longest name is " & longestName)
    End Sub

    ' This code produces the following output:
    '
    ' The fruit with the longest name is PASSIONFRUIT

            string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" };

            // Determine whether any string in the array is longer than "banana".
            string longestName =
                fruits.Aggregate("banana",
                                (longest, next) =>
                                    next.Length > longest.Length ? next : longest,
                // Return the final result as an upper case string.
                                fruit => fruit.ToUpper());

            Console.WriteLine(
                "The fruit with the longest name is {0}.",
                longestName);

            // This code produces the following output:
            //
            // The fruit with the longest name is PASSIONFRUIT.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Aggregate 重载
System.Linq 命名空间


Enumerable ..::.All <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
All
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

确定序列中的所有元素是否满足条件。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function All(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Boolean
public static bool All<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool All(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member All :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含要应用谓词的元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Boolean
如果源序列中的每个元素都通过指定谓词中的测试，或者序列为空，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
说明 说明

此方法不返回集合的所有元素。而是确定集合的所有元素是否满足某一条件。 此方法不返回集合的所有元素。而是确定集合的所有元素是否满足某一条件。

一旦可确定结果，则停止枚举 source。

在 Visual Basic 查询表达式语法中，Aggregate Into All() 子句转换为 All<(Of <(TSource>)>) 的一个调用。

下面的代码示例演示如何使用 All<(Of <(TSource>)>) 确定序列中的所有元素是否都满足条件。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub AllEx()
        ' Create an array of Pets.
        Dim pets() As Pet = _
            {New Pet With {.Name = "Barley", .Age = 2}, _
             New Pet With {.Name = "Boots", .Age = 4}, _
             New Pet With {.Name = "Whiskers", .Age = 7}}

        ' Determine whether all pet names in the array start with "B".
        Dim allNames As Boolean = _
            pets.All(Function(ByVal pet) pet.Name.StartsWith("B"))

        ' Display the output.
        Dim text As String = IIf(allNames, "All", "Not all")
        MsgBox(text & " pet names start with 'B'.")
    End Sub

    ' This code produces the following output:
    '
    ' Not all pet names start with 'B'.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void AllEx()
            {
                // Create an array of Pets.
                Pet[] pets = { new Pet { Name="Barley", Age=10 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=6 } };

                // Determine whether all pet names
                // in the array start with 'B'.
                bool allStartWithB = pets.All(pet =>
                                                  pet.Name.StartsWith("B"));

                Console.WriteLine(
                    "{0} pet names start with 'B'.",
                    allStartWithB ? "All" : "Not all");
            }

            // This code produces the following output:
            //
            //  Not all pet names start with 'B'.

All<(Of <(TSource>)>) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where 方法的直接调用中。下面的示例演示 All 方法的这一用法。 All<(Of <(TSource>)>) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where 方法的直接调用中。下面的示例演示 All 方法的这一用法。

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Structure Person
    Public LastName As String
    Public Pets() As Pet
End Structure

Sub AllEx2()
    Dim people As New List(Of Person)(New Person() _
        {New Person With {.LastName = "Haas", _
                          .Pets = New Pet() {New Pet With {.Name = "Barley", .Age = 10}, _
                                             New Pet With {.Name = "Boots", .Age = 14}, _
                                             New Pet With {.Name = "Whiskers", .Age = 6}}}, _
          New Person With {.LastName = "Fakhouri", _
                           .Pets = New Pet() {New Pet With {.Name = "Snowball", .Age = 1}}}, _
          New Person With {.LastName = "Antebi", _
                           .Pets = New Pet() {New Pet With {.Name = "Belle", .Age = 8}}}, _
          New Person With {.LastName = "Philips", _
                           .Pets = New Pet() {New Pet With {.Name = "Sweetie", .Age = 2}, _
                                              New Pet With {.Name = "Rover", .Age = 13}}}})

    ' Determine which people have pets that are all older than 5.
    Dim names = From person In people _
                Where person.Pets.All(Function(pet) pet.Age > 5) _
                Select person.LastName

    For Each name As String In names
        Console.WriteLine(name)
    Next

    ' This code produces the following output:
    '
    ' Haas
    ' Antebi

End Sub

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Person
{
    public string LastName { get; set; }
    public Pet[] Pets { get; set; }
}

public static void AllEx2()
{
    List<Person> people = new List<Person>
        { new Person { LastName = "Haas",
                       Pets = new Pet[] { new Pet { Name="Barley", Age=10 },
                                          new Pet { Name="Boots", Age=14 },
                                          new Pet { Name="Whiskers", Age=6 }}},
          new Person { LastName = "Fakhouri",
                       Pets = new Pet[] { new Pet { Name = "Snowball", Age = 1}}},
          new Person { LastName = "Antebi",
                       Pets = new Pet[] { new Pet { Name = "Belle", Age = 8} }},
          new Person { LastName = "Philips",
                       Pets = new Pet[] { new Pet { Name = "Sweetie", Age = 2},
                                          new Pet { Name = "Rover", Age = 13}} }
        };

    // Determine which people have pets that are all older than 5.
    IEnumerable<string> names = from person in people
                                where person.Pets.All(pet => pet.Age > 5)
                                select person.LastName;

    foreach (string name in names)
    {
        Console.WriteLine(name);
    }

    /* This code produces the following output:
     *
     * Haas
     * Antebi
     */
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Any 方法

Enumerable
.
.
::
.
Any 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

确定序列中的任何元素是否存在或满足条件。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Any <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Any
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

确定序列是否包含任何元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Any(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As Boolean
public static bool Any<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Any(
    IEnumerable<TSource>^ source
)
static member Any :
        source:IEnumerable<'TSource> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要检查是否为空的 IEnumerable<(Of <(T>)>)。

返回值

类型： System Boolean
如果源序列包含任何元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
说明 说明

此方法不返回集合的任何一个元素。而是确定集合是否包含任何元素。 此方法不返回集合的任何一个元素。而是确定集合是否包含任何元素。

一旦可确定结果，则停止枚举 source。

在 Visual Basic 查询表达式语法中，Aggregate Into Any() 子句转换为 Any 的一个调用。

下面的代码示例演示如何使用 Any 确定序列是否包含任何元素。

        ' Create a list of Integers.
        Dim numbers As New List(Of Integer)(New Integer() {1, 2})

        ' Determine if the list contains any items.
        Dim hasElements As Boolean = numbers.Any()

        ' Display the output.
        Dim text As String = IIf(hasElements, "not ", "")
        MsgBox("The list is " & text & "empty.")

        ' This code produces the following output:
        '
        ' The list is not empty.

                List<int> numbers = new List<int> { 1, 2 };
                bool hasElements = numbers.Any();

                Console.WriteLine("The list {0} empty.",
                    hasElements ? "is not" : "is");

                // This code produces the following output:
                //
                // The list is not empty.

Any<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法的直接调用中。下面的示例演示 Any 方法的这一用法。 Any<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法的直接调用中。下面的示例演示 Any 方法的这一用法。

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Structure Person
    Public LastName As String
    Public Pets() As Pet
End Structure

Sub AnyEx2()
    Dim people As New List(Of Person)(New Person() _
        {New Person With {.LastName = "Haas", _
                          .Pets = New Pet() {New Pet With {.Name = "Barley", .Age = 10}, _
                                             New Pet With {.Name = "Boots", .Age = 14}, _
                                             New Pet With {.Name = "Whiskers", .Age = 6}}}, _
          New Person With {.LastName = "Fakhouri", _
                           .Pets = New Pet() {New Pet With {.Name = "Snowball", .Age = 1}}}, _
          New Person With {.LastName = "Antebi", _
                           .Pets = New Pet() {}}, _
          New Person With {.LastName = "Philips", _
                           .Pets = New Pet() {New Pet With {.Name = "Sweetie", .Age = 2}, _
                                              New Pet With {.Name = "Rover", .Age = 13}}}})

    ' Determine which people have a non-empty Pet array.
    Dim names = From person In people _
                Where person.Pets.Any() _
                Select person.LastName

    For Each name As String In names
        Console.WriteLine(name)
    Next

    ' This code produces the following output:
    '
    ' Haas
    ' Fakhouri
    ' Philips

End Sub

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Person
{
    public string LastName { get; set; }
    public Pet[] Pets { get; set; }
}

public static void AnyEx2()
{
    List<Person> people = new List<Person>
        { new Person { LastName = "Haas",
                       Pets = new Pet[] { new Pet { Name="Barley", Age=10 },
                                          new Pet { Name="Boots", Age=14 },
                                          new Pet { Name="Whiskers", Age=6 }}},
          new Person { LastName = "Fakhouri",
                       Pets = new Pet[] { new Pet { Name = "Snowball", Age = 1}}},
          new Person { LastName = "Antebi",
                       Pets = new Pet[] { }},
          new Person { LastName = "Philips",
                       Pets = new Pet[] { new Pet { Name = "Sweetie", Age = 2},
                                          new Pet { Name = "Rover", Age = 13}} }
        };

    // Determine which people have a non-empty Pet array.
    IEnumerable<string> names = from person in people
                                where person.Pets.Any()
                                select person.LastName;

    foreach (string name in names)
    {
        Console.WriteLine(name);
    }

    /* This code produces the following output:

       Haas
       Fakhouri
       Philips
    */
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Any 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Any <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
Any
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

确定序列中的任何元素是否都满足条件。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Any(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Boolean
public static bool Any<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Any(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Any :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素将应用谓词。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Boolean
如果源序列中的任何元素都通过指定谓词中的测试，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
说明 说明

此方法不返回集合的任何一个元素。而是确定集合的任何元素是否满足某一条件。 此方法不返回集合的任何一个元素。而是确定集合的任何元素是否满足某一条件。

一旦可确定结果，则停止枚举 source。

在 Visual Basic 查询表达式语法中，Aggregate Into Any() 子句转换为 Any 的一个调用。

下面的代码示例演示如何使用 Any 确定序列中的任何元素是否都满足条件。

    Structure Pet
        Public Name As String
        Public Age As Integer
        Public Vaccinated As Boolean
    End Structure

    Shared Sub AnyEx3()
        ' Create a list of Pets
        Dim pets As New List(Of Pet)(New Pet() _
                                     {New Pet With {.Name = "Barley", .Age = 8, .Vaccinated = True}, _
                                      New Pet With {.Name = "Boots", .Age = 4, .Vaccinated = False}, _
                                      New Pet With {.Name = "Whiskers", .Age = 1, .Vaccinated = False}})

        ' Determine whether any pets over age 1 are also unvaccinated.
        Dim unvaccinated As Boolean = _
            pets.Any(Function(pet) pet.Age > 1 And pet.Vaccinated = False)

        ' Display the output.
        Dim text As String = IIf(unvaccinated, "are", "are not")
        MsgBox("There " & text & " unvaccinated animals over age 1.")
    End Sub

    ' This code produces the following output:
    '
    ' There are unvaccinated animals over age 1.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
                public bool Vaccinated { get; set; }
            }

            public static void AnyEx3()
            {
                // Create an array of Pets.
                Pet[] pets =
                    { new Pet { Name="Barley", Age=8, Vaccinated=true },
                      new Pet { Name="Boots", Age=4, Vaccinated=false },
                      new Pet { Name="Whiskers", Age=1, Vaccinated=false } };

                // Determine whether any pets over age 1 are also unvaccinated.
                bool unvaccinated =
                    pets.Any(p => p.Age > 1 && p.Vaccinated == false);

                Console.WriteLine(
                    "There {0} unvaccinated animals over age one.",
                    unvaccinated ? "are" : "are not any");
            }

            // This code produces the following output:
            //
            //  There are unvaccinated animals over age one.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Any 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.AsEnumerable <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
AsEnumerable
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

返回类型为 IEnumerable<(Of <(T>)>) 的输入。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsEnumerable(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> AsEnumerable<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ AsEnumerable(
    IEnumerable<TSource>^ source
)
static member AsEnumerable :
        source:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

类型为 IEnumerable<(Of <(T>)>) 的序列。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

类型为 IEnumerable<(Of <(T>)>) 的输入序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

除了将 source 的编译时类型从实现 IEnumerable<(Of <(T>)>) 的类型更改为 IEnumerable<(Of <(T>)>) 本身之外，AsEnumerable<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法均无效。

AsEnumerable<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 可用于在序列实现 IEnumerable<(Of <(T>)>) 时在查询实现之间进行选择，同时它还具有一组不同的可用公共查询方法。例如，假设给定一个泛型类 Table，该类实现 IEnumerable<(Of <(T>)>) 并且具有自己的方法（如 Where、Select 和 SelectMany），则调用 Where 将调用 Table 的公共 Where 方法。表示数据库表的 Table 类型可能具有一个 Where 方法，该方法将谓词参数作为表达式树，并将该树转换为 SQL 以供远程执行。如果不需要远程执行（例如，谓词调用本地方法），则 AsEnumerable<(Of <(TSource>)>) 方法可用于隐藏自定义方法，并使标准查询运算符变为可用。 AsEnumerable<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 可用于在序列实现 IEnumerable<(Of <(T>)>) 时在查询实现之间进行选择，同时它还具有一组不同的可用公共查询方法。例如，假设给定一个泛型类 Table，该类实现 IEnumerable<(Of <(T>)>) 并且具有自己的方法（如 Where、Select 和 SelectMany），则调用 Where 将调用 Table 的公共 Where 方法。表示数据库表的 Table 类型可能具有一个 Where 方法，该方法将谓词参数作为表达式树，并将该树转换为 SQL 以供远程执行。如果不需要远程执行（例如，谓词调用本地方法），则 AsEnumerable<(Of <(TSource>)>) 方法可用于隐藏自定义方法，并使标准查询运算符变为可用。 AsEnumerable<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 可用于在序列实现 IEnumerable<(Of <(T>)>) 时在查询实现之间进行选择，同时它还具有一组不同的可用公共查询方法。例如，假设给定一个泛型类 Table，该类实现 IEnumerable<(Of <(T>)>) 并且具有自己的方法（如 Where、Select 和 SelectMany），则调用 Where 将调用 Table 的公共 Where 方法。表示数据库表的 Table 类型可能具有一个 Where 方法，该方法将谓词参数作为表达式树，并将该树转换为 SQL 以供远程执行。如果不需要远程执行（例如，谓词调用本地方法），则 AsEnumerable<(Of <(TSource>)>) 方法可用于隐藏自定义方法，并使标准查询运算符变为可用。 AsEnumerable<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 可用于在序列实现 IEnumerable<(Of <(T>)>) 时在查询实现之间进行选择，同时它还具有一组不同的可用公共查询方法。例如，假设给定一个泛型类 Table，该类实现 IEnumerable<(Of <(T>)>) 并且具有自己的方法（如 Where、Select 和 SelectMany），则调用 Where 将调用 Table 的公共 Where 方法。表示数据库表的 Table 类型可能具有一个 Where 方法，该方法将谓词参数作为表达式树，并将该树转换为 SQL 以供远程执行。如果不需要远程执行（例如，谓词调用本地方法），则 AsEnumerable<(Of <(TSource>)>) 方法可用于隐藏自定义方法，并使标准查询运算符变为可用。

下面的代码示例演示当需要标准查询运算符实现时，如何使用 AsEnumerable<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 隐藏类型的自定义 Where 方法。

    Dim output As New System.Text.StringBuilder

    ' A custom class.
    Class Clump(Of T)
        Inherits List(Of T)

        ' Constructor.
        Public Sub New(ByVal collection As System.Collections.Generic.IEnumerable(Of T))
            MyBase.New(collection)
        End Sub

        ' Custom implementation of Where().
        Function Where(ByVal predicate As Func(Of T, Boolean)) As IEnumerable(Of T)
            output.AppendLine("In Clump's implementation of Where().")
            Return Enumerable.Where(Me, predicate)
        End Function
    End Class

    Sub AsEnumerableEx1()
        ' Create a new Clump(Of T) object.
        Dim fruitClump As New Clump(Of String)(New String() _
                                               {"apple", "passionfruit", "banana", _
                                                "mango", "orange", "blueberry", _
                                                "grape", "strawberry"})

        ' First call to Where():
        ' Call Clump's Where() method with a predicate.
        Dim query1 As IEnumerable(Of String) = _
            fruitClump.Where(Function(fruit) fruit.Contains("o"))
        output.AppendLine("query1 has been created." & vbCrLf)

        ' Second call to Where():
        ' First call AsEnumerable() to hide Clump's Where() method and thereby
        ' force System.Linq.Enumerable's Where() method to be called.
        Dim query2 As IEnumerable(Of String) = _
            fruitClump.AsEnumerable().Where(Function(fruit) fruit.Contains("o"))
        output.AppendLine("query2 has been created.")

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' In Clump's implementation of Where().
    ' query1 has been created.
    '
    ' query2 has been created.

        // Custom class.
        class Clump<T> : List<T>
        {
            // Custom implementation of Where().
            public IEnumerable<T> Where(Func<T, bool> predicate)
            {
                Console.WriteLine("In Clump's implementation of Where().");
                return Enumerable.Where(this, predicate);
            }
        }

        static void AsEnumerableEx1()
        {
            // Create a new Clump<T> object.
            Clump<string> fruitClump =
                new Clump<string> { "apple", "passionfruit", "banana",
                    "mango", "orange", "blueberry", "grape", "strawberry" };

            // First call to Where():
            // Call Clump's Where() method with a predicate.
            IEnumerable<string> query1 =
                fruitClump.Where(fruit => fruit.Contains("o"));

            Console.WriteLine("query1 has been created.\n");

            // Second call to Where():
            // First call AsEnumerable() to hide Clump's Where() method and thereby
            // force System.Linq.Enumerable's Where() method to be called.
            IEnumerable<string> query2 =
                fruitClump.AsEnumerable().Where(fruit => fruit.Contains("o"));

            // Display the output.
            Console.WriteLine("query2 has been created.");
        }

        // This code produces the following output:
        //
        // In Clump's implementation of Where().
        // query1 has been created.
        //
        // query2 has been created.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Average 方法

Enumerable
.
.
::
.
Average 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

计算数值序列的平均值。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Decimal >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Decimal
>
)
>
)
)
Enumerable 类

计算 Decimal 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Decimal) _
) As Decimal
public static decimal Average(
    this IEnumerable<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Average(
    IEnumerable<Decimal>^ source
)
static member Average :
        source:IEnumerable<decimal> -> decimal

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Decimal
>
)
>
)

要计算平均值的 Decimal 值序列。

返回值

类型： System Decimal
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Int32>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of integers.
        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        ' Determine the average value in the list.
        Dim avg As Double = grades.Average()

        ' Display the output.
        MsgBox("The average grade is " & avg)

        ' This code produces the following output:
        '
        ' The average grade is 77.6

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Decimal 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Average(
    this IEnumerable<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Average(
    IEnumerable<Nullable<Decimal>>^ source
)
static member Average :
        source:IEnumerable<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Decimal 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of nullable long values.
        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        ' Determine the average value in the array.
        Dim avg As Nullable(Of Double) = longs.Average()

        ' Display the output.
        MsgBox("The average is " & avg.ToString)

        ' This code produces the following output:
        '
        ' The average is 133282081426.333

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Double >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Double
>
)
>
)
)
Enumerable 类

计算 Double 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Double) _
) As Double
public static double Average(
    this IEnumerable<double> source
)
[ExtensionAttribute]
public:
static double Average(
    IEnumerable<double>^ source
)
static member Average :
        source:IEnumerable<float> -> float

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Double
>
)
>
)

要计算平均值的 Double 值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

如果元素之和太大，无法表示为 Double，则此方法返回正无穷大或负无穷大。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Int32>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of integers.
        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        ' Determine the average value in the list.
        Dim avg As Double = grades.Average()

        ' Display the output.
        MsgBox("The average grade is " & avg)

        ' This code produces the following output:
        '
        ' The average grade is 77.6

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Double 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this IEnumerable<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    IEnumerable<Nullable<double>>^ source
)
static member Average :
        source:IEnumerable<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Double 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果元素之和太大，无法表示为 Double，则此方法返回正无穷大或负无穷大。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of nullable long values.
        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        ' Determine the average value in the array.
        Dim avg As Nullable(Of Double) = longs.Average()

        ' Display the output.
        MsgBox("The average is " & avg.ToString)

        ' This code produces the following output:
        '
        ' The average is 133282081426.333

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Int32 >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Int32
>
)
>
)
)
Enumerable 类

计算 Int32 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Integer) _
) As Double
public static double Average(
    this IEnumerable<int> source
)
[ExtensionAttribute]
public:
static double Average(
    IEnumerable<int>^ source
)
static member Average :
        source:IEnumerable<int> -> float

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int32
>
)
>
)

要计算平均值的 Int32 值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Int32>)>)) 计算平均值。

        ' Create a list of integers.
        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        ' Determine the average value in the list.
        Dim avg As Double = grades.Average()

        ' Display the output.
        MsgBox("The average grade is " & avg)

        ' This code produces the following output:
        '
        ' The average grade is 77.6

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int32 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Nullable(Of Integer)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this IEnumerable<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    IEnumerable<Nullable<int>>^ source
)
static member Average :
        source:IEnumerable<Nullable<int>> -> Nullable<float>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Int32 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of nullable long values.
        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        ' Determine the average value in the array.
        Dim avg As Nullable(Of Double) = longs.Average()

        ' Display the output.
        MsgBox("The average is " & avg.ToString)

        ' This code produces the following output:
        '
        ' The average is 133282081426.333

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Int64 >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Int64
>
)
>
)
)
Enumerable 类

计算 Int64 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Long) _
) As Double
public static double Average(
    this IEnumerable<long> source
)
[ExtensionAttribute]
public:
static double Average(
    IEnumerable<long long>^ source
)
static member Average :
        source:IEnumerable<int64> -> float

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int64
>
)
>
)

要计算平均值的 Int64 值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Int32>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of integers.
        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        ' Determine the average value in the list.
        Dim avg As Double = grades.Average()

        ' Display the output.
        MsgBox("The average grade is " & avg)

        ' This code produces the following output:
        '
        ' The average grade is 77.6

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int64 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Nullable(Of Long)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this IEnumerable<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    IEnumerable<Nullable<long long>>^ source
)
static member Average :
        source:IEnumerable<Nullable<int64>> -> Nullable<float>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Int64 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算平均值。

        ' Create an array of nullable long values.
        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        ' Determine the average value in the array.
        Dim avg As Nullable(Of Double) = longs.Average()

        ' Display the output.
        MsgBox("The average is " & avg.ToString)

        ' This code produces the following output:
        '
        ' The average is 133282081426.333

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Single 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Average(
    this IEnumerable<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Average(
    IEnumerable<Nullable<float>>^ source
)
static member Average :
        source:IEnumerable<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Single 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of nullable long values.
        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        ' Determine the average value in the array.
        Dim avg As Nullable(Of Double) = longs.Average()

        ' Display the output.
        MsgBox("The average is " & avg.ToString)

        ' This code produces the following output:
        '
        ' The average is 133282081426.333

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average 方法 (IEnumerable <(Of <(Single >)>))

Enumerable
.
.
::
.
Average 方法 (IEnumerable
<
(Of
<
(
Single
>
)
>
)
)
Enumerable 类

计算 Single 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IEnumerable(Of Single) _
) As Single
public static float Average(
    this IEnumerable<float> source
)
[ExtensionAttribute]
public:
static float Average(
    IEnumerable<float>^ source
)
static member Average :
        source:IEnumerable<float32> -> float32

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Single
>
)
>
)

要计算平均值的 Single 值序列。

返回值

类型： System Single
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average(IEnumerable<(Of <(Int32>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of integers.
        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        ' Determine the average value in the list.
        Dim avg As Double = grades.Average()

        ' Display the output.
        MsgBox("The average grade is " & avg)

        ' This code produces the following output:
        '
        ' The average grade is 77.6

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
Enumerable 类

计算 Decimal 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Average(
    IEnumerable<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim numbers() As String = {"10007", "37", "299846234235"}

        ' Determine the average number after converting each
        ' string to an Int64 value.
        Dim avg As Double = _
            numbers.Average(Function(number) Convert.ToInt64(number))

        ' Display the output.
        MsgBox("The average is " & avg)

        ' This code produces the following output:
        '
        ' The average is 99948748093

            string[] numbers = { "10007", "37", "299846234235" };

            double average = numbers.Average(num => Convert.ToInt64(num));

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 99948748093.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
Enumerable 类

计算 Double 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    IEnumerable<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim numbers() As String = {"10007", "37", "299846234235"}

        ' Determine the average number after converting each
        ' string to an Int64 value.
        Dim avg As Double = _
            numbers.Average(Function(number) Convert.ToInt64(number))

        ' Display the output.
        MsgBox("The average is " & avg)

        ' This code produces the following output:
        '
        ' The average is 99948748093

            string[] numbers = { "10007", "37", "299846234235" };

            double average = numbers.Average(num => Convert.ToInt64(num));

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 99948748093.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
Enumerable 类

计算 Int32 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Double
public static double Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    IEnumerable<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 计算平均值。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average length of the strings in the array.
        Dim avg As Double = fruits.Average(Function(s) s.Length)

        ' Display the output.
        MsgBox("The average string length is " & avg)

        ' This code produces the following output:
        '
        ' The average string length is 6.5

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            double average = fruits.Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
Enumerable 类

计算 Int64 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Double
public static double Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    IEnumerable<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int64> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 计算平均值。

        ' Create an array of strings.
        Dim numbers() As String = {"10007", "37", "299846234235"}

        ' Determine the average number after converting each
        ' string to an Int64 value.
        Dim avg As Double = _
            numbers.Average(Function(number) Convert.ToInt64(number))

        ' Display the output.
        MsgBox("The average is " & avg)

        ' This code produces the following output:
        '
        ' The average is 99948748093

            string[] numbers = { "10007", "37", "299846234235" };

            double average = numbers.Average(num => Convert.ToInt64(num));

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 99948748093.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Decimal 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Average(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim numbers() As String = {"10007", "37", "299846234235"}

        ' Determine the average number after converting each
        ' string to an Int64 value.
        Dim avg As Double = _
            numbers.Average(Function(number) Convert.ToInt64(number))

        ' Display the output.
        MsgBox("The average is " & avg)

        ' This code produces the following output:
        '
        ' The average is 99948748093

            string[] numbers = { "10007", "37", "299846234235" };

            double average = numbers.Average(num => Convert.ToInt64(num));

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 99948748093.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Double 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim numbers() As String = {"10007", "37", "299846234235"}

        ' Determine the average number after converting each
        ' string to an Int64 value.
        Dim avg As Double = _
            numbers.Average(Function(number) Convert.ToInt64(number))

        ' Display the output.
        MsgBox("The average is " & avg)

        ' This code produces the following output:
        '
        ' The average is 99948748093

            string[] numbers = { "10007", "37", "299846234235" };

            double average = numbers.Average(num => Convert.ToInt64(num));

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 99948748093.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int32 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 序列中元素之和大于 MaxValue。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average length of the strings in the array.
        Dim avg As Double = fruits.Average(Function(s) s.Length)

        ' Display the output.
        MsgBox("The average string length is " & avg)

        ' This code produces the following output:
        '
        ' The average string length is 6.5

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            double average = fruits.Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int64 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim numbers() As String = {"10007", "37", "299846234235"}

        ' Determine the average number after converting each
        ' string to an Int64 value.
        Dim avg As Double = _
            numbers.Average(Function(number) Convert.ToInt64(number))

        ' Display the output.
        MsgBox("The average is " & avg)

        ' This code produces the following output:
        '
        ' The average is 99948748093

            string[] numbers = { "10007", "37", "299846234235" };

            double average = numbers.Average(num => Convert.ToInt64(num));

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 99948748093.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Single 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Average(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

值序列的平均值；如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average length of the strings in the array.
        Dim avg As Double = fruits.Average(Function(s) s.Length)

        ' Display the output.
        MsgBox("The average string length is " & avg)

        ' This code produces the following output:
        '
        ' The average string length is 6.5

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            double average = fruits.Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Average <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

Enumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
Enumerable 类

计算 Single 值序列的平均值，该值可通过调用输入序列的每个元素的转换函数获取。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Average<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Average(
    IEnumerable<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Average :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

在 Visual Basic 查询表达式语法中，Aggregate Into Average() 子句转换为 Average 的一个调用。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 计算平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average length of the strings in the array.
        Dim avg As Double = fruits.Average(Function(s) s.Length)

        ' Display the output.
        MsgBox("The average string length is " & avg)

        ' This code produces the following output:
        '
        ' The average string length is 6.5

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            double average = fruits.Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Average 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Cast <(Of <(TResult >)>) 方法

Enumerable
.
.
::
.
Cast
<
(Of
<
(
TResult
>
)
>
)
方法
Enumerable 类

将 IEnumerable 的元素转换为指定的类型。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Cast(Of TResult) ( _
    source As IEnumerable _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Cast<TResult>(
    this IEnumerable source
)

[ExtensionAttribute]
public:
generic<typename TResult>
static IEnumerable<TResult>^ Cast(
    IEnumerable^ source
)
static member Cast :
        source:IEnumerable -> IEnumerable<'TResult>

类型参数

TResult

source 中的元素要转换成的类型。

参数

source
类型： System.Collections IEnumerable
包含要转换的元素的 IEnumerable。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含已转换为指定类型的源序列的每个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidCastException | 序列中的元素不能强制转换为 TResult 类型。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

Cast<(Of <(TResult>)>)(IEnumerable) 方法通过提供必要的类型信息，可在非泛型集合上调用标准查询运算符。例如，ArrayList 并不实现 IEnumerable<(Of <(T>)>)，但通过调用 ArrayList 对象上的 Cast<(Of <(TResult>)>)(IEnumerable)，就可以使用标准查询运算符查询该序列。 Cast<(Of <(TResult>)>)(IEnumerable) 方法通过提供必要的类型信息，可在非泛型集合上调用标准查询运算符。例如，ArrayList 并不实现 IEnumerable<(Of <(T>)>)，但通过调用 ArrayList 对象上的 Cast<(Of <(TResult>)>)(IEnumerable)，就可以使用标准查询运算符查询该序列。

如果元素无法强制转换为 TResult 类型，则此方法将引发异常。若要只获取可以强制转换为 TResult 类型的元素，请使用 OfType<(Of <(TResult>)>) 方法，而不是 Cast<(Of <(TResult>)>)(IEnumerable)。 如果元素无法强制转换为 TResult 类型，则此方法将引发异常。若要只获取可以强制转换为 TResult 类型的元素，请使用 OfType<(Of <(TResult>)>) 方法，而不是 Cast<(Of <(TResult>)>)(IEnumerable)。

在查询表达式中，显式类型迭代变量会转换为 Cast<(Of <(TResult>)>)(IEnumerable) 的一个调用。此示例演示显式类型范围变量的语法。 在查询表达式中，显式类型迭代变量会转换为 Cast<(Of <(TResult>)>)(IEnumerable) 的一个调用。此示例演示显式类型范围变量的语法。

from int i in objects
From i As Integer In objects

下面的代码示例演示如何使用 Cast<(Of <(TResult>)>)(IEnumerable) 在 ArrayList 上启用标准查询运算符。

        ' Create an ArrayList and add items to it.
        Dim fruits As New System.Collections.ArrayList()
        fruits.Add("apple")
        fruits.Add("mango")

        ' Call Cast(Of String) to cast the ArrayList elements to strings.
        ' Then call Select() to project the strings as the query result.
        Dim query As IEnumerable(Of String) = _
            fruits.Cast(Of String)().Select(Function(fruit) fruit)

        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' mango

            System.Collections.ArrayList fruits = new System.Collections.ArrayList();
            fruits.Add("apple");
            fruits.Add("mango");

            IEnumerable<string> query =
                fruits.Cast<string>().Select(fruit => fruit);

            foreach (string fruit in query)
            {
                Console.WriteLine(fruit);
            }

            // This code produces the following output:
            //
            // apple
            // mango

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间

其他资源

from 子句（C# 参考）
From 子句 (Visual Basic)


Enumerable ..::.Concat <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
Concat
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

连接两个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Concat(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Concat<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Concat(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second
)
static member Concat :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要连接的第一个序列。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要与第一个序列连接的序列。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含两个输入序列的连接元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

Concat<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法与 Union 方法不同，因为 Concat<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法返回输入序列中的所有原始元素。Union 方法只返回唯一的元素。 Concat<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法与 Union 方法不同，因为 Concat<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法返回输入序列中的所有原始元素。Union 方法只返回唯一的元素。

下面的代码示例演示如何使用 Concat<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 连接两个序列。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    ' Returns an array of Pet objects.
    Function GetCats() As Pet()
        Dim cats() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        Return cats
    End Function

    ' Returns an array of Pet objects.
    Function GetDogs() As Pet()
        Dim dogs() As Pet = {New Pet With {.Name = "Bounder", .Age = 3}, _
                             New Pet With {.Name = "Snoopy", .Age = 14}, _
                             New Pet With {.Name = "Fido", .Age = 9}}
        Return dogs
    End Function

    Sub ConcatEx1()
        ' Create two arrays of Pet objects.
        Dim cats() As Pet = GetCats()
        Dim dogs() As Pet = GetDogs()

        ' Project the Name of each cat and concatenate
        ' the collection of cat name strings with a collection
        ' of dog name strings.
        Dim query As IEnumerable(Of String) = _
            cats _
            .Select(Function(cat) cat.Name) _
            .Concat(dogs.Select(Function(dog) dog.Name))

        Dim output As New System.Text.StringBuilder
        For Each name As String In query
            output.AppendLine(name)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Barley
    ' Boots
    ' Whiskers
    ' Bounder
    ' Snoopy
    ' Fido

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            static Pet[] GetCats()
            {
                Pet[] cats = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };
                return cats;
            }

            static Pet[] GetDogs()
            {
                Pet[] dogs = { new Pet { Name="Bounder", Age=3 },
                               new Pet { Name="Snoopy", Age=14 },
                               new Pet { Name="Fido", Age=9 } };
                return dogs;
            }

            public static void ConcatEx1()
            {
                Pet[] cats = GetCats();
                Pet[] dogs = GetDogs();

                IEnumerable<string> query =
                    cats.Select(cat => cat.Name).Concat(dogs.Select(dog => dog.Name));

                foreach (string name in query)
                {
                    Console.WriteLine(name);
                }
            }

            // This code produces the following output:
            //
            // Barley
            // Boots
            // Whiskers
            // Bounder
            // Snoopy
            // Fido

连接两个序列的另一方法是构造序列的一个集合（例如一个数组），然后应用 SelectMany 方法，将其传递给标识选择器函数。下面的示例演示了 SelectMany 的此种用法。 连接两个序列的另一方法是构造序列的一个集合（例如一个数组），然后应用 SelectMany 方法，将其传递给标识选择器函数。下面的示例演示了 SelectMany 的此种用法。

        ' Create two arrays of Pet objects.
        Dim cats() As Pet = GetCats()
        Dim dogs() As Pet = GetDogs()

        ' Create an IEnumerable collection that contains two elements.
        ' Each element is an array of Pet objects.
        Dim animals() As IEnumerable(Of Pet) = {cats, dogs}

        Dim query As IEnumerable(Of String) = _
            (animals.SelectMany(Function(pets) _
                                    pets.Select(Function(pet) pet.Name)))

        Dim output As New System.Text.StringBuilder
        For Each name As String In query
            output.AppendLine(name)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' Barley
        ' Boots
        ' Whiskers
        ' Bounder
        ' Snoopy
        ' Fido

                Pet[] cats = GetCats();
                Pet[] dogs = GetDogs();

                IEnumerable<string> query =
                    new[] { cats.Select(cat => cat.Name), dogs.Select(dog => dog.Name) }
                    .SelectMany(name => name);

                foreach (string name in query)
                {
                    Console.WriteLine(name);
                }

                // This code produces the following output:
                //
                // Barley
                // Boots
                // Whiskers
                // Bounder
                // Snoopy
                // Fido

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Contains 方法

Enumerable
.
.
::
.
Contains 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

确定序列是否包含指定的元素。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Contains <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), TSource)

Enumerable
.
.
::
.
Contains
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TSource)
Enumerable 类

通过使用默认的相等比较器确定序列是否包含指定的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Contains(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    value As TSource _
) As Boolean
public static bool Contains<TSource>(
    this IEnumerable<TSource> source,
    TSource value
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Contains(
    IEnumerable<TSource>^ source,
    TSource value
)
static member Contains :
        source:IEnumerable<'TSource> *
        value:'TSource -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要在其中定位某个值的序列。
value
类型：TSource
要在序列中定位的值。

返回值

类型： System Boolean
如果源序列包含具有指定值的元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 的类型实现 ICollection<(Of <(T>)>)，则将调用该实现中的 Contains 方法以获取结果。否则，此方法将确定 source 是否包含指定的元素。 如果 source 的类型实现 ICollection<(Of <(T>)>)，则将调用该实现中的 Contains 方法以获取结果。否则，此方法将确定 source 是否包含指定的元素。

一旦找到匹配的元素，将终止枚举。

通过使用默认的相等比较器 Default 比较元素和指定的值。

下面代码示例演示如何使用 Contains<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 确定数组是否包含指定的元素。

        ' Create an array of strings.
        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' This is the string to search the array for.
        Dim fruit As String = "mango"

        ' Determine if the array contains the specified string.
        Dim hasMango As Boolean = fruits.Contains(fruit)

        Dim text As String = IIf(hasMango, "does", "does not")

        ' Display the output.
        MsgBox("The array " & text & " contain " & fruit)

        ' This code produces the following output:
        '
        ' The array does contain mango

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            string fruit = "mango";

            bool hasMango = fruits.Contains(fruit);

            Console.WriteLine(
                "The array {0} contain '{1}'.",
                hasMango ? "does" : "does not",
                fruit);

            // This code produces the following output:
            //
            // The array does contain 'mango'.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Contains 重载
System.Linq 命名空间


Enumerable ..::.Contains <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), TSource, IEqualityComparer <(Of <(TSource >)>))

Enumerable
.
.
::
.
Contains
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TSource, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 确定序列是否包含指定的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Contains(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    value As TSource, _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
public static bool Contains<TSource>(
    this IEnumerable<TSource> source,
    TSource value,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Contains(
    IEnumerable<TSource>^ source,
    TSource value,
    IEqualityComparer<TSource>^ comparer
)
static member Contains :
        source:IEnumerable<'TSource> *
        value:'TSource *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要在其中定位某个值的序列。
value
类型：TSource
要在序列中定位的值。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

一个对值进行比较的相等比较器。

返回值

类型： System Boolean
如果源序列包含具有指定值的元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

一旦找到匹配的元素，将终止枚举。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 比较元素和指定的值。

下面的示例演示如何实现可以在 Contains 方法中使用的相等比较器。

Public Class Product
    Public Property Name As String
    Public Property Code As Integer
End Class

' Custom comparer for the Product class
Public Class ProductComparer
    Implements IEqualityComparer(Of Product)

    Public Function Equals1(
        ByVal x As Product,
        ByVal y As Product
        ) As Boolean Implements IEqualityComparer(Of Product).Equals

        ' Check whether the compared objects reference the same data.
        If x Is y Then Return True

        'Check whether any of the compared objects is null.
        If x Is Nothing OrElse y Is Nothing Then Return False

        ' Check whether the products' properties are equal.
        Return (x.Code = y.Code) AndAlso (x.Name = y.Name)
    End Function

    Public Function GetHashCode1(
        ByVal product As Product
        ) As Integer Implements IEqualityComparer(Of Product).GetHashCode

        ' Check whether the object is null.
        If product Is Nothing Then Return 0

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName =
            If(product.Name Is Nothing, 0, product.Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = product.Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}

实现此比较器后，您可以使用 Contains 方法中 Product 对象的序列，如下面的示例所示。

Dim fruits() As Product =
   {New Product With {.Name = "apple", .Code = 9},
    New Product With {.Name = "orange", .Code = 4},
    New Product With {.Name = "lemon", .Code = 12}}

Dim apple = New Product With {.Name = "apple", .Code = 9}
Dim kiwi = New Product With {.Name = "kiwi", .Code = 8}

Dim prodc As New ProductComparer()

Dim hasApple = fruits.Contains(apple, prodc)
Dim hasKiwi = fruits.Contains(kiwi, prodc)

Console.WriteLine("Apple? " & hasApple)
Console.WriteLine("Kiwi? " & hasKiwi)

' This code produces the following output:
'
' Apple? True
' Kiwi? False

        Product[] fruits = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 },
                               new Product { Name = "lemon", Code = 12 } };

        Product apple = new Product { Name = "apple", Code = 9 };
        Product kiwi = new Product {Name = "kiwi", Code = 8 };

        ProductComparer prodc = new ProductComparer();

        bool hasApple = fruits.Contains(apple, prodc);
        bool hasKiwi = fruits.Contains(kiwi, prodc);

        Console.WriteLine("Apple? " + hasApple);
        Console.WriteLine("Kiwi? " + hasKiwi);

        /*
            This code produces the following output:

            Apple? True
            Kiwi? False
        */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Contains 重载
System.Linq 命名空间


Enumerable ..::.Count 方法

Enumerable
.
.
::
.
Count 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回序列中的元素数量。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Count <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Count
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列中的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Count(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As Integer
public static int Count<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Count(
    IEnumerable<TSource>^ source
)
static member Count :
        source:IEnumerable<'TSource> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含要计数的元素的序列。

返回值

类型： System Int32
输入序列中的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | source 中的元素数量大于 MaxValue。

如果 source 的类型实现 ICollection<(Of <(T>)>)，则该实现用于获取元素计数。否则，此方法确定该计数。 如果 source 的类型实现 ICollection<(Of <(T>)>)，则该实现用于获取元素计数。否则，此方法确定该计数。

如果期望并且想要允许该结果大于 MaxValue，则请使用 LongCount 方法。

在 Visual Basic 查询表达式语法中，Aggregate Into Count() 子句转换为 Count 的一个调用。

下面的代码示例演示如何使用 Count<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 对数组中的元素进行计数。

        ' Create an array of strings.
        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        Try
            ' Count the number of items in the array.
            Dim numberOfFruits As Integer = fruits.Count()
            ' Display the output.
            MsgBox("There are " & numberOfFruits & " fruits in the collection.")
        Catch e As OverflowException
            MsgBox("The count is too large to store as an Int32. Try using LongCount() instead.")
        End Try

        ' This code produces the following output:
        '
        ' There are 6 fruits in the collection.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            try
            {
                int numberOfFruits = fruits.Count();
                Console.WriteLine(
                    "There are {0} fruits in the collection.",
                    numberOfFruits);

            }
            catch (OverflowException)
            {
                Console.WriteLine("The count is too large to store as an Int32.");
                Console.WriteLine("Try using the LongCount() method instead.");
            }

            // This code produces the following output:
            //
            // There are 6 fruits in the collection.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Count 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Count <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
Count
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回一个数字，表示在指定的序列中满足条件的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Count(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Integer
public static int Count<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Count(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Count :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含要测试和计数的元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Int32
一个数字，表示序列中满足谓词函数条件的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | source 中的元素数量大于 MaxValue。

如果 source 的类型实现 ICollection<(Of <(T>)>)，则该实现用于获取元素计数。否则，此方法确定该计数。 如果 source 的类型实现 ICollection<(Of <(T>)>)，则该实现用于获取元素计数。否则，此方法确定该计数。

如果期望并且想要允许该结果大于 MaxValue，则应该使用 LongCount 方法。

在 Visual Basic 查询表达式语法中，Aggregate Into Count() 子句转换为 Count 的一个调用。

下面的代码示例演示如何使用 Count<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 对数组中满足条件的元素进行计数。

    Structure Pet
        Public Name As String
        Public Vaccinated As Boolean
    End Structure

    Sub CountEx2()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Vaccinated = True}, _
                             New Pet With {.Name = "Boots", .Vaccinated = False}, _
                             New Pet With {.Name = "Whiskers", .Vaccinated = False}}

        Try
            ' Count the number of Pets in the array where the Vaccinated property is False.
            Dim numberUnvaccinated As Integer = _
                pets.Count(Function(p) p.Vaccinated = False)
            ' Display the output.
            MsgBox("There are " & numberUnvaccinated & " unvaccinated animals.")
        Catch e As OverflowException
            MsgBox("The count is too large to store as an Int32. Try using LongCount() instead.")
        End Try

    End Sub

    ' This code produces the following output:
    '
    ' There are 2 unvaccinated animals.

            class Pet
            {
                public string Name { get; set; }
                public bool Vaccinated { get; set; }
            }

            public static void CountEx2()
            {
                Pet[] pets = { new Pet { Name="Barley", Vaccinated=true },
                               new Pet { Name="Boots", Vaccinated=false },
                               new Pet { Name="Whiskers", Vaccinated=false } };

                try
                {
                    int numberUnvaccinated = pets.Count(p => p.Vaccinated == false);
                    Console.WriteLine("There are {0} unvaccinated animals.", numberUnvaccinated);
                }
                catch (OverflowException)
                {
                    Console.WriteLine("The count is too large to store as an Int32.");
                    Console.WriteLine("Try using the LongCount() method instead.");
                }
            }

            // This code produces the following output:
            //
            // There are 2 unvaccinated animals.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Count 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.DefaultIfEmpty 方法

Enumerable
.
.
::
.
DefaultIfEmpty 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回 IEnumerable<(Of <(T>)>) 的元素；如果序列为空，则返回一个具有默认值的单一实例集合。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.DefaultIfEmpty <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
DefaultIfEmpty
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回指定序列的元素；如果序列为空，则返回单一实例集合中的类型参数的默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function DefaultIfEmpty(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> DefaultIfEmpty<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ DefaultIfEmpty(
    IEnumerable<TSource>^ source
)
static member DefaultIfEmpty :
        source:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

序列为空时返回默认值的序列。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

如果 source 为空，则为包含 TSource 类型的默认值的 IEnumerable<(Of <(T>)>) 对象；否则为 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当此方法与 GroupJoin) 方法组合使用，可用于生成左外部联接。

下面的代码示例演示如何使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 在源序列为空的情况下提供默认值。

此示例使用了一个非空序列。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub DefaultIfEmptyEx1()
        ' Create a List of Pet objects.
        Dim pets As New List(Of Pet)(New Pet() _
                                     {New Pet With {.Name = "Barley", .Age = 8}, _
                                      New Pet With {.Name = "Boots", .Age = 4}, _
                                      New Pet With {.Name = "Whiskers", .Age = 1}})

        Dim output As New System.Text.StringBuilder
        ' Iterate through the items in the List, calling DefaultIfEmpty().
        For Each pet As Pet In pets.DefaultIfEmpty()
            output.AppendLine(pet.Name)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Barley
    ' Boots
    ' Whiskers

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void DefaultIfEmptyEx1()
            {
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 } };

                foreach (Pet pet in pets.DefaultIfEmpty())
                {
                    Console.WriteLine(pet.Name);
                }
            }

            /*
             This code produces the following output:

             Barley
             Boots
             Whiskers
            */

此示例使用了一个空序列。

        ' Create an empty List.
        Dim numbers As New List(Of Integer)()

        Dim output As New System.Text.StringBuilder
        ' Iterate through the items in the List, calling DefaultIfEmpty().
        For Each number As Integer In numbers.DefaultIfEmpty()
            output.AppendLine(number)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 0

            List<int> numbers = new List<int>();

            foreach (int number in numbers.DefaultIfEmpty())
            {
                Console.WriteLine(number);
            }

            /*
             This code produces the following output:

             0
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
DefaultIfEmpty 重载
System.Linq 命名空间

其他资源

联接运算


Enumerable ..::.DefaultIfEmpty <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), TSource)

Enumerable
.
.
::
.
DefaultIfEmpty
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TSource)
Enumerable 类

返回指定序列中的元素；如果序列为空，则返回单一实例集合中的指定值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function DefaultIfEmpty(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    defaultValue As TSource _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> DefaultIfEmpty<TSource>(
    this IEnumerable<TSource> source,
    TSource defaultValue
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ DefaultIfEmpty(
    IEnumerable<TSource>^ source,
    TSource defaultValue
)
static member DefaultIfEmpty :
        source:IEnumerable<'TSource> *
        defaultValue:'TSource -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

序列为空时为其返回指定值的序列。
defaultValue
类型：TSource
序列为空时要返回的值。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

在 source 为空的情况下包含 defaultValue 的 IEnumerable<(Of <(T>)>)；否则为 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

当此方法与 GroupJoin) 方法组合使用，可用于生成左外部联接。

下面的代码示例演示如何使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法以及如何指定默认值。第一个为非空序列，第二个为空序列。 下面的代码示例演示如何使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法以及如何指定默认值。第一个为非空序列，第二个为空序列。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub DefaultIfEmptyEx2()
        ' Create a Pet object to use as the default value.
        Dim defaultPet As New Pet With {.Name = "Default Pet", .Age = 0}

        ' Create a List of Pet objects.
        Dim pets1 As New List(Of Pet)(New Pet() _
                                      {New Pet With {.Name = "Barley", .Age = 8}, _
                                       New Pet With {.Name = "Boots", .Age = 4}, _
                                       New Pet With {.Name = "Whiskers", .Age = 1}})

        Dim output1 As New System.Text.StringBuilder
        ' Enumerate the items in the list, calling DefaultIfEmpty()
        ' with a default value.
        For Each pet As Pet In pets1.DefaultIfEmpty(defaultPet)
            output1.AppendLine("Name: " & pet.Name)
        Next

        ' Display the output.
        MsgBox(output1.ToString())

        ' Create an empty List.
        Dim pets2 As New List(Of Pet)

        Dim output2 As New System.Text.StringBuilder
        ' Enumerate the items in the list, calling DefaultIfEmpty()
        ' with a default value.
        For Each pet As Pet In pets2.DefaultIfEmpty(defaultPet)
            output2.AppendLine("Name: " & pet.Name)
        Next

        ' Display the output.
        MsgBox(output2.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Name: Barley
    ' Name: Boots
    ' Name: Whiskers
    '
    ' Name: Default Pet

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void DefaultIfEmptyEx2()
            {
                Pet defaultPet = new Pet { Name = "Default Pet", Age = 0 };

                List<Pet> pets1 =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 } };

                foreach (Pet pet in pets1.DefaultIfEmpty(defaultPet))
                {
                    Console.WriteLine("Name: {0}", pet.Name);
                }

                List<Pet> pets2 = new List<Pet>();

                foreach (Pet pet in pets2.DefaultIfEmpty(defaultPet))
                {
                    Console.WriteLine("\nName: {0}", pet.Name);
                }
            }

            /*
             This code produces the following output:

             Name: Barley
             Name: Boots
             Name: Whiskers

             Name: Default Pet
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
DefaultIfEmpty 重载
System.Linq 命名空间

其他资源

联接运算


Enumerable ..::.Distinct 方法

Enumerable
.
.
::
.
Distinct 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回序列中的非重复元素。

名称 说明
页首

结果序列是无序的。

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Distinct <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Distinct
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Distinct(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Distinct<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Distinct(
    IEnumerable<TSource>^ source
)
static member Distinct :
        source:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中移除重复元素的序列。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含源序列中的非重复元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

Distinct<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法返回不包含重复值的无序序列。它使用默认的相等比较器 Default 对值进行比较。 Distinct<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法返回不包含重复值的无序序列。它使用默认的相等比较器 Default 对值进行比较。

在 Visual Basic 查询表达式语法中，Distinct 子句转换为 Distinct 的一个调用。

默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。 默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。

下面的代码示例演示如何使用 Distinct<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 返回整数序列中的非重复元素。

        ' Create a list of integers.
        Dim ages As New List(Of Integer)(New Integer() _
                                         {21, 46, 46, 55, 17, 21, 55, 55})

        ' Select the unique numbers in the List.
        Dim distinctAges As IEnumerable(Of Integer) = ages.Distinct()

        Dim output As New System.Text.StringBuilder("Distinct ages:" & vbCrLf)
        For Each age As Integer In distinctAges
            output.AppendLine(age)
        Next

        ' Display the output.
        MsgBox(output.ToString)

        ' This code produces the following output:
        '
        ' Distinct ages:
        ' 21
        ' 46
        ' 55
        ' 17

            List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };

            IEnumerable<int> distinctAges = ages.Distinct();

            Console.WriteLine("Distinct ages:");

            foreach (int age in distinctAges)
            {
                Console.WriteLine(age);
            }

            /*
             This code produces the following output:

             Distinct ages:
             21
             46
             55
             17
            */

如果希望从某种自定义数据类型的对象序列中返回不同的元素，则必须在类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。 如果希望从某种自定义数据类型的对象序列中返回不同的元素，则必须在类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。

Public Class Product
    Implements IEquatable(Of Product)

    Public Property Name As String
    Public Property Code As Integer

    Public Function Equals1(
        ByVal other As Product
        ) As Boolean Implements IEquatable(Of Product).Equals

        ' Check whether the compared object is null.
        If other Is Nothing Then Return False

        ' Check whether the compared object references the same data.
        If Me Is Other Then Return True

        ' Check whether the products' properties are equal.
        Return Code.Equals(other.Code) AndAlso Name.Equals(other.Name)
    End Function

    Public Overrides Function GetHashCode() As Integer

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName = If(Name Is Nothing, 0, Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product : IEquatable<Product>
{
    public string Name { get; set; }
    public int Code { get; set; }

    public bool Equals(Product other)
    {

        //Check whether the compared object is null.
        if (Object.ReferenceEquals(other, null)) return false;

        //Check whether the compared object references the same data.
        if (Object.ReferenceEquals(this, other)) return true;

        //Check whether the products' properties are equal.
        return Code.Equals(other.Code) && Name.Equals(other.Name);
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public override int GetHashCode()
    {

        //Get hash code for the Name field if it is not null.
        int hashProductName = Name == null ? 0 : Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }
}

实现此接口后，您可以使用 Distinct<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法中 Product 对象的序列，如下面的示例所示。

Dim products() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4},
     New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "lemon", .Code = 12}}

' Exclude duplicates.

Dim noduplicates = products.Distinct()

For Each product In noduplicates
    Console.WriteLine(product.Name & " " & product.Code)
Next

' This code produces the following output:
'
' apple 9
' orange 4
' lemon 12
'

Product[] products = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "orange", Code = 4 },
                       new Product { Name = "apple", Code = 9 },
                       new Product { Name = "lemon", Code = 12 } };

//Exclude duplicates.

IEnumerable<Product> noduplicates =
    products.Distinct();

foreach (var product in noduplicates)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:
    apple 9
    orange 4
    lemon 12
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Distinct 重载
System.Linq 命名空间

其他资源

Distinct 子句 (Visual Basic)


Enumerable ..::.Distinct <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Enumerable
.
.
::
.
Distinct
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较返回序列中的非重复元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Distinct(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Distinct<TSource>(
    this IEnumerable<TSource> source,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Distinct(
    IEnumerable<TSource>^ source,
    IEqualityComparer<TSource>^ comparer
)
static member Distinct :
        source:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中移除重复元素的序列。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含源序列中的非重复元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

Distinct<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法返回不包含重复值的无序序列。如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对值进行比较。 Distinct<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法返回不包含重复值的无序序列。如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对值进行比较。

下面的示例演示如何实现可以在 Distinct 方法中使用的相等比较器。

Public Class Product
    Public Property Name As String
    Public Property Code As Integer
End Class

' Custom comparer for the Product class
Public Class ProductComparer
    Implements IEqualityComparer(Of Product)

    Public Function Equals1(
        ByVal x As Product,
        ByVal y As Product
        ) As Boolean Implements IEqualityComparer(Of Product).Equals

        ' Check whether the compared objects reference the same data.
        If x Is y Then Return True

        'Check whether any of the compared objects is null.
        If x Is Nothing OrElse y Is Nothing Then Return False

        ' Check whether the products' properties are equal.
        Return (x.Code = y.Code) AndAlso (x.Name = y.Name)
    End Function

    Public Function GetHashCode1(
        ByVal product As Product
        ) As Integer Implements IEqualityComparer(Of Product).GetHashCode

        ' Check whether the object is null.
        If product Is Nothing Then Return 0

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName =
            If(product.Name Is Nothing, 0, product.Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = product.Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}

实现此比较器后，您可以使用 Distinct 方法中 Product 对象的序列，如下面的示例所示。

Dim products() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4},
     New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "lemon", .Code = 12}}

' Exclude duplicates.

Dim noduplicates = products.Distinct(New ProductComparer())

For Each product In noduplicates
    Console.WriteLine(product.Name & " " & product.Code)
Next

' This code produces the following output:
'
' apple 9
' orange 4
' lemon 12
'

Product[] products = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "orange", Code = 4 },
                       new Product { Name = "apple", Code = 9 },
                       new Product { Name = "lemon", Code = 12 } };

//Exclude duplicates.

IEnumerable<Product> noduplicates =
    products.Distinct(new ProductComparer());

foreach (var product in noduplicates)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:
    apple 9
    orange 4
    lemon 12
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Distinct 重载
System.Linq 命名空间


Enumerable ..::.ElementAt <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
ElementAt
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

返回序列中指定索引处的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ElementAt(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    index As Integer _
) As TSource
public static TSource ElementAt<TSource>(
    this IEnumerable<TSource> source,
    int index
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource ElementAt(
    IEnumerable<TSource>^ source,
    int index
)
static member ElementAt :
        source:IEnumerable<'TSource> *
        index:int -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
index
类型： System Int32
要检索的从零开始的元素索引。

返回值

类型：TSource
源序列中指定位置处的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零或大于等于 source 中的元素数量。

如果 source 的类型实现 IList<(Of <(T>)>)，则该实现用于获取指定索引处的元素。否则，此方法获取指定的元素。 如果 source 的类型实现 IList<(Of <(T>)>)，则该实现用于获取指定索引处的元素。否则，此方法获取指定的元素。

如果 index 超出范围，则此方法将引发异常。若要在指定索引超出范围时返回默认值，则请使用 ElementAtOrDefault<(Of <(TSource>)>) 方法。 如果 index 超出范围，则此方法将引发异常。若要在指定索引超出范围时返回默认值，则请使用 ElementAtOrDefault<(Of <(TSource>)>) 方法。

下面的代码示例演示如何使用 ElementAt<(Of <(TSource>)>) 返回指定位置处的元素。

        ' Create an array of strings.
        Dim names() As String = _
            {"Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}

        Dim random As Random = New Random(DateTime.Now.Millisecond)

        ' Get a string at a random index within the array.
        Dim name As String = names.ElementAt(random.Next(0, names.Length))

        ' Display the output.
        MsgBox("The name chosen at random is " & name)

        ' This code produces the following output:
        '
        ' The name chosen at random is Ito, Shu

            string[] names =
                { "Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow",

                    "Hedlund, Magnus", "Ito, Shu" };
            Random random = new Random(DateTime.Now.Millisecond);

            string name = names.ElementAt(random.Next(0, names.Length));

            Console.WriteLine("The name chosen at random is '{0}'.", name);

            /*
             This code produces the following sample output:

             The name chosen at random is 'Ito, Shu'.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ElementAtOrDefault <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
ElementAtOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

返回序列中指定索引处的元素；如果索引超出范围，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ElementAtOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    index As Integer _
) As TSource
public static TSource ElementAtOrDefault<TSource>(
    this IEnumerable<TSource> source,
    int index
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource ElementAtOrDefault(
    IEnumerable<TSource>^ source,
    int index
)
static member ElementAtOrDefault :
        source:IEnumerable<'TSource> *
        index:int -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
index
类型： System Int32
要检索的从零开始的元素索引。

返回值

类型：TSource
如果索引超出源序列的范围，则为 default(TSource)；否则为源序列中指定位置处的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 的类型实现 IList<(Of <(T>)>)，则该实现用于获取指定索引处的元素。否则，此方法获取指定的元素。 如果 source 的类型实现 IList<(Of <(T>)>)，则该实现用于获取指定索引处的元素。否则，此方法获取指定的元素。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何使用 ElementAtOrDefault<(Of <(TSource>)>)。此示例使用了一个超出数组范围的索引。 下面的代码示例演示如何使用 ElementAtOrDefault<(Of <(TSource>)>)。此示例使用了一个超出数组范围的索引。

        ' Create an array of strings.
        Dim names() As String = _
            {"Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}

        Dim index As Integer = 20

        ' Get a string at an index that is out of range in the array.
        Dim name As String = names.ElementAtOrDefault(index)

        Dim text As String = IIf(String.IsNullOrEmpty(name), "[THERE IS NO NAME AT THIS INDEX]", name)

        ' Display the output.
        MsgBox("The name chosen at index " & index & " is " & text)

        ' This code produces the following output:
        '
        ' The name chosen at index 20 is [THERE IS NO NAME AT THIS INDEX]

            string[] names =
                { "Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow",
                    "Hedlund, Magnus", "Ito, Shu" };

            int index = 20;

            string name = names.ElementAtOrDefault(index);

            Console.WriteLine(
                "The name chosen at index {0} is '{1}'.",
                index,
                String.IsNullOrEmpty(name) ? "<no name at this index>" : name);

            /*
             This code produces the following output:

             The name chosen at index 20 is '<no name at this index>'.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Empty <(Of <(TResult >)>) 方法

Enumerable
.
.
::
.
Empty
<
(Of
<
(
TResult
>
)
>
)
方法
Enumerable 类

返回一个具有指定的类型参数的空 IEnumerable<(Of <(T>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Shared Function Empty(Of TResult) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Empty<TResult>()

public:
generic<typename TResult>
static IEnumerable<TResult>^ Empty()
static member Empty : unit -> IEnumerable<'TResult>

类型参数

TResult

分配给返回的泛型 IEnumerable<(Of <(T>)>) 的类型参数的类型。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个类型参数为 TResult 的空 IEnumerable<(Of <(T>)>)。

Empty<(Of <(TResult>)>)()()() 方法缓存 TResult 类型的空序列。当已枚举返回的对象时，它不会生成任何元素。 Empty<(Of <(TResult>)>)()()() 方法缓存 TResult 类型的空序列。当已枚举返回的对象时，它不会生成任何元素。

在某些情况下，此方法在将空序列传递给用户定义的方法（使用 IEnumerable<(Of <(T>)>)）时很有用。它还可用于生成方法（如 Union）的中性元素。有关 Empty<(Of <(TResult>)>)()()() 的此种用法的示例，请参见“示例”部分。 在某些情况下，此方法在将空序列传递给用户定义的方法（使用 IEnumerable<(Of <(T>)>)）时很有用。它还可用于生成方法（如 Union）的中性元素。有关 Empty<(Of <(TResult>)>)()()() 的此种用法的示例，请参见“示例”部分。 在某些情况下，此方法在将空序列传递给用户定义的方法（使用 IEnumerable<(Of <(T>)>)）时很有用。它还可用于生成方法（如 Union）的中性元素。有关 Empty<(Of <(TResult>)>)()()() 的此种用法的示例，请参见“示例”部分。

下面的代码示例演示如何使用 Empty<(Of <(TResult>)>)()()() 生成一个空 IEnumerable<(Of <(T>)>)。

' Create an empty sequence.
Dim empty As IEnumerable(Of Decimal) = Enumerable.Empty(Of Decimal)()

IEnumerable<decimal> empty = Enumerable.Empty<decimal>();

下面的代码示例演示了 Empty<(Of <(TResult>)>)()()() 方法的一种可能的用法。将 Aggregate 方法应用于字符串数组的集合。仅当该数组包含四个或多个元素时，集合中的每个数组的元素被添加到结果的 IEnumerable<(Of <(T>)>) 中。Empty<(Of <(TResult>)>) 用于生成 Aggregate 的种子值，因为如果集合中没有包含四个或更多元素的数组，则只能返回空序列。 下面的代码示例演示了 Empty<(Of <(TResult>)>)()()() 方法的一种可能的用法。将 Aggregate 方法应用于字符串数组的集合。仅当该数组包含四个或多个元素时，集合中的每个数组的元素被添加到结果的 IEnumerable<(Of <(T>)>) 中。Empty<(Of <(TResult>)>) 用于生成 Aggregate 的种子值，因为如果集合中没有包含四个或更多元素的数组，则只能返回空序列。 下面的代码示例演示了 Empty<(Of <(TResult>)>)()()() 方法的一种可能的用法。将 Aggregate 方法应用于字符串数组的集合。仅当该数组包含四个或多个元素时，集合中的每个数组的元素被添加到结果的 IEnumerable<(Of <(T>)>) 中。Empty<(Of <(TResult>)>) 用于生成 Aggregate 的种子值，因为如果集合中没有包含四个或更多元素的数组，则只能返回空序列。 下面的代码示例演示了 Empty<(Of <(TResult>)>)()()() 方法的一种可能的用法。将 Aggregate 方法应用于字符串数组的集合。仅当该数组包含四个或多个元素时，集合中的每个数组的元素被添加到结果的 IEnumerable<(Of <(T>)>) 中。Empty<(Of <(TResult>)>) 用于生成 Aggregate 的种子值，因为如果集合中没有包含四个或更多元素的数组，则只能返回空序列。

        ' Create three string arrays.
        Dim names1() As String = _
            {"Hartono, Tommy"}
        Dim names2() As String = _
            {"Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}
        Dim names3() As String = _
            {"Solanki, Ajay", "Hoeing, Helge", "Andersen, Henriette Thaulow", "Potra, Cristina", "Iallo, Lucio"}

        ' Create a List that contains 3 elements, where
        ' each element is an array of strings.
        Dim namesList As New List(Of String())(New String()() {names1, names2, names3})

        ' Select arrays that have four or more elements and union
        ' them into one collection, using Empty() to generate the
        ' empty collection for the seed value.
        Dim allNames As IEnumerable(Of String) = _
            namesList.Aggregate(Enumerable.Empty(Of String)(), _
                                Function(current, nextOne) _
                                    IIf(nextOne.Length > 3, current.Union(nextOne), current))

        Dim output As New System.Text.StringBuilder
        For Each name As String In allNames
            output.AppendLine(name)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' Adams, Terry
        ' Andersen, Henriette Thaulow
        ' Hedlund, Magnus
        ' Ito, Shu
        ' Solanki, Ajay
        ' Hoeing, Helge
        ' Potra, Cristina
        ' Iallo, Lucio

            string[] names1 = { "Hartono, Tommy" };
            string[] names2 = { "Adams, Terry", "Andersen, Henriette Thaulow",
                                  "Hedlund, Magnus", "Ito, Shu" };
            string[] names3 = { "Solanki, Ajay", "Hoeing, Helge",
                                  "Andersen, Henriette Thaulow",
                                  "Potra, Cristina", "Iallo, Lucio" };

            List<string[]> namesList =
                new List<string[]> { names1, names2, names3 };

            // Only include arrays that have four or more elements
            IEnumerable<string> allNames =
                namesList.Aggregate(Enumerable.Empty<string>(),
                (current, next) => next.Length > 3 ? current.Union(next) : current);

            foreach (string name in allNames)
            {
                Console.WriteLine(name);
            }

            /*
             This code produces the following output:

             Adams, Terry
             Andersen, Henriette Thaulow
             Hedlund, Magnus
             Ito, Shu
             Solanki, Ajay
             Hoeing, Helge
             Potra, Cristina
             Iallo, Lucio
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Except 方法

Enumerable
.
.
::
.
Except 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

生成两个序列的差集。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Except <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用默认的相等比较器对值进行比较生成两个序列的差集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Except<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Except(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second
)
static member Except :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其不在 second 中的元素。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，如果它的元素也出现在第一个序列中，则将导致从返回的序列中移除这些元素。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含两个序列元素的差集的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

两个集的差集定义为未显示在第二个集中的第一个集的成员。

说明 说明

此方法返回未显示在 second 中的 first 的元素。它也不返回未显示在 first 中的 second 的元素。 此方法返回未显示在 second 中的 first 的元素。它也不返回未显示在 first 中的 second 的元素。

默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。 默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。

下面的代码示例演示如何使用 Except<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法来比较两个数字序列，并返回仅在第一个序列中出现的元素。

        ' Create two arrays of doubles.
        Dim numbers1() As Double = {2.0, 2.1, 2.2, 2.3, 2.4, 2.5}
        Dim numbers2() As Double = {2.2}

        ' Select the elements from the first array that are not
        ' in the second array.
        Dim onlyInFirstSet As IEnumerable(Of Double) = numbers1.Except(numbers2)

        Dim output As New System.Text.StringBuilder
        For Each number As Double In onlyInFirstSet
            output.AppendLine(number)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 2
        ' 2.1
        ' 2.3
        ' 2.4
        ' 2.5

            double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
            double[] numbers2 = { 2.2 };

            IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

            foreach (double number in onlyInFirstSet)
                Console.WriteLine(number);

            /*
             This code produces the following output:

             2
             2.1
             2.3
             2.4
             2.5
            */

如果希望比较某种自定义数据类型的对象的序列，则必须在您的类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。 如果希望比较某种自定义数据类型的对象的序列，则必须在您的类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。

Public Class Product
    Implements IEquatable(Of Product)

    Public Property Name As String
    Public Property Code As Integer

    Public Function Equals1(
        ByVal other As Product
        ) As Boolean Implements IEquatable(Of Product).Equals

        ' Check whether the compared object is null.
        If other Is Nothing Then Return False

        ' Check whether the compared object references the same data.
        If Me Is Other Then Return True

        ' Check whether the products' properties are equal.
        Return Code.Equals(other.Code) AndAlso Name.Equals(other.Name)
    End Function

    Public Overrides Function GetHashCode() As Integer

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName = If(Name Is Nothing, 0, Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product : IEquatable<Product>
{
    public string Name { get; set; }
    public int Code { get; set; }

    public bool Equals(Product other)
    {

        //Check whether the compared object is null.
        if (Object.ReferenceEquals(other, null)) return false;

        //Check whether the compared object references the same data.
        if (Object.ReferenceEquals(this, other)) return true;

        //Check whether the products' properties are equal.
        return Code.Equals(other.Code) && Name.Equals(other.Name);
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public override int GetHashCode()
    {

        //Get hash code for the Name field if it is not null.
        int hashProductName = Name == null ? 0 : Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }
}

实现此接口后，您可以使用 Except<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法中 Product 对象的序列，如下面的示例所示。

        Dim fruits1() As Product =
            {New Product With {.Name = "apple", .Code = 9},
             New Product With {.Name = "orange", .Code = 4},
             New Product With {.Name = "lemon", .Code = 12}}

        Dim fruits2() As Product =
            {New Product With {.Name = "apple", .Code = 9}}

        ' Get all the elements from the first array
        ' except for the elements from the second array.

        Dim except = fruits1.Except(fruits2)

        For Each product In except
            Console.WriteLine(product.Name & " " & product.Code)
        Next

        ' This code produces the following output:
        '
        ' orange 4
        ' lemon 12

        Product[] fruits1 = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 },
                                new Product { Name = "lemon", Code = 12 } };

        Product[] fruits2 = { new Product { Name = "apple", Code = 9 } };

        //Get all the elements from the first array
        //except for the elements from the second array.

        IEnumerable<Product> except =
            fruits1.Except(fruits2);

        foreach (var product in except)
            Console.WriteLine(product.Name + " " + product.Code);

        /*
          This code produces the following output:

          orange 4
          lemon 12
        */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Except 重载
System.Linq 命名空间


Enumerable ..::.Except <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Enumerable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较产生两个序列的差集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Except<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Except(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member Except :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其不在 second 中的元素。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，如果它的元素也出现在第一个序列中，则将导致从返回的序列中移除这些元素。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含两个序列元素的差集的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对值进行比较。

下面的示例演示如何实现可以在 Except 方法中使用的相等比较器。

Public Class Product
    Public Property Name As String
    Public Property Code As Integer
End Class

' Custom comparer for the Product class
Public Class ProductComparer
    Implements IEqualityComparer(Of Product)

    Public Function Equals1(
        ByVal x As Product,
        ByVal y As Product
        ) As Boolean Implements IEqualityComparer(Of Product).Equals

        ' Check whether the compared objects reference the same data.
        If x Is y Then Return True

        'Check whether any of the compared objects is null.
        If x Is Nothing OrElse y Is Nothing Then Return False

        ' Check whether the products' properties are equal.
        Return (x.Code = y.Code) AndAlso (x.Name = y.Name)
    End Function

    Public Function GetHashCode1(
        ByVal product As Product
        ) As Integer Implements IEqualityComparer(Of Product).GetHashCode

        ' Check whether the object is null.
        If product Is Nothing Then Return 0

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName =
            If(product.Name Is Nothing, 0, product.Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = product.Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}

实现此比较器后，您可以使用 Except 方法中 Product 对象的序列，如下面的示例所示。

        Dim fruits1() As Product =
            {New Product With {.Name = "apple", .Code = 9},
             New Product With {.Name = "orange", .Code = 4},
             New Product With {.Name = "lemon", .Code = 12}}

        Dim fruits2() As Product =
            {New Product With {.Name = "apple", .Code = 9}}

        ' Get all the elements from the first array
        ' except for the elements from the second array.

        Dim except = fruits1.Except(fruits2, New ProductComparer())

        For Each product In except
            Console.WriteLine(product.Name & " " & product.Code)
        Next

        ' This code produces the following output:
        '
        ' orange 4
        ' lemon 12

        Product[] fruits1 = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 },
                                new Product { Name = "lemon", Code = 12 } };

        Product[] fruits2 = { new Product { Name = "apple", Code = 9 } };

        //Get all the elements from the first array
        //except for the elements from the second array.

        IEnumerable<Product> except =
            fruits1.Except(fruits2, new ProductComparer());

        foreach (var product in except)
            Console.WriteLine(product.Name + " " + product.Code);

        /*
          This code produces the following output:

          orange 4
          lemon 12
        */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Except 重载
System.Linq 命名空间


Enumerable ..::.First 方法

Enumerable
.
.
::
.
First 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回序列中的第一个元素。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.First <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
First
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列中的第一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function First(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource First<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource First(
    IEnumerable<TSource>^ source
)
static member First :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要返回其第一个元素的 IEnumerable<(Of <(T>)>)。

返回值

类型：TSource
返回指定序列中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 源序列为空。

如果 source 中不包含任何元素，则 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法将引发异常。若要在源序列为空时返回默认值，请使用 FirstOrDefault 方法。 如果 source 中不包含任何元素，则 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法将引发异常。若要在源序列为空时返回默认值，请使用 FirstOrDefault 方法。

下面的代码示例演示如何使用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 返回数组中的第一个元素。

        ' Create an array of integers.
        Dim numbers() As Integer = _
            {9, 34, 65, 92, 87, 435, 3, 54, 83, 23, 87, 435, 67, 12, 19}

        ' Select the first element in the array.
        Dim first As Integer = numbers.First()

        ' Display the output.
        MsgBox(first)

        ' This code produces the following output:
        '
        ' 9

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 435, 67, 12, 19 };

            int first = numbers.First();

            Console.WriteLine(first);

            /*
             This code produces the following output:

             9
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
First 重载
System.Linq 命名空间


Enumerable ..::.First <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
First
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回序列中满足指定条件的第一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function First(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource First<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource First(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member First :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
序列中通过指定谓词函数中的测试的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 没有元素满足 predicate 中的条件。 - 或 - 源序列为空。

如果未在 source 中找到匹配元素，则 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法将引发异常。若要在未找到匹配元素时返回默认值，请使用 FirstOrDefault 方法。 如果未在 source 中找到匹配元素，则 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法将引发异常。若要在未找到匹配元素时返回默认值，请使用 FirstOrDefault 方法。

下面的代码示例演示如何使用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 返回数组中满足条件的第一个元素。

        ' Create an array of integers.
        Dim numbers() As Integer = _
            {9, 34, 65, 92, 87, 435, 3, 54, 83, 23, 87, 435, 67, 12, 19}

        ' Select the first element in the array whose value is greater than 80.
        Dim first As Integer = numbers.First(Function(number) number > 80)

        ' Display the output.
        MsgBox(first)

        ' This code produces the following output:
        '
        ' 92

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 435, 67, 12, 19 };

            int first = numbers.First(number => number > 80);

            Console.WriteLine(first);

            /*
             This code produces the following output:

             92
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
First 重载
System.Linq 命名空间


Enumerable ..::.FirstOrDefault 方法

Enumerable
.
.
::
.
FirstOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回序列中的第一个元素；如果未找到元素，则返回默认值。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.FirstOrDefault <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
FirstOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列中的第一个元素；如果序列中不包含任何元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function FirstOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource FirstOrDefault<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource FirstOrDefault(
    IEnumerable<TSource>^ source
)
static member FirstOrDefault :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要返回其第一个元素的 IEnumerable<(Of <(T>)>)。

返回值

类型：TSource
如果 source 为空，则返回 default(TSource)；否则返回 source 中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

FirstOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法。 FirstOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法。

下面的代码示例演示如何对空数组使用 FirstOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>))。

        ' Create an empty array.
        Dim numbers() As Integer = {}

        ' Select the first element in the array, or a default value
        ' if there are not elements in the array.
        Dim first As Integer = numbers.FirstOrDefault()

        ' Display the output.
        MsgBox(first)

        ' This code produces the following output:
        '
        ' 0

            int[] numbers = { };
            int first = numbers.FirstOrDefault();
            Console.WriteLine(first);

            /*
             This code produces the following output:

             0
            */

如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。

        Dim months As New List(Of Integer)(New Integer() {})

        ' Setting the default value to 1 after the query.
        Dim firstMonth1 As Integer = months.FirstOrDefault()
        If firstMonth1 = 0 Then
            firstMonth1 = 1
        End If
        MsgBox(String.Format("The value of the firstMonth1 variable is {0}", firstMonth1))

        ' Setting the default value to 1 by using DefaultIfEmpty() in the query.
        Dim firstMonth2 As Integer = months.DefaultIfEmpty(1).First()
        MsgBox(String.Format("The value of the firstMonth2 variable is {0}", firstMonth2))

        ' This code produces the following output:
        '
        ' The value of the firstMonth1 variable is 1
        ' The value of the firstMonth2 variable is 1

            List<int> months = new List<int> { };

            // Setting the default value to 1 after the query.
            int firstMonth1 = months.FirstOrDefault();
            if (firstMonth1 == 0)
            {
                firstMonth1 = 1;
            }
            Console.WriteLine("The value of the firstMonth1 variable is {0}", firstMonth1);

            // Setting the default value to 1 by using DefaultIfEmpty() in the query.
            int firstMonth2 = months.DefaultIfEmpty(1).First();
            Console.WriteLine("The value of the firstMonth2 variable is {0}", firstMonth2);

            /*
             This code produces the following output:

             The value of the firstMonth1 variable is 1
             The value of the firstMonth2 variable is 1
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
FirstOrDefault 重载
System.Linq 命名空间


Enumerable ..::.FirstOrDefault <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
FirstOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回序列中满足条件的第一个元素；如果未找到这样的元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function FirstOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource FirstOrDefault<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource FirstOrDefault(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member FirstOrDefault :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
如果 source 为空或没有元素通过 predicate 指定的测试，则返回 default(TSource)，否则返回 source 中通过 predicate 指定的测试的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何通过传入谓词来使用 FirstOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>))。在第二次调用该方法时，数组中没有满足条件的元素。 下面的代码示例演示如何通过传入谓词来使用 FirstOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>))。在第二次调用该方法时，数组中没有满足条件的元素。

        ' Create an array of strings.
        Dim names() As String = _
            {"Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}

        ' Select the first string in the array whose length is greater than 20.
        Dim firstLongName As String = _
            names.FirstOrDefault(Function(name) name.Length > 20)

        ' Display the output.
        MsgBox("The first long name is " & firstLongName)

        ' Select the first string in the array whose length is greater than 30,
        ' or a default value if there are no such strings in the array.
        Dim firstVeryLongName As String = _
            names.FirstOrDefault(Function(name) name.Length > 30)

        Dim text As String = IIf(String.IsNullOrEmpty(firstVeryLongName), "not a", "a")

        MsgBox("There is " & text & " name longer than 30 characters.")

        ' This code produces the following output:
        '
        ' The first long name is Andersen, Henriette Thaulow
        '
        ' There is not a name longer than 30 characters.

            string[] names = { "Hartono, Tommy", "Adams, Terry",
                                 "Andersen, Henriette Thaulow",
                                 "Hedlund, Magnus", "Ito, Shu" };

            string firstLongName = names.FirstOrDefault(name => name.Length > 20);

            Console.WriteLine("The first long name is '{0}'.", firstLongName);

            string firstVeryLongName = names.FirstOrDefault(name => name.Length > 30);

            Console.WriteLine(
                "There is {0} name longer than 30 characters.",
                string.IsNullOrEmpty(firstVeryLongName) ? "not a" : "a");

            /*
             This code produces the following output:

             The first long name is 'Andersen, Henriette Thaulow'.
             There is not a name longer than 30 characters.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
FirstOrDefault 重载
System.Linq 命名空间


Enumerable ..::.GroupBy 方法

Enumerable
.
.
::
.
GroupBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

对序列中的元素进行分组。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.GroupBy <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As IEnumerable(Of IGrouping(Of TKey, TSource))
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IEnumerable<IGrouping<TKey, TSource>^>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> IEnumerable<IGrouping<'TKey, 'TSource>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TSource
>
)
>
)
>
)
>
)

在 C# 中为 IEnumerable<IGrouping<TKey, TSource>>，或者在 Visual Basic 中为 IEnumerable(Of IGrouping(Of TKey, TSource))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 对象都包含一个对象序列和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。 GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。

根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素显示在 source 中的顺序生成分组中的元素。 根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素显示在 source 中的顺序生成分组中的元素。

使用默认的相等比较器 Default 对键进行比较。

在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。有关更多信息和用法示例，请参见 group 子句（C# 参考）和 Group By 子句 (Visual Basic)。 在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。有关更多信息和用法示例，请参见 group 子句（C# 参考）和 Group By 子句 (Visual Basic)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并使用指定的比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IEqualityComparer(Of TKey) _
) As IEnumerable(Of IGrouping(Of TKey, TSource))
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IEnumerable<IGrouping<TKey, TSource>^>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IEqualityComparer<'TKey> -> IEnumerable<IGrouping<'TKey, 'TSource>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TSource
>
)
>
)
>
)
>
)

在 C# 中为 IEnumerable<IGrouping<TKey, TSource>>，或者在 Visual Basic 中为 IEnumerable(Of IGrouping(Of TKey, TSource))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 对象都包含一个对象集合和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于所遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。 GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于所遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。

根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素显示在 source 中的顺序生成分组中的元素。 根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素显示在 source 中的顺序生成分组中的元素。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行比较。

如果根据 comparer 认为有两个键相等，则选择第一个键作为该分组的键。

在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。有关更多信息和用法示例，请参见 group 子句（C# 参考）和 Group By 子句 (Visual Basic)。 在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。有关更多信息和用法示例，请参见 group 子句（C# 参考）和 Group By 子句 (Visual Basic)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey, TElement >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并且通过使用指定的函数对每个组中的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement) _
) As IEnumerable(Of IGrouping(Of TKey, TElement))
public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static IEnumerable<IGrouping<TKey, TElement>^>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> -> IEnumerable<IGrouping<'TKey, 'TElement>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

在 C# 中为 IEnumerable<IGrouping<TKey, TElement>>，或者在 Visual Basic 中为 IEnumerable(Of IGrouping(Of TKey, TElement))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 对象都包含一个类型为 TElement 的对象集合和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

GroupBy<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于所遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。 GroupBy<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于所遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。

根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素生成时显示在 source 中的顺序生成分组中的元素。 根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素生成时显示在 source 中的顺序生成分组中的元素。

使用默认的相等比较器 Default 对键进行比较。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 对序列中的元素进行分组。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub GroupByEx1()
        'Create a list of Pet objects.
        Dim pets As New List(Of Pet)(New Pet() _
                                     {New Pet With {.Name = "Barley", .Age = 8}, _
                                      New Pet With {.Name = "Boots", .Age = 4}, _
                                      New Pet With {.Name = "Whiskers", .Age = 1}, _
                                      New Pet With {.Name = "Daisy", .Age = 4}})

        ' Group the pets using Age as the key
        ' and selecting only the pet's Name for each value.
        Dim query As IEnumerable(Of IGrouping(Of Integer, String)) = _
            pets.GroupBy(Function(pet) pet.Age, _
                         Function(pet) pet.Name)

        Dim output As New System.Text.StringBuilder
        ' Iterate over each IGrouping in the collection.
        For Each petGroup As IGrouping(Of Integer, String) In query
            ' Print the key value of the IGrouping.
            output.AppendLine(petGroup.Key)
            ' Iterate over each value in the IGrouping and print the value.
            For Each name As String In petGroup
                output.AppendLine("  " & name)
            Next
        Next

        ' Display the output.
        MsgBox(output.ToString)
    End Sub

    ' This code produces the following output:
    '
    ' 8
    '   Barley
    ' 4
    '   Boots
    '   Daisy
    ' 1
    '   Whiskers

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            // Uses method-based query syntax.
            public static void GroupByEx1()
            {
                // Create a list of pets.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 },
                                   new Pet { Name="Daisy", Age=4 } };

                // Group the pets using Age as the key value
                // and selecting only the pet's Name for each value.
                IEnumerable<IGrouping<int, string>> query =
                    pets.GroupBy(pet => pet.Age, pet => pet.Name);

                // Iterate over each IGrouping in the collection.
                foreach (IGrouping<int, string> petGroup in query)
                {
                    // Print the key value of the IGrouping.
                    Console.WriteLine(petGroup.Key);
                    // Iterate over each value in the
                    // IGrouping and print the value.
                    foreach (string name in petGroup)
                        Console.WriteLine("  {0}", name);
                }
            }

            /*
             This code produces the following output:

             8
               Barley
             4
               Boots
               Daisy
             1
               Whiskers
            */

在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。下面示例中的查询表达式的转换等效于上面示例中的查询。 在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。下面示例中的查询表达式的转换等效于上面示例中的查询。

Dim query = _
    From pet In pets _
    Group pet.Name By Age = pet.Age Into ageGroup = Group

IEnumerable<IGrouping<int, string>> query =
    from pet in pets
    group pet.Name by pet.Age;
说明 说明

在 Visual C# 或 Visual Basic 查询表达式中，元素和键选择表达式的顺序都与调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 方法时其参数的位置顺序相反。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TKey, IEnumerable <(Of <(TSource >)>), TResult >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TResult) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TKey, IEnumerable<TSource>, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TResult>
static IEnumerable<TResult>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TKey, IEnumerable<TSource>^, TResult>^ resultSelector
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        resultSelector:Func<'TKey, IEnumerable<'TSource>, 'TResult> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的集合，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)) 对序列中的元素进行分组，以及对 TResult 类型的结果序列进行投影。

    Structure Pet
        Public Name As String
        Public Age As Double
    End Structure

    Public Sub GroupByEx3()
        ' Create a list of pets.
        Dim petsList As New List(Of Pet)(New Pet() _
                                     {New Pet With {.Name = "Barley", .Age = 8.3}, _
                                      New Pet With {.Name = "Boots", .Age = 4.9}, _
                                      New Pet With {.Name = "Whiskers", .Age = 1.5}, _
                                      New Pet With {.Name = "Daisy", .Age = 4.3}})

        ' Group Pet objects by the Math.Floor of their age.
        ' Then project an anonymous type from each group
        ' that consists of the key, the count of the group's
        ' elements, and the minimum and maximum age in the group.
        Dim query = petsList.GroupBy( _
            Function(pet) Math.Floor(pet.Age), _
            Function(age, pets) New With _
                {.Key = age, _
                .Count = pets.Count(), _
                .Min = pets.Min(Function(pet) pet.Age), _
                .Max = pets.Max(Function(Pet) Pet.Age)} _
            )

        Dim output As New System.Text.StringBuilder
        ' Iterate over each anonymous type.
        For Each result In query
            output.AppendLine(vbCrLf & "Age group: " & result.Key)
            output.AppendLine("Number of pets in this age group: " & result.Count)
            output.AppendLine("Minimum age: " & result.Min)
            output.AppendLine("Maximum age: " & result.Max)
        Next

        ' Display the output.
        MsgBox(output.ToString)
    End Sub

    ' This code produces the following output:

    ' Age group: 8
    ' Number of pets in this age group: 1
    ' Minimum age: 8.3
    ' Maximum age: 8.3
    '
    ' Age group: 4
    ' Number of pets in this age group: 2
    ' Minimum age: 4.3
    ' Maximum age: 4.9
    '
    ' Age group: 1
    ' Number of pets in this age group: 1
    ' Minimum age: 1.5
    ' Maximum age: 1.5

            class Pet
            {
                public string Name { get; set; }
                public double Age { get; set; }
            }

            public static void GroupByEx3()
            {
                // Create a list of pets.
                List<Pet> petsList =
                    new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                                   new Pet { Name="Boots", Age=4.9 },
                                   new Pet { Name="Whiskers", Age=1.5 },
                                   new Pet { Name="Daisy", Age=4.3 } };

                // Group Pet objects by the Math.Floor of their age.
                // Then project an anonymous type from each group
                // that consists of the key, the count of the group's
                // elements, and the minimum and maximum age in the group.
                var query = petsList.GroupBy(
                    pet => Math.Floor(pet.Age),
                    (age, pets) => new
                    {
                        Key = age,
                        Count = pets.Count(),
                        Min = pets.Min(pet => pet.Age),
                        Max = pets.Max(pet => pet.Age)
                    });

                // Iterate over each anonymous type.
                foreach (var result in query)
                {
                    Console.WriteLine("\nAge group: " + result.Key);
                    Console.WriteLine("Number of pets in this age group: " + result.Count);
                    Console.WriteLine("Minimum age: " + result.Min);
                    Console.WriteLine("Maximum age: " + result.Max);
                }

                /*  This code produces the following output:

                    Age group: 8
                    Number of pets in this age group: 1
                    Minimum age: 8.3
                    Maximum age: 8.3

                    Age group: 4
                    Number of pets in this age group: 2
                    Minimum age: 4.3
                    Maximum age: 4.9

                    Age group: 1
                    Number of pets in this age group: 1
                    Minimum age: 1.5
                    Maximum age: 1.5
                */
            }

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey, TElement >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据键选择器函数对序列中的元素进行分组。通过使用比较器对键进行比较，并且通过使用指定的函数对每个组的元素进行投影。 根据键选择器函数对序列中的元素进行分组。通过使用比较器对键进行比较，并且通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    comparer As IEqualityComparer(Of TKey) _
) As IEnumerable(Of IGrouping(Of TKey, TElement))
public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static IEnumerable<IGrouping<TKey, TElement>^>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        comparer:IEqualityComparer<'TKey> -> IEnumerable<IGrouping<'TKey, 'TElement>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

在 C# 中为 IEnumerable<IGrouping<TKey, TElement>>，或者在 Visual Basic 中为 IEnumerable(Of IGrouping(Of TKey, TElement))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 对象都包含一个类型为 TElement 的对象集合和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

GroupBy<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于所遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。 GroupBy<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回 IGrouping<(Of <(TKey, TElement>)>) 对象的一个集合，其中每个对象对应于所遇到的每个非重复键。IGrouping<(Of <(TKey, TElement>)>) 为一个 IEnumerable<(Of <(T>)>)，它也有一个与其元素关联的键。

根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素生成时显示在 source 中的顺序生成分组中的元素。 根据 source（生成每个 IGrouping<(Of <(TKey, TElement>)>) 的第一个键）中的元素顺序生成对应顺序的 IGrouping<(Of <(TKey, TElement>)>) 对象。将以元素生成时显示在 source 中的顺序生成分组中的元素。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行比较。

如果根据 comparer 认为有两个键相等，则选择第一个键作为该分组的键。

在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。有关更多信息和用法示例，请参见 group 子句（C# 参考）和 Group By 子句 (Visual Basic)。 在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。有关更多信息和用法示例，请参见 group 子句（C# 参考）和 Group By 子句 (Visual Basic)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey, TElement, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), Func <(Of <(TKey, IEnumerable <(Of <(TElement >)>), TResult >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的函数对每个组的元素进行投影。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement, TResult) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    Func<TKey, IEnumerable<TElement>, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement, typename TResult>
static IEnumerable<TResult>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    Func<TKey, IEnumerable<TElement>^, TResult>^ resultSelector
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        resultSelector:Func<'TKey, IEnumerable<'TElement>, 'TResult> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

每个 IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的集合，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

在查询表达式语法中，group by (Visual C#) 或 Group By Into (Visual Basic) 子句转换为 GroupBy 的一个调用。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>), Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)) 对序列中的投影元素进行分组，以及随后对 TResult 类型的结果序列进行投影。

    Structure Pet
        Public Name As String
        Public Age As Double
    End Structure

    Public Sub GroupByEx4()
        ' Create a list of pets.
        Dim petsList As New List(Of Pet)(New Pet() _
                                     {New Pet With {.Name = "Barley", .Age = 8.3}, _
                                      New Pet With {.Name = "Boots", .Age = 4.9}, _
                                      New Pet With {.Name = "Whiskers", .Age = 1.5}, _
                                      New Pet With {.Name = "Daisy", .Age = 4.3}})

        ' Group Pet.Age values by the Math.Floor of the age.
        ' Then project an anonymous type from each group
        ' that consists of the key, the count of the group's
        ' elements, and the minimum and maximum age in the group.
        Dim query = petsList.GroupBy( _
            Function(pet) Math.Floor(pet.Age), _
            Function(pet) pet.Age, _
            Function(baseAge, ages) New With _
                {.Key = baseAge, _
                .Count = ages.Count(), _
                .Min = ages.Min(), _
                .Max = ages.Max()} _
            )

        Dim output As New System.Text.StringBuilder
        ' Iterate over each anonymous type.
        For Each result In query
            output.AppendLine(vbCrLf & "Age group: " & result.Key)
            output.AppendLine("Number of pets in this age group: " & result.Count)
            output.AppendLine("Minimum age: " & result.Min)
            output.AppendLine("Maximum age: " & result.Max)
        Next

        ' Display the output.
        MsgBox(output.ToString)
    End Sub

    ' This code produces the following output:

    ' Age group: 8
    ' Number of pets in this age group: 1
    ' Minimum age: 8.3
    ' Maximum age: 8.3
    '
    ' Age group: 4
    ' Number of pets in this age group: 2
    ' Minimum age: 4.3
    ' Maximum age: 4.9
    '
    ' Age group: 1
    ' Number of pets in this age group: 1
    ' Minimum age: 1.5
    ' Maximum age: 1.5

            class Pet
            {
                public string Name { get; set; }
                public double Age { get; set; }
            }

            public static void GroupByEx4()
            {
                // Create a list of pets.
                List<Pet> petsList =
                    new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                                   new Pet { Name="Boots", Age=4.9 },
                                   new Pet { Name="Whiskers", Age=1.5 },
                                   new Pet { Name="Daisy", Age=4.3 } };

                // Group Pet.Age values by the Math.Floor of the age.
                // Then project an anonymous type from each group
                // that consists of the key, the count of the group's
                // elements, and the minimum and maximum age in the group.
                var query = petsList.GroupBy(
                    pet => Math.Floor(pet.Age),
                    pet => pet.Age,
                    (baseAge, ages) => new
                    {
                        Key = baseAge,
                        Count = ages.Count(),
                        Min = ages.Min(),
                        Max = ages.Max()
                    });

                // Iterate over each anonymous type.
                foreach (var result in query)
                {
                    Console.WriteLine("\nAge group: " + result.Key);
                    Console.WriteLine("Number of pets in this age group: " + result.Count);
                    Console.WriteLine("Minimum age: " + result.Min);
                    Console.WriteLine("Maximum age: " + result.Max);
                }

                /*  This code produces the following output:

                    Age group: 8
                    Number of pets in this age group: 1
                    Minimum age: 8.3
                    Maximum age: 8.3

                    Age group: 4
                    Number of pets in this age group: 2
                    Minimum age: 4.3
                    Maximum age: 4.9

                    Age group: 1
                    Number of pets in this age group: 1
                    Minimum age: 1.5
                    Maximum age: 1.5
                */
            }

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TKey, IEnumerable <(Of <(TSource >)>), TResult >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TResult) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TKey, IEnumerable<TSource>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TResult>
static IEnumerable<TResult>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TKey, IEnumerable<TSource>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        resultSelector:Func<'TKey, IEnumerable<'TSource>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的集合，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupBy <(Of <(TSource, TKey, TElement, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), Func <(Of <(TKey, IEnumerable <(Of <(TElement >)>), TResult >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键值进行比较，并且通过使用指定的函数对每个组的元素进行投影。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键值进行比较，并且通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement, TResult) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    Func<TKey, IEnumerable<TElement>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement, typename TResult>
static IEnumerable<TResult>^ GroupBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    Func<TKey, IEnumerable<TElement>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        resultSelector:Func<'TKey, IEnumerable<'TElement>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

每个 IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的集合，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

group 子句（C# 参考）
Group By 子句 (Visual Basic)


Enumerable ..::.GroupJoin 方法

Enumerable
.
.
::
.
GroupJoin 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

基于键相等对两个序列的元素进行关联并对结果进行分组。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IEnumerable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, IEnumerable <(Of <(TInner >)>), TResult >)>))

Enumerable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
)
Enumerable 类

基于键相等对两个序列的元素进行关联并对结果进行分组。使用默认的相等比较器对键进行比较。 基于键相等对两个序列的元素进行关联并对结果进行分组。使用默认的相等比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As IEnumerable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, IEnumerable(Of TInner), TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this IEnumerable<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, IEnumerable<TInner>, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IEnumerable<TResult>^ GroupJoin(
    IEnumerable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, IEnumerable<TInner>^, TResult>^ resultSelector
)
static member GroupJoin :
        outer:IEnumerable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, IEnumerable<'TInner>, 'TResult> -> IEnumerable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个包含 TResult 类型的元素的 IEnumerable<(Of <(T>)>)，这些元素可通过对两个序列执行分组联接获取。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

使用默认的相等比较器 Default 对键进行哈希处理和比较。

GroupJoin 产生分层结果，这表示 outer 中的元素与 inner 中的匹配元素的集合成对出现。GroupJoin 允许您以 outer 的每个元素的整个匹配集为基础生成结果。 GroupJoin 产生分层结果，这表示 outer 中的元素与 inner 中的匹配元素的集合成对出现。GroupJoin 允许您以 outer 的每个元素的整个匹配集为基础生成结果。

说明 说明

如果 inner 中没有 outer 的给定元素的关联元素，则该元素匹配的序列将为空，但仍将出现在结果中。

对每个 outer 元素以及与 outer 元素匹配的所有 inner 元素的集合仅调用一次 resultSelector 函数。这与 Join 方法不同，该方法可在包含 outer 的一个元素和 inner 的一个元素的对中调用结果选择器函数。 对每个 outer 元素以及与 outer 元素匹配的所有 inner 元素的集合仅调用一次 resultSelector 函数。这与 Join 方法不同，该方法可在包含 outer 的一个元素和 inner 的一个元素的对中调用结果选择器函数。

GroupJoin 保留 outer 中的元素的顺序，并且对于 outer 的每个元素，则保留 inner 的匹配元素的顺序。

GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。 GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。 GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。 GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。

在查询表达式语法中，join … into(Visual C#) 或 Group Join (Visual Basic) 子句转换为 GroupJoin 的一个调用。

下面的代码示例演示如何使用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IEnumerable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Func<(Of <(TOuter, TKey>)>), Func<(Of <(TInner, TKey>)>), Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)) 对两个序列执行已分组的联接。

    Structure Person
        Public Name As String
    End Structure

    Structure Pet
        Public Name As String
        Public Owner As Person
    End Structure

    Sub GroupJoinEx1()
        Dim magnus As New Person With {.Name = "Hedlund, Magnus"}
        Dim terry As New Person With {.Name = "Adams, Terry"}
        Dim charlotte As New Person With {.Name = "Weiss, Charlotte"}

        Dim barley As New Pet With {.Name = "Barley", .Owner = terry}
        Dim boots As New Pet With {.Name = "Boots", .Owner = terry}
        Dim whiskers As New Pet With {.Name = "Whiskers", .Owner = charlotte}
        Dim daisy As New Pet With {.Name = "Daisy", .Owner = magnus}

        Dim people As New List(Of Person)(New Person() {magnus, terry, charlotte})
        Dim pets As New List(Of Pet)(New Pet() {barley, boots, whiskers, daisy})

        ' Create a collection where each element is an anonymous type
        ' that contains a Person's name and a collection of names of
        ' the pets that are owned by them.
        Dim query = _
            people.GroupJoin(pets, _
                       Function(person) person, _
                       Function(pet) pet.Owner, _
                       Function(person, petCollection) _
                           New With {.OwnerName = person.Name, _
                                     .Pets = petCollection.Select( _
                                                        Function(pet) pet.Name)})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            ' Output the owner's name.
            output.AppendLine(obj.OwnerName & ":")
            ' Output each of the owner's pet's names.
            For Each pet As String In obj.Pets
                output.AppendLine("  " & pet)
            Next
        Next

        ' Display the output.
        MsgBox(output.ToString)
    End Sub

    ' This code produces the following output:
    '
    ' Hedlund, Magnus
    '   Daisy
    ' Adams, Terry
    '   Barley
    '   Boots
    ' Weiss, Charlotte
    '   Whiskers

            class Person
            {
                public string Name { get; set; }
            }

            class Pet
            {
                public string Name { get; set; }
                public Person Owner { get; set; }
            }

            public static void GroupJoinEx1()
            {
                Person magnus = new Person { Name = "Hedlund, Magnus" };
                Person terry = new Person { Name = "Adams, Terry" };
                Person charlotte = new Person { Name = "Weiss, Charlotte" };

                Pet barley = new Pet { Name = "Barley", Owner = terry };
                Pet boots = new Pet { Name = "Boots", Owner = terry };
                Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
                Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

                List<Person> people = new List<Person> { magnus, terry, charlotte };
                List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

                // Create a list where each element is an anonymous
                // type that contains a person's name and
                // a collection of names of the pets they own.
                var query =
                    people.GroupJoin(pets,
                                     person => person,
                                     pet => pet.Owner,
                                     (person, petCollection) =>
                                         new
                                         {
                                             OwnerName = person.Name,
                                             Pets = petCollection.Select(pet => pet.Name)
                                         });

                foreach (var obj in query)
                {
                    // Output the owner's name.
                    Console.WriteLine("{0}:", obj.OwnerName);
                    // Output each of the owner's pet's names.
                    foreach (string pet in obj.Pets)
                    {
                        Console.WriteLine("  {0}", pet);
                    }
                }
            }

            /*
             This code produces the following output:

             Hedlund, Magnus:
               Daisy
             Adams, Terry:
               Barley
               Boots
             Weiss, Charlotte:
               Whiskers
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupJoin 重载
System.Linq 命名空间

其他资源

联接运算
join 子句（C# 参考）
Group Join 子句 (Visual Basic)


Enumerable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IEnumerable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, IEnumerable <(Of <(TInner >)>), TResult >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

基于键相等对两个序列的元素进行关联并对结果进行分组。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。 基于键相等对两个序列的元素进行关联并对结果进行分组。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As IEnumerable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, IEnumerable(Of TInner), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this IEnumerable<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, IEnumerable<TInner>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IEnumerable<TResult>^ GroupJoin(
    IEnumerable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, IEnumerable<TInner>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupJoin :
        outer:IEnumerable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, IEnumerable<'TInner>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> IEnumerable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个 IEqualityComparer<(Of <(T>)>)，用于对键进行哈希处理和比较。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个包含 TResult 类型的元素的 IEnumerable<(Of <(T>)>)，这些元素可通过对两个序列执行分组联接获取。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行哈希处理和比较。

GroupJoin 产生分层结果，这表示 outer 中的元素与 inner 中的匹配元素的集合成对出现。GroupJoin 允许您以 outer 的每个元素的整个匹配集为基础生成结果。 GroupJoin 产生分层结果，这表示 outer 中的元素与 inner 中的匹配元素的集合成对出现。GroupJoin 允许您以 outer 的每个元素的整个匹配集为基础生成结果。

说明 说明

如果 inner 中没有 outer 的给定元素的关联元素，则该元素匹配的序列将为空，但仍将出现在结果中。

对每个 outer 元素以及与 outer 元素匹配的所有 inner 元素的集合仅调用一次 resultSelector 函数。这与 Join 方法不同，该方法可在包含 outer 的一个元素和 inner 的一个元素的对中调用结果选择器函数。 对每个 outer 元素以及与 outer 元素匹配的所有 inner 元素的集合仅调用一次 resultSelector 函数。这与 Join 方法不同，该方法可在包含 outer 的一个元素和 inner 的一个元素的对中调用结果选择器函数。

GroupJoin 保留 outer 中的元素的顺序，并且对于 outer 的每个元素，则保留 inner 的匹配元素的顺序。

GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。 GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。 GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。 GroupJoin 在传统的关系数据库术语中没有直接的等效方法。但是，此方法可实现内部联接和左外部联接的超集。这两种操作均可根据已分组的联接进行写入。请参见 联接运算。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
GroupJoin 重载
System.Linq 命名空间

其他资源

联接运算


Enumerable ..::.Intersect 方法

Enumerable
.
.
::
.
Intersect 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

生成两个序列的交集。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Intersect <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用默认的相等比较器对值进行比较生成两个序列的交集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Intersect<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Intersect(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second
)
static member Intersect :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其也出现在 second 中的非重复元素。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其也出现在第一个序列中的非重复元素。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含组成两个序列交集的元素的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

集 A 和集 B 的交集定义为包含同时出现在 A 和 B 中的所有元素的集，但不包含任何其他元素。

当枚举此方法返回的对象时，Intersect 将枚举 first，以收集该序列中的所有非重复元素。然后，枚举 second，从而标记那些同时出现在两个序列中的元素。最后，按收集顺序生成标记的元素。 当枚举此方法返回的对象时，Intersect 将枚举 first，以收集该序列中的所有非重复元素。然后，枚举 second，从而标记那些同时出现在两个序列中的元素。最后，按收集顺序生成标记的元素。 当枚举此方法返回的对象时，Intersect 将枚举 first，以收集该序列中的所有非重复元素。然后，枚举 second，从而标记那些同时出现在两个序列中的元素。最后，按收集顺序生成标记的元素。

默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。 默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。

下面的代码示例演示如何使用 Intersect<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 返回同时出现在两个整数序列中的元素。

        ' Create two integer arrays.
        Dim id1() As Integer = {44, 26, 92, 30, 71, 38}
        Dim id2() As Integer = {39, 59, 83, 47, 26, 4, 30}

        ' Find the set intersection of the two arrays.
        Dim intersection As IEnumerable(Of Integer) = id1.Intersect(id2)

        Dim output As New System.Text.StringBuilder
        For Each id As Integer In intersection
            output.AppendLine(id)
        Next

        ' Display the output.
        MsgBox(output.ToString)

        ' This code produces the following output:
        '
        ' 26
        ' 30

            int[] id1 = { 44, 26, 92, 30, 71, 38 };
            int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };

            IEnumerable<int> both = id1.Intersect(id2);

            foreach (int id in both)
                Console.WriteLine(id);

            /*
             This code produces the following output:

             26
             30
            */

如果希望比较自定义数据类型的对象的序列，则必须在类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。 如果希望比较自定义数据类型的对象的序列，则必须在类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。

Public Class Product
    Implements IEquatable(Of Product)

    Public Property Name As String
    Public Property Code As Integer

    Public Function Equals1(
        ByVal other As Product
        ) As Boolean Implements IEquatable(Of Product).Equals

        ' Check whether the compared object is null.
        If other Is Nothing Then Return False

        ' Check whether the compared object references the same data.
        If Me Is Other Then Return True

        ' Check whether the products' properties are equal.
        Return Code.Equals(other.Code) AndAlso Name.Equals(other.Name)
    End Function

    Public Overrides Function GetHashCode() As Integer

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName = If(Name Is Nothing, 0, Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product : IEquatable<Product>
{
    public string Name { get; set; }
    public int Code { get; set; }

    public bool Equals(Product other)
    {

        //Check whether the compared object is null.
        if (Object.ReferenceEquals(other, null)) return false;

        //Check whether the compared object references the same data.
        if (Object.ReferenceEquals(this, other)) return true;

        //Check whether the products' properties are equal.
        return Code.Equals(other.Code) && Name.Equals(other.Name);
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public override int GetHashCode()
    {

        //Get hash code for the Name field if it is not null.
        int hashProductName = Name == null ? 0 : Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }
}

实现此接口后，您可以使用 Intersect 方法中 Product 对象的序列，如下面的示例所示。

Dim store1() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim store2() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "lemon", .Code = 12}}

...

' Get the products from the first array
' that have duplicates in the second array.

Dim duplicates = store1.Intersect(store2)

For Each product In duplicates
    Console.WriteLine(product.Name & " " & product.Code)
Next

' This code produces the following output:
'
' apple 9
'

Product[] store1 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "orange", Code = 4 } };

Product[] store2 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "lemon", Code = 12 } };

...

// Get the products from the first array
// that have duplicates in the second array.

IEnumerable<Product> duplicates =
    store1.Intersect(store2);

foreach (var product in duplicates)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:
    apple 9
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Intersect 重载
System.Linq 命名空间


Enumerable ..::.Intersect <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Enumerable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较以生成两个序列的交集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Intersect<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Intersect(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member Intersect :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其也出现在 second 中的非重复元素。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其也出现在第一个序列中的非重复元素。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含组成两个序列交集的元素的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

集 A 和集 B 的交集定义为包含同时出现在 A 和 B 中的所有元素的集，但不包含任何其他元素。

当枚举此方法返回的对象时，Intersect 将枚举 first，以收集该序列中的所有非重复元素。然后，枚举 second，从而标记那些同时出现在两个序列中的元素。最后，按收集顺序生成标记的元素。 当枚举此方法返回的对象时，Intersect 将枚举 first，以收集该序列中的所有非重复元素。然后，枚举 second，从而标记那些同时出现在两个序列中的元素。最后，按收集顺序生成标记的元素。 当枚举此方法返回的对象时，Intersect 将枚举 first，以收集该序列中的所有非重复元素。然后，枚举 second，从而标记那些同时出现在两个序列中的元素。最后，按收集顺序生成标记的元素。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对值进行比较。

下面的示例演示如何实现可以在 Intersect 方法中使用的相等比较器。

Public Class Product
    Public Property Name As String
    Public Property Code As Integer
End Class

' Custom comparer for the Product class
Public Class ProductComparer
    Implements IEqualityComparer(Of Product)

    Public Function Equals1(
        ByVal x As Product,
        ByVal y As Product
        ) As Boolean Implements IEqualityComparer(Of Product).Equals

        ' Check whether the compared objects reference the same data.
        If x Is y Then Return True

        'Check whether any of the compared objects is null.
        If x Is Nothing OrElse y Is Nothing Then Return False

        ' Check whether the products' properties are equal.
        Return (x.Code = y.Code) AndAlso (x.Name = y.Name)
    End Function

    Public Function GetHashCode1(
        ByVal product As Product
        ) As Integer Implements IEqualityComparer(Of Product).GetHashCode

        ' Check whether the object is null.
        If product Is Nothing Then Return 0

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName =
            If(product.Name Is Nothing, 0, product.Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = product.Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}

实现此比较器后，您可以使用 Intersect 方法中 Product 对象的序列，如下面的示例所示。

Dim store1() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim store2() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "lemon", .Code = 12}}

...

' Get the products from the first array
' that have duplicates in the second array.

Dim duplicates = store1.Intersect(store2, New ProductComparer())

For Each product In duplicates
    Console.WriteLine(product.Name & " " & product.Code)
Next

' This code produces the following output:
'
' apple 9
'

Product[] store1 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "orange", Code = 4 } };

Product[] store2 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "lemon", Code = 12 } };

...

// Get the products from the first array
// that have duplicates in the second array.

IEnumerable<Product> duplicates =
    store1.Intersect(store2, new ProductComparer());

foreach (var product in duplicates)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:
    apple 9
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Intersect 重载
System.Linq 命名空间


Enumerable ..::.Join 方法

Enumerable
.
.
::
.
Join 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

基于匹配键对两个序列的元素进行关联。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IEnumerable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, TInner, TResult >)>))

Enumerable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
)
Enumerable 类

基于匹配键对两个序列的元素进行关联。使用默认的相等比较器对键进行比较。 基于匹配键对两个序列的元素进行关联。使用默认的相等比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As IEnumerable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, TInner, TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
    this IEnumerable<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IEnumerable<TResult>^ Join(
    IEnumerable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, TInner, TResult>^ resultSelector
)
static member Join :
        outer:IEnumerable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, 'TInner, 'TResult> -> IEnumerable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)

用于从两个匹配元素创建结果元素的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个具有 TResult 类型元素的 IEnumerable<(Of <(T>)>)，这些元素是通过对两个序列执行内部联接得来的。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

使用默认的相等比较器 Default 对键进行哈希处理和比较。

联接是指基于某个公共键使两个信息源的元素相关联的操作。Join 在一个方法调用中产生两个信息源和使它们相匹配的密钥。这与 SelectMany 的用法不同，后者需要一个以上的方法调用才可以执行相同的操作。 联接是指基于某个公共键使两个信息源的元素相关联的操作。Join 在一个方法调用中产生两个信息源和使它们相匹配的密钥。这与 SelectMany 的用法不同，后者需要一个以上的方法调用才可以执行相同的操作。 联接是指基于某个公共键使两个信息源的元素相关联的操作。Join 在一个方法调用中产生两个信息源和使它们相匹配的密钥。这与 SelectMany 的用法不同，后者需要一个以上的方法调用才可以执行相同的操作。

Join 保留 outer 中的元素的顺序，并且对于这些元素中的每一个元素，保留 inner 中的匹配元素的顺序。

在查询表达式语法中，join (Visual C#) 或 Join (Visual Basic) 子句转换为 Join 的一个调用。

在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。

下面的代码示例演示如何使用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IEnumerable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Func<(Of <(TOuter, TKey>)>), Func<(Of <(TInner, TKey>)>), Func<(Of <(TOuter, TInner, TResult>)>)) 基于公共键对两个序列执行内部联接。

    Structure Person
        Public Name As String
    End Structure

    Structure Pet
        Public Name As String
        Public Owner As Person
    End Structure

    Sub JoinEx1()
        Dim magnus As New Person With {.Name = "Hedlund, Magnus"}
        Dim terry As New Person With {.Name = "Adams, Terry"}
        Dim charlotte As New Person With {.Name = "Weiss, Charlotte"}

        Dim barley As New Pet With {.Name = "Barley", .Owner = terry}
        Dim boots As New Pet With {.Name = "Boots", .Owner = terry}
        Dim whiskers As New Pet With {.Name = "Whiskers", .Owner = charlotte}
        Dim daisy As New Pet With {.Name = "Daisy", .Owner = magnus}

        Dim people As New List(Of Person)(New Person() {magnus, terry, charlotte})
        Dim pets As New List(Of Pet)(New Pet() {barley, boots, whiskers, daisy})

        ' Create a list of Person-Pet pairs, where each element is an
        ' anonymous type that contains a Pet's name and the name of the
        ' Person that owns the Pet.
        Dim query = _
            people.Join(pets, _
                        Function(person) person, _
                        Function(pet) pet.Owner, _
                        Function(person, pet) _
                            New With {.OwnerName = person.Name, .Pet = pet.Name})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(obj.OwnerName & " - " & obj.Pet)
        Next

        ' Display the output.
        MsgBox(output.ToString)
    End Sub

    ' This code produces the following output:
    '
    ' Hedlund, Magnus - Daisy
    ' Adams, Terry - Barley
    ' Adams, Terry - Boots
    ' Weiss, Charlotte - Whiskers

            class Person
            {
                public string Name { get; set; }
            }

            class Pet
            {
                public string Name { get; set; }
                public Person Owner { get; set; }
            }

            public static void JoinEx1()
            {
                Person magnus = new Person { Name = "Hedlund, Magnus" };
                Person terry = new Person { Name = "Adams, Terry" };
                Person charlotte = new Person { Name = "Weiss, Charlotte" };

                Pet barley = new Pet { Name = "Barley", Owner = terry };
                Pet boots = new Pet { Name = "Boots", Owner = terry };
                Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
                Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

                List<Person> people = new List<Person> { magnus, terry, charlotte };
                List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

                // Create a list of Person-Pet pairs where
                // each element is an anonymous type that contains a
                // Pet's name and the name of the Person that owns the Pet.
                var query =
                    people.Join(pets,
                                person => person,
                                pet => pet.Owner,
                                (person, pet) =>
                                    new { OwnerName = person.Name, Pet = pet.Name });

                foreach (var obj in query)
                {
                    Console.WriteLine(
                        "{0} - {1}",
                        obj.OwnerName,
                        obj.Pet);
                }
            }

            /*
             This code produces the following output:

             Hedlund, Magnus - Daisy
             Adams, Terry - Barley
             Adams, Terry - Boots
             Weiss, Charlotte - Whiskers
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Join 重载
System.Linq 命名空间

其他资源

联接运算
join 子句（C# 参考）
Join 子句 (Visual Basic)


Enumerable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IEnumerable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, TInner, TResult >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

基于匹配键对两个序列的元素进行关联。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。 基于匹配键对两个序列的元素进行关联。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As IEnumerable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, TInner, TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
    this IEnumerable<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IEnumerable<TResult>^ Join(
    IEnumerable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, TInner, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member Join :
        outer:IEnumerable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, 'TInner, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> IEnumerable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)

用于从两个匹配元素创建结果元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个 IEqualityComparer<(Of <(T>)>)，用于对键进行哈希处理和比较。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个具有 TResult 类型元素的 IEnumerable<(Of <(T>)>)，这些元素是通过对两个序列执行内部联接得来的。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行哈希处理和比较。

联接是指基于某个公共键使两个信息源的元素相关联的操作。Join 在一个方法调用中产生两个信息源和使它们相匹配的密钥。这与 SelectMany 的用法不同，后者需要一个以上的方法调用才可以执行相同的操作。 联接是指基于某个公共键使两个信息源的元素相关联的操作。Join 在一个方法调用中产生两个信息源和使它们相匹配的密钥。这与 SelectMany 的用法不同，后者需要一个以上的方法调用才可以执行相同的操作。 联接是指基于某个公共键使两个信息源的元素相关联的操作。Join 在一个方法调用中产生两个信息源和使它们相匹配的密钥。这与 SelectMany 的用法不同，后者需要一个以上的方法调用才可以执行相同的操作。

Join 保留 outer 中的元素的顺序，并且对于这些元素中的每一个元素，保留 inner 中的匹配元素的顺序。

在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。 在关系数据库术语中，Join 方法实现内部同等联接。'“内部”表示结果中仅包含在另一序列中具有匹配项的元素。“同等联接”是在其中比较键是否相等的联接。左外部联接操作没有专用的标准查询运算符，但可以使用 GroupJoin 方法执行此操作。请参见 联接运算。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Join 重载
System.Linq 命名空间

其他资源

联接运算


Enumerable ..::.Last 方法

Enumerable
.
.
::
.
Last 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回序列的最后一个元素。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Last <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Last
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列的最后一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Last(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource Last<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Last(
    IEnumerable<TSource>^ source
)
static member Last :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要返回其最后一个元素的 IEnumerable<(Of <(T>)>)。

返回值

类型：TSource
源序列中最后位置处的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 源序列为空。

如果 source 中不包含任何元素，则 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法将引发异常。若要在源序列为空时返回默认值，请使用 LastOrDefault 方法。 如果 source 中不包含任何元素，则 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法将引发异常。若要在源序列为空时返回默认值，请使用 LastOrDefault 方法。

下面的代码示例演示如何使用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 返回数组中的最后一个元素。

        ' Create an array of integers.
        Dim numbers() As Integer = _
            {9, 34, 65, 92, 87, 435, 3, 54, 83, 23, 87, 67, 12, 19}

        ' Get the last item in the array.
        Dim last As Integer = numbers.Last()

        ' Display the result.
        MsgBox(last)

        ' This code produces the following output:
        '
        ' 19

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 67, 12, 19 };

            int last = numbers.Last();

            Console.WriteLine(last);

            /*
             This code produces the following output:

             19
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Last 重载
System.Linq 命名空间


Enumerable ..::.Last <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
Last
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回序列中满足指定条件的最后一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Last(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource Last<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Last(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Last :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
序列中通过指定谓词函数中的测试的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 没有元素满足 predicate 中的条件。 - 或 - 源序列为空。

如果未在 source 中找到匹配元素，则 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法将引发异常。若要在未找到匹配元素时返回默认值，请使用 LastOrDefault 方法。 如果未在 source 中找到匹配元素，则 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法将引发异常。若要在未找到匹配元素时返回默认值，请使用 LastOrDefault 方法。

下面的代码示例演示如何使用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 返回数组中满足条件的最后一个元素。

        ' Create an array of integers.
        Dim numbers() As Integer = _
            {9, 34, 65, 92, 87, 435, 3, 54, 83, 23, 87, 67, 12, 19}

        ' Get the last element in the array whose value is
        ' greater than 80.
        Dim last As Integer = numbers.Last(Function(num) num > 80)

        ' Display the result.
        MsgBox(last)

        ' This code produces the following output:
        '
        ' 87

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 67, 12, 19 };

            int last = numbers.Last(num => num > 80);

            Console.WriteLine(last);

            /*
             This code produces the following output:

             87
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Last 重载
System.Linq 命名空间


Enumerable ..::.LastOrDefault 方法

Enumerable
.
.
::
.
LastOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回序列中的最后一个元素；如果未找到元素，则返回默认值。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.LastOrDefault <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
LastOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列中的最后一个元素；如果序列中不包含任何元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LastOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource LastOrDefault<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource LastOrDefault(
    IEnumerable<TSource>^ source
)
static member LastOrDefault :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要返回其最后一个元素的 IEnumerable<(Of <(T>)>)。

返回值

类型：TSource
如果源序列为空，则返回 default(TSource)；否则返回 IEnumerable<(Of <(T>)>) 中的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

LastOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法。 LastOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法。

下面的代码示例演示如何对空数组使用 LastOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>))。

        ' Create an empty array.
        Dim fruits() As String = {}

        ' Get the last item in the array, or a
        ' default value if there are no items.
        Dim last As String = fruits.LastOrDefault()

        ' Display the result.
        MsgBox(IIf(String.IsNullOrEmpty(last), _
                   "<string is Nothing or empty>", _
                   last))

        ' This code produces the following output:
        '
        ' <string is Nothing or empty>

            string[] fruits = { };
            string last = fruits.LastOrDefault();
            Console.WriteLine(
                String.IsNullOrEmpty(last) ? "<string is null or empty>" : last);

            /*
             This code produces the following output:

             <string is null or empty>
            */

如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。

        Dim daysOfMonth As New List(Of Integer)(New Integer() {})

        ' Setting the default value to 1 after the query.
        Dim lastDay1 As Integer = daysOfMonth.LastOrDefault()
        If lastDay1 = 0 Then
            lastDay1 = 1
        End If
        MsgBox(String.Format("The value of the lastDay1 variable is {0}", lastDay1))

        ' Setting the default value to 1 by using DefaultIfEmpty() in the query.
        Dim lastDay2 As Integer = daysOfMonth.DefaultIfEmpty(1).Last()
        MsgBox(String.Format("The value of the lastDay2 variable is {0}", lastDay2))

        ' This code produces the following output:
        '
        ' The value of the lastDay1 variable is 1
        ' The value of the lastDay2 variable is 1

List<int> daysOfMonth = new List<int> { };

// Setting the default value to 1 after the query.
int lastDay1 = daysOfMonth.LastOrDefault();
if (lastDay1 == 0)
{
    lastDay1 = 1;
}
Console.WriteLine("The value of the lastDay1 variable is {0}", lastDay1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int lastDay2 = daysOfMonth.DefaultIfEmpty(1).Last();
Console.WriteLine("The value of the lastDay2 variable is {0}", lastDay2);

/*
 This code produces the following output:

 The value of the lastDay1 variable is 1
 The value of the lastDay2 variable is 1
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
LastOrDefault 重载
System.Linq 命名空间


Enumerable ..::.LastOrDefault <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
LastOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回序列中满足条件的最后一个元素；如果未找到这样的元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LastOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource LastOrDefault<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource LastOrDefault(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member LastOrDefault :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
如果序列为空或没有元素通过谓词函数中的测试，则返回 default(TSource)；否则返回通过谓词函数中的测试的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何通过传入谓词来使用 LastOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>))。在第二次调用该方法时，序列中没有满足条件的元素。 下面的代码示例演示如何通过传入谓词来使用 LastOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>))。在第二次调用该方法时，序列中没有满足条件的元素。

        ' Create an array of doubles.
        Dim numbers() As Double = {49.6, 52.3, 51.0, 49.4, 50.2, 48.3}

        ' Get the last item whose value rounds to 50.0.
        Dim number50 As Double = _
            numbers.LastOrDefault(Function(n) Math.Round(n) = 50.0)

        Dim output As New System.Text.StringBuilder
        output.AppendLine("The last number that rounds to 50 is " & number50)

        ' Get the last item whose value rounds to 40.0.
        Dim number40 As Double = _
            numbers.LastOrDefault(Function(n) Math.Round(n) = 40.0)

        Dim text As String = IIf(number40 = 0.0, _
                                 "[DOES NOT EXIST]", _
                                 number40.ToString())
        output.AppendLine("The last number that rounds to 40 is " & text)

        ' Display the output.
        MsgBox(output.ToString)

        ' This code produces the following output:
        '
        ' The last number that rounds to 50 is 50.2
        ' The last number that rounds to 40 is [DOES NOT EXIST]

            double[] numbers = { 49.6, 52.3, 51.0, 49.4, 50.2, 48.3 };

            double last50 = numbers.LastOrDefault(n => Math.Round(n) == 50.0);

            Console.WriteLine("The last number that rounds to 50 is {0}.", last50);

            double last40 = numbers.LastOrDefault(n => Math.Round(n) == 40.0);

            Console.WriteLine(
                "The last number that rounds to 40 is {0}.",
                last40 == 0.0 ? "<DOES NOT EXIST>" : last40.ToString());

            /*
             This code produces the following output:

             The last number that rounds to 50 is 50.2.
             The last number that rounds to 40 is <DOES NOT EXIST>.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
LastOrDefault 重载
System.Linq 命名空间


Enumerable ..::.LongCount 方法

Enumerable
.
.
::
.
LongCount 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回一个 Int64，表示序列中的元素的数量。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.LongCount <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
LongCount
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回一个 Int64，表示序列中的元素的总数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LongCount(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As Long
public static long LongCount<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long LongCount(
    IEnumerable<TSource>^ source
)
static member LongCount :
        source:IEnumerable<'TSource> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含要进行计数的元素的 IEnumerable<(Of <(T>)>)。

返回值

类型： System Int64
源序列中的元素的数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 元素的数量超过 MaxValue。

如果期望结果大于 MaxValue，请使用此方法，而不使用 Count。

在 Visual Basic 查询表达式语法中，Aggregate Into LongCount() 子句转换为 LongCount 的一个调用。

下面的代码示例演示如何使用 LongCount<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 对数组中的元素进行计数。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Get the number of items in the array.
        Dim count As Long = fruits.LongCount()

        ' Display the result.
        MsgBox("There are " & count & " fruits in the collection.")

        ' This code produces the following output:
        '
        ' There are 6 fruits in the collection.

            string[] fruits = { "apple", "banana", "mango",
                                  "orange", "passionfruit", "grape" };

            long count = fruits.LongCount();

            Console.WriteLine("There are {0} fruits in the collection.", count);

            /*
             This code produces the following output:

             There are 6 fruits in the collection.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
LongCount 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.LongCount <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
LongCount
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回一个 Int64，表示序列中满足条件的元素的数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LongCount(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Long
public static long LongCount<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long LongCount(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member LongCount :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

包含要进行计数的元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Int64
一个数字，表示序列中满足谓词函数条件的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 匹配元素的数量超过 MaxValue。

如果期望结果大于 MaxValue，请使用此方法，而不使用 Count。

在 Visual Basic 查询表达式语法中，Aggregate Into LongCount() 子句转换为 LongCount 的一个调用。

下面的代码示例演示如何使用 LongCount<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 对数组中满足条件的元素进行计数。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub LongCountEx2()
        ' Create a list of Pet objects.
        Dim pets As New List(Of Pet)(New Pet() _
                             {New Pet With {.Name = "Barley", .Age = 8}, _
                              New Pet With {.Name = "Boots", .Age = 4}, _
                              New Pet With {.Name = "Whiskers", .Age = 1}})

        ' Determine the number of elements in the list
        ' where the pet's age is greater than a constant value (3).
        Const Age As Integer = 3
        Dim count As Long = _
            pets.LongCount(Function(pet) pet.Age > Age)

        ' Display the result.
        MsgBox("There are " & count & " animals over age " & Age)
    End Sub

    ' This code produces the following output:
    '
    ' There are 2 animals over age 3

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void LongCountEx2()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                const int Age = 3;

                long count = pets.LongCount(pet => pet.Age > Age);

                Console.WriteLine("There are {0} animals over age {1}.", count, Age);
            }

            /*
             This code produces the following output:

             There are 2 animals over age 3.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
LongCount 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法

Enumerable
.
.
::
.
Max 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回值序列中的最大值。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Decimal >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Decimal
>
)
>
)
)
Enumerable 类

返回 Decimal 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Decimal) _
) As Decimal
public static decimal Max(
    this IEnumerable<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Max(
    IEnumerable<Decimal>^ source
)
static member Max :
        source:IEnumerable<decimal> -> decimal

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Decimal
>
)
>
)

要确定其最大值的 Decimal 值序列。

返回值

类型： System Decimal
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max(IEnumerable<(Of <(Decimal>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Int64>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Long values.
        Dim longs As New List(Of Long)(New Long() _
                                       {4294967296L, 466855135L, 81125L})

        ' Get the maximum value in the list.
        Dim max As Long = longs.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 4294967296

            List<long> longs = new List<long> { 4294967296L, 466855135L, 81125L };

            long max = longs.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 4294967296.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

返回可以为 null 的 Decimal 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Max(
    this IEnumerable<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Max(
    IEnumerable<Nullable<Decimal>>^ source
)
static member Max :
        source:IEnumerable<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

要确定其最大值的可以为 null 的 Decimal 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

一个与序列中的最大值对应的值，该值的类型在 C# 中为 Nullable<Decimal>，在 Visual Basic 中为 Nullable(Of Decimal)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max(IEnumerable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Double values.
        Dim doubles() As Nullable(Of Double) = _
            {Nothing, 1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the maximum value in the array.
        Dim max As Nullable(Of Double) = doubles.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 1.5E+104

            double?[] doubles = { null, 1.5E+104, 9E+103, -2E+103 };

            double? max = doubles.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 1.5E+104.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Double >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Double
>
)
>
)
)
Enumerable 类

返回 Double 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Double) _
) As Double
public static double Max(
    this IEnumerable<double> source
)
[ExtensionAttribute]
public:
static double Max(
    IEnumerable<double>^ source
)
static member Max :
        source:IEnumerable<float> -> float

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Double
>
)
>
)

要确定其最大值的 Double 值序列。

返回值

类型： System Double
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max(IEnumerable<(Of <(Double>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Int64>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Long values.
        Dim longs As New List(Of Long)(New Long() _
                                       {4294967296L, 466855135L, 81125L})

        ' Get the maximum value in the list.
        Dim max As Long = longs.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 4294967296

            List<long> longs = new List<long> { 4294967296L, 466855135L, 81125L };

            long max = longs.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 4294967296.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

返回可以为 null 的 Double 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Max(
    this IEnumerable<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Max(
    IEnumerable<Nullable<double>>^ source
)
static member Max :
        source:IEnumerable<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

要确定其最大值的可以为 null 的 Double 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

一个与序列中的最大值对应的值，该值的类型在 C# 中为 Nullable<Double>，在 Visual Basic 中为 Nullable(Of Double)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 确定序列中的最大值。

        ' Create an array of Nullable Double values.
        Dim doubles() As Nullable(Of Double) = _
            {Nothing, 1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the maximum value in the array.
        Dim max As Nullable(Of Double) = doubles.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 1.5E+104

            double?[] doubles = { null, 1.5E+104, 9E+103, -2E+103 };

            double? max = doubles.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 1.5E+104.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回泛型序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource Max<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Max(
    IEnumerable<TSource>^ source
)
static member Max :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。

返回值

类型：TSource
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 TSource 类型实现 IComparable<(Of <(T>)>)，则 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法使用该实现比较值。否则，如果 TSource 类型实现 IComparable，则使用该实现比较值。 如果 TSource 类型实现 IComparable<(Of <(T>)>)，则 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法使用该实现比较值。否则，如果 TSource 类型实现 IComparable，则使用该实现比较值。

如果 TSource 为引用类型，且源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 确定 IComparable<(Of <(T>)>) 对象的序列中的最大值。

    ' This class implements IComparable
    ' and has a custom 'CompareTo' implementation.
    Class Pet
        Implements IComparable(Of Pet)

        Public Name As String
        Public Age As Integer

        ''' <summary>
        ''' Compares Pet objects by the sum of their age and name length.
        ''' </summary>
        ''' <param name="other">The Pet to compare this Pet to.</param>
        ''' <returns>-1 if this Pet's sum is 'less' than the other Pet,
        ''' 0 if they are equal,
        ''' or 1 if this Pet's sum is 'greater' than the other Pet.</returns>
        Function CompareTo(ByVal other As Pet) As Integer _
            Implements IComparable(Of Pet).CompareTo

            If (other.Age + other.Name.Length > Me.Age + Me.Name.Length) Then
                Return -1
            ElseIf (other.Age + other.Name.Length = Me.Age + Me.Name.Length) Then
                Return 0
            Else
                Return 1
            End If
        End Function
    End Class

    Sub MaxEx3()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the "maximum" pet according to the
        ' custom CompareTo() implementation.
        Dim max As Pet = pets.Max()

        ' Display the result.
        MsgBox("The 'maximum' animal is " & max.Name)
    End Sub

    ' This code produces the following output:
    '
    ' The 'maximum' animal is Barley

            /// <summary>
            /// This class implements IComparable to be able to
            /// compare one Pet to another Pet.
            /// </summary>
            class Pet : IComparable<Pet>
            {
                public string Name { get; set; }
                public int Age { get; set; }

                /// <summary>
                /// Compares this Pet to another Pet by
                /// summing each Pet's age and name length.
                /// </summary>
                /// <param name="other">The Pet to compare this Pet to.</param>
                /// <returns>-1 if this Pet is 'less' than the other Pet,
                /// 0 if they are equal,
                /// or 1 if this Pet is 'greater' than the other Pet.</returns>
                int IComparable<Pet>.CompareTo(Pet other)
                {
                    int sumOther = other.Age + other.Name.Length;
                    int sumThis = this.Age + this.Name.Length;

                    if (sumOther > sumThis)
                        return -1;
                    else if (sumOther == sumThis)
                        return 0;
                    else
                        return 1;
                }
            }

            public static void MaxEx3()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                Pet max = pets.Max();

                Console.WriteLine(
                    "The 'maximum' animal is {0}.",
                    max.Name);
            }

            /*
             This code produces the following output:

             The 'maximum' animal is Barley.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Int32 >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Int32
>
)
>
)
)
Enumerable 类

返回 Int32 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Integer) _
) As Integer
public static int Max(
    this IEnumerable<int> source
)
[ExtensionAttribute]
public:
static int Max(
    IEnumerable<int>^ source
)
static member Max :
        source:IEnumerable<int> -> int

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int32
>
)
>
)

要确定其最大值的 Int32 值序列。

返回值

类型： System Int32
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max(IEnumerable<(Of <(Int32>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Int64>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Long values.
        Dim longs As New List(Of Long)(New Long() _
                                       {4294967296L, 466855135L, 81125L})

        ' Get the maximum value in the list.
        Dim max As Long = longs.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 4294967296

            List<long> longs = new List<long> { 4294967296L, 466855135L, 81125L };

            long max = longs.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 4294967296.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

返回可以为 null 的 Int32 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Max(
    this IEnumerable<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Max(
    IEnumerable<Nullable<int>>^ source
)
static member Max :
        source:IEnumerable<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

要确定其最大值的可以为 null 的 Int32 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

一个与序列中的最大值对应的值，该值的类型在 C# 中为 Nullable<Int32>，在 Visual Basic 中为 Nullable(Of Int32)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Double values.
        Dim doubles() As Nullable(Of Double) = _
            {Nothing, 1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the maximum value in the array.
        Dim max As Nullable(Of Double) = doubles.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 1.5E+104

            double?[] doubles = { null, 1.5E+104, 9E+103, -2E+103 };

            double? max = doubles.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 1.5E+104.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Int64 >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Int64
>
)
>
)
)
Enumerable 类

返回 Int64 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Long) _
) As Long
public static long Max(
    this IEnumerable<long> source
)
[ExtensionAttribute]
public:
static long long Max(
    IEnumerable<long long>^ source
)
static member Max :
        source:IEnumerable<int64> -> int64

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int64
>
)
>
)

要确定其最大值的 Int64 值序列。

返回值

类型： System Int64
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max(IEnumerable<(Of <(Int64>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Int64>)>)) 确定序列中的最大值。

        ' Create a list of Long values.
        Dim longs As New List(Of Long)(New Long() _
                                       {4294967296L, 466855135L, 81125L})

        ' Get the maximum value in the list.
        Dim max As Long = longs.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 4294967296

            List<long> longs = new List<long> { 4294967296L, 466855135L, 81125L };

            long max = longs.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 4294967296.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

返回可以为 null 的 Int64 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Max(
    this IEnumerable<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Max(
    IEnumerable<Nullable<long long>>^ source
)
static member Max :
        source:IEnumerable<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

要确定其最大值的可以为 null 的 Int64 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

一个与序列中的最大值对应的值，该值的类型在 C# 中为 Nullable<Int64>，在 Visual Basic 中为 Nullable(Of Int64)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Double values.
        Dim doubles() As Nullable(Of Double) = _
            {Nothing, 1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the maximum value in the array.
        Dim max As Nullable(Of Double) = doubles.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 1.5E+104

            double?[] doubles = { null, 1.5E+104, 9E+103, -2E+103 };

            double? max = doubles.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 1.5E+104.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

返回可以为 null 的 Single 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Max(
    this IEnumerable<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Max(
    IEnumerable<Nullable<float>>^ source
)
static member Max :
        source:IEnumerable<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

要确定其最大值的可以为 null 的 Single 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

一个与序列中的最大值对应的值，该值的类型在 C# 中为 Nullable<Single>，在 Visual Basic 中为 Nullable(Of Single)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Double values.
        Dim doubles() As Nullable(Of Double) = _
            {Nothing, 1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the maximum value in the array.
        Dim max As Nullable(Of Double) = doubles.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 1.5E+104

            double?[] doubles = { null, 1.5E+104, 9E+103, -2E+103 };

            double? max = doubles.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 1.5E+104.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max 方法 (IEnumerable <(Of <(Single >)>))

Enumerable
.
.
::
.
Max 方法 (IEnumerable
<
(Of
<
(
Single
>
)
>
)
)
Enumerable 类

返回 Single 值序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As IEnumerable(Of Single) _
) As Single
public static float Max(
    this IEnumerable<float> source
)
[ExtensionAttribute]
public:
static float Max(
    IEnumerable<float>^ source
)
static member Max :
        source:IEnumerable<float32> -> float32

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Single
>
)
>
)

要确定其最大值的 Single 值序列。

返回值

类型： System Single
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max(IEnumerable<(Of <(Single>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max(IEnumerable<(Of <(Int64>)>)) 确定序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Long values.
        Dim longs As New List(Of Long)(New Long() _
                                       {4294967296L, 466855135L, 81125L})

        ' Get the maximum value in the list.
        Dim max As Long = longs.Max()

        ' Display the result.
        MsgBox("The largest number is " & max)

        ' This code produces the following output:
        '
        ' The largest number is 4294967296

            List<long> longs = new List<long> { 4294967296L, 466855135L, 81125L };

            long max = longs.Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
             This code produces the following output:

             The largest number is 4294967296.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最大 Decimal 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Max(
    IEnumerable<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Decimal>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Decimal），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最大 Double 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Max(
    IEnumerable<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Double），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最大 Int32 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Integer
public static int Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Max(
    IEnumerable<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int32
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Int32），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最大 Int64 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Long
public static long Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Max(
    IEnumerable<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int64> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int64
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Int64），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Decimal 的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Max(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

C# 中类型为 Nullable<Decimal> 的值或 Visual Basic 中与序列中最大值对应的 Nullable(Of Decimal)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Decimal>；在 Visual Basic 中为 Nullable(Of Decimal)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Double 的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Max(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

C# 中类型为 Nullable<Double> 的值或 Visual Basic 中与序列中最大值对应的 Nullable(Of Double)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Double>；在 Visual Basic 中为 Nullable(Of Double)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Int32 的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Max(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

C# 中类型为 Nullable<Int32> 的值或 Visual Basic 中与序列中最大值对应的 Nullable(Of Int32)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Int32>；在 Visual Basic 中为 Nullable(Of Int32)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Int64 的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Max(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

C# 中类型为 Nullable<Int64> 的值或 Visual Basic 中与序列中最大值对应的 Nullable(Of Int64)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Int64>；在 Visual Basic 中为 Nullable(Of Int64)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Single 的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Max(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

C# 中类型为 Nullable<Single> 的值或 Visual Basic 中与序列中最大值对应的 Nullable(Of Single)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Single>；在 Visual Basic 中为 Nullable(Of Single)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最大 Single 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Max<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Max(
    IEnumerable<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Single>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Single），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Max <(Of <(TSource, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TResult >)>))

Enumerable
.
.
::
.
Max
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TResult
>
)
>
)
)
Enumerable 类

调用泛型序列的每个元素上的转换函数并返回最大结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource, TResult) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, TResult) _
) As TResult
public static TResult Max<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static TResult Max(
    IEnumerable<TSource>^ source,
    Func<TSource, TResult>^ selector
)
static member Max :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型：TResult
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 TResult 类型实现 IComparable<(Of <(T>)>)，则此方法使用该实现比较值。否则，如果 TResult 类型实现 IComparable，则使用该实现比较值。 如果 TResult 类型实现 IComparable<(Of <(T>)>)，则此方法使用该实现比较值。否则，如果 TResult 类型实现 IComparable，则使用该实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Max() 子句转换为 Max 的一个调用。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最大值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MaxEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "maximum" pet by passing a
        ' lambda expression to Max() that sums the pet's age
        ' and name length.
        Dim max As Integer = pets.Max(Function(pet) _
                                          pet.Age + pet.Name.Length)

        ' Display the result.
        MsgBox("The maximum pet age plus name length is " & max)
    End Sub

    ' This code produces the following output:
    '
    ' The maximum pet age plus name length is 14

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int max = pets.Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
             This code produces the following output:

             The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Max 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法

Enumerable
.
.
::
.
Min 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回值序列中的最小值。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Decimal >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Decimal
>
)
>
)
)
Enumerable 类

返回 Decimal 值序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Decimal) _
) As Decimal
public static decimal Min(
    this IEnumerable<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Min(
    IEnumerable<Decimal>^ source
)
static member Min :
        source:IEnumerable<decimal> -> decimal

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Decimal
>
)
>
)

一个 Decimal 值序列，用于确定最大值。

返回值

类型： System Decimal
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min(IEnumerable<(Of <(Decimal>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Double>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of double values.
        Dim doubles() As Double = {1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the smallest number in the array.
        Dim min As Double = doubles.Min()

        ' Display the result.
        MsgBox("The smallest number is " & min)

        ' This code produces the following output:
        '
        ' The smallest number is -2E+103

            double[] doubles = { 1.5E+104, 9E+103, -2E+103 };

            double min = doubles.Min();

            Console.WriteLine("The smallest number is {0}.", min);

            /*
             This code produces the following output:

             The smallest number is -2E+103.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

返回 Decimal 值（可空）序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Min(
    this IEnumerable<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Min(
    IEnumerable<Nullable<Decimal>>^ source
)
static member Min :
        source:IEnumerable<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

一个可空 Decimal 值的序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

C# 中类型为 Nullable<Decimal> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Decimal)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min(IEnumerable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades() As Nullable(Of Integer) = {78, 92, Nothing, 99, 37, 81}
        Dim min As Nullable(Of Integer) = grades.Min()

        ' Display the output.
        MsgBox("The lowest grade is " & min)

        ' This code produces the following output:
        '
        ' The lowest grade is 37

            int?[] grades = { 78, 92, null, 99, 37, 81 };

            int? min = grades.Min();

            Console.WriteLine("The lowest grade is {0}.", min);

            /*
             This code produces the following output:

             The lowest grade is 37.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Double >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Double
>
)
>
)
)
Enumerable 类

返回 Double 值序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Double) _
) As Double
public static double Min(
    this IEnumerable<double> source
)
[ExtensionAttribute]
public:
static double Min(
    IEnumerable<double>^ source
)
static member Min :
        source:IEnumerable<float> -> float

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Double
>
)
>
)

一个 Double 值序列，用于确定最小值。

返回值

类型： System Double
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min(IEnumerable<(Of <(Double>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Double>)>)) 确定序列中的最小值。

        ' Create an array of double values.
        Dim doubles() As Double = {1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the smallest number in the array.
        Dim min As Double = doubles.Min()

        ' Display the result.
        MsgBox("The smallest number is " & min)

        ' This code produces the following output:
        '
        ' The smallest number is -2E+103

            double[] doubles = { 1.5E+104, 9E+103, -2E+103 };

            double min = doubles.Min();

            Console.WriteLine("The smallest number is {0}.", min);

            /*
             This code produces the following output:

             The smallest number is -2E+103.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

返回 Double 值（可空）序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Min(
    this IEnumerable<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Min(
    IEnumerable<Nullable<double>>^ source
)
static member Min :
        source:IEnumerable<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

一个可空 Double 值的序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

C# 中类型为 Nullable<Double> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Double)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min(IEnumerable<(Of <(Nullable<(Of <(Double>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades() As Nullable(Of Integer) = {78, 92, Nothing, 99, 37, 81}
        Dim min As Nullable(Of Integer) = grades.Min()

        ' Display the output.
        MsgBox("The lowest grade is " & min)

        ' This code produces the following output:
        '
        ' The lowest grade is 37

            int?[] grades = { 78, 92, null, 99, 37, 81 };

            int? min = grades.Min();

            Console.WriteLine("The lowest grade is {0}.", min);

            /*
             This code produces the following output:

             The lowest grade is 37.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回泛型序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource Min<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Min(
    IEnumerable<TSource>^ source
)
static member Min :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型：TSource
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 TSource 类型实现 IComparable<(Of <(T>)>)，则此方法使用该实现比较值。否则，如果 TSource 类型实现 IComparable，则使用该实现比较值。 如果 TSource 类型实现 IComparable<(Of <(T>)>)，则此方法使用该实现比较值。否则，如果 TSource 类型实现 IComparable，则使用该实现比较值。

如果 TSource 为引用类型，且源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 确定 IComparable<(Of <(T>)>) 对象序列中的最小值。

    ' This class implements IComparable
    ' and has a custom 'CompareTo' implementation.
    Class Pet
        Implements IComparable(Of Pet)

        Public Name As String
        Public Age As Integer

        ''' <summary>
        ''' Compares this Pet's age to another Pet's age.
        ''' </summary>
        ''' <param name="other">The Pet to compare this Pet to.</param>
        ''' <returns>-1 if this Pet's age is smaller,
        ''' 0 if the Pets' ages are equal,
        ''' or 1 if this Pet's age is greater.</returns>
        Function CompareTo(ByVal other As Pet) As Integer _
            Implements IComparable(Of Pet).CompareTo

            If (other.Age > Me.Age) Then
                Return -1
            ElseIf (other.Age = Me.Age) Then
                Return 0
            Else
                Return 1
            End If
        End Function
    End Class

    Sub MinEx3()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Determine the "minimum" pet in the array,
        ' according to the custom CompareTo() implementation.
        Dim min As Pet = pets.Min()

        ' Display the result.
        MsgBox("The 'minimum' pet is " & min.Name)
    End Sub

    ' This code produces the following output:
    '
    ' The 'minimum' pet is Whiskers

            /// <summary>
            /// This class implements IComparable in order to
            /// be able to compare different Pet objects.
            /// </summary>
            class Pet : IComparable<Pet>
            {
                public string Name { get; set; }
                public int Age { get; set; }

                /// <summary>
                /// Compares this Pet's age to another Pet's age.
                /// </summary>
                /// <param name="other">The Pet to compare this Pet to.</param>
                /// <returns>-1 if this Pet's age is smaller,
                /// 0 if the Pets' ages are equal, or
                /// 1 if this Pet's age is greater.</returns>
                int IComparable<Pet>.CompareTo(Pet other)
                {
                    if (other.Age > this.Age)
                        return -1;
                    else if (other.Age == this.Age)
                        return 0;
                    else
                        return 1;
                }
            }

            public static void MinEx3()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                Pet min = pets.Min();

                Console.WriteLine(
                    "The 'minimum' animal is {0}.",
                    min.Name);
            }

            /*
             This code produces the following output:

             The 'minimum' animal is Whiskers.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Int32 >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Int32
>
)
>
)
)
Enumerable 类

返回 Int32 值序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Integer) _
) As Integer
public static int Min(
    this IEnumerable<int> source
)
[ExtensionAttribute]
public:
static int Min(
    IEnumerable<int>^ source
)
static member Min :
        source:IEnumerable<int> -> int

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int32
>
)
>
)

一个 Int32 值序列，用于确定最小值。

返回值

类型： System Int32
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min(IEnumerable<(Of <(Int32>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Double>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of double values.
        Dim doubles() As Double = {1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the smallest number in the array.
        Dim min As Double = doubles.Min()

        ' Display the result.
        MsgBox("The smallest number is " & min)

        ' This code produces the following output:
        '
        ' The smallest number is -2E+103

            double[] doubles = { 1.5E+104, 9E+103, -2E+103 };

            double min = doubles.Min();

            Console.WriteLine("The smallest number is {0}.", min);

            /*
             This code produces the following output:

             The smallest number is -2E+103.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

返回 Int32 值（可空）序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Min(
    this IEnumerable<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Min(
    IEnumerable<Nullable<int>>^ source
)
static member Min :
        source:IEnumerable<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

一个可空 Int32 值的序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

C# 中类型为 Nullable<Int32> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Int32)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 确定序列中的最小值。

        Dim grades() As Nullable(Of Integer) = {78, 92, Nothing, 99, 37, 81}
        Dim min As Nullable(Of Integer) = grades.Min()

        ' Display the output.
        MsgBox("The lowest grade is " & min)

        ' This code produces the following output:
        '
        ' The lowest grade is 37

            int?[] grades = { 78, 92, null, 99, 37, 81 };

            int? min = grades.Min();

            Console.WriteLine("The lowest grade is {0}.", min);

            /*
             This code produces the following output:

             The lowest grade is 37.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Int64 >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Int64
>
)
>
)
)
Enumerable 类

返回 Int64 值序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Long) _
) As Long
public static long Min(
    this IEnumerable<long> source
)
[ExtensionAttribute]
public:
static long long Min(
    IEnumerable<long long>^ source
)
static member Min :
        source:IEnumerable<int64> -> int64

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int64
>
)
>
)

一个 Int64 值序列，用于确定最小值。

返回值

类型： System Int64
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min(IEnumerable<(Of <(Int64>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Double>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of double values.
        Dim doubles() As Double = {1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the smallest number in the array.
        Dim min As Double = doubles.Min()

        ' Display the result.
        MsgBox("The smallest number is " & min)

        ' This code produces the following output:
        '
        ' The smallest number is -2E+103

            double[] doubles = { 1.5E+104, 9E+103, -2E+103 };

            double min = doubles.Min();

            Console.WriteLine("The smallest number is {0}.", min);

            /*
             This code produces the following output:

             The smallest number is -2E+103.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

返回 Int64 值（可空）序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Min(
    this IEnumerable<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Min(
    IEnumerable<Nullable<long long>>^ source
)
static member Min :
        source:IEnumerable<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

一个可空 Int64 值的序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

C# 中类型为 Nullable<Int64> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Int64)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min(IEnumerable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades() As Nullable(Of Integer) = {78, 92, Nothing, 99, 37, 81}
        Dim min As Nullable(Of Integer) = grades.Min()

        ' Display the output.
        MsgBox("The lowest grade is " & min)

        ' This code produces the following output:
        '
        ' The lowest grade is 37

            int?[] grades = { 78, 92, null, 99, 37, 81 };

            int? min = grades.Min();

            Console.WriteLine("The lowest grade is {0}.", min);

            /*
             This code produces the following output:

             The lowest grade is 37.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

返回 Single 值（可空）序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Min(
    this IEnumerable<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Min(
    IEnumerable<Nullable<float>>^ source
)
static member Min :
        source:IEnumerable<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

一个可空 Single 值的序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

C# 中类型为 Nullable<Single> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Single)。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

如果源序列为空或仅包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值，则此函数返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades() As Nullable(Of Integer) = {78, 92, Nothing, 99, 37, 81}
        Dim min As Nullable(Of Integer) = grades.Min()

        ' Display the output.
        MsgBox("The lowest grade is " & min)

        ' This code produces the following output:
        '
        ' The lowest grade is 37

            int?[] grades = { 78, 92, null, 99, 37, 81 };

            int? min = grades.Min();

            Console.WriteLine("The lowest grade is {0}.", min);

            /*
             This code produces the following output:

             The lowest grade is 37.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min 方法 (IEnumerable <(Of <(Single >)>))

Enumerable
.
.
::
.
Min 方法 (IEnumerable
<
(Of
<
(
Single
>
)
>
)
)
Enumerable 类

返回 Single 值序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As IEnumerable(Of Single) _
) As Single
public static float Min(
    this IEnumerable<float> source
)
[ExtensionAttribute]
public:
static float Min(
    IEnumerable<float>^ source
)
static member Min :
        source:IEnumerable<float32> -> float32

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Single
>
)
>
)

一个 Single 值序列，用于确定最小值。

返回值

类型： System Single
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min(IEnumerable<(Of <(Single>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min(IEnumerable<(Of <(Double>)>)) 确定序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of double values.
        Dim doubles() As Double = {1.5E+104, 9.0E+103, -2.0E+103}

        ' Determine the smallest number in the array.
        Dim min As Double = doubles.Min()

        ' Display the result.
        MsgBox("The smallest number is " & min)

        ' This code produces the following output:
        '
        ' The smallest number is -2E+103

            double[] doubles = { 1.5E+104, 9E+103, -2E+103 };

            double min = doubles.Min();

            Console.WriteLine("The smallest number is {0}.", min);

            /*
             This code produces the following output:

             The smallest number is -2E+103.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最小 Decimal 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Min(
    IEnumerable<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Decimal>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Decimal），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最小 Double 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Min(
    IEnumerable<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Double），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最小 Int32 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Integer
public static int Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Min(
    IEnumerable<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int32
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Int32），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最小 Int64 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Long
public static long Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Min(
    IEnumerable<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int64> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int64
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int64>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Int64），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Decimal 的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Min(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

C# 中类型为 Nullable<Decimal> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Decimal)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Decimal 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Decimal>；在 Visual Basic 中为 Nullable(Of Decimal)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Double 的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Min(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

C# 中类型为 Nullable<Double> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Double)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Double 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Double>；在 Visual Basic 中为 Nullable(Of Double)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Int32 的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Min(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

C# 中类型为 Nullable<Int32> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Int32)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int32 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Int32>；在 Visual Basic 中为 Nullable(Of Int32)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Int64 的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Min(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

C# 中类型为 Nullable<Int64> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Int64)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Int64 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Int64>；在 Visual Basic 中为 Nullable(Of Int64)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回可空 Single 的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Min(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

C# 中类型为 Nullable<Single> 的值或 Visual Basic 中与序列中最小值对应的 Nullable(Of Single)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Single>；在 Visual Basic 中为 Nullable(Of Single)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
Enumerable 类

调用序列的每个元素上的转换函数并返回最小 Single 值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Min<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Min(
    IEnumerable<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Single>)>)) 方法使用 IComparable<(Of <(T>)>) 的 Single 实现比较值。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Single），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Min <(Of <(TSource, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TResult >)>))

Enumerable
.
.
::
.
Min
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TResult
>
)
>
)
)
Enumerable 类

调用泛型序列的每个元素上的转换函数并返回最小结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource, TResult) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, TResult) _
) As TResult
public static TResult Min<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static TResult Min(
    IEnumerable<TSource>^ source,
    Func<TSource, TResult>^ selector
)
static member Min :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型：TResult
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 TResult 类型实现 IComparable<(Of <(T>)>)，则此方法使用该实现比较值。否则，如果 TResult 类型实现 IComparable，则使用该实现比较值。 如果 TResult 类型实现 IComparable<(Of <(T>)>)，则此方法使用该实现比较值。否则，如果 TResult 类型实现 IComparable，则使用该实现比较值。

在 Visual Basic 查询表达式语法中，Aggregate Into Min() 子句转换为 Min 的一个调用。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32>)>)) 确定投影值序列中的最小值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub MinEx4()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Find the youngest pet by passing a
        ' lambda expression to the Min() method.
        Dim min As Integer = pets.Min(Function(pet) pet.Age)

        ' Display the result.
        MsgBox("The youngest pet is age " & min)
    End Sub

    ' This code produces the following output:
    '
    ' The youngest pet is age 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx4()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                int min = pets.Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
             This code produces the following output:

             The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Min 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.OfType <(Of <(TResult >)>) 方法

Enumerable
.
.
::
.
OfType
<
(Of
<
(
TResult
>
)
>
)
方法
Enumerable 类

根据指定类型筛选 IEnumerable 的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OfType(Of TResult) ( _
    source As IEnumerable _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> OfType<TResult>(
    this IEnumerable source
)

[ExtensionAttribute]
public:
generic<typename TResult>
static IEnumerable<TResult>^ OfType(
    IEnumerable^ source
)
static member OfType :
        source:IEnumerable -> IEnumerable<'TResult>

类型参数

TResult

筛选序列元素所根据的类型。

参数

source
类型： System.Collections IEnumerable
IEnumerable，其元素用于筛选。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含类型为 TResult 的输入序列中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

OfType<(Of <(TResult>)>)(IEnumerable) 方法仅返回 source 中那些可以转换为 TResult 类型的元素。如果元素不能转换为 TResult 类型，但却不想接收异常，则使用 Cast<(Of <(TResult>)>)(IEnumerable)。 OfType<(Of <(TResult>)>)(IEnumerable) 方法仅返回 source 中那些可以转换为 TResult 类型的元素。如果元素不能转换为 TResult 类型，但却不想接收异常，则使用 Cast<(Of <(TResult>)>)(IEnumerable)。

此方法是少数标准查询运算符方法之一，标准查询运算符方法可应用于含有非参数化类型（如 ArrayList）的集合。这是因为 OfType<(Of <(TResult>)>) 扩展了类型 IEnumerable。OfType<(Of <(TResult>)>) 不仅无法应用于基于参数化的 IEnumerable<(Of <(T>)>) 类型的集合，也无法应用于基于非参数化的 IEnumerable 类型的集合。 此方法是少数标准查询运算符方法之一，标准查询运算符方法可应用于含有非参数化类型（如 ArrayList）的集合。这是因为 OfType<(Of <(TResult>)>) 扩展了类型 IEnumerable。OfType<(Of <(TResult>)>) 不仅无法应用于基于参数化的 IEnumerable<(Of <(T>)>) 类型的集合，也无法应用于基于非参数化的 IEnumerable 类型的集合。 此方法是少数标准查询运算符方法之一，标准查询运算符方法可应用于含有非参数化类型（如 ArrayList）的集合。这是因为 OfType<(Of <(TResult>)>) 扩展了类型 IEnumerable。OfType<(Of <(TResult>)>) 不仅无法应用于基于参数化的 IEnumerable<(Of <(T>)>) 类型的集合，也无法应用于基于非参数化的 IEnumerable 类型的集合。

通过将 OfType<(Of <(TResult>)>) 应用于实现 IEnumerable 的集合，可以获得使用标准查询运算符查询集合的能力。例如，将 Object 的类型参数指定为 OfType<(Of <(TResult>)>) 将返回一个对象，其类型为 C# 中的 IEnumerable<Object> 或 IEnumerable(Of Object) 中的 Visual Basic，标准查询运算符可应用于该对象。 通过将 OfType<(Of <(TResult>)>) 应用于实现 IEnumerable 的集合，可以获得使用标准查询运算符查询集合的能力。例如，将 Object 的类型参数指定为 OfType<(Of <(TResult>)>) 将返回一个对象，其类型为 C# 中的 IEnumerable<Object> 或 IEnumerable(Of Object) 中的 Visual Basic，标准查询运算符可应用于该对象。

下面的代码示例演示如何使用 OfType<(Of <(TResult>)>) 筛选 IEnumerable 的元素。

        ' Create an ArrayList and add items to it.
        Dim fruits As New System.Collections.ArrayList(4)
        fruits.Add("Mango")
        fruits.Add("Orange")
        fruits.Add("Apple")
        fruits.Add(3.0)
        fruits.Add("Banana")

        ' Apply OfType(Of String)() to the ArrayList
        ' to filter out non-string items.
        Dim query1 As IEnumerable(Of String) = fruits.OfType(Of String)()

        ' Print the results.
        Dim output As New System.Text.StringBuilder("Elements of type 'string' are:" _
                                                    & vbCrLf)
        For Each fruit As String In query1
            output.AppendLine(fruit)
        Next

        ' The following query shows that the standard query operators such as
        ' Where() can be applied to the ArrayList type after calling OfType().
        Dim query2 As IEnumerable(Of String) = _
            fruits.OfType(Of String)().Where(Function(fruit) _
                                                 fruit.ToLower().Contains("n"))

        output.AppendLine(vbCrLf & "The following strings contain 'n':")
        For Each fruit As String In query2
            output.AppendLine(fruit)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' Elements of type 'string' are:
        ' Mango
        ' Orange
        ' Apple
        ' Banana
        '
        ' The following strings contain 'n':
        ' Mango
        ' Orange
        ' Banana

            System.Collections.ArrayList fruits = new System.Collections.ArrayList(4);
            fruits.Add("Mango");
            fruits.Add("Orange");
            fruits.Add("Apple");
            fruits.Add(3.0);
            fruits.Add("Banana");

            // Apply OfType() to the ArrayList.
            IEnumerable<string> query1 = fruits.OfType<string>();

            Console.WriteLine("Elements of type 'string' are:");
            foreach (string fruit in query1)
            {
                Console.WriteLine(fruit);
            }

            // The following query shows that the standard query operators such as
            // Where() can be applied to the ArrayList type after calling OfType().
            IEnumerable<string> query2 =
                fruits.OfType<string>().Where(fruit => fruit.ToLower().Contains("n"));

            Console.WriteLine("\nThe following strings contain 'n':");
            foreach (string fruit in query2)
            {
                Console.WriteLine(fruit);
            }

            // This code produces the following output:
            //
            // Elements of type 'string' are:
            // Mango
            // Orange
            // Apple
            // Banana
            //
            // The following strings contain 'n':
            // Mango
            // Orange
            // Banana

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.OrderBy 方法

Enumerable
.
.
::
.
OrderBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

按升序对序列的元素排序。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.OrderBy <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
OrderBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据键按升序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderBy(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ OrderBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member OrderBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，其元素按键排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

此方法使用默认的比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

在查询表达式语法中，orderby (Visual C#) 或 Order By (Visual Basic) 子句转换为 OrderBy 的一个调用。

下面的代码示例演示如何使用 OrderBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 对序列的元素进行排序。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub OrderByEx1()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Order the Pet objects by their Age property.
        Dim query As IEnumerable(Of Pet) = _
            pets.OrderBy(Function(pet) pet.Age)

        Dim output As New System.Text.StringBuilder
        For Each pt As Pet In query
            output.AppendLine(pt.Name & " - " & pt.Age)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Whiskers - 1
    ' Boots - 4
    ' Barley - 8

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void OrderByEx1()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

                foreach (Pet pet in query)
                {
                    Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
                }
            }

            /*
             This code produces the following output:

             Whiskers - 1
             Boots - 4
             Barley - 8
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
OrderBy 重载
System.Linq 命名空间

其他资源

orderby 子句（C# 参考）
Order By 子句 (Visual Basic)


Enumerable ..::.OrderBy <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
OrderBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

使用指定的比较器按升序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderBy(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ OrderBy(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member OrderBy :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，其元素按键排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
OrderBy 重载
System.Linq 命名空间


Enumerable ..::.OrderByDescending 方法

Enumerable
.
.
::
.
OrderByDescending 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

按降序对序列的元素排序。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.OrderByDescending <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
OrderByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据键按降序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderByDescending(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ OrderByDescending(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member OrderByDescending :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

此方法使用默认的比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

在查询表达式语法中，orderby descending (Visual C#) 或 Order By Descending (Visual Basic) 子句转换为 OrderByDescending 的一个调用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
OrderByDescending 重载
System.Linq 命名空间

其他资源

orderby 子句（C# 参考）
Order By 子句 (Visual Basic)


Enumerable ..::.OrderByDescending <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
OrderByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

使用指定的比较器按降序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderByDescending(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> OrderByDescending<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ OrderByDescending(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member OrderByDescending :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。 定义了两种方法来扩展 IOrderedEnumerable<(Of <(TElement>)>) 类型，该类型为此方法的返回类型。这两种方法（即 ThenBy 和 ThenByDescending）使您能够指定附加排序条件，以便对序列进行排序。ThenBy 和 ThenByDescending 还返回一个 IOrderedEnumerable<(Of <(TElement>)>)，这意味着可对 ThenBy 或 ThenByDescending 执行任意数量的连续调用。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

下面的代码示例演示如何通过使用转换函数和自定义比较器用 OrderByDescending<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), IComparer<(Of <(TKey>)>)) 对序列的元素进行降序排序。

    ' This class provides a custom implementation
    ' of the IComparer.Compare() method.
    Class SpecialComparer
        Implements IComparer(Of Decimal)
        ''' <summary>
        ''' Compare two decimal numbers by their fractional parts.
        ''' </summary>
        ''' <param name="d1">The first decimal to compare.</param>
        ''' <param name="d2">The second decimal to compare.</param>
        ''' <returns>1 if the first decimal's fractional part is greater than
        ''' the second decimal's fractional part,
        ''' -1 if the first decimal's fractional
        ''' part is less than the second decimal's fractional part,
        ''' or the result of calling Decimal.Compare()
        ''' if the fractional parts are equal.</returns>
        Function Compare(ByVal d1 As Decimal, ByVal d2 As Decimal) As Integer _
            Implements IComparer(Of Decimal).Compare

            Dim fractional1 As Decimal
            Dim fractional2 As Decimal

            ' Get the fractional part of the first number.
            Try
                fractional1 = Decimal.Remainder(d1, Decimal.Floor(d1))
            Catch ex As DivideByZeroException
                fractional1 = d1
            End Try

            ' Get the fractional part of the second number.
            Try
                fractional2 = Decimal.Remainder(d2, Decimal.Floor(d2))
            Catch ex As DivideByZeroException
                fractional2 = d2
            End Try

            If (fractional1 = fractional2) Then
                ' The fractional parts are equal, so compare the entire numbers.
                Return Decimal.Compare(d1, d2)
            ElseIf (fractional1 > fractional2) Then
                Return 1
            Else
                Return -1
            End If
        End Function
    End Class

    Sub OrderByDescendingEx1()
        ' Create a list of decimal values.
        Dim decimals As New List(Of Decimal)(New Decimal() _
                                             {6.2D, 8.3D, 0.5D, 1.3D, 6.3D, 9.7D})

        ' Order the elements of the list by passing
        ' in the custom IComparer class.
        Dim query As IEnumerable(Of Decimal) = _
            decimals.OrderByDescending(Function(num) num, _
                                       New SpecialComparer())

        Dim output As New System.Text.StringBuilder
        For Each num As Decimal In query
            output.AppendLine(num)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' 9.7
    ' 0.5
    ' 8.3
    ' 6.3
    ' 1.3
    ' 6.2

            /// <summary>
            /// This IComparer class sorts by the fractional part of the decimal number.
            /// </summary>
            public class SpecialComparer : IComparer<decimal>
            {
                /// <summary>
                /// Compare two decimal numbers by their fractional parts.
                /// </summary>
                /// <param name="d1">The first decimal to compare.</param>
                /// <param name="d2">The second decimal to compare.</param>
                /// <returns>1 if the first decimal's fractional part
                /// is greater than the second decimal's fractional part,
                /// -1 if the first decimal's fractional
                /// part is less than the second decimal's fractional part,
                /// or the result of calling Decimal.Compare()
                /// if the fractional parts are equal.</returns>
                public int Compare(decimal d1, decimal d2)
                {
                    decimal fractional1, fractional2;

                    // Get the fractional part of the first number.
                    try
                    {
                        fractional1 = decimal.Remainder(d1, decimal.Floor(d1));
                    }
                    catch (DivideByZeroException)
                    {
                        fractional1 = d1;
                    }
                    // Get the fractional part of the second number.
                    try
                    {
                        fractional2 = decimal.Remainder(d2, decimal.Floor(d2));
                    }
                    catch (DivideByZeroException)
                    {
                        fractional2 = d2;
                    }

                    if (fractional1 == fractional2)
                        return Decimal.Compare(d1, d2);
                    else if (fractional1 > fractional2)
                        return 1;
                    else
                        return -1;
                }
            }

            public static void OrderByDescendingEx1()
            {
                List<decimal> decimals =
                    new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };

                IEnumerable<decimal> query =
                    decimals.OrderByDescending(num =>
                                                   num, new SpecialComparer());

                foreach (decimal num in query)
                {
                    Console.WriteLine(num);
                }
            }

            /*
             This code produces the following output:

             9.7
             0.5
             8.3
             6.3
             1.3
             6.2
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
OrderByDescending 重载
System.Linq 命名空间


Enumerable ..::.Range 方法

Enumerable
.
.
::
.
Range 方法
Enumerable 类

生成指定范围内的整数的序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Shared Function Range ( _
    start As Integer, _
    count As Integer _
) As IEnumerable(Of Integer)
public static IEnumerable<int> Range(
    int start,
    int count
)
public:
static IEnumerable<int>^ Range(
    int start,
    int count
)
static member Range :
        start:int *
        count:int -> IEnumerable<int>

参数

start
类型： System Int32
序列中第一个整数的值。
count
类型： System Int32
要生成的顺序整数的数目。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int32
>
)
>
)

C# 中的 IEnumerable<Int32> 或 Visual Basic 中包含某个范围内的顺序整数的 IEnumerable(Of Int32)。
异常 | 条件
ArgumentOutOfRangeException | count 小于 0。 - 或 - start + count -1 大于 MaxValue。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

下面的代码示例演示如何使用 Range 生成值序列。

        ' Generate a sequence of integers from 1 to 10
        ' and project their squares.
        Dim squares As IEnumerable(Of Integer) = _
            Enumerable.Range(1, 10).Select(Function(x) x * x)

        Dim output As New System.Text.StringBuilder
        For Each num As Integer In squares
            output.AppendLine(num)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 1
        ' 4
        ' 9
        ' 16
        ' 25
        ' 36
        ' 49
        ' 64
        ' 81
        ' 100

            // Generate a sequence of integers from 1 to 10
            // and then select their squares.
            IEnumerable<int> squares = Enumerable.Range(1, 10).Select(x => x * x);

            foreach (int num in squares)
            {
                Console.WriteLine(num);
            }

            /*
             This code produces the following output:

             1
             4
             9
             16
             25
             36
             49
             64
             81
             100
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Repeat <(Of <(TResult >)>) 方法

Enumerable
.
.
::
.
Repeat
<
(Of
<
(
TResult
>
)
>
)
方法
Enumerable 类

生成包含一个重复值的序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Shared Function Repeat(Of TResult) ( _
    element As TResult, _
    count As Integer _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Repeat<TResult>(
    TResult element,
    int count
)

public:
generic<typename TResult>
static IEnumerable<TResult>^ Repeat(
    TResult element,
    int count
)
static member Repeat :
        element:'TResult *
        count:int -> IEnumerable<'TResult>

类型参数

TResult

要在结果序列中重复的值的类型。

参数

element
类型：TResult
要重复的值。
count
类型： System Int32
在生成序列中重复该值的次数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含一个重复值。
异常 | 条件
ArgumentOutOfRangeException | count 小于 0。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

下面的代码示例演示如何使用 Repeat<(Of <(TResult>)>) 生成重复值的序列。

        ' Repeat the same string to create a sequence.
        Dim sentences As IEnumerable(Of String) = _
            Enumerable.Repeat("I like programming.", 15)

        Dim output As New System.Text.StringBuilder
        For Each sentence As String In sentences
            output.AppendLine(sentence)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.
        ' I like programming.

            IEnumerable<string> strings =
                Enumerable.Repeat("I like programming.", 15);

            foreach (String str in strings)
            {
                Console.WriteLine(str);
            }

            /*
             This code produces the following output:

             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
             I like programming.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Reverse <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
Reverse
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

反转序列中元素的顺序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Reverse(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Reverse<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Reverse(
    IEnumerable<TSource>^ source
)
static member Reverse :
        source:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要反转的值序列。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个序列，其元素以相反顺序对应于输入序列的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

与 OrderBy 不同，此排序方法在确定顺序时不考虑实际值本身。相反，它只按照基础源生成元素的相反顺序返回这些元素。 与 OrderBy 不同，此排序方法在确定顺序时不考虑实际值本身。相反，它只按照基础源生成元素的相反顺序返回这些元素。

下面的代码示例演示如何使用 Reverse<(Of <(TSource>)>) 反转数组中元素的顺序。

        ' Create a List of Char values.
        Dim appleLetters As New List(Of Char)(New Char() _
                                              {"a"c, "P"c, "P"c, "L"c, "E"c})

        ' Reverse the order of the elements in the list.
        ' (We have to call AsEnumerable() in order to
        ' use System.Linq.Enumerable's Reverse() method.
        Dim reversed() As Char = _
            appleLetters.AsEnumerable().Reverse().ToArray()

        Dim output As New System.Text.StringBuilder
        For Each chr As Char In reversed
            output.Append(chr & " ")
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' E L P P a

            char[] apple = { 'a', 'p', 'p', 'l', 'e' };

            char[] reversed = apple.Reverse().ToArray();

            foreach (char chr in reversed)
            {
                Console.Write(chr + " ");
            }
            Console.WriteLine();

            /*
             This code produces the following output:

             e l p p a
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Select 方法

Enumerable
.
.
::
.
Select 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

将序列中的每个元素投影到新表中。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Select <(Of <(TSource, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TResult >)>))

Enumerable
.
.
::
.
Select
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TResult
>
)
>
)
)
Enumerable 类

将序列中的每个元素投影到新表中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Select(Of TSource, TResult) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Select<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IEnumerable<TResult>^ Select(
    IEnumerable<TSource>^ source,
    Func<TSource, TResult>^ selector
)
static member Select :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, 'TResult> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，要对该序列调用转换函数。
selector
类型： System Func
<
(Of
<
(
TSource, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素为对 source 的每个元素调用转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。

在查询表达式语法中，select (Visual C#) 或 Select (Visual Basic) 子句转换为 Select 的一个调用。

下面的代码示例演示如何使用 Select<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TResult>)>)) 在值序列上进行投影。

        ' Create a collection of sequential integers
        ' from 1 to 10 and project their squares.
        Dim squares As IEnumerable(Of Integer) = _
            Enumerable.Range(1, 10).Select(Function(x) x * x)

        Dim output As New System.Text.StringBuilder
        For Each num As Integer In squares
            output.AppendLine(num)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 1
        ' 4
        ' 9
        ' 16
        ' 25
        ' 36
        ' 49
        ' 64
        ' 81
        ' 100

            IEnumerable<int> squares =
                Enumerable.Range(1, 10).Select(x => x * x);

            foreach (int num in squares)
            {
                Console.WriteLine(num);
            }
            /*
             This code produces the following output:

             1
             4
             9
             16
             25
             36
             49
             64
             81
             100
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Select 重载
System.Linq 命名空间

其他资源

select 子句（C# 参考）
Select 子句 (Visual Basic)


Enumerable ..::.Select <(Of <(TSource, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32, TResult >)>))

Enumerable
.
.
::
.
Select
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, TResult
>
)
>
)
)
Enumerable 类

通过合并元素的索引将序列的每个元素投影到新表中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Select(Of TSource, TResult) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Integer, TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Select<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, int, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IEnumerable<TResult>^ Select(
    IEnumerable<TSource>^ source,
    Func<TSource, int, TResult>^ selector
)
static member Select :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int, 'TResult> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个值序列，要对该序列调用转换函数。
selector
类型： System Func
<
(Of
<
(
TSource, Int32, TResult
>
)
>
)

一个应用于每个源元素的转换函数；函数的第二个参数表示源元素的索引。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素为对 source 的每个元素调用转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。 selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。 selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。 selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。

此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。 此投影方法需要转换函数 selector，以为源序列 source 中的每个值生成一个值。如果 selector 返回的值本身为一个集合，则由使用方手动遍历子序列。在这种情况下，您的查询返回值的单个合并序列可能较好。为此，可使用 SelectMany 方法代替 Select。虽然 SelectMany 的用法与 Select 相似，但它的不同之处在于转换函数返回一个集合，此集合在返回之前由 SelectMany 进行了扩展。

下面的代码示例演示如何使用 Select<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, TResult>)>)) 对值序列进行投影并使用每个元素的索引。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Project each item in the array to an anonymous type
        ' that stores the item's index in the array and
        ' a substring of each item whose length is equal
        ' to the index position in the original array.
        Dim query = _
            fruits.Select(Function(fruit, index) _
                              New With {index, .Str = fruit.Substring(0, index)})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(obj.ToString())
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' { index = 0, Str =  }
        ' { index = 1, Str = b }
        ' { index = 2, Str = ma }
        ' { index = 3, Str = ora }
        ' { index = 4, Str = pass }
        ' { index = 5, Str = grape }

            string[] fruits = { "apple", "banana", "mango", "orange",
                                  "passionfruit", "grape" };

            var query =
                fruits.Select((fruit, index) =>
                                  new { index, str = fruit.Substring(0, index) });

            foreach (var obj in query)
            {
                Console.WriteLine("{0}", obj);
            }

            /*
             This code produces the following output:

             {index=0, str=}
             {index=1, str=b}
             {index=2, str=ma}
             {index=3, str=ora}
             {index=4, str=pass}
             {index=5, str=grape}
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Select 重载
System.Linq 命名空间


Enumerable ..::.SelectMany 方法

Enumerable
.
.
::
.
SelectMany 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

将序列的每个元素投影到 IEnumerable<(Of <(T>)>) 并将结果序列合并为一个序列。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.SelectMany <(Of <(TSource, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, IEnumerable <(Of <(TResult >)>) >)>))

Enumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
)
Enumerable 类

将序列的每个元素投影到 IEnumerable<(Of <(T>)>) 并将结果序列合并为一个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TResult) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, IEnumerable(Of TResult)) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> SelectMany<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, IEnumerable<TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IEnumerable<TResult>^ SelectMany(
    IEnumerable<TSource>^ source,
    Func<TSource, IEnumerable<TResult>^>^ selector
)
static member SelectMany :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, IEnumerable<'TResult>> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的序列元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素是对输入序列的每个元素调用一对多转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。

在查询表达式语法中，初始子句后的每个 from 子句 (Visual C#) 或 From 子句 (Visual Basic) 转换为 SelectMany 的调用。

下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 在数组上执行一对多的投影。

    Structure PetOwner
        Public Name As String
        Public Pets() As String
    End Structure

    Sub SelectManyEx1()
        ' Create an array of PetOwner objects.
        Dim petOwners() As PetOwner = _
            {New PetOwner With _
             {.Name = "Higa, Sidney", .Pets = New String() {"Scruffy", "Sam"}}, _
             New PetOwner With _
             {.Name = "Ashkenazi, Ronen", .Pets = New String() {"Walker", "Sugar"}}, _
             New PetOwner With _
             {.Name = "Price, Vernette", .Pets = New String() {"Scratches", "Diesel"}}}

        ' Call SelectMany() to gather all pets into a "flat" sequence.
        Dim query1 As IEnumerable(Of String) = _
            petOwners.SelectMany(Function(petOwner) petOwner.Pets)

        Dim output As New System.Text.StringBuilder("Using SelectMany():" & vbCrLf)
        ' Only one foreach loop is required to iterate through
        ' the results because it is a one-dimensional collection.
        For Each pet As String In query1
            output.AppendLine(pet)
        Next

        ' This code demonstrates how to use Select() instead
        ' of SelectMany() to get the same result.
        Dim query2 As IEnumerable(Of String()) = _
            petOwners.Select(Function(petOwner) petOwner.Pets)
        output.AppendLine(vbCrLf & "Using Select():")
        ' Notice that two foreach loops are required to iterate through
        ' the results because the query returns a collection of arrays.
        For Each petArray() As String In query2
            For Each pet As String In petArray
                output.AppendLine(pet)
            Next
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Using SelectMany():
    ' Scruffy
    ' Sam
    ' Walker
    ' Sugar
    ' Scratches
    ' Diesel
    '
    ' Using Select():
    ' Scruffy
    ' Sam
    ' Walker
    ' Sugar
    ' Scratches
    ' Diesel

            class PetOwner
            {
                public string Name { get; set; }
                public List<String> Pets { get; set; }
            }

            public static void SelectManyEx1()
            {
                PetOwner[] petOwners =
                    { new PetOwner { Name="Higa, Sidney",
                          Pets = new List<string>{ "Scruffy", "Sam" } },
                      new PetOwner { Name="Ashkenazi, Ronen",
                          Pets = new List<string>{ "Walker", "Sugar" } },
                      new PetOwner { Name="Price, Vernette",
                          Pets = new List<string>{ "Scratches", "Diesel" } } };

                // Query using SelectMany().
                IEnumerable<string> query1 = petOwners.SelectMany(petOwner => petOwner.Pets);

                Console.WriteLine("Using SelectMany():");

                // Only one foreach loop is required to iterate
                // through the results since it is a
                // one-dimensional collection.
                foreach (string pet in query1)
                {
                    Console.WriteLine(pet);
                }

                // This code shows how to use Select()
                // instead of SelectMany().
                IEnumerable<List<String>> query2 =
                    petOwners.Select(petOwner => petOwner.Pets);

                Console.WriteLine("\nUsing Select():");

                // Notice that two foreach loops are required to
                // iterate through the results
                // because the query returns a collection of arrays.
                foreach (List<String> petList in query2)
                {
                    foreach (string pet in petList)
                    {
                        Console.WriteLine(pet);
                    }
                    Console.WriteLine();
                }
            }

            /*
             This code produces the following output:

             Using SelectMany():
             Scruffy
             Sam
             Walker
             Sugar
             Scratches
             Diesel

             Using Select():
             Scruffy
             Sam

             Walker
             Sugar

             Scratches
             Diesel
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SelectMany 重载
System.Linq 命名空间

其他资源

from 子句（C# 参考）
From 子句 (Visual Basic)


Enumerable ..::.SelectMany <(Of <(TSource, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32, IEnumerable <(Of <(TResult >)>) >)>))

Enumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
)
Enumerable 类

将序列的每个元素投影到 IEnumerable<(Of <(T>)>)，并将结果序列合并为一个序列。每个源元素的索引用于该元素的投影表。 将序列的每个元素投影到 IEnumerable<(Of <(T>)>)，并将结果序列合并为一个序列。每个源元素的索引用于该元素的投影表。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TResult) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Integer, IEnumerable(Of TResult)) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> SelectMany<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, int, IEnumerable<TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IEnumerable<TResult>^ SelectMany(
    IEnumerable<TSource>^ source,
    Func<TSource, int, IEnumerable<TResult>^>^ selector
)
static member SelectMany :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int, IEnumerable<'TResult>> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的序列元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)

一个应用于每个源元素的转换函数；函数的第二个参数表示源元素的索引。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素是对输入序列的每个元素调用一对多转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 方法枚举输入序列，使用转换函数将每个元素映射到 IEnumerable<(Of <(T>)>)，然后枚举并生成每个这种 IEnumerable<(Of <(T>)>) 对象的元素。也就是说，对于 source 的每个元素，selector 被调用，返回一个值的序列。然后 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 将集合的此二维集合合并为一维 IEnumerable<(Of <(T>)>) 并将其返回。例如，如果查询使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 获取数据库中每个使用方的顺序（类型为 Order），结果属于 C# 中的 IEnumerable<Order> 类型或 Visual Basic 中的 IEnumerable(Of Order) 类型。而如果查询使用了 Select 获取顺序，则未合并顺序集合的集合，并且结果属于 C# 中的 IEnumerable<List<Order>> 类型或 Visual Basic 中的 IEnumerable(Of List(Of Order)) 类型。

selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。 selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。 selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。 selector 的第一个参数表示要处理的元素。selector 的第二个参数表示源序列中的该元素的从零开始的索引。如果已知元素的排列顺序，这将很有用，例如，您想要处理位于特定索引处的元素。如果您想要检索一个或更多元素的索引，这也很有用。

下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 在数组上执行一对多的投影并使用每个外部元素的索引。

Structure PetOwner
    Public Name As String
    Public Pets() As String
End Structure

Sub SelectManyEx2()
    ' Create an array of PetOwner objects.
    Dim petOwners() As PetOwner = _
        {New PetOwner With _
         {.Name = "Higa, Sidney", .Pets = New String() {"Scruffy", "Sam"}}, _
         New PetOwner With _
         {.Name = "Ashkenazi, Ronen", .Pets = New String() {"Walker", "Sugar"}}, _
         New PetOwner With _
         {.Name = "Price, Vernette", .Pets = New String() {"Scratches", "Diesel"}}, _
         New PetOwner With _
         {.Name = "Hines, Patrick", .Pets = New String() {"Dusty"}}}

    ' Project the items in the array by appending the index
    ' of each PetOwner to each pet's name in that petOwner's
    ' array of pets.
    Dim query As IEnumerable(Of String) = _
        petOwners.SelectMany(Function(petOwner, index) _
                                 petOwner.Pets.Select(Function(pet) _
                                                          index.ToString() + pet))

    Dim output As New System.Text.StringBuilder
    For Each pet As String In query
        output.AppendLine(pet)
    Next

    ' Display the output.
    MsgBox(output.ToString())
End Sub

            class PetOwner
            {
                public string Name { get; set; }
                public List<string> Pets { get; set; }
            }

            public static void SelectManyEx2()
            {
                PetOwner[] petOwners =
                    { new PetOwner { Name="Higa, Sidney",
                          Pets = new List<string>{ "Scruffy", "Sam" } },
                      new PetOwner { Name="Ashkenazi, Ronen",
                          Pets = new List<string>{ "Walker", "Sugar" } },
                      new PetOwner { Name="Price, Vernette",
                          Pets = new List<string>{ "Scratches", "Diesel" } },
                      new PetOwner { Name="Hines, Patrick",
                          Pets = new List<string>{ "Dusty" } } };

                // Project the items in the array by appending the index
                // of each PetOwner to each pet's name in that petOwner's
                // array of pets.
                IEnumerable<string> query =
                    petOwners.SelectMany((petOwner, index) =>
                                             petOwner.Pets.Select(pet => index + pet));

                foreach (string pet in query)
                {
                    Console.WriteLine(pet);
                }
            }

            // This code produces the following output:
            //
            // 0Scruffy
            // 0Sam
            // 1Walker
            // 1Sugar
            // 2Scratches
            // 2Diesel
            // 3Dusty

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SelectMany 重载
System.Linq 命名空间


Enumerable ..::.SelectMany <(Of <(TSource, TCollection, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, IEnumerable <(Of <(TCollection >)>) >)>), Func <(Of <(TSource, TCollection, TResult >)>))

Enumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
, Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
)
Enumerable 类

将序列的每个元素投影到 IEnumerable<(Of <(T>)>)，并将结果序列合并为一个序列，并对其中每个元素调用结果选择器函数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TCollection, TResult) ( _
    source As IEnumerable(Of TSource), _
    collectionSelector As Func(Of TSource, IEnumerable(Of TCollection)), _
    resultSelector As Func(Of TSource, TCollection, TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, IEnumerable<TCollection>> collectionSelector,
    Func<TSource, TCollection, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TCollection, typename TResult>
static IEnumerable<TResult>^ SelectMany(
    IEnumerable<TSource>^ source,
    Func<TSource, IEnumerable<TCollection>^>^ collectionSelector,
    Func<TSource, TCollection, TResult>^ resultSelector
)
static member SelectMany :
        source:IEnumerable<'TSource> *
        collectionSelector:Func<'TSource, IEnumerable<'TCollection>> *
        resultSelector:Func<'TSource, 'TCollection, 'TResult> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TCollection

collectionSelector 收集的中间元素的类型。

TResult

结果序列的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
collectionSelector
类型： System Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)

一个应用于输入序列的每个元素的转换函数。
resultSelector
类型： System Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)

一个应用于中间序列的每个元素的转换函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素是对 source 的每个元素调用一对多转换函数 collectionSelector，然后将那些序列元素中的每一个及其相应的源元素映射为结果元素的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 collectionSelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。 如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。 如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。 如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。

在查询表达式语法中，初始子句后的每个 from 子句 (Visual C#) 或 From 子句 (Visual Basic) 转换为 SelectMany 的调用。

下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 在数组上执行一对多投影，并使用结果选择器函数将源序列中的每个相应元素保持在范围中，以最后调用 Select。

    Structure PetOwner
        Public Name As String
        Public Pets() As String
    End Structure

    Sub SelectManyEx3()
        ' Create an array of PetOwner objects.
        Dim petOwners() As PetOwner = _
            {New PetOwner With _
             {.Name = "Higa", .Pets = New String() {"Scruffy", "Sam"}}, _
             New PetOwner With _
             {.Name = "Ashkenazi", .Pets = New String() {"Walker", "Sugar"}}, _
             New PetOwner With _
             {.Name = "Price", .Pets = New String() {"Scratches", "Diesel"}}, _
             New PetOwner With _
             {.Name = "Hines", .Pets = New String() {"Dusty"}}}

        ' Project an anonymous type that consists of
        ' the owner's name and the pet's name (string).
        Dim query = _
            petOwners _
            .SelectMany( _
                Function(petOwner) petOwner.Pets, _
                Function(petOwner, petName) New With {petOwner, petName}) _
            .Where(Function(ownerAndPet) ownerAndPet.petName.StartsWith("S")) _
            .Select(Function(ownerAndPet) _
                   New With {.Owner = ownerAndPet.petOwner.Name, _
                             .Pet = ownerAndPet.petName _
                   })

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(String.Format("Owner={0}, Pet={1}", obj.Owner, obj.Pet))
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Owner=Higa, Pet=Scruffy
    ' Owner=Higa, Pet=Sam
    ' Owner=Ashkenazi, Pet=Sugar
    ' Owner=Price, Pet=Scratches

            class PetOwner
            {
                public string Name { get; set; }
                public List<string> Pets { get; set; }
            }

            public static void SelectManyEx3()
            {
                PetOwner[] petOwners =
                    { new PetOwner { Name="Higa",
                          Pets = new List<string>{ "Scruffy", "Sam" } },
                      new PetOwner { Name="Ashkenazi",
                          Pets = new List<string>{ "Walker", "Sugar" } },
                      new PetOwner { Name="Price",
                          Pets = new List<string>{ "Scratches", "Diesel" } },
                      new PetOwner { Name="Hines",
                          Pets = new List<string>{ "Dusty" } } };

                // Project the pet owner's name and the pet's name.
                var query =
                    petOwners
                    .SelectMany(petOwner => petOwner.Pets, (petOwner, petName) => new { petOwner, petName })
                    .Where(ownerAndPet => ownerAndPet.petName.StartsWith("S"))
                    .Select(ownerAndPet =>
                            new
                            {
                                Owner = ownerAndPet.petOwner.Name,
                                Pet = ownerAndPet.petName
                            }
                    );

                // Print the results.
                foreach (var obj in query)
                {
                    Console.WriteLine(obj);
                }
            }

            // This code produces the following output:
            //
            // {Owner=Higa, Pet=Scruffy}
            // {Owner=Higa, Pet=Sam}
            // {Owner=Ashkenazi, Pet=Sugar}
            // {Owner=Price, Pet=Scratches}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SelectMany 重载
System.Linq 命名空间

其他资源

from 子句（C# 参考）
From 子句 (Visual Basic)


Enumerable ..::.SelectMany <(Of <(TSource, TCollection, TResult >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32, IEnumerable <(Of <(TCollection >)>) >)>), Func <(Of <(TSource, TCollection, TResult >)>))

Enumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
, Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
)
Enumerable 类

将序列的每个元素投影到 IEnumerable<(Of <(T>)>)，并将结果序列合并为一个序列，并对其中每个元素调用结果选择器函数。每个源元素的索引用于该元素的中间投影表。 将序列的每个元素投影到 IEnumerable<(Of <(T>)>)，并将结果序列合并为一个序列，并对其中每个元素调用结果选择器函数。每个源元素的索引用于该元素的中间投影表。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TCollection, TResult) ( _
    source As IEnumerable(Of TSource), _
    collectionSelector As Func(Of TSource, Integer, IEnumerable(Of TCollection)), _
    resultSelector As Func(Of TSource, TCollection, TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
    Func<TSource, TCollection, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TCollection, typename TResult>
static IEnumerable<TResult>^ SelectMany(
    IEnumerable<TSource>^ source,
    Func<TSource, int, IEnumerable<TCollection>^>^ collectionSelector,
    Func<TSource, TCollection, TResult>^ resultSelector
)
static member SelectMany :
        source:IEnumerable<'TSource> *
        collectionSelector:Func<'TSource, int, IEnumerable<'TCollection>> *
        resultSelector:Func<'TSource, 'TCollection, 'TResult> -> IEnumerable<'TResult>

类型参数

TSource

source 中的元素的类型。

TCollection

collectionSelector 收集的中间元素的类型。

TResult

结果序列的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
collectionSelector
类型： System Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)

一个应用于每个源元素的转换函数；函数的第二个参数表示源元素的索引。
resultSelector
类型： System Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)

一个应用于中间序列的每个元素的转换函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素是对 source 的每个元素调用一对多转换函数 collectionSelector，然后将那些序列元素中的每一个及其相应的源元素映射为结果元素的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 collectionSelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。 如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。 如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。 如果必须确保调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 后生成的 source 的元素保持在查询逻辑范围中，SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>)) 方法将非常有用。有关代码示例的信息，请参见“示例”部分。如果 TSource 类型的对象和 TCollection 类型的对象之间存在双向关系，也就是说，如果 TCollection 类型的对象提供了获取生成该属性的 TSource 对象的属性，则不需要重载 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>), Func<(Of <(TSource, TCollection, TResult>)>))。而可以使用 SelectMany<(Of <(TSource, TResult>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)) 并通过 TCollection 对象向后定位到 TSource 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SelectMany 重载
System.Linq 命名空间


Enumerable ..::.SequenceEqual 方法

Enumerable
.
.
::
.
SequenceEqual 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

根据相等比较器确定两个序列是否相等。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用相应类型的默认相等比较器对序列的元素进行比较，以确定两个序列是否相等。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource) _
) As Boolean
public static bool SequenceEqual<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second
)
static member SequenceEqual :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> -> bool

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个用于比较 second 的 IEnumerable<(Of <(T>)>)。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，用于与第一个序列进行比较。

返回值

类型： System Boolean
如果根据相应类型的默认相等比较器，两个源序列的长度相等，且其相应元素相等，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法枚举两个并行源序列，并使用用于 TSource, Default 的默认相等比较器对相应的元素进行比较。默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法枚举两个并行源序列，并使用用于 TSource, Default 的默认相等比较器对相应的元素进行比较。默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法枚举两个并行源序列，并使用用于 TSource, Default 的默认相等比较器对相应的元素进行比较。默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。

下面的代码示例演示如何使用 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 确定两个序列是否相等。在前两个示例中，方法决定比较的序列是否包含对同一对象的引用。在第三个和第四个示例中，方法比较序列内对象的实际数据。 下面的代码示例演示如何使用 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 确定两个序列是否相等。在前两个示例中，方法决定比较的序列是否包含对同一对象的引用。在第三个和第四个示例中，方法比较序列内对象的实际数据。 下面的代码示例演示如何使用 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 确定两个序列是否相等。在前两个示例中，方法决定比较的序列是否包含对同一对象的引用。在第三个和第四个示例中，方法比较序列内对象的实际数据。

在本示例中，这两个序列相等。

    Class Pet
        Public Name As String
        Public Age As Integer
    End Class

    Sub SequenceEqualEx1()
        ' Create two Pet objects.
        Dim pet1 As New Pet With {.Name = "Turbo", .Age = 2}
        Dim pet2 As New Pet With {.Name = "Peanut", .Age = 8}

        ' Create two lists of pets.
        Dim pets1 As New List(Of Pet)(New Pet() {pet1, pet2})
        Dim pets2 As New List(Of Pet)(New Pet() {pet1, pet2})

        'Determine if the two lists are equal.
        Dim equal As Boolean = pets1.SequenceEqual(pets2)

        ' Display the output.
        Dim text As String = IIf(equal, "are", "are not")
        MsgBox("The lists " & text & " equal.")

    End Sub

    ' This code produces the following output:
    '
    ' The lists are equal.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void SequenceEqualEx1()
            {
                Pet pet1 = new Pet { Name = "Turbo", Age = 2 };
                Pet pet2 = new Pet { Name = "Peanut", Age = 8 };

                // Create two lists of pets.
                List<Pet> pets1 = new List<Pet> { pet1, pet2 };
                List<Pet> pets2 = new List<Pet> { pet1, pet2 };

                bool equal = pets1.SequenceEqual(pets2);

                Console.WriteLine(
                    "The lists {0} equal.",
                    equal ? "are" : "are not");
            }

            /*
             This code produces the following output:

             The lists are equal.
            */

下面的代码示例比较两个不相等的序列。请注意，序列包含完全相同的数据，但因为它们包含的对象具有不同的引用，该序列不会被视为相等。 下面的代码示例比较两个不相等的序列。请注意，序列包含完全相同的数据，但因为它们包含的对象具有不同的引用，该序列不会被视为相等。

        ' Create two Pet objects.
        Dim pet1 As New Pet With {.Name = "Turbo", .Age = 2}
        Dim pet2 As New Pet With {.Name = "Peanut", .Age = 8}

        ' Create two lists of pets.
        Dim pets1 As New List(Of Pet)()
        pets1.Add(pet1)
        pets1.Add(pet2)

        Dim pets2 As New List(Of Pet)()
        pets2.Add(New Pet With {.Name = "Turbo", .Age = 2})
        pets2.Add(New Pet With {.Name = "Peanut", .Age = 8})

        ' Determine if the two lists are equal.
        Dim equal As Boolean = pets1.SequenceEqual(pets2)

        ' Display the output.
        Dim text As String = IIf(equal, "are", "are not")
        MsgBox("The lists " & text & " equal.")

        ' This code produces the following output:
        '
        ' The lists are not equal.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void SequenceEqualEx2()
            {
                Pet pet1 = new Pet() { Name = "Turbo", Age = 2 };
                Pet pet2 = new Pet() { Name = "Peanut", Age = 8 };

                // Create two lists of pets.
                List<Pet> pets1 = new List<Pet> { pet1, pet2 };
                List<Pet> pets2 =
                    new List<Pet> { new Pet { Name = "Turbo", Age = 2 },
                                    new Pet { Name = "Peanut", Age = 8 } };

                bool equal = pets1.SequenceEqual(pets2);

                Console.WriteLine("The lists {0} equal.", equal ? "are" : "are not");
            }

            /*
             This code produces the following output:

             The lists are not equal.
            */

如果要比较实际的数据，而不是只比较它们的引用序列中的对象，则必须在您的类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。 如果要比较实际的数据，而不是只比较它们的引用序列中的对象，则必须在您的类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。

Public Class Product
    Implements IEquatable(Of Product)

    Public Property Name As String
    Public Property Code As Integer

    Public Function Equals1(
        ByVal other As Product
        ) As Boolean Implements IEquatable(Of Product).Equals

        ' Check whether the compared object is null.
        If other Is Nothing Then Return False

        ' Check whether the compared object references the same data.
        If Me Is Other Then Return True

        ' Check whether the products' properties are equal.
        Return Code.Equals(other.Code) AndAlso Name.Equals(other.Name)
    End Function

    Public Overrides Function GetHashCode() As Integer

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName = If(Name Is Nothing, 0, Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product : IEquatable<Product>
{
    public string Name { get; set; }
    public int Code { get; set; }

    public bool Equals(Product other)
    {

        //Check whether the compared object is null.
        if (Object.ReferenceEquals(other, null)) return false;

        //Check whether the compared object references the same data.
        if (Object.ReferenceEquals(this, other)) return true;

        //Check whether the products' properties are equal.
        return Code.Equals(other.Code) && Name.Equals(other.Name);
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public override int GetHashCode()
    {

        //Get hash code for the Name field if it is not null.
        int hashProductName = Name == null ? 0 : Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }
}

实现此接口后，您可以使用 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法中 Product 对象的序列，如下面的示例所示。

Dim storeA() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim storeB() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim equalAB = storeA.SequenceEqual(storeB)

Console.WriteLine("Equal? " & equalAB)

' This code produces the following output:

' Equal? True

        Product[] storeA = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 } };

        Product[] storeB = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 } };

        bool equalAB = storeA.SequenceEqual(storeB);

        Console.WriteLine("Equal? " + equalAB);

        /*
            This code produces the following output:

            Equal? True
        */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SequenceEqual 重载
System.Linq 命名空间


Enumerable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Enumerable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

使用指定的 IEqualityComparer<(Of <(T>)>) 对两个序列的元素进行比较，以确定序列是否相等。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
public static bool SequenceEqual<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member SequenceEqual :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个用于比较 second 的 IEnumerable<(Of <(T>)>)。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，用于与第一个序列进行比较。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

一个用于比较元素的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System Boolean
如果根据 comparer，两个源序列的长度相等，且其相应元素相等，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source具有多个元素。

SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法枚举两个并行源序列，并使用指定的 IEqualityComparer<(Of <(T>)>) 对相应的元素进行比较。如果 ccomparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对元素进行比较。 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法枚举两个并行源序列，并使用指定的 IEqualityComparer<(Of <(T>)>) 对相应的元素进行比较。如果 ccomparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对元素进行比较。

下面的示例演示如何实现可以在 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法中使用的相等比较器。

Public Class Product
    Public Property Name As String
    Public Property Code As Integer
End Class

' Custom comparer for the Product class
Public Class ProductComparer
    Implements IEqualityComparer(Of Product)

    Public Function Equals1(
        ByVal x As Product,
        ByVal y As Product
        ) As Boolean Implements IEqualityComparer(Of Product).Equals

        ' Check whether the compared objects reference the same data.
        If x Is y Then Return True

        'Check whether any of the compared objects is null.
        If x Is Nothing OrElse y Is Nothing Then Return False

        ' Check whether the products' properties are equal.
        Return (x.Code = y.Code) AndAlso (x.Name = y.Name)
    End Function

    Public Function GetHashCode1(
        ByVal product As Product
        ) As Integer Implements IEqualityComparer(Of Product).GetHashCode

        ' Check whether the object is null.
        If product Is Nothing Then Return 0

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName =
            If(product.Name Is Nothing, 0, product.Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = product.Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}

实现此比较器后，您可以使用 SequenceEqual<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法中 Product 对象的序列，如下面的示例所示。

Dim storeA() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim storeB() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim equalAB = storeA.SequenceEqual(storeB, New ProductComparer())

Console.WriteLine("Equal? " & equalAB)

' This code produces the following output:

' Equal? True

        Product[] storeA = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 } };

        Product[] storeB = { new Product { Name = "apple", Code = 9 },
                               new Product { Name = "orange", Code = 4 } };

        bool equalAB = storeA.SequenceEqual(storeB, new ProductComparer());

        Console.WriteLine("Equal? " + equalAB);

        /*
            This code produces the following output:

            Equal? True
        */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SequenceEqual 重载
System.Linq 命名空间


Enumerable ..::.Single 方法

Enumerable
.
.
::
.
Single 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回值序列的单个特定元素。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Single <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Single
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列的唯一元素；如果该序列并非恰好包含一个元素，则会引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Single(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource Single<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Single(
    IEnumerable<TSource>^ source
)
static member Single :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，用于返回单个元素。

返回值

类型：TSource
输入序列的单个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 输入序列包含多个元素。 - 或 - 输入序列为空。

如果输入序列为空，则 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法引发异常。要在输入序列为空时改为返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用 SingleOrDefault。 如果输入序列为空，则 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法引发异常。要在输入序列为空时改为返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用 SingleOrDefault。

下面的代码示例演示如何使用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 选择数组的唯一元素。

' Create an array that contains one item.
Dim fruits1() As String = {"orange"}

' Get the single item in the array.
Dim result As String = fruits1.Single()

' Display the result.
MsgBox("First query: " & result)

            string[] fruits1 = { "orange" };

            string fruit1 = fruits1.Single();

            Console.WriteLine(fruit1);

            /*
             This code produces the following output:

             orange
            */

下面的代码示例演示当序列并不恰好包含一个元素时 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 将引发异常。

        ' Create an array that contains two items.
        Dim fruits2() As String = {"orange", "apple"}

        result = String.Empty

        ' Try to get the 'single' item in the array.
        Try
            result = fruits2.Single()
        Catch ex As System.InvalidOperationException
            result = "The collection does not contain exactly one element."
        End Try

        ' Display the result.
        MsgBox("Second query: " & result)

        ' This code produces the following output:
        '
        ' First query: orange
        ' Second query: The collection does not contain exactly one element.

            string[] fruits2 = { "orange", "apple" };
            string fruit2 = null;

            try
            {
                fruit2 = fruits2.Single();
            }
            catch (System.InvalidOperationException)
            {
                Console.WriteLine("The collection does not contain exactly one element.");
            }

            Console.WriteLine(fruit2);

            /*
             This code produces the following output:

             The collection does not contain exactly one element.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Single 重载
System.Linq 命名空间


Enumerable ..::.Single <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
Single
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回序列中满足指定条件的唯一元素；如果有多个这样的元素存在，则会引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Single(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource Single<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Single(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Single :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回单个元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试元素是否满足条件的函数。

返回值

类型：TSource
输入序列中满足条件的单个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 没有元素满足 predicate 中的条件。 - 或 - 多个元素满足 predicate 中的条件。 - 或 - 源序列为空。

如果输入序列中不包含任何匹配元素，则 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法将引发异常。要在无法找到匹配元素时改为返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用 SingleOrDefault。 如果输入序列中不包含任何匹配元素，则 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法将引发异常。要在无法找到匹配元素时改为返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用 SingleOrDefault。

下面的代码示例演示如何使用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 选择数组中满足条件的唯一元素。

' Create an array of strings.
Dim fruits() As String = _
    {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Get the single item in the array whose length is greater than 10.
Dim result As String = _
    fruits.Single(Function(fruit) fruit.Length > 10)

' Display the result.
MsgBox("First query: " & result)

            string[] fruits = { "apple", "banana", "mango",
                                  "orange", "passionfruit", "grape" };

            string fruit1 = fruits.Single(fruit => fruit.Length > 10);

            Console.WriteLine(fruit1);

            /*
             This code produces the following output:

             passionfruit
            */

下面的代码示例演示序列不是恰好包含一个满足条件的元素时 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 将引发异常。

        result = String.Empty

        ' Try to get the single item in the array whose length is > 15.
        Try
            result = fruits.Single(Function(fruit) _
                                       fruit.Length > 15)
        Catch ex As System.InvalidOperationException
            result = "There is not EXACTLY ONE element whose length is > 15."
        End Try

        ' Display the result.
        MsgBox("Second query: " & result)

        ' This code produces the following output:
        '
        ' First query: passionfruit
        ' Second query: There is not EXACTLY ONE element whose length is > 15.

            string fruit2 = null;

            try
            {
                fruit2 = fruits.Single(fruit => fruit.Length > 15);
            }
            catch (System.InvalidOperationException)
            {
                Console.WriteLine(@"The collection does not contain exactly
                                one element whose length is greater than 15.");
            }

            Console.WriteLine(fruit2);

            // This code produces the following output:
            //
            // The collection does not contain exactly
            // one element whose length is greater than 15.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Single 重载
System.Linq 命名空间


Enumerable ..::.SingleOrDefault 方法

Enumerable
.
.
::
.
SingleOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

返回值序列的单个特定元素；如果未找到此类元素，则返回默认值。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.SingleOrDefault <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
SingleOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

返回序列中的唯一元素；如果该序列为空，则返回默认值；如果该序列包含多个元素，此方法将引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SingleOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource
public static TSource SingleOrDefault<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource SingleOrDefault(
    IEnumerable<TSource>^ source
)
static member SingleOrDefault :
        source:IEnumerable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的 IEnumerable<(Of <(T>)>)。

返回值

类型：TSource
返回输入序列的单个元素；如果序列不包含任何元素，则返回 default(TSource)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 输入序列包含多个元素。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SingleOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法。 SingleOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法。

下面的代码示例演示如何使用 SingleOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 选择数组的唯一元素。

' Create an array that contains one item.
Dim fruits1() As String = {"orange"}

' Get the single item in the array or else a default value.
Dim result As String = fruits1.SingleOrDefault()

' Display the result.
MsgBox("First array: " & result)

            string[] fruits1 = { "orange" };

            string fruit1 = fruits1.SingleOrDefault();

            Console.WriteLine(fruit1);

            /*
             This code produces the following output:

             orange
            */

下面的代码示例演示当序列不是恰好包含一个元素时 SingleOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 将返回默认值。

        ' Create an empty array.
        Dim fruits2() As String = {}

        result = String.Empty

        ' Get the single item in the array or else a default value.
        result = fruits2.SingleOrDefault()

        ' Display the result.
        Dim output As String = _
            IIf(String.IsNullOrEmpty(result), "No single item found", result)
        MsgBox("Second array: " & output)

        ' This code produces the following output:
        '
        ' First array: orange
        ' Second array: No single item found

            string[] fruits2 = { };

            string fruit2 = fruits2.SingleOrDefault();

            Console.WriteLine(
                String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

            /*
             This code produces the following output:

             No such string!
            */

如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询执行完成之后，检查第一个结果变量是否为不需要的默认值。通过使用 DefaultIfEmpty<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。

        Dim pageNumbers() As Integer = {}

        ' Setting the default value to 1 after the query.
        Dim pageNumber1 As Integer = pageNumbers.SingleOrDefault()
        If pageNumber1 = 0 Then
            pageNumber1 = 1
        End If
        MsgBox(String.Format("The value of the pageNumber1 variable is {0}", pageNumber1))

        ' Setting the default value to 1 by using DefaultIfEmpty() in the query.
        Dim pageNumber2 As Integer = pageNumbers.DefaultIfEmpty(1).Single()
        MsgBox(String.Format("The value of the pageNumber2 variable is {0}", pageNumber2))

        ' This code produces the following output:

        ' The value of the pageNumber1 variable is 1
        ' The value of the pageNumber2 variable is 1

            int[] pageNumbers = { };

            // Setting the default value to 1 after the query.
            int pageNumber1 = pageNumbers.SingleOrDefault();
            if (pageNumber1 == 0)
            {
                pageNumber1 = 1;
            }
            Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);

            // Setting the default value to 1 by using DefaultIfEmpty() in the query.
            int pageNumber2 = pageNumbers.DefaultIfEmpty(1).Single();
            Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);

            /*
             This code produces the following output:

             The value of the pageNumber1 variable is 1
             The value of the pageNumber2 variable is 1
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SingleOrDefault 重载
System.Linq 命名空间


Enumerable ..::.SingleOrDefault <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
SingleOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

返回序列中满足指定条件的唯一元素；如果这类元素不存在，则返回默认值；如果有多个元素满足该条件，此方法将引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SingleOrDefault(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource SingleOrDefault<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource SingleOrDefault(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member SingleOrDefault :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回单个元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试元素是否满足条件的函数。

返回值

类型：TSource
如果未找到这样的元素，则返回输入序列中满足条件的单个元素或 default (TSource)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

引用和可以为 null 的类型的默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何使用 SingleOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 选择数组中满足条件的唯一元素。

' Create an array of strings.
Dim fruits() As String = _
    {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Get the single item in the array whose length is > 10.
Dim fruit1 As String = _
    fruits.SingleOrDefault(Function(fruit) fruit.Length > 10)

' Display the result.
MsgBox("First array: " & fruit1)

            string[] fruits = { "apple", "banana", "mango",
                                  "orange", "passionfruit", "grape" };

            string fruit1 = fruits.SingleOrDefault(fruit => fruit.Length > 10);

            Console.WriteLine(fruit1);

            /*
             This code produces the following output:

             passionfruit
            */

下面的代码示例演示序列不是恰好包含一个满足条件的元素时 SingleOrDefault<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 将返回默认值。

        ' Get the single item in the array whose length is > 15.
        Dim fruit2 As String = _
            fruits.SingleOrDefault(Function(fruit) fruit.Length > 15)

        ' Display the result.
        Dim output As String = _
            IIf(String.IsNullOrEmpty(fruit2), "No single item found", fruit2)
        MsgBox("Second array: " & output)

        ' This code produces the following output:
        '
        ' First array: passionfruit
        ' Second array: No single item found

            string fruit2 =
                fruits.SingleOrDefault(fruit => fruit.Length > 15);

            Console.WriteLine(
                String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

            /*
             This code produces the following output:

             No such string!
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SingleOrDefault 重载
System.Linq 命名空间


Enumerable ..::.Skip <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
Skip
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

跳过序列中指定数量的元素，然后返回剩余的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Skip(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    count As Integer _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Skip<TSource>(
    this IEnumerable<TSource> source,
    int count
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Skip(
    IEnumerable<TSource>^ source,
    int count
)
static member Skip :
        source:IEnumerable<'TSource> *
        count:int -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
count
类型： System Int32
返回剩余元素前要跳过的元素数量。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中指定索引后出现的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

如果 source 包含的元素数少于 count，则返回一个空 IEnumerable<(Of <(T>)>)。如果 count 小于或等于零，则生成 source 的所有元素。 如果 source 包含的元素数少于 count，则返回一个空 IEnumerable<(Of <(T>)>)。如果 count 小于或等于零，则生成 source 的所有元素。

Take<(Of <(TSource>)>) 和 Skip<(Of <(TSource>)>) 方法在功能上补充。如果给定一个序列 coll 和一个整数 n，则连接 coll.Take(n) 和 coll.Skip(n) 的结果会生成与 coll 相同的序列。 Take<(Of <(TSource>)>) 和 Skip<(Of <(TSource>)>) 方法在功能上补充。如果给定一个序列 coll 和一个整数 n，则连接 coll.Take(n) 和 coll.Skip(n) 的结果会生成与 coll 相同的序列。

在 Visual Basic 查询表达式语法中，Skip 子句转换为 Skip<(Of <(TSource>)>) 的一个调用。

下面的代码示例演示如何使用 Skip<(Of <(TSource>)>) 跳过排序数组中指定的元素数目，并返回剩余元素。

        ' Create an array of integers that represent grades.
        Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

        ' Sort the numbers in descending order and
        ' get all but the first (largest) three numbers.
        Dim lowerGrades As IEnumerable(Of Integer) = _
            grades _
            .OrderByDescending(Function(g) g) _
            .Skip(3)

        ' Display the results.
        Dim output As New System.Text.StringBuilder("All grades except the top three are:" & vbCrLf)
        For Each grade As Integer In lowerGrades
            output.AppendLine(grade)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' All grades except the top three are:
        ' 82
        ' 70
        ' 59
        ' 56

            int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

            IEnumerable<int> lowerGrades =
                grades.OrderByDescending(g => g).Skip(3);

            Console.WriteLine("All grades except the top three are:");
            foreach (int grade in lowerGrades)
            {
                Console.WriteLine(grade);
            }

            /*
             This code produces the following output:

             All grades except the top three are:
             82
             70
             59
             56
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间

其他资源

Skip 子句 (Visual Basic)


Enumerable ..::.SkipWhile 方法

Enumerable
.
.
::
.
SkipWhile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.SkipWhile <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
SkipWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SkipWhile(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> SkipWhile<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ SkipWhile(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member SkipWhile :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中的元素，该输入序列从线性系列中没有通过 predicate 指定测试的第一个元素开始。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

通过使用延迟执行实现 SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 通过使用延迟执行实现 SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 通过使用延迟执行实现 SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

此方法使用 predicate 测试 source 的每个元素，如果结果为 true，则跳过该元素。谓词函数针对一个元素返回 false 后，则生成该元素及 source 中的剩余元素，并且不再调用 predicate。 此方法使用 predicate 测试 source 的每个元素，如果结果为 true，则跳过该元素。谓词函数针对一个元素返回 false 后，则生成该元素及 source 中的剩余元素，并且不再调用 predicate。

如果 predicate 为序列中的所有元素返回 true，则返回一个空 IEnumerable<(Of <(T>)>)。

TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。 TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。

在 Visual Basic 查询表达式语法中，Skip While 子句转换为 SkipWhile 的一个调用。

下面的代码示例演示如何使用 SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 在条件为 true 的情况下跳过数组的元素。

        ' Create an array of integers that represent grades.
        Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

        ' Sort the grades in descending order and
        ' get all grades greater less than 80.
        Dim lowerGrades As IEnumerable(Of Integer) = _
            grades _
            .OrderByDescending(Function(grade) grade) _
            .SkipWhile(Function(grade) grade >= 80)

        ' Display the results.
        Dim output As New System.Text.StringBuilder("All grades below 80:" & vbCrLf)
        For Each grade As Integer In lowerGrades
            output.AppendLine(grade)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' All grades below 80:
        ' 70
        ' 59
        ' 56

            int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

            IEnumerable<int> lowerGrades =
                grades
                .OrderByDescending(grade => grade)
                .SkipWhile(grade => grade >= 80);

            Console.WriteLine("All grades below 80:");
            foreach (int grade in lowerGrades)
            {
                Console.WriteLine(grade);
            }

            /*
             This code produces the following output:

             All grades below 80:
             70
             59
             56
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SkipWhile 重载
System.Linq 命名空间

其他资源

Skip While 子句 (Visual Basic)


Enumerable ..::.SkipWhile <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32, Boolean >)>))

Enumerable
.
.
::
.
SkipWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
)
Enumerable 类

只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。将在谓词函数的逻辑中使用元素的索引。 只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。将在谓词函数的逻辑中使用元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SkipWhile(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Integer, Boolean) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> SkipWhile<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ SkipWhile(
    IEnumerable<TSource>^ source,
    Func<TSource, int, bool>^ predicate
)
static member SkipWhile :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, int, bool> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)

用于测试每个源元素是否满足条件的函数；该函数的第二个参数表示源元素的索引。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中的元素，该输入序列从线性系列中没有通过 predicate 指定测试的第一个元素开始。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 方法使用 predicate 测试 source 的每个元素，如果结果为 true，则跳过该元素。谓词函数针对一个元素返回 false 后，则生成该元素及 source 中的剩余元素，并且不再调用 predicate。 SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 方法使用 predicate 测试 source 的每个元素，如果结果为 true，则跳过该元素。谓词函数针对一个元素返回 false 后，则生成该元素及 source 中的剩余元素，并且不再调用 predicate。

如果 predicate 为序列中的所有元素返回 true，则返回一个空 IEnumerable<(Of <(T>)>)。

predicate 的第一个参数表示要测试的元素。第二个参数表示 source 中元素的从零开始的索引。 predicate 的第一个参数表示要测试的元素。第二个参数表示 source 中元素的从零开始的索引。

TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。 TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。

在 Visual Basic 查询表达式语法中，Skip While 子句转换为 SkipWhile 的一个调用。

下面的代码示例演示如何使用 SkipWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 在满足取决于元素索引的条件时跳过数组的元素。

        ' Create an array of integers.
        Dim amounts() As Integer = _
            {5000, 2500, 9000, 8000, 6500, 4000, 1500, 5500}

        ' Skip items in the array whose value is greater than
        ' the item's index times 1000; get the remaining items.
        Dim query As IEnumerable(Of Integer) = _
            amounts.SkipWhile(Function(amount, index) _
                                  amount > index * 1000)

        ' Output the results.
        Dim output As New System.Text.StringBuilder
        For Each amount As Integer In query
            output.AppendLine(amount)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 4000
        ' 1500
        ' 5500

            int[] amounts = { 5000, 2500, 9000, 8000,
                                6500, 4000, 1500, 5500 };

            IEnumerable<int> query =
                amounts.SkipWhile((amount, index) => amount > index * 1000);

            foreach (int amount in query)
            {
                Console.WriteLine(amount);
            }

            /*
             This code produces the following output:

             4000
             1500
             5500
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
SkipWhile 重载
System.Linq 命名空间

其他资源

Skip While 子句 (Visual Basic)


Enumerable ..::.Sum 方法

Enumerable
.
.
::
.
Sum 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

计算数值序列之和。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Decimal >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Decimal
>
)
>
)
)
Enumerable 类

计算 Decimal 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Decimal) _
) As Decimal
public static decimal Sum(
    this IEnumerable<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Sum(
    IEnumerable<Decimal>^ source
)
static member Sum :
        source:IEnumerable<decimal> -> decimal

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Decimal
>
)
>
)

一个要计算和的 Decimal 值序列。

返回值

类型： System Decimal
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 不包含任何元素，则 Sum(IEnumerable<(Of <(Decimal>)>)) 方法返回零。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Single>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Single values.
        Dim numbers As New List(Of Single)(New Single() _
                                           {43.68F, 1.25F, 583.7F, 6.5F})

        ' Get the sum of values in the list.
        Dim sum As Single = numbers.Sum()

        ' Display the output.
        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:
        '
        ' The sum of the numbers is 635.13

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
             This code produces the following output:

             The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Decimal 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Sum(
    this IEnumerable<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Sum(
    IEnumerable<Nullable<Decimal>>^ source
)
static member Sum :
        source:IEnumerable<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Decimal 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

结果不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Single values.
        Dim points() As Nullable(Of Single) = _
            {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        ' Get the sum of values in the list.
        Dim sum As Nullable(Of Single) = points.Sum()

        ' Display the output.
        MsgBox("Total points earned: " & sum)

        ' This code produces the following output:
        '
        ' Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
             This code produces the following output:

             Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Double >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Double
>
)
>
)
)
Enumerable 类

计算 Double 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Double) _
) As Double
public static double Sum(
    this IEnumerable<double> source
)
[ExtensionAttribute]
public:
static double Sum(
    IEnumerable<double>^ source
)
static member Sum :
        source:IEnumerable<float> -> float

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Double
>
)
>
)

一个要计算和的 Double 值序列。

返回值

类型： System Double
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Single>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Single values.
        Dim numbers As New List(Of Single)(New Single() _
                                           {43.68F, 1.25F, 583.7F, 6.5F})

        ' Get the sum of values in the list.
        Dim sum As Single = numbers.Sum()

        ' Display the output.
        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:
        '
        ' The sum of the numbers is 635.13

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
             This code produces the following output:

             The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Double 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Sum(
    this IEnumerable<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Sum(
    IEnumerable<Nullable<double>>^ source
)
static member Sum :
        source:IEnumerable<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Double 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Single values.
        Dim points() As Nullable(Of Single) = _
            {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        ' Get the sum of values in the list.
        Dim sum As Nullable(Of Single) = points.Sum()

        ' Display the output.
        MsgBox("Total points earned: " & sum)

        ' This code produces the following output:
        '
        ' Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
             This code produces the following output:

             Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Int32 >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Int32
>
)
>
)
)
Enumerable 类

计算 Int32 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Integer) _
) As Integer
public static int Sum(
    this IEnumerable<int> source
)
[ExtensionAttribute]
public:
static int Sum(
    IEnumerable<int>^ source
)
static member Sum :
        source:IEnumerable<int> -> int

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int32
>
)
>
)

一个要计算和的 Int32 值序列。

返回值

类型： System Int32
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Single>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Single values.
        Dim numbers As New List(Of Single)(New Single() _
                                           {43.68F, 1.25F, 583.7F, 6.5F})

        ' Get the sum of values in the list.
        Dim sum As Single = numbers.Sum()

        ' Display the output.
        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:
        '
        ' The sum of the numbers is 635.13

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
             This code produces the following output:

             The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int32 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Sum(
    this IEnumerable<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Sum(
    IEnumerable<Nullable<int>>^ source
)
static member Sum :
        source:IEnumerable<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Int32 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Single values.
        Dim points() As Nullable(Of Single) = _
            {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        ' Get the sum of values in the list.
        Dim sum As Nullable(Of Single) = points.Sum()

        ' Display the output.
        MsgBox("Total points earned: " & sum)

        ' This code produces the following output:
        '
        ' Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
             This code produces the following output:

             Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Int64 >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Int64
>
)
>
)
)
Enumerable 类

计算 Int64 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Long) _
) As Long
public static long Sum(
    this IEnumerable<long> source
)
[ExtensionAttribute]
public:
static long long Sum(
    IEnumerable<long long>^ source
)
static member Sum :
        source:IEnumerable<int64> -> int64

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Int64
>
)
>
)

一个要计算和的 Int64 值序列。

返回值

类型： System Int64
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Single>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create a list of Single values.
        Dim numbers As New List(Of Single)(New Single() _
                                           {43.68F, 1.25F, 583.7F, 6.5F})

        ' Get the sum of values in the list.
        Dim sum As Single = numbers.Sum()

        ' Display the output.
        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:
        '
        ' The sum of the numbers is 635.13

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
             This code produces the following output:

             The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int64 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Sum(
    this IEnumerable<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Sum(
    IEnumerable<Nullable<long long>>^ source
)
static member Sum :
        source:IEnumerable<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Int64 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        ' Create an array of Nullable Single values.
        Dim points() As Nullable(Of Single) = _
            {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        ' Get the sum of values in the list.
        Dim sum As Nullable(Of Single) = points.Sum()

        ' Display the output.
        MsgBox("Total points earned: " & sum)

        ' This code produces the following output:
        '
        ' Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
             This code produces the following output:

             Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Single 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Sum(
    this IEnumerable<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Sum(
    IEnumerable<Nullable<float>>^ source
)
static member Sum :
        source:IEnumerable<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Single 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列值的和。

        ' Create an array of Nullable Single values.
        Dim points() As Nullable(Of Single) = _
            {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        ' Get the sum of values in the list.
        Dim sum As Nullable(Of Single) = points.Sum()

        ' Display the output.
        MsgBox("Total points earned: " & sum)

        ' This code produces the following output:
        '
        ' Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
             This code produces the following output:

             Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum 方法 (IEnumerable <(Of <(Single >)>))

Enumerable
.
.
::
.
Sum 方法 (IEnumerable
<
(Of
<
(
Single
>
)
>
)
)
Enumerable 类

计算 Single 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IEnumerable(Of Single) _
) As Single
public static float Sum(
    this IEnumerable<float> source
)
[ExtensionAttribute]
public:
static float Sum(
    IEnumerable<float>^ source
)
static member Sum :
        source:IEnumerable<float32> -> float32

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
Single
>
)
>
)

一个要计算和的 Single 值序列。

返回值

类型： System Single
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum(IEnumerable<(Of <(Single>)>)) 计算序列值的和。

        ' Create a list of Single values.
        Dim numbers As New List(Of Single)(New Single() _
                                           {43.68F, 1.25F, 583.7F, 6.5F})

        ' Get the sum of values in the list.
        Dim sum As Single = numbers.Sum()

        ' Display the output.
        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:
        '
        ' The sum of the numbers is 635.13

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
             This code produces the following output:

             The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
Enumerable 类

计算 Decimal 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Decimal），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
Enumerable 类

计算 Double 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Double），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
Enumerable 类

计算 Int32 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Integer
public static int Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int32
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Int32），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
Enumerable 类

计算 Int64 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Long
public static long Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, int64> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int64
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Int64），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Decimal 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Decimal>；在 Visual Basic 中为 Nullable(Of Decimal)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Double 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Double>；在 Visual Basic 中为 Nullable(Of Double)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int32 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Int32>；在 Visual Basic 中为 Nullable(Of Int32)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Int64 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

如果您提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Int64>；在 Visual Basic 中为 Nullable(Of Int64)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Enumerable 类

计算可以为 null 的 Single 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则此方法返回零。

结果中不包含为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值。

如果提供了函数 selector（用于将 source 中的成员投影为数值类型，即在 C# 中为 Nullable<Single>；在 Visual Basic 中为 Nullable(Of Single)），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Sum <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

Enumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
Enumerable 类

计算 Single 值序列的和，这些值是通过对输入序列中的每个元素调用转换函数得来的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Sum(
    IEnumerable<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Sum :
        source:IEnumerable<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

用于计算和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 中不包含任何元素，则 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Single>)>)) 方法返回零。

如果提供了函数 selector（用于将 source 的成员投影为数值类型，即 Single），则可以将此方法应用于任意值序列。

在 Visual Basic 查询表达式语法中，Aggregate Into Sum() 子句转换为 Sum 的一个调用。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Double>)>)) 计算序列投影值的和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub SumEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Sum the values from each item's Weight property.
        Dim totalWeight As Double = packages.Sum(Function(pkg) _
                                                     pkg.Weight)

        ' Display the result.
        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    ' This code produces the following output:
    '
    ' The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                double totalWeight = packages.Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
             This code produces the following output:

             The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

Aggregate 子句 (Visual Basic)


Enumerable ..::.Take <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
Take
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

从序列的开头返回指定数量的连续元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Take(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    count As Integer _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Take<TSource>(
    this IEnumerable<TSource> source,
    int count
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Take(
    IEnumerable<TSource>^ source,
    int count
)
static member Take :
        source:IEnumerable<'TSource> *
        count:int -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
count
类型： System Int32
要返回的元素数量。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列开头的指定数量的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

Take<(Of <(TSource>)>) 枚举 source 并生成元素，直到生成 count 元素或 source 中不再包含元素。

如果 count 小于等于零，则不枚举 source，并返回空的 IEnumerable<(Of <(T>)>)。

Take<(Of <(TSource>)>) 和 Skip<(Of <(TSource>)>) 方法在功能上补充。如果给定一个序列 coll 和一个整数 n，则连接 coll.Take(n) 和 coll.Skip(n) 的结果会生成与 coll 相同的序列。 Take<(Of <(TSource>)>) 和 Skip<(Of <(TSource>)>) 方法在功能上补充。如果给定一个序列 coll 和一个整数 n，则连接 coll.Take(n) 和 coll.Skip(n) 的结果会生成与 coll 相同的序列。

在 Visual Basic 查询表达式语法中，Take 子句转换为 Take<(Of <(TSource>)>) 的一个调用。

下面的代码示例演示如何使用 Take<(Of <(TSource>)>) 从序列的开头返回元素。

        ' Create an array of Integer values that represent grades.
        Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

        ' Get the highest three grades by first sorting
        ' them in descending order and then taking the
        ' first three values.
        Dim topThreeGrades As IEnumerable(Of Integer) = _
            grades _
            .OrderByDescending(Function(grade) grade) _
            .Take(3)

        ' Display the results.
        Dim output As New System.Text.StringBuilder("The top three grades are:" & vbCrLf)
        For Each grade As Integer In topThreeGrades
            output.AppendLine(grade)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' The top three grades are:
        ' 98
        ' 92
        ' 85

            int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

            IEnumerable<int> topThreeGrades =
                grades.OrderByDescending(grade => grade).Take(3);

            Console.WriteLine("The top three grades are:");
            foreach (int grade in topThreeGrades)
            {
                Console.WriteLine(grade);
            }
            /*
             This code produces the following output:

             The top three grades are:
             98
             92
             85
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间

其他资源

Take 子句 (Visual Basic)


Enumerable ..::.TakeWhile 方法

Enumerable
.
.
::
.
TakeWhile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

只要满足指定的条件，就会返回序列的元素，然后跳过剩余的元素。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.TakeWhile <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
TakeWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

只要满足指定的条件，就会返回序列的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function TakeWhile(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> TakeWhile<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ TakeWhile(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member TakeWhile :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中出现在测试不再能够通过的元素之前的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

TakeWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法使用 predicate 对 source 中的每个元素进行测试，如果结果为 true，则生成该元素。当谓词函数对某个元素返回 false 或 source 中不再包含元素时，枚举将停止。 TakeWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 方法使用 predicate 对 source 中的每个元素进行测试，如果结果为 true，则生成该元素。当谓词函数对某个元素返回 false 或 source 中不再包含元素时，枚举将停止。

TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。 TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。

在 Visual Basic 查询表达式语法中，Take While 子句转换为 TakeWhile 的一个调用。

下面的代码示例演示如何使用 TakeWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 在条件满足的情况下从序列的开头返回元素。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Take strings from the array until one of
        ' the strings matches "orange".
        Dim query As IEnumerable(Of String) = _
            fruits.TakeWhile(Function(fruit) _
                                 String.Compare("orange", fruit, True) <> 0)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' banana
        ' mango

            string[] fruits = { "apple", "banana", "mango", "orange",
                                  "passionfruit", "grape" };

            IEnumerable<string> query =
                fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);

            foreach (string fruit in query)
            {
                Console.WriteLine(fruit);
            }

            /*
             This code produces the following output:

             apple
             banana
             mango
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
TakeWhile 重载
System.Linq 命名空间

其他资源

Take While 子句 (Visual Basic)


Enumerable ..::.TakeWhile <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32, Boolean >)>))

Enumerable
.
.
::
.
TakeWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
)
Enumerable 类

只要满足指定的条件，就会返回序列的元素。将在谓词函数的逻辑中使用元素的索引。 只要满足指定的条件，就会返回序列的元素。将在谓词函数的逻辑中使用元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function TakeWhile(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Integer, Boolean) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> TakeWhile<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ TakeWhile(
    IEnumerable<TSource>^ source,
    Func<TSource, int, bool>^ predicate
)
static member TakeWhile :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, int, bool> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)

用于测试每个源元素是否满足条件的函数；该函数的第二个参数表示源元素的索引。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中出现在测试不再能够通过的元素之前的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

TakeWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 方法使用 predicate 对 source 中的每个元素进行测试，如果结果为 true，则生成该元素。当谓词函数对某个元素返回 false 或 source 中不再包含元素时，枚举将停止。 TakeWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 方法使用 predicate 对 source 中的每个元素进行测试，如果结果为 true，则生成该元素。当谓词函数对某个元素返回 false 或 source 中不再包含元素时，枚举将停止。

predicate 的第一个参数表示要测试的元素。第二个参数表示 source 中元素的从零开始的索引。 predicate 的第一个参数表示要测试的元素。第二个参数表示 source 中元素的从零开始的索引。

TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。 TakeWhile 和 SkipWhile 方法在功能上补充。如果给定一个序列 coll 和一个纯函数 p，则连接 coll.TakeWhile(p) 和 coll.SkipWhile(p) 的结果会生成与 coll 相同的序列。

在 Visual Basic 查询表达式语法中，Take While 子句转换为 TakeWhile 的一个调用。

下面的代码示例演示如何使用 TakeWhile<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 在使用元素的索引的条件为真的情况下从序列开头返回元素。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "passionfruit", "banana", "mango", _
             "orange", "blueberry", "grape", "strawberry"}

        ' Take strings from the array until one
        ' of the string's lengths is greater than or
        ' equal to the string item's index in the array.
        Dim query As IEnumerable(Of String) = _
            fruits.TakeWhile(Function(fruit, index) _
                                 fruit.Length >= index)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' passionfruit
        ' banana
        ' mango
        ' orange
        ' blueberry

            string[] fruits = { "apple", "passionfruit", "banana", "mango",
                                  "orange", "blueberry", "grape", "strawberry" };

            IEnumerable<string> query =
                fruits.TakeWhile((fruit, index) => fruit.Length >= index);

            foreach (string fruit in query)
            {
                Console.WriteLine(fruit);
            }

            /*
             This code produces the following output:

             apple
             passionfruit
             banana
             mango
             orange
             blueberry
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
TakeWhile 重载
System.Linq 命名空间

其他资源

Take While 子句 (Visual Basic)


Enumerable ..::.ThenBy 方法

Enumerable
.
.
::
.
ThenBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

按升序对序列中的元素执行后续排序。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ThenBy <(Of <(TSource, TKey >)>) 方法 (IOrderedEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
ThenBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据某个键按升序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenBy(Of TSource, TKey) ( _
    source As IOrderedEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(
    this IOrderedEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ ThenBy(
    IOrderedEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ThenBy :
        source:IOrderedEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，其元素按键排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。 ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

此方法使用默认的比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

在查询表达式语法中，orderby [first criterion], [second criterion] (Visual C#) 或 Order By [first criterion], [second criterion] (Visual Basic) 子句转换为 ThenBy 的一个调用。

下面的代码示例演示如何使用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 对序列中的元素执行次要排序。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"grape", "passionfruit", "banana", "mango", _
             "orange", "raspberry", "apple", "blueberry"}

        ' Sort the strings first by their length and then
        ' alphabetically by passing the identity function.
        Dim query As IEnumerable(Of String) = _
            fruits _
            .OrderBy(Function(fruit) fruit.Length) _
            .ThenBy(Function(fruit) fruit)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' grape
        ' mango
        ' banana
        ' orange
        ' blueberry
        ' raspberry
        ' passionfruit

            string[] fruits = { "grape", "passionfruit", "banana", "mango",
                                  "orange", "raspberry", "apple", "blueberry" };

            // Sort the strings first by their length and then
            //alphabetically by passing the identity selector function.
            IEnumerable<string> query =
                fruits.OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);

            foreach (string fruit in query)
            {
                Console.WriteLine(fruit);
            }

            /*
                This code produces the following output:

                apple
                grape
                mango
                banana
                orange
                blueberry
                raspberry
                passionfruit
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ThenBy 重载
System.Linq 命名空间

其他资源

orderby 子句（C# 参考）
Order By 子句 (Visual Basic)


Enumerable ..::.ThenBy <(Of <(TSource, TKey >)>) 方法 (IOrderedEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
ThenBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

使用指定的比较器按升序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenBy(Of TSource, TKey) ( _
    source As IOrderedEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> ThenBy<TSource, TKey>(
    this IOrderedEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ ThenBy(
    IOrderedEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member ThenBy :
        source:IOrderedEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，其元素按键排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。 ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ThenBy 重载
System.Linq 命名空间


Enumerable ..::.ThenByDescending 方法

Enumerable
.
.
::
.
ThenByDescending 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

按降序对序列中的元素执行后续排序。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ThenByDescending <(Of <(TSource, TKey >)>) 方法 (IOrderedEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
ThenByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据某个键按降序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenByDescending(Of TSource, TKey) ( _
    source As IOrderedEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
    this IOrderedEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ ThenByDescending(
    IOrderedEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ThenByDescending :
        source:IOrderedEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。 ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

此排序方法使用默认的比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

在 Visual C# 查询表达式语法中，orderby [first criterion], [second criterion] descending 子句转换为 ThenByDescending 的一个调用。

在 Visual Basic 查询表达式语法中，Order By [first criterion], [second criterion] Descending 子句转换为 ThenByDescending 的一个调用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ThenByDescending 重载
System.Linq 命名空间

其他资源

orderby 子句（C# 参考）
Order By 子句 (Visual Basic)


Enumerable ..::.ThenByDescending <(Of <(TSource, TKey >)>) 方法 (IOrderedEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
ThenByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

使用指定的比较器按降序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenByDescending(Of TSource, TKey) ( _
    source As IOrderedEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As IOrderedEnumerable(Of TSource)
public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
    this IOrderedEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedEnumerable<TSource>^ ThenByDescending(
    IOrderedEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member ThenByDescending :
        source:IOrderedEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> IOrderedEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

若要按元素自身的值对序列进行排序，请为 keySelector 指定标识函数（在 Visual C# 中为 x => x；在 Visual Basic 中为 Function(x) x）。

ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。 ThenBy 和 ThenByDescending 被定义为扩展类型 IOrderedEnumerable<(Of <(TElement>)>)，该类型也是这些方法的返回类型。此设计允许通过应用任意数量的 ThenBy 或 ThenByDescending 方法指定多个排序条件。

说明 说明

由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。 由于 IOrderedEnumerable<(Of <(TElement>)>) 继承自 IEnumerable<(Of <(T>)>)，因此您可以根据对 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 的调用结果来调用 OrderBy 或 OrderByDescending。执行此操作会产生一个新的主排序，它忽略以前建立的排序。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认比较器 Default 对键进行比较。

此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。 此方法执行稳定排序，也就是说，如果两个元素的键相同，则保留这两个元素的顺序。相反，不稳定排序不保留具有相同键的元素的顺序。

下面的代码示例演示如何通过使用自定义比较器用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), IComparer<(Of <(TKey>)>)) 对序列中的元素按降序执行次要排序。

    ' This class provides a custom implementation of the Compare() method.
    Class CaseInsensitiveComparer
        Implements IComparer(Of String)

        Function Compare(ByVal x As String, ByVal y As String) As Integer _
            Implements IComparer(Of String).Compare

            ' Compare values and ignore case.
            Return String.Compare(x, y, True)
        End Function
    End Class

    Sub ThenByDescendingEx1()
        Dim fruits() As String = _
            {"apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE"}

        ' Sort the strings first by their length and then
        ' by using a custom "case insensitive" comparer.
        Dim query As IEnumerable(Of String) = _
            fruits _
            .OrderBy(Function(fruit) fruit.Length) _
            .ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' apPLe
    ' apple
    ' APple
    ' apPLE
    ' orange
    ' ORANGE
    ' baNanA
    ' BAnana

            public class CaseInsensitiveComparer : IComparer<string>
            {
                public int Compare(string x, string y)
                {
                    return string.Compare(x, y, true);
                }
            }

            public static void ThenByDescendingEx1()
            {
                string[] fruits = { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };

                // Sort the strings first ascending by their length and
                // then descending using a custom case insensitive comparer.
                IEnumerable<string> query =
                    fruits
                    .OrderBy(fruit => fruit.Length)
                    .ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());

                foreach (string fruit in query)
                {
                    Console.WriteLine(fruit);
                }
            }

            /*
                This code produces the following output:

                apPLe
                apple
                APple
                apPLE
                orange
                ORANGE
                baNanA
                BAnana
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ThenByDescending 重载
System.Linq 命名空间


Enumerable ..::.ToArray <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
ToArray
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

从 IEnumerable<(Of <(T>)>) 创建一个数组。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToArray(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As TSource()
public static TSource[] ToArray<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static array<TSource>^ ToArray(
    IEnumerable<TSource>^ source
)
static member ToArray :
        source:IEnumerable<'TSource> -> 'TSource[]

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其创建数组的 IEnumerable<(Of <(T>)>)。

返回值

类型：
array<
TSource
>
[]
()
[]

一个包含输入序列中的元素的数组。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ToArray<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法强制进行直接查询计算，并返回一个包含查询结果的数组。可将此方法追加到您的查询，以获得查询结果的缓存副本。 ToArray<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法强制进行直接查询计算，并返回一个包含查询结果的数组。可将此方法追加到您的查询，以获得查询结果的缓存副本。

ToList<(Of <(TSource>)>) 具有类似的行为，但它返回一个 List<(Of <(T>)>)，而非一个数组。

下面的代码示例演示如何使用 ToArray<(Of <(TSource>)>) 强制进行直接查询计算并返回结果数组。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Sub ToArrayEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
              New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
              New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
              New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Project the Company values from each item in the list
        ' and put them into an array.
        Dim companies() As String = _
            packages _
            .Select(Function(pkg) pkg.Company) _
            .ToArray()

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each company As String In companies
            output.AppendLine(company)
        Next
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Coho Vineyard
    ' Lucerne Publishing
    ' Wingtip Toys
    ' Adventure Works

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void ToArrayEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                string[] companies = packages.Select(pkg => pkg.Company).ToArray();

                foreach (string company in companies)
                {
                    Console.WriteLine(company);
                }
            }

            /*
             This code produces the following output:

             Coho Vineyard
             Lucerne Publishing
             Wingtip Toys
             Adventure Works
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ToDictionary 方法

Enumerable
.
.
::
.
ToDictionary 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

从 IEnumerable<(Of <(T>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ToDictionary <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数，从 IEnumerable<(Of <(T>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As Dictionary(Of TKey, TSource)
public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static Dictionary<TKey, TSource>^ ToDictionary(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ToDictionary :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> Dictionary<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将从它创建一个 Dictionary<(Of <(TKey, TValue>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 Dictionary<(Of <(TKey, TValue>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - keySelector 产生了一个 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 键。
ArgumentException | keySelector 为两个元素产生了重复键。

ToDictionary<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法使用默认相等比较器 Default 对键进行比较。

下面的代码示例演示如何通过使用键选择器用 ToDictionary<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 创建 Dictionary<(Of <(TKey, TValue>)>)。

    Structure Package
        Public Company As String
        Public Weight As Double
        Public TrackingNumber As Long
    End Structure

    Sub ToDictionaryEx1()
        ' Create a list of Package values.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With _
              {.Company = "Coho Vineyard", .Weight = 25.2, .TrackingNumber = 89453312L}, _
              New Package With _
              {.Company = "Lucerne Publishing", .Weight = 18.7, .TrackingNumber = 89112755L}, _
              New Package With _
              {.Company = "Wingtip Toys", .Weight = 6.0, .TrackingNumber = 299456122L}, _
              New Package With _
              {.Company = "Adventure Works", .Weight = 33.8, .TrackingNumber = 4665518773L}})

        ' Create a Dictionary that contains Package values,
        ' using TrackingNumber as the key.
        Dim dict As Dictionary(Of Long, Package) = _
            packages.ToDictionary(Function(p) p.TrackingNumber)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each kvp As KeyValuePair(Of Long, Package) In dict
            output.AppendLine("Key " & kvp.Key & ": " & _
                              kvp.Value.Company & ", " & _
                              kvp.Value.Weight & " pounds")
        Next
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Key 89453312: Coho Vineyard, 25.2 pounds
    ' Key 89112755: Lucerne Publishing, 18.7 pounds
    ' Key 299456122: Wingtip Toys, 6 pounds
    ' Key 4665518773: Adventure Works, 33.8 pounds

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
                public long TrackingNumber { get; set; }
            }

            public static void ToDictionaryEx1()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2, TrackingNumber = 89453312L },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7, TrackingNumber = 89112755L },
                          new Package { Company = "Wingtip Toys", Weight = 6.0, TrackingNumber = 299456122L },
                          new Package { Company = "Adventure Works", Weight = 33.8, TrackingNumber = 4665518773L } };

                // Create a Dictionary of Package objects,
                // using TrackingNumber as the key.
                Dictionary<long, Package> dictionary =
                    packages.ToDictionary(p => p.TrackingNumber);

                foreach (KeyValuePair<long, Package> kvp in dictionary)
                {
                    Console.WriteLine(
                        "Key {0}: {1}, {2} pounds",
                        kvp.Key,
                        kvp.Value.Company,
                        kvp.Value.Weight);
                }
            }

            /*
             This code produces the following output:

             Key 89453312: Coho Vineyard, 25.2 pounds
             Key 89112755: Lucerne Publishing, 18.7 pounds
             Key 299456122: Wingtip Toys, 6 pounds
             Key 4665518773: Adventure Works, 33.8 pounds
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToDictionary 重载
System.Linq 命名空间


Enumerable ..::.ToDictionary <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数和键比较器，从 IEnumerable<(Of <(T>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IEqualityComparer(Of TKey) _
) As Dictionary(Of TKey, TSource)
public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static Dictionary<TKey, TSource>^ ToDictionary(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToDictionary :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IEqualityComparer<'TKey> -> Dictionary<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将从它创建一个 Dictionary<(Of <(TKey, TValue>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 Dictionary<(Of <(TKey, TValue>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - keySelector 产生了一个 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 键。
ArgumentException | keySelector 为两个元素产生了重复键。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToDictionary 重载
System.Linq 命名空间


Enumerable ..::.ToDictionary <(Of <(TSource, TKey, TElement >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>))

Enumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
)
Enumerable 类

根据指定的键选择器和元素选择器函数，从 IEnumerable<(Of <(T>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey, TElement) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement) _
) As Dictionary(Of TKey, TElement)
public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static Dictionary<TKey, TElement>^ ToDictionary(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector
)
static member ToDictionary :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> -> Dictionary<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将从它创建一个 Dictionary<(Of <(TKey, TValue>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Dictionary<(Of <(TKey, TValue>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - keySelector 产生了一个 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 键。
ArgumentException | keySelector 为两个元素产生了重复键。

ToDictionary<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 方法使用默认的相等比较器 Default 对键进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToDictionary 重载
System.Linq 命名空间


Enumerable ..::.ToDictionary <(Of <(TSource, TKey, TElement >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数、比较器和元素选择器函数从 IEnumerable<(Of <(T>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey, TElement) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    comparer As IEqualityComparer(Of TKey) _
) As Dictionary(Of TKey, TElement)
public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static Dictionary<TKey, TElement>^ ToDictionary(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToDictionary :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        comparer:IEqualityComparer<'TKey> -> Dictionary<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将从它创建一个 Dictionary<(Of <(TKey, TValue>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Dictionary<(Of <(TKey, TValue>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - keySelector 产生了一个 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 键。
ArgumentException | keySelector 为两个元素产生了重复键。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToDictionary 重载
System.Linq 命名空间


Enumerable ..::.ToList <(Of <(TSource >)>) 方法

Enumerable
.
.
::
.
ToList
<
(Of
<
(
TSource
>
)
>
)
方法
Enumerable 类

从 IEnumerable<(Of <(T>)>) 创建一个 List<(Of <(T>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToList(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As List(Of TSource)
public static List<TSource> ToList<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static List<TSource>^ ToList(
    IEnumerable<TSource>^ source
)
static member ToList :
        source:IEnumerable<'TSource> -> List<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其创建 List<(Of <(T>)>) 的 IEnumerable<(Of <(T>)>)。

返回值

类型： System.Collections.Generic List
<
(Of
<
(
TSource
>
)
>
)

一个包含输入序列中元素的 List<(Of <(T>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ToList<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法强制进行直接查询计算，并返回一个包含查询值的 List<(Of <(T>)>)。可将此方法追加到您的查询，以获得查询结果的缓存副本。 ToList<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>)) 方法强制进行直接查询计算，并返回一个包含查询值的 List<(Of <(T>)>)。可将此方法追加到您的查询，以获得查询结果的缓存副本。

ToArray<(Of <(TSource>)>) 具有类似行为，但它返回一个数组，而非一个 List<(Of <(T>)>)。

下面的代码示例演示如何使用 ToList<(Of <(TSource>)>) 强制进行直接查询计算并返回一个包含查询结果的 List<(Of <(T>)>)。

        ' Create an array of strings.
        Dim fruits() As String = _
            {"apple", "passionfruit", "banana", "mango", _
             "orange", "blueberry", "grape", "strawberry"}

        ' Project the length of each string and
        ' put the length values into a List object.
        Dim lengths As List(Of Integer) = _
            fruits _
            .Select(Function(fruit) fruit.Length) _
            .ToList()

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each length As Integer In lengths
            output.AppendLine(length)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 5
        ' 12
        ' 6
        ' 5
        ' 6
        ' 9
        ' 5
        ' 10

            string[] fruits = { "apple", "passionfruit", "banana", "mango",
                                  "orange", "blueberry", "grape", "strawberry" };

            List<int> lengths = fruits.Select(fruit => fruit.Length).ToList();

            foreach (int length in lengths)
            {
                Console.WriteLine(length);
            }

            /*
             This code produces the following output:

             5
             12
             6
             5
             6
             9
             5
             10
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ToLookup 方法

Enumerable
.
.
::
.
ToLookup 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

从 IEnumerable<(Of <(T>)>) 生成一个泛型 Lookup<(Of <(TKey, TElement>)>)。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.ToLookup <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

Enumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数，从 IEnumerable<(Of <(T>)>) 创建一个 Lookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As ILookup(Of TKey, TSource)
public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static ILookup<TKey, TSource>^ ToLookup(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ToLookup :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> ILookup<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其创建 Lookup<(Of <(TKey, TElement>)>) 的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 Lookup<(Of <(TKey, TElement>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ToLookup<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行键到单个值的一对一映射。 ToLookup<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行键到单个值的一对一映射。

使用默认的相等比较器 Default 对键进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToLookup 重载
System.Linq 命名空间


Enumerable ..::.ToLookup <(Of <(TSource, TKey >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数和键比较器，从 IEnumerable<(Of <(T>)>) 创建一个 Lookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IEqualityComparer(Of TKey) _
) As ILookup(Of TKey, TSource)
public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static ILookup<TKey, TSource>^ ToLookup(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToLookup :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IEqualityComparer<'TKey> -> ILookup<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其创建 Lookup<(Of <(TKey, TElement>)>) 的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 Lookup<(Of <(TKey, TElement>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ToLookup<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行从键到单个值的一对一映射。 ToLookup<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行从键到单个值的一对一映射。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToLookup 重载
System.Linq 命名空间


Enumerable ..::.ToLookup <(Of <(TSource, TKey, TElement >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>))

Enumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
)
Enumerable 类

根据指定的键选择器和元素选择器函数，从 IEnumerable<(Of <(T>)>) 创建一个 Lookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey, TElement) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement) _
) As ILookup(Of TKey, TElement)
public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static ILookup<TKey, TElement>^ ToLookup(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector
)
static member ToLookup :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> -> ILookup<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其创建 Lookup<(Of <(TKey, TElement>)>) 的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Lookup<(Of <(TKey, TElement>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ToLookup<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行键到单个值的一对一映射。 ToLookup<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行键到单个值的一对一映射。

使用默认的相等比较器 Default 对键进行比较。

下面的代码示例演示如何通过使用键选择器函数和元素选择器函数用 ToLookup<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>)) 创建 Lookup<(Of <(TKey, TElement>)>)。

    Structure Package
        Public Company As String
        Public Weight As Double
        Public TrackingNumber As Long
    End Structure

    Sub ToLookupEx1()
        ' Create a list of Packages.
        Dim packages As New List(Of Package)(New Package() _
             {New Package With _
              {.Company = "Coho Vineyard", .Weight = 25.2, .TrackingNumber = 89453312L}, _
              New Package With _
              {.Company = "Lucerne Publishing", .Weight = 18.7, .TrackingNumber = 89112755L}, _
              New Package With _
              {.Company = "Wingtip Toys", .Weight = 6.0, .TrackingNumber = 299456122L}, _
              New Package With _
              {.Company = "Contoso Pharmaceuticals", .Weight = 9.3, .TrackingNumber = 670053128L}, _
              New Package With _
              {.Company = "Wide World Importers", .Weight = 33.8, .TrackingNumber = 4665518773L}})

        ' Create a Lookup to organize the packages.
        ' Use the first character of Company as the key value.
        ' Select Company appended to TrackingNumber
        ' as the element values of the Lookup.
        Dim lookup As ILookup(Of Char, String) = _
            packages.ToLookup(Function(p) _
                                  Convert.ToChar(p.Company.Substring(0, 1)), _
                              Function(p) _
                                  p.Company & " " & p.TrackingNumber)

        Dim output As New System.Text.StringBuilder

        ' Iterate through each IGrouping in the Lookup.
        For Each packageGroup As IGrouping(Of Char, String) In lookup
            ' Print the key value of the IGrouping.
            output.AppendLine(packageGroup.Key)
            ' Iterate through each value in the IGrouping and print its value.
            For Each str As String In packageGroup
                output.AppendLine("   " & str)
            Next
        Next

        ' Select a group of packages by indexing directly into the Lookup.
        Dim cgroup As IEnumerable(Of String) = lookup("C"c)

        output.AppendLine(vbCrLf & "Packages from Company names that start with 'C':")
        For Each str As String In cgroup
            output.AppendLine(str)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' C
    '    Coho Vineyard 89453312
    '    Contoso Pharmaceuticals 670053128
    ' L
    '    Lucerne Publishing 89112755
    ' W
    '    Wingtip Toys 299456122
    '    Wide World Importers 4665518773
    '
    ' Packages from Company names that start with 'C':
    ' Coho Vineyard 89453312
    ' Contoso Pharmaceuticals 670053128

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
                public long TrackingNumber { get; set; }
            }

            public static void ToLookupEx1()
            {
                // Create a list of Packages.
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard",
                              Weight = 25.2, TrackingNumber = 89453312L },
                          new Package { Company = "Lucerne Publishing",
                              Weight = 18.7, TrackingNumber = 89112755L },
                          new Package { Company = "Wingtip Toys",
                              Weight = 6.0, TrackingNumber = 299456122L },
                          new Package { Company = "Contoso Pharmaceuticals",
                              Weight = 9.3, TrackingNumber = 670053128L },
                          new Package { Company = "Wide World Importers",
                              Weight = 33.8, TrackingNumber = 4665518773L } };

                // Create a Lookup to organize the packages.
                // Use the first character of Company as the key value.
                // Select Company appended to TrackingNumber
                // as the element values of the Lookup.
                ILookup<char, string> lookup =
                    packages
                    .ToLookup(p => Convert.ToChar(p.Company.Substring(0, 1)),
                              p => p.Company + " " + p.TrackingNumber);

                // Iterate through each IGrouping in the Lookup.
                foreach (IGrouping<char, string> packageGroup in lookup)
                {
                    // Print the key value of the IGrouping.
                    Console.WriteLine(packageGroup.Key);
                    // Iterate through each value in the
                    // IGrouping and print its value.
                    foreach (string str in packageGroup)
                        Console.WriteLine("    {0}", str);
                }
            }

            /*
             This code produces the following output:

             C
                 Coho Vineyard 89453312
                 Contoso Pharmaceuticals 670053128
             L
                 Lucerne Publishing 89112755
             W
                 Wingtip Toys 299456122
                 Wide World Importers 4665518773
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToLookup 重载
System.Linq 命名空间


Enumerable ..::.ToLookup <(Of <(TSource, TKey, TElement >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), IEqualityComparer <(Of <(TKey >)>))

Enumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Enumerable 类

根据指定的键选择器函数、比较器和元素选择器函数，从 IEnumerable<(Of <(T>)>) 创建一个 Lookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey, TElement) ( _
    source As IEnumerable(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    comparer As IEqualityComparer(Of TKey) _
) As ILookup(Of TKey, TElement)
public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static ILookup<TKey, TElement>^ ToLookup(
    IEnumerable<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToLookup :
        source:IEnumerable<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        comparer:IEqualityComparer<'TKey> -> ILookup<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要从其创建 Lookup<(Of <(TKey, TElement>)>) 的 IEnumerable<(Of <(T>)>)。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Lookup<(Of <(TKey, TElement>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ToLookup<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行键到单个值的一对一映射。 ToLookup<(Of <(TSource, TKey, TElement>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>), Func<(Of <(TSource, TElement>)>), IEqualityComparer<(Of <(TKey>)>)) 方法返回一个 Lookup<(Of <(TKey, TElement>)>) 和一个将键映射为值集合的一对多字典。Lookup<(Of <(TKey, TElement>)>) 与 Dictionary<(Of <(TKey, TValue>)>) 不同，后者执行键到单个值的一对一映射。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对键进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
ToLookup 重载
System.Linq 命名空间


Enumerable ..::.Union 方法

Enumerable
.
.
::
.
Union 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

生成两个序列的并集。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Union <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Enumerable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用默认的相等比较器生成两个序列的并集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Union<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Union(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second
)
static member Union :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，它的非重复元素构成联合的第一个集。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，它的非重复元素构成联合的第二个集。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含两个输入序列中的元素（重复元素除外）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

此方法从结果集中排除重复项。这是与 Concat<(Of <(TSource>)>) 方法不同的行为，后者返回输入序列中的所有元素，包括重复项。 此方法从结果集中排除重复项。这是与 Concat<(Of <(TSource>)>) 方法不同的行为，后者返回输入序列中的所有元素，包括重复项。

默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。 默认相等比较器 Default 用于比较实现了 IEqualityComparer<(Of <(T>)>) 泛型接口的类型的值。若要比较自定义类型，需要为该类型实现此接口并提供自己的 GetHashCode 和 Equals 方法。

当枚举此方法返回的对象时，Union 会按顺序枚举 first 和 second，并生成尚未生成的每个元素。

下面的代码示例演示如何使用 Union<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 获取两个整数序列的集合。

        ' Create two arrays of integer values.
        Dim ints1() As Integer = {5, 3, 9, 7, 5, 9, 3, 7}
        Dim ints2() As Integer = {8, 3, 6, 4, 4, 9, 1, 0}

        ' Get the set union of the two arrays.
        Dim union As IEnumerable(Of Integer) = ints1.Union(ints2)

        ' Display the resulting set's values.
        Dim output As New System.Text.StringBuilder
        For Each num As Integer In union
            output.AppendLine(num & " ")
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 5
        ' 3
        ' 9
        ' 7
        ' 8
        ' 6
        ' 4
        ' 1
        ' 0

            int[] ints1 = { 5, 3, 9, 7, 5, 9, 3, 7 };
            int[] ints2 = { 8, 3, 6, 4, 4, 9, 1, 0 };

            IEnumerable<int> union = ints1.Union(ints2);

            foreach (int num in union)
            {
                Console.Write("{0} ", num);
            }

            /*
             This code produces the following output:

             5 3 9 7 8 6 4 1 0
            */

如果希望比较自定义数据类型的对象的序列，则必须在类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。 如果希望比较自定义数据类型的对象的序列，则必须在类中实现 IEqualityComparer<(Of <(T>)>) 泛型接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供 GetHashCode 和 Equals 方法。

Public Class Product
    Implements IEquatable(Of Product)

    Public Property Name As String
    Public Property Code As Integer

    Public Function Equals1(
        ByVal other As Product
        ) As Boolean Implements IEquatable(Of Product).Equals

        ' Check whether the compared object is null.
        If other Is Nothing Then Return False

        ' Check whether the compared object references the same data.
        If Me Is Other Then Return True

        ' Check whether the products' properties are equal.
        Return Code.Equals(other.Code) AndAlso Name.Equals(other.Name)
    End Function

    Public Overrides Function GetHashCode() As Integer

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName = If(Name Is Nothing, 0, Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product : IEquatable<Product>
{
    public string Name { get; set; }
    public int Code { get; set; }

    public bool Equals(Product other)
    {

        //Check whether the compared object is null.
        if (Object.ReferenceEquals(other, null)) return false;

        //Check whether the compared object references the same data.
        if (Object.ReferenceEquals(this, other)) return true;

        //Check whether the products' properties are equal.
        return Code.Equals(other.Code) && Name.Equals(other.Name);
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public override int GetHashCode()
    {

        //Get hash code for the Name field if it is not null.
        int hashProductName = Name == null ? 0 : Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }
}

实现此接口后，您可以使用 Union<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法中 Product 对象的序列，如下面的示例所示。

Dim store1() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim store2() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "lemon", .Code = 12}}

...

' Get the products from the both arrays
' excluding duplicates.

Dim union = store1.Union(store2)

For Each product In union
    Console.WriteLine(product.Name & " " & product.Code)
Next

' This code produces the following output:
'
' apple 9
' orange 4
' lemon 12
'

Product[] store1 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "orange", Code = 4 } };

Product[] store2 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "lemon", Code = 12 } };

...

//Get the products from the both arrays
//excluding duplicates.

IEnumerable<Product> union =
  store1.Union(store2);

foreach (var product in union)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:

    apple 9
    orange 4
    lemon 12
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Union 重载
System.Linq 命名空间


Enumerable ..::.Union <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Enumerable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Enumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 生成两个序列的并集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    first As IEnumerable(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Union<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Union(
    IEnumerable<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member Union :
        first:IEnumerable<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，它的非重复元素构成联合的第一个集。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，它的非重复元素构成联合的第二个集。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于对值进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含两个输入序列中的元素（重复元素除外）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

如果 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用默认的相等比较器 Default 对值进行比较。

当枚举此方法返回的对象时，Union 会按顺序枚举 first 和 second，并生成尚未生成的每个元素。

Concat<(Of <(TSource>)>) 方法与 Union 方法不同，因为 Concat<(Of <(TSource>)>) 方法返回输入序列中的所有元素，包括重复项；而 Union 仅返回唯一值。

下面的示例演示如何实现可以在 Union 方法中使用的相等比较器。

Public Class Product
    Public Property Name As String
    Public Property Code As Integer
End Class

' Custom comparer for the Product class
Public Class ProductComparer
    Implements IEqualityComparer(Of Product)

    Public Function Equals1(
        ByVal x As Product,
        ByVal y As Product
        ) As Boolean Implements IEqualityComparer(Of Product).Equals

        ' Check whether the compared objects reference the same data.
        If x Is y Then Return True

        'Check whether any of the compared objects is null.
        If x Is Nothing OrElse y Is Nothing Then Return False

        ' Check whether the products' properties are equal.
        Return (x.Code = y.Code) AndAlso (x.Name = y.Name)
    End Function

    Public Function GetHashCode1(
        ByVal product As Product
        ) As Integer Implements IEqualityComparer(Of Product).GetHashCode

        ' Check whether the object is null.
        If product Is Nothing Then Return 0

        ' Get hash code for the Name field if it is not null.
        Dim hashProductName =
            If(product.Name Is Nothing, 0, product.Name.GetHashCode())

        ' Get hash code for the Code field.
        Dim hashProductCode = product.Code.GetHashCode()

        ' Calculate the hash code for the product.
        Return hashProductName Xor hashProductCode
    End Function
End Class

public class Product
{
    public string Name { get; set; }
    public int Code { get; set; }
}

// Custom comparer for the Product class
class ProductComparer : IEqualityComparer<Product>
{
    // Products are equal if their names and product numbers are equal.
    public bool Equals(Product x, Product y)
    {

        //Check whether the compared objects reference the same data.
        if (Object.ReferenceEquals(x, y)) return true;

        //Check whether any of the compared objects is null.
        if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
            return false;

        //Check whether the products' properties are equal.
        return x.Code == y.Code && x.Name == y.Name;
    }

    // If Equals() returns true for a pair of objects
    // then GetHashCode() must return the same value for these objects.

    public int GetHashCode(Product product)
    {
        //Check whether the object is null
        if (Object.ReferenceEquals(product, null)) return 0;

        //Get hash code for the Name field if it is not null.
        int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();

        //Get hash code for the Code field.
        int hashProductCode = product.Code.GetHashCode();

        //Calculate the hash code for the product.
        return hashProductName ^ hashProductCode;
    }

}

实现此比较器后，您可以使用 Union 方法中 Product 对象的序列，如下面的示例所示。

Dim store1() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "orange", .Code = 4}}

Dim store2() As Product =
    {New Product With {.Name = "apple", .Code = 9},
     New Product With {.Name = "lemon", .Code = 12}}

...

' Get the products from the both arrays
' excluding duplicates.

Dim union = store1.Union(store2, New ProductComparer())

For Each product In union
    Console.WriteLine(product.Name & " " & product.Code)
Next

' This code produces the following output:
'
' apple 9
' orange 4
' lemon 12
'

Product[] store1 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "orange", Code = 4 } };

Product[] store2 = { new Product { Name = "apple", Code = 9 },
                       new Product { Name = "lemon", Code = 12 } };

...

//Get the products from the both arrays
//excluding duplicates.

IEnumerable<Product> union =
  store1.Union(store2, new ProductComparer());

foreach (var product in union)
    Console.WriteLine(product.Name + " " + product.Code);

/*
    This code produces the following output:

    apple 9
    orange 4
    lemon 12
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Union 重载
System.Linq 命名空间


Enumerable ..::.Where 方法

Enumerable
.
.
::
.
Where 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Enumerable 类

基于谓词筛选值序列。

名称 说明
页首

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


Enumerable ..::.Where <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

Enumerable
.
.
::
.
Where
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
Enumerable 类

基于谓词筛选值序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Where<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Where(
    IEnumerable<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Where :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, bool> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要筛选的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中满足条件的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

在查询表达式语法中，where (Visual C#) 或 Where (Visual Basic) 子句转换为 Where<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 的一个调用。

下面的代码示例演示如何使用 Where<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Boolean>)>)) 筛选序列。

        ' Create a list of strings.
        Dim fruits As New List(Of String)(New String() _
                                {"apple", "passionfruit", "banana", "mango", _
                                 "orange", "blueberry", "grape", "strawberry"})

        ' Restrict the results to those strings whose
        ' length is less than six.
        Dim query As IEnumerable(Of String) = _
            fruits.Where(Function(fruit) fruit.Length < 6)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' mango
        ' grape

            List<string> fruits =
                new List<string> { "apple", "passionfruit", "banana", "mango",
                                "orange", "blueberry", "grape", "strawberry" };

            IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);

            foreach (string fruit in query)
            {
                Console.WriteLine(fruit);
            }
            /*
             This code produces the following output:

             apple
             mango
             grape
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Where 重载
System.Linq 命名空间

其他资源

where 子句（C# 参考）
Where 子句 (Visual Basic)


Enumerable ..::.Where <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>), Func <(Of <(TSource, Int32, Boolean >)>))

Enumerable
.
.
::
.
Where
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
)
Enumerable 类

基于谓词筛选值序列。将在谓词函数的逻辑中使用每个元素的索引。 基于谓词筛选值序列。将在谓词函数的逻辑中使用每个元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As IEnumerable(Of TSource), _
    predicate As Func(Of TSource, Integer, Boolean) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> Where<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ Where(
    IEnumerable<TSource>^ source,
    Func<TSource, int, bool>^ predicate
)
static member Where :
        source:IEnumerable<'TSource> *
        predicate:Func<'TSource, int, bool> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要筛选的 IEnumerable<(Of <(T>)>)。
predicate
类型： System Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)

用于测试每个源元素是否满足条件的函数；该函数的第二个参数表示源元素的索引。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含输入序列中满足条件的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

predicate 的第一个参数表示要测试的元素。第二个参数表示 source 中元素的从零开始的索引。 predicate 的第一个参数表示要测试的元素。第二个参数表示 source 中元素的从零开始的索引。

下面的代码示例演示如何基于包含每个元素索引的谓词用 Where<(Of <(TSource>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, Int32, Boolean>)>)) 筛选序列。

        ' Create an array of integers.
        Dim numbers() As Integer = {0, 30, 20, 15, 90, 85, 40, 75}

        ' Restrict the results to those numbers whose
        ' values are less than or equal to their index times 10.
        Dim query As IEnumerable(Of Integer) = _
            numbers.Where(Function(number, index) number <= index * 10)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each number As Integer In query
            output.AppendLine(number)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 0
        ' 20
        ' 15
        ' 40

            int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };

            IEnumerable<int> query =
                numbers.Where((number, index) => number <= index * 10);

            foreach (int number in query)
            {
                Console.WriteLine(number);
            }
            /*
             This code produces the following output:

             0
             20
             15
             40
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Enumerable 类
Enumerable 成员
Where 重载
System.Linq 命名空间


Enumerable ..::.Zip <(Of <(TFirst, TSecond, TResult >)>) 方法

Enumerable
.
.
::
.
Zip
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
方法
Enumerable 类

通过使用指定的谓词函数合并两个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Zip(Of TFirst, TSecond, TResult) ( _
    first As IEnumerable(Of TFirst), _
    second As IEnumerable(Of TSecond), _
    resultSelector As Func(Of TFirst, TSecond, TResult) _
) As IEnumerable(Of TResult)
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(
    this IEnumerable<TFirst> first,
    IEnumerable<TSecond> second,
    Func<TFirst, TSecond, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TFirst, typename TSecond, typename TResult>
static IEnumerable<TResult>^ Zip(
    IEnumerable<TFirst>^ first,
    IEnumerable<TSecond>^ second,
    Func<TFirst, TSecond, TResult>^ resultSelector
)
static member Zip :
        first:IEnumerable<'TFirst> *
        second:IEnumerable<'TSecond> *
        resultSelector:Func<'TFirst, 'TSecond, 'TResult> -> IEnumerable<'TResult>

类型参数

TFirst

第一个输入序列中的元素的类型。

TSecond

第二个输入序列中的元素的类型。

TResult

结果序列的元素的类型。

参数

first
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TFirst
>
)
>
)

要合并的第一个序列。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSecond
>
)
>
)

要合并的第二个序列。
resultSelector
类型： System Func
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)

用于指定如何合并这两个序列的元素的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，包含两个输入序列的已合并元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TFirst 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。 此方法通过使用延迟执行实现。即时返回值为一个对象，该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach（或 Visual Basic 中的 For Each）来枚举该对象时，才执行此方法表示的查询。

该方法将第一个序列中的每个元素与第二个序列中有相同索引的元素合并。如果该序列不具有相同数目的元素，则直到它到达其中一个的末尾，该方法才合并序列。例如，如果一个序列有三个元素，另一个序列具有四个元素，那么结果序列将只有三个元素。 该方法将第一个序列中的每个元素与第二个序列中有相同索引的元素合并。如果该序列不具有相同数目的元素，则直到它到达其中一个的末尾，该方法才合并序列。例如，如果一个序列有三个元素，另一个序列具有四个元素，那么结果序列将只有三个元素。 该方法将第一个序列中的每个元素与第二个序列中有相同索引的元素合并。如果该序列不具有相同数目的元素，则直到它到达其中一个的末尾，该方法才合并序列。例如，如果一个序列有三个元素，另一个序列具有四个元素，那么结果序列将只有三个元素。

下面的代码示例演示如何使用 Zip<(Of <(TFirst, TSecond, TResult>)>) 方法来合并两个序列。

Dim numbers() As Integer = {1, 2, 3, 4}
Dim words() As String = {"one", "two", "three"}
Dim numbersAndWords = numbers.Zip(words, Function(first, second) first & " " & second)

For Each item In numbersAndWords
    Console.WriteLine(item)
Next

' This code produces the following output:

' 1 one
' 2 two
' 3 three

            int[] numbers = { 1, 2, 3, 4 };
            string[] words = { "one", "two", "three" };

            var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);

            foreach (var item in numbersAndWords)
                Console.WriteLine(item);

            // This code produces the following output:

            // 1 one
            // 2 two
            // 3 three

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Enumerable 类
Enumerable 成员
System.Linq 命名空间


EnumerableExecutor 类

EnumerableExecutor 类
成员

表示一个表达式树，并提供在重写该表达式树后执行该表达式树的功能。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public MustInherit Class EnumerableExecutor
public abstract class EnumerableExecutor
public ref class EnumerableExecutor abstract
[<AbstractClassAttribute>]
type EnumerableExecutor =  class end

System.Linq System.Linq..::.EnumerableExecutorEnumerableExecutor

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableExecutor 成员
System.Linq 命名空间


EnumerableExecutor 成员

EnumerableExecutor 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableExecutor 类

表示一个表达式树，并提供在重写该表达式树后执行该表达式树的功能。

EnumerableExecutor 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EnumerableExecutor 类
System.Linq 命名空间


EnumerableExecutor 构造函数

EnumerableExecutor 构造函数
EnumerableExecutor 类

初始化 EnumerableExecutor 类的新实例。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Protected Sub New
protected EnumerableExecutor()
protected:
EnumerableExecutor()
new : unit -> EnumerableExecutor

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableExecutor 类
EnumerableExecutor 成员
System.Linq 命名空间


EnumerableExecutor 方法

EnumerableExecutor 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableExecutor 类

EnumerableExecutor 类型公开以下成员。

名称 说明
页首

参考

EnumerableExecutor 类
System.Linq 命名空间


EnumerableExecutor <(Of <(T >)>) 类

EnumerableExecutor
<
(Of
<
(
T
>
)
>
)
类
成员

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

表示一个表达式树，并提供在重写该表达式树后执行该表达式树的功能。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Class EnumerableExecutor(Of T) _
    Inherits EnumerableExecutor
public class EnumerableExecutor<T> : EnumerableExecutor

generic<typename T>
public ref class EnumerableExecutor : public EnumerableExecutor
type EnumerableExecutor<'T> =
    class
        inherit EnumerableExecutor
    end

类型参数

T

执行表达式树后所得到的值的数据类型。

System.Linq
System.Linq..::.EnumerableExecutor<(Of <(T>)>)EnumerableExecutor
System.Linq..::.EnumerableExecutor<(Of <(T>)>)T
System.Linq..::.EnumerableExecutor<(Of <(T>)>)
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableExecutor T 成员
System.Linq 命名空间


EnumerableExecutor <(Of <(T >)>) 成员

EnumerableExecutor
<
(Of
<
(
T
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableExecutor

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

表示一个表达式树，并提供在重写该表达式树后执行该表达式树的功能。

EnumerableExecutor T 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EnumerableExecutor T 类
System.Linq 命名空间


EnumerableExecutor <(Of <(T >)>) 构造函数

EnumerableExecutor
<
(Of
<
(
T
>
)
>
)
构造函数
EnumerableExecutor

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 EnumerableExecutor<(Of <(T>)>) 类的新实例。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Sub New ( _
    expression As Expression _
)
public EnumerableExecutor(
    Expression expression
)
public:
EnumerableExecutor(
    Expression^ expression
)
new :
        expression:Expression -> EnumerableExecutor

参数

expression
类型： System.Linq.Expressions Expression
要与新实例关联的表达式树。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableExecutor T 类
EnumerableExecutor T 成员
System.Linq 命名空间


EnumerableExecutor <(Of <(T >)>) 方法

EnumerableExecutor
<
(Of
<
(
T
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableExecutor

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

EnumerableExecutor T 类型公开以下成员。

名称 说明
页首

参考

EnumerableExecutor T 类
System.Linq 命名空间


EnumerableQuery 类

EnumerableQuery 类
成员

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将 IEnumerable 表示为 EnumerableQuery 数据源。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public MustInherit Class EnumerableQuery
public abstract class EnumerableQuery
public ref class EnumerableQuery abstract
[<AbstractClassAttribute>]
type EnumerableQuery =  class end

System.Linq System.Linq..::.EnumerableQueryEnumerableQuery

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery 成员
System.Linq 命名空间


EnumerableQuery 成员

EnumerableQuery 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将 IEnumerable 表示为 EnumerableQuery 数据源。

EnumerableQuery 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

EnumerableQuery 类
System.Linq 命名空间


EnumerableQuery 构造函数

EnumerableQuery 构造函数
EnumerableQuery 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 EnumerableQuery 类的新实例。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Protected Sub New
protected EnumerableQuery()
protected:
EnumerableQuery()
new : unit -> EnumerableQuery

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery 类
EnumerableQuery 成员
System.Linq 命名空间


EnumerableQuery 方法

EnumerableQuery 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

EnumerableQuery 类型公开以下成员。

名称 说明
页首

参考

EnumerableQuery 类
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 类

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
类
成员

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将 IEnumerable<(Of <(T>)>) 集合表示为 IQueryable<(Of <(T>)>) 数据源。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Class EnumerableQuery(Of T) _
    Inherits EnumerableQuery _
    Implements IOrderedQueryable(Of T), IQueryable(Of T),  _
    IOrderedQueryable, IQueryable, IQueryProvider, IEnumerable(Of T), IEnumerable
public class EnumerableQuery<T> : EnumerableQuery,
    IOrderedQueryable<T>, IQueryable<T>, IOrderedQueryable, IQueryable, IQueryProvider,
    IEnumerable<T>, IEnumerable

generic<typename T>
public ref class EnumerableQuery : public EnumerableQuery,
    IOrderedQueryable<T>, IQueryable<T>, IOrderedQueryable, IQueryable, IQueryProvider,
    IEnumerable<T>, IEnumerable
type EnumerableQuery<'T> =
    class
        inherit EnumerableQuery
        interface IOrderedQueryable<'T>
        interface IQueryable<'T>
        interface IOrderedQueryable
        interface IQueryable
        interface IQueryProvider
        interface IEnumerable<'T>
        interface IEnumerable
    end

类型参数

T

集合中数据的类型。

System.Linq
System.Linq..::.EnumerableQuery<(Of <(T>)>)EnumerableQuery
System.Linq..::.EnumerableQuery<(Of <(T>)>)T
System.Linq..::.EnumerableQuery<(Of <(T>)>)
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 成员

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将 IEnumerable<(Of <(T>)>) 集合表示为 IQueryable<(Of <(T>)>) 数据源。

EnumerableQuery T 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

EnumerableQuery T 类
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 构造函数

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 EnumerableQuery<(Of <(T>)>) 类的新实例。

名称 说明
页首

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 构造函数 (Expression)

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
构造函数 (Expression)
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 EnumerableQuery<(Of <(T>)>) 类的新实例，并将该实例与表达式树关联。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Sub New ( _
    expression As Expression _
)
public EnumerableQuery(
    Expression expression
)
public:
EnumerableQuery(
    Expression^ expression
)
new :
        expression:Expression -> EnumerableQuery

参数

expression
类型： System.Linq.Expressions Expression
要与新实例关联的表达式树。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
EnumerableQuery T 重载
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 构造函数 (IEnumerable <(Of <(T >)>))

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
构造函数 (IEnumerable
<
(Of
<
(
T
>
)
>
)
)
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 EnumerableQuery<(Of <(T>)>) 类的新实例，并将该实例与 IEnumerable<(Of <(T>)>) 集合关联。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Sub New ( _
    enumerable As IEnumerable(Of T) _
)
public EnumerableQuery(
    IEnumerable<T> enumerable
)
public:
EnumerableQuery(
    IEnumerable<T>^ enumerable
)
new :
        enumerable:IEnumerable<'T> -> EnumerableQuery

参数

enumerable
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
T
>
)
>
)

要与新实例关联的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
EnumerableQuery T 重载
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 方法

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

EnumerableQuery T 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

EnumerableQuery T 类
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.CreateQuery 方法

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
CreateQuery 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

名称 说明
页首

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryProvider ..::.CreateQuery 方法 (Expression)

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryProvider
.
.
::
.
CreateQuery 方法 (Expression)
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

构造一个新的 EnumerableQuery<(Of <(T>)>) 对象，并将它与表示 IQueryable<(Of <(T>)>) 数据集合的指定表达式树关联。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function CreateQuery(Of S) ( _
    expression As Expression _
) As IQueryable(Of S) Implements IQueryProvider.CreateQuery
IQueryable<S> IQueryProvider.CreateQuery<S>(
    Expression expression
)

private:
generic<typename S>
virtual IQueryable<S>^ CreateQuery(
    Expression^ expression
) sealed = IQueryProvider::CreateQuery
private abstract CreateQuery :
        expression:Expression -> IQueryable<'S>
private override CreateQuery :
        expression:Expression -> IQueryable<'S>

类型参数

S

expression 所表示的集合中的数据的类型。

参数

expression
类型： System.Linq.Expressions Expression
要执行的表达式树。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
S
>
)
>
)

与 expression 关联的 EnumerableQuery 对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
CreateQuery 重载
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryProvider ..::.CreateQuery 方法 (Expression)

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryProvider
.
.
::
.
CreateQuery 方法 (Expression)
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

构造一个新的 EnumerableQuery<(Of <(T>)>) 对象，并将它与表示 IQueryable 数据集合的指定表达式树关联。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function CreateQuery ( _
    expression As Expression _
) As IQueryable Implements IQueryProvider.CreateQuery
IQueryable IQueryProvider.CreateQuery(
    Expression expression
)
private:
virtual IQueryable^ CreateQuery(
    Expression^ expression
) sealed = IQueryProvider::CreateQuery
private abstract CreateQuery :
        expression:Expression -> IQueryable
private override CreateQuery :
        expression:Expression -> IQueryable

参数

expression
类型： System.Linq.Expressions Expression
表示 IQueryable 数据集合的表达式树。

返回值

类型： System.Linq IQueryable
与 expression 关联的 EnumerableQuery<(Of <(T>)>) 对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
CreateQuery 重载
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.Execute 方法

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
Execute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

名称 说明
页首

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryProvider ..::.Execute 方法 (Expression)

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryProvider
.
.
::
.
Execute 方法 (Expression)
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在重写表达式后执行表达式，重写的目的是对无法通过 Queryable 方法查询的任何可枚举数据源调用 Enumerable 方法，而不是调用 Queryable 方法。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function Execute(Of S) ( _
    expression As Expression _
) As S Implements IQueryProvider.Execute
S IQueryProvider.Execute<S>(
    Expression expression
)

private:
generic<typename S>
virtual S Execute(
    Expression^ expression
) sealed = IQueryProvider::Execute
private abstract Execute :
        expression:Expression -> 'S
private override Execute :
        expression:Expression -> 'S

类型参数

S

expression 所表示的集合中的数据的类型。

参数

expression
类型： System.Linq.Expressions Expression
要执行的表达式树。

返回值

类型：S
执行 expression 后所得到的值。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
Execute 重载
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryProvider ..::.Execute 方法 (Expression)

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryProvider
.
.
::
.
Execute 方法 (Expression)
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在重写表达式后执行表达式，重写的目的是对无法通过 Queryable 方法查询的任何可枚举数据源调用 Enumerable 方法，而不是调用 Queryable 方法。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function Execute ( _
    expression As Expression _
) As Object Implements IQueryProvider.Execute
Object IQueryProvider.Execute(
    Expression expression
)
private:
virtual Object^ Execute(
    Expression^ expression
) sealed = IQueryProvider::Execute
private abstract Execute :
        expression:Expression -> Object
private override Execute :
        expression:Expression -> Object

参数

expression
类型： System.Linq.Expressions Expression
要执行的表达式树。

返回值

类型： System Object
执行 expression 后所得到的值。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
Execute 重载
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IEnumerable <(Of <(T >)>) ..::.GetEnumerator 方法

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IEnumerable
<
(Of
<
(
T
>
)
>
)
.
.
::
.
GetEnumerator 方法
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回一个枚举器，该枚举器可以循环访问关联的 IEnumerable<(Of <(T>)>) 集合，如果该集合为 null，则循环访问通过将关联的表达式树重写为 IEnumerable<(Of <(T>)>) 数据源的查询并执行该查询而得到的集合。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function GetEnumerator As IEnumerator(Of T)
    Implements IEnumerable(Of T).GetEnumerator
IEnumerator<T> IEnumerable<T>.GetEnumerator()
private:
virtual IEnumerator<T>^ GetEnumerator() sealed = IEnumerable<T>::GetEnumerator
private abstract GetEnumerator : unit -> IEnumerator<'T>
private override GetEnumerator : unit -> IEnumerator<'T>

返回值

类型： System.Collections.Generic IEnumerator
<
(Of
<
(
T
>
)
>
)

可用来循环访问关联的数据源的枚举器。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IEnumerable ..::.GetEnumerator 方法

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IEnumerable
.
.
::
.
GetEnumerator 方法
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回一个枚举器，该枚举器可以循环访问关联的 IEnumerable<(Of <(T>)>) 集合，如果该集合为 null，则循环访问通过将关联的表达式树重写为 IEnumerable<(Of <(T>)>) 数据源的查询并执行该查询而得到的集合。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function GetEnumerator As IEnumerator
    Implements IEnumerable.GetEnumerator
IEnumerator IEnumerable.GetEnumerator()
private:
virtual IEnumerator^ GetEnumerator() sealed = IEnumerable::GetEnumerator
private abstract GetEnumerator : unit -> IEnumerator
private override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
可用来循环访问关联的数据源的枚举器。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.ToString 方法

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
ToString 方法
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回可枚举集合的文本表示形式；如果该集合为 null，则返回与此实例关联的表达式树的文本表示形式。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
可枚举集合的文本表示形式；如果该集合为 null，则为与此实例关联的表达式树的文本表示形式。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) 属性

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。
名称 说明
页首

参考

EnumerableQuery T 类
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryable ..::.ElementType 属性

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryable
.
.
::
.
ElementType 属性
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取此实例所表示的集合中的数据的类型。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private ReadOnly Property ElementType As Type
    Implements IQueryable.ElementType
    Get
Type IQueryable.ElementType { get; }
private:
virtual property Type^ ElementType {
    Type^ get () sealed = IQueryable::ElementType::get;
}
private abstract ElementType : Type
private override ElementType : Type

属性值

类型： System Type
此实例所表示的集合中的数据的类型。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryable ..::.Expression 属性

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryable
.
.
::
.
Expression 属性
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取与此实例关联或者表示此实例的表达式树。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private ReadOnly Property Expression As Expression
    Implements IQueryable.Expression
    Get
Expression IQueryable.Expression { get; }
private:
virtual property Expression^ Expression {
    Expression^ get () sealed = IQueryable::Expression::get;
}
private abstract Expression : Expression
private override Expression : Expression

属性值

类型： System.Linq.Expressions Expression
与此实例关联或者表示此实例的表达式树。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


EnumerableQuery <(Of <(T >)>) ..::.IQueryable ..::.Provider 属性

EnumerableQuery
<
(Of
<
(
T
>
)
>
)
.
.
::
.
IQueryable
.
.
::
.
Provider 属性
EnumerableQuery

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取与此实例关联的查询提供程序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private ReadOnly Property Provider As IQueryProvider
    Implements IQueryable.Provider
    Get
IQueryProvider IQueryable.Provider { get; }
private:
virtual property IQueryProvider^ Provider {
    IQueryProvider^ get () sealed = IQueryable::Provider::get;
}
private abstract Provider : IQueryProvider
private override Provider : IQueryProvider

属性值

类型： System.Linq IQueryProvider
与此实例关联的查询提供程序。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

EnumerableQuery T 类
EnumerableQuery T 成员
System.Linq 命名空间


IGrouping <(Of <(TKey, TElement >)>) 接口

IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
接口
成员

表示具有公共键的对象的集合。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IGrouping(Of Out TKey, Out TElement) _
    Inherits IEnumerable(Of TElement), IEnumerable
public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>,
    IEnumerable

generic<typename TKey, typename TElement>
public interface class IGrouping : IEnumerable<TElement>,
    IEnumerable
type IGrouping<'TKey, 'TElement> =
    interface
        interface IEnumerable<'TElement>
        interface IEnumerable
    end

类型参数

outOutoutoutTKeyTKey

IGrouping<(Of <(TKey, TElement>)>) 的键的类型。

该类型参数是协变的。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息，请参见 泛型中的协变和逆变。

outOutoutoutTElementTElement

IGrouping<(Of <(TKey, TElement>)>) 的值的类型。

IGrouping<(Of <(TKey, TElement>)>) 是一个具有附加键的 IEnumerable<(Of <(T>)>)。该键表示 IGrouping<(Of <(TKey, TElement>)>) 中的每个值所共有的特性。 IGrouping<(Of <(TKey, TElement>)>) 是一个具有附加键的 IEnumerable<(Of <(T>)>)。该键表示 IGrouping<(Of <(TKey, TElement>)>) 中的每个值所共有的特性。

访问 IGrouping<(Of <(TKey, TElement>)>) 的值的方式与访问 IEnumerable<(Of <(T>)>) 的元素的方式几乎相同。例如，您可以使用 Visual C# 中的 foreach 或 Visual Basic 循环中的 For Each 循环访问 IGrouping<(Of <(TKey, TElement>)>) 对象，来访问这些值。“示例”部分包含演示如何同时访问 IGrouping<(Of <(TKey, TElement>)>) 对象的键和值的代码示例。 访问 IGrouping<(Of <(TKey, TElement>)>) 的值的方式与访问 IEnumerable<(Of <(T>)>) 的元素的方式几乎相同。例如，您可以使用 Visual C# 中的 foreach 或 Visual Basic 循环中的 For Each 循环访问 IGrouping<(Of <(TKey, TElement>)>) 对象，来访问这些值。“示例”部分包含演示如何同时访问 IGrouping<(Of <(TKey, TElement>)>) 对象的键和值的代码示例。 访问 IGrouping<(Of <(TKey, TElement>)>) 的值的方式与访问 IEnumerable<(Of <(T>)>) 的元素的方式几乎相同。例如，您可以使用 Visual C# 中的 foreach 或 Visual Basic 循环中的 For Each 循环访问 IGrouping<(Of <(TKey, TElement>)>) 对象，来访问这些值。“示例”部分包含演示如何同时访问 IGrouping<(Of <(TKey, TElement>)>) 对象的键和值的代码示例。

IGrouping<(Of <(TKey, TElement>)>) 类型由 GroupBy 标准查询运算符方法使用，后者会返回类型 IGrouping<(Of <(TKey, TElement>)>) 的元素的序列。

下面的示例演示如何使用 IGrouping<(Of <(TKey, TElement>)>) 对象。

在此示例中，对 GetMembers 返回的 MemberInfo 对象数组调用 GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>))。GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 基于对象的 MemberType 属性值对这些对象进行分组。MemberInfo 对象的数组中的 MemberType 的每个唯一的值会成为新的 IGrouping<(Of <(TKey, TElement>)>) 对象的键，具有该键的 MemberInfo 对象将构成 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列。 在此示例中，对 GetMembers 返回的 MemberInfo 对象数组调用 GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>))。GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 基于对象的 MemberType 属性值对这些对象进行分组。MemberInfo 对象的数组中的 MemberType 的每个唯一的值会成为新的 IGrouping<(Of <(TKey, TElement>)>) 对象的键，具有该键的 MemberInfo 对象将构成 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列。 在此示例中，对 GetMembers 返回的 MemberInfo 对象数组调用 GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>))。GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 基于对象的 MemberType 属性值对这些对象进行分组。MemberInfo 对象的数组中的 MemberType 的每个唯一的值会成为新的 IGrouping<(Of <(TKey, TElement>)>) 对象的键，具有该键的 MemberInfo 对象将构成 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列。

最后，对 IGrouping<(Of <(TKey, TElement>)>) 对象的序列调用 First 方法，以仅获取第一个 IGrouping<(Of <(TKey, TElement>)>) 对象。

接下来，将输出 IGrouping<(Of <(TKey, TElement>)>) 对象的键和 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列中的每个值的 Name 属性。请注意，只需使用 IGrouping<(Of <(TKey, TElement>)>) 变量本身，就可以访问 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列。 接下来，将输出 IGrouping<(Of <(TKey, TElement>)>) 对象的键和 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列中的每个值的 Name 属性。请注意，只需使用 IGrouping<(Of <(TKey, TElement>)>) 变量本身，就可以访问 IGrouping<(Of <(TKey, TElement>)>) 对象的值序列。

        ' Get an IGrouping object.
        Dim group As IGrouping(Of System.Reflection.MemberTypes, System.Reflection.MemberInfo) = _
            Type.GetType("String").GetMembers(). _
            GroupBy(Function(ByVal member) member.MemberType). _
            First()

        ' Output the key of the IGrouping, then iterate
        ' through each value in the sequence of values
        ' of the IGrouping and output its Name property.
        MsgBox(String.Format("\nValues that have the key '{0}':", group.Key))
        For Each mi As System.Reflection.MemberInfo In group
            MsgBox(mi.Name)
        Next

        ' The output is similar to:

        ' Values that have the key 'Method':
        ' get_Chars
        ' get_Length
        ' IndexOf
        ' IndexOfAny
        ' LastIndexOf
        ' LastIndexOfAny
        ' Insert
        ' Replace
        ' Replace
        ' Remove
        ' Join
        ' Join
        ' Equals
        ' Equals
        ' Equals
        ' ...

            // Get an IGrouping object.
            IGrouping<System.Reflection.MemberTypes, System.Reflection.MemberInfo> group =
                typeof(String).GetMembers().
                GroupBy(member => member.MemberType).
                First();

            // Output the key of the IGrouping, then iterate
            // through each value in the sequence of values
            // of the IGrouping and output its Name property.
            Console.WriteLine("\nValues that have the key '{0}':", group.Key);
            foreach (System.Reflection.MemberInfo mi in group)
                Console.WriteLine(mi.Name);

            // The output is similar to:

            // Values that have the key 'Method':
            // get_Chars
            // get_Length
            // IndexOf
            // IndexOfAny
            // LastIndexOf
            // LastIndexOfAny
            // Insert
            // Replace
            // Replace
            // Remove
            // Join
            // Join
            // Equals
            // Equals
            // Equals
            // ...

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

IGrouping TKey, TElement 成员
System.Linq 命名空间


IGrouping <(Of <(TKey, TElement >)>) 成员

IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IGrouping

表示具有公共键的对象的集合。

IGrouping TKey, TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IGrouping TKey, TElement 接口
System.Linq 命名空间


IGrouping <(Of <(TKey, TElement >)>) 方法

IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IGrouping

IGrouping TKey, TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IGrouping TKey, TElement 接口
System.Linq 命名空间


IGrouping <(Of <(TKey, TElement >)>) ..::.GetEnumerator 方法

IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
GetEnumerator 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IGrouping

名称 说明
页首

参考

IGrouping TKey, TElement 接口
IGrouping TKey, TElement 成员
System.Linq 命名空间


IGrouping <(Of <(TKey, TElement >)>) 属性

IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IGrouping

IGrouping TKey, TElement 类型公开以下成员。

名称 说明
页首

参考

IGrouping TKey, TElement 接口
System.Linq 命名空间


IGrouping <(Of <(TKey, TElement >)>) ..::.Key 属性

IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Key 属性
IGrouping

获取 IGrouping<(Of <(TKey, TElement>)>) 的键。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
ReadOnly Property Key As TKey
    Get
TKey Key { get; }
property TKey Key {
    TKey get ();
}
abstract Key : 'TKey

属性值

类型： TKey
IGrouping<(Of <(TKey, TElement>)>) 的键。

IGrouping<(Of <(TKey, TElement>)>) 的键表示 IGrouping<(Of <(TKey, TElement>)>) 中的每个值所共有的特性。

下面的示例演示如何使用 Key 属性，为 IGrouping<(Of <(TKey, TElement>)>) 对象序列中的每个 IGrouping<(Of <(TKey, TElement>)>) 对象设置标签。GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法用于获取 IGrouping<(Of <(TKey, TElement>)>) 对象的序列。接下来，Visual C# 中的 foreach 或 Visual Basic 循环中的 For Each 将循环访问每个 IGrouping<(Of <(TKey, TElement>)>) 对象，输出对象的键和该对象所包含值的数目。 下面的示例演示如何使用 Key 属性，为 IGrouping<(Of <(TKey, TElement>)>) 对象序列中的每个 IGrouping<(Of <(TKey, TElement>)>) 对象设置标签。GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法用于获取 IGrouping<(Of <(TKey, TElement>)>) 对象的序列。接下来，Visual C# 中的 foreach 或 Visual Basic 循环中的 For Each 将循环访问每个 IGrouping<(Of <(TKey, TElement>)>) 对象，输出对象的键和该对象所包含值的数目。 下面的示例演示如何使用 Key 属性，为 IGrouping<(Of <(TKey, TElement>)>) 对象序列中的每个 IGrouping<(Of <(TKey, TElement>)>) 对象设置标签。GroupBy<(Of <(TSource, TKey>)>)(IEnumerable<(Of <(TSource>)>), Func<(Of <(TSource, TKey>)>)) 方法用于获取 IGrouping<(Of <(TKey, TElement>)>) 对象的序列。接下来，Visual C# 中的 foreach 或 Visual Basic 循环中的 For Each 将循环访问每个 IGrouping<(Of <(TKey, TElement>)>) 对象，输出对象的键和该对象所包含值的数目。

        ' Get a sequence of IGrouping objects.
        Dim memberQuery As  _
        IEnumerable(Of IGrouping(Of System.Reflection.MemberTypes, System.Reflection.MemberInfo)) = _
            Type.GetType("String").GetMembers(). _
            GroupBy(Function(ByVal member) member.MemberType)

        ' Output the key of each IGrouping object and the count of values.
        For Each group As  _
        IGrouping(Of System.Reflection.MemberTypes, System.Reflection.MemberInfo) In memberQuery
            MsgBox(String.Format("(Key) {0} (Member count) {1}", group.Key, group.Count()))
        Next

        ' The output is similar to:
        ' (Key) Method (Member count) 113
        ' (Key) Constructor (Member count) 8
        ' (Key) Property (Member count) 2
        ' (Key) Field (Member count) 1

            // Get a sequence of IGrouping objects.
            IEnumerable<IGrouping<System.Reflection.MemberTypes, System.Reflection.MemberInfo>> memberQuery =
                typeof(String).GetMembers().
                GroupBy(member => member.MemberType);

            // Output the key of each IGrouping object and the count of values.
            foreach (IGrouping<System.Reflection.MemberTypes, System.Reflection.MemberInfo> group in memberQuery)
                Console.WriteLine("(Key) {0} (Member count) {1}", group.Key, group.Count());

            // The output is similar to:
            // (Key) Method (Member count) 113
            // (Key) Constructor (Member count) 8
            // (Key) Property (Member count) 2
            // (Key) Field (Member count) 1

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

IGrouping TKey, TElement 接口
IGrouping TKey, TElement 成员
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) 接口

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
接口
成员

定义索引器、大小属性以及将键映射到 IEnumerable<(Of <(T>)>) 值序列的数据结构的布尔搜索方法。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface ILookup(Of TKey, TElement) _
    Inherits IEnumerable(Of IGrouping(Of TKey, TElement)),  _
    IEnumerable
public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>,
    IEnumerable

generic<typename TKey, typename TElement>
public interface class ILookup : IEnumerable<IGrouping<TKey, TElement>^>,
    IEnumerable
type ILookup<'TKey, 'TElement> =
    interface
        interface IEnumerable<IGrouping<'TKey, 'TElement>>
        interface IEnumerable
    end

类型参数

TKey

ILookup<(Of <(TKey, TElement>)>) 中的键的类型。

TElement

组成 ILookup<(Of <(TKey, TElement>)>) 中的值的 IEnumerable<(Of <(T>)>) 序列中的元素的类型。

类型 Lookup<(Of <(TKey, TElement>)>) 实现 ILookup<(Of <(TKey, TElement>)>) 接口。

可将其追加到 LINQ 查询末尾的扩展方法 ToLookup 返回一个 ILookup<(Of <(TKey, TElement>)>) 类型的对象。

下面的代码示例演示如何创建一个 ILookup<(Of <(TKey, TElement>)>) 对象并循环访问其内容。

Structure Package
    Public Company As String
    Public Weight As Double
    Public TrackingNumber As Long
End Structure

Sub ILookupExample()
    ' Create a list of Packages to put into an ILookup data structure.
    Dim packages As New System.Collections.Generic.List(Of Package)(New Package() _
        {New Package With {.Company = "Coho Vineyard", .Weight = 25.2, .TrackingNumber = 89453312L}, _
          New Package With {.Company = "Lucerne Publishing", .Weight = 18.7, .TrackingNumber = 89112755L}, _
          New Package With {.Company = "Wingtip Toys", .Weight = 6.0, .TrackingNumber = 299456122L}, _
          New Package With {.Company = "Contoso Pharmaceuticals", .Weight = 9.3, .TrackingNumber = 670053128L}, _
          New Package With {.Company = "Wide World Importers", .Weight = 33.8, .TrackingNumber = 4665518773L}})

    ' Create a ILookup to organize the packages. Use the first character of Company as the key value.
    ' Select Company appended to TrackingNumber for each element value.
    Dim packageLookup As ILookup(Of Char, String) = _
        packages.ToLookup(Function(p) Convert.ToChar(p.Company.Substring(0, 1)), _
                          Function(p) p.Company & " " & p.TrackingNumber)

    Dim output As New System.Text.StringBuilder
    ' Iterate through each group in the Lookup and output the contents.
    For Each packageGroup In packageLookup
        ' Print the key value.
        output.AppendLine(packageGroup.Key)
        ' Iterate through each value in the group and output it.
        For Each str As String In packageGroup
            output.AppendLine(String.Format("    {0}", str))
        Next
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:
    '
    ' C
    '     Coho Vineyard 89453312
    '     Contoso Pharmaceuticals 670053128
    ' L
    '     Lucerne Publishing 89112755
    ' W
    '     Wingtip Toys 299456122
    '     Wide World Importers 4665518773
End Sub

class Package
{
    public string Company { get; set; }
    public double Weight { get; set; }
    public long TrackingNumber { get; set; }
}

public static void ILookupExample()
{
    // Create a list of Packages to put into an ILookup data structure.
    List<Package> packages = new List<Package> { new Package { Company = "Coho Vineyard", Weight = 25.2, TrackingNumber = 89453312L },
                                                 new Package { Company = "Lucerne Publishing", Weight = 18.7, TrackingNumber = 89112755L },
                                                 new Package { Company = "Wingtip Toys", Weight = 6.0, TrackingNumber = 299456122L },
                                                 new Package { Company = "Contoso Pharmaceuticals", Weight = 9.3, TrackingNumber = 670053128L },
                                                 new Package { Company = "Wide World Importers", Weight = 33.8, TrackingNumber = 4665518773L } };

    // Create a Lookup to organize the packages. Use the first character of Company as the key value.
    // Select Company appended to TrackingNumber for each element value in the ILookup object.
    ILookup<char, string> packageLookup = packages.ToLookup(
        p => Convert.ToChar(p.Company.Substring(0, 1)),
        p => p.Company + " " + p.TrackingNumber
        );

    // Iterate through each value in the ILookup and output the contents.
    foreach (var packageGroup in packageLookup)
    {
        // Print the key value.
        Console.WriteLine(packageGroup.Key);
        // Iterate through each value in the collection.
        foreach (string str in packageGroup)
            Console.WriteLine("    {0}", str);
    }

    // This code produces the following output:
    //
    // C
    //     Coho Vineyard 89453312
    //     Contoso Pharmaceuticals 670053128
    // L
    //     Lucerne Publishing 89112755
    // W
    //     Wingtip Toys 299456122
    //     Wide World Importers 4665518773
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

ILookup TKey, TElement 成员
System.Linq 命名空间
Lookup TKey, TElement


ILookup <(Of <(TKey, TElement >)>) 成员

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ILookup

定义索引器、大小属性以及将键映射到 IEnumerable<(Of <(T>)>) 值序列的数据结构的布尔搜索方法。

ILookup TKey, TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ILookup TKey, TElement 接口
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) 方法

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ILookup

ILookup TKey, TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

ILookup TKey, TElement 接口
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) ..::.Contains 方法

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Contains 方法
ILookup

确定指定的键是否位于 ILookup<(Of <(TKey, TElement>)>) 中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Function Contains ( _
    key As TKey _
) As Boolean
bool Contains(
    TKey key
)
bool Contains(
    TKey key
)
abstract Contains :
        key:'TKey -> bool

参数

key
类型： TKey
要在 ILookup<(Of <(TKey, TElement>)>) 中搜索的键。

返回值

类型： System Boolean
如果 key 在 ILookup<(Of <(TKey, TElement>)>) 中，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

ILookup TKey, TElement 接口
ILookup TKey, TElement 成员
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) ..::.GetEnumerator 方法

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
GetEnumerator 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ILookup

名称 说明
页首

参考

ILookup TKey, TElement 接口
ILookup TKey, TElement 成员
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) 属性

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ILookup

ILookup TKey, TElement 类型公开以下成员。

名称 说明
页首

参考

ILookup TKey, TElement 接口
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) ..::.Count 属性

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Count 属性
ILookup

获取 ILookup<(Of <(TKey, TElement>)>) 中的键/值对集合的数目。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
ReadOnly Property Count As Integer
    Get
int Count { get; }
property int Count {
    int get ();
}
abstract Count : int

属性值

类型： System Int32
ILookup<(Of <(TKey, TElement>)>) 中键/值对集合的数目。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

ILookup TKey, TElement 接口
ILookup TKey, TElement 成员
System.Linq 命名空间


ILookup <(Of <(TKey, TElement >)>) ..::.Item 属性

ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Item 属性
ILookup

获取按指定键进行索引的值的 IEnumerable<(Of <(T>)>) 序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
ReadOnly Property Item ( _
    key As TKey _
) As IEnumerable(Of TElement)
    Get
IEnumerable<TElement> this[
    TKey key
] { get; }
property IEnumerable<TElement>^ Item[TKey key] {
    IEnumerable<TElement>^ get (TKey key);
}
abstract Item : IEnumerable<'TElement>

参数

key
类型： TKey
所需值序列的键。

属性值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TElement
>
)
>
)

按指定键进行索引的值的 IEnumerable<(Of <(T>)>) 序列。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

ILookup TKey, TElement 接口
ILookup TKey, TElement 成员
System.Linq 命名空间


IOrderedEnumerable <(Of <(TElement >)>) 接口

IOrderedEnumerable
<
(Of
<
(
TElement
>
)
>
)
接口
成员

表示已排序序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IOrderedEnumerable(Of TElement) _
    Inherits IEnumerable(Of TElement), IEnumerable
public interface IOrderedEnumerable<TElement> : IEnumerable<TElement>,
    IEnumerable

generic<typename TElement>
public interface class IOrderedEnumerable : IEnumerable<TElement>,
    IEnumerable
type IOrderedEnumerable<'TElement> =
    interface
        interface IEnumerable<'TElement>
        interface IEnumerable
    end

类型参数

TElement

序列中的元素的类型。

由于此类型继承自 IEnumerable<(Of <(T>)>)，因此它是可枚举的。

扩展方法 ThenBy 和 ThenByDescending 对 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象进行操作。可通过调用主要排序方法之一（OrderBy 或 OrderByDescending）来获取 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象，这些方法将返回 IOrderedEnumerable<(Of <(TElement>)>)。从属排序方法 ThenBy 和 ThenByDescending 也会返回 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象。此设计允许对 ThenBy 或 ThenByDescending 进行任意数量的连续调用，而每次调用都将对从之前调用返回的已排序数据执行从属排序。 扩展方法 ThenBy 和 ThenByDescending 对 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象进行操作。可通过调用主要排序方法之一（OrderBy 或 OrderByDescending）来获取 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象，这些方法将返回 IOrderedEnumerable<(Of <(TElement>)>)。从属排序方法 ThenBy 和 ThenByDescending 也会返回 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象。此设计允许对 ThenBy 或 ThenByDescending 进行任意数量的连续调用，而每次调用都将对从之前调用返回的已排序数据执行从属排序。 扩展方法 ThenBy 和 ThenByDescending 对 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象进行操作。可通过调用主要排序方法之一（OrderBy 或 OrderByDescending）来获取 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象，这些方法将返回 IOrderedEnumerable<(Of <(TElement>)>)。从属排序方法 ThenBy 和 ThenByDescending 也会返回 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象。此设计允许对 ThenBy 或 ThenByDescending 进行任意数量的连续调用，而每次调用都将对从之前调用返回的已排序数据执行从属排序。 扩展方法 ThenBy 和 ThenByDescending 对 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象进行操作。可通过调用主要排序方法之一（OrderBy 或 OrderByDescending）来获取 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象，这些方法将返回 IOrderedEnumerable<(Of <(TElement>)>)。从属排序方法 ThenBy 和 ThenByDescending 也会返回 IOrderedEnumerable<(Of <(TElement>)>) 类型的对象。此设计允许对 ThenBy 或 ThenByDescending 进行任意数量的连续调用，而每次调用都将对从之前调用返回的已排序数据执行从属排序。

下面的示例演示如何对字符串的数组执行主要排序和从属排序。它还演示生成的 IOrderedEnumerable<(Of <(TElement>)>) 是可枚举的。 下面的示例演示如何对字符串的数组执行主要排序和从属排序。它还演示生成的 IOrderedEnumerable<(Of <(TElement>)>) 是可枚举的。

        ' Create an array of strings to sort.
        Dim fruits() As String = _
            {"apricot", "orange", "banana", "mango", "apple", "grape", "strawberry"}

        ' Sort the strings first by their length and then alphabetically by passing the identity selector function.
        Dim sortedFruits1 As IOrderedEnumerable(Of String) = _
            fruits.OrderBy(Function(ByVal fruit) fruit.Length).ThenBy(Function(ByVal fruit) fruit)

        Dim output As New System.Text.StringBuilder
        ' Output the resulting sequence of strings.
        For Each fruit As String In sortedFruits1
            output.AppendLine(fruit)
        Next

        ' Display the results.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' grape
        ' mango
        ' banana
        ' orange
        ' apricot
        ' strawberry

            // Create an array of strings to sort.
            string[] fruits = { "apricot", "orange", "banana", "mango", "apple", "grape", "strawberry" };

            // Sort the strings first by their length and then alphabetically
            // by passing the identity selector function.
            IOrderedEnumerable<string> sortedFruits1 =
                fruits.OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);

            // Output the resulting sequence of strings.
            foreach (string fruit in sortedFruits1)
                Console.WriteLine(fruit);

            // This code produces the following output:
            //
            // apple
            // grape
            // mango
            // banana
            // orange
            // apricot
            // strawberry

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

IOrderedEnumerable TElement 成员
System.Linq 命名空间


IOrderedEnumerable <(Of <(TElement >)>) 成员

IOrderedEnumerable
<
(Of
<
(
TElement
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedEnumerable

表示已排序序列。

IOrderedEnumerable TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IOrderedEnumerable TElement 接口
System.Linq 命名空间


IOrderedEnumerable <(Of <(TElement >)>) 方法

IOrderedEnumerable
<
(Of
<
(
TElement
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedEnumerable

IOrderedEnumerable TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IOrderedEnumerable TElement 接口
System.Linq 命名空间


IOrderedEnumerable <(Of <(TElement >)>) ..::.CreateOrderedEnumerable <(Of <(TKey >)>) 方法

IOrderedEnumerable
<
(Of
<
(
TElement
>
)
>
)
.
.
::
.
CreateOrderedEnumerable
<
(Of
<
(
TKey
>
)
>
)
方法
IOrderedEnumerable

根据某个键对 IOrderedEnumerable<(Of <(TElement>)>) 的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Function CreateOrderedEnumerable(Of TKey) ( _
    keySelector As Func(Of TElement, TKey), _
    comparer As IComparer(Of TKey), _
    descending As Boolean _
) As IOrderedEnumerable(Of TElement)
IOrderedEnumerable<TElement> CreateOrderedEnumerable<TKey>(
    Func<TElement, TKey> keySelector,
    IComparer<TKey> comparer,
    bool descending
)

generic<typename TKey>
IOrderedEnumerable<TElement>^ CreateOrderedEnumerable(
    Func<TElement, TKey>^ keySelector,
    IComparer<TKey>^ comparer,
    bool descending
)
abstract CreateOrderedEnumerable :
        keySelector:Func<'TElement, 'TKey> *
        comparer:IComparer<'TKey> *
        descending:bool -> IOrderedEnumerable<'TElement>

类型参数

TKey

keySelector 生成的键的类型。

参数

keySelector
类型： System Func
<
(Of
<
(
TElement, TKey
>
)
>
)

用于提取每个元素的键的 Func<(Of <(T, TResult>)>)。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

用于比较键在返回序列中的位置的 IComparer<(Of <(T>)>)。
descending
类型： System Boolean
如果为 true，则对元素进行降序排序；如果为 false，则对元素进行升序排序。

返回值

类型： System.Linq IOrderedEnumerable
<
(Of
<
(
TElement
>
)
>
)

一个 IOrderedEnumerable<(Of <(TElement>)>)，其元素按键进行排序。

此方法提供的功能与 ThenBy 或 ThenByDescending 提供的功能类似，具体取决于 descending 是 true 还是 false。二者都对 IOrderedEnumerable<(Of <(TElement>)>) 类型的已排序序列执行从属排序。 此方法提供的功能与 ThenBy 或 ThenByDescending 提供的功能类似，具体取决于 descending 是 true 还是 false。二者都对 IOrderedEnumerable<(Of <(TElement>)>) 类型的已排序序列执行从属排序。

下面的代码示例演示如何使用 CreateOrderedEnumerable<(Of <(TKey>)>) 对 IOrderedEnumerable<(Of <(TElement>)>) 执行从属排序。

        ' Create an array of strings to sort.
        Dim fruits() As String = {"apricot", "orange", "banana", "mango", "apple", "grape", "strawberry"}
        ' First sort the strings by their length.
        Dim sortedFruits2 As IOrderedEnumerable(Of String) = _
            fruits.OrderBy(Function(ByVal fruit) fruit.Length)
        ' Secondarily sort the strings alphabetically, using the default comparer.
        Dim sortedFruits3 As IOrderedEnumerable(Of String) = _
            sortedFruits2.CreateOrderedEnumerable(Of String)( _
                Function(ByVal fruit) fruit, _
                System.Collections.Generic.Comparer(Of String).Default, _
                False)

        Dim output As New System.Text.StringBuilder
        ' Output the resulting sequence of strings.
        For Each fruit As String In sortedFruits3
            output.AppendLine(fruit)
        Next

        ' Display the results.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' apple
        ' grape
        ' mango
        ' banana
        ' orange
        ' apricot
        ' strawberry

            // Create an array of strings to sort.
            string[] fruits = { "apricot", "orange", "banana", "mango", "apple", "grape", "strawberry" };
            // First sort the strings by their length.
            IOrderedEnumerable<string> sortedFruits2 =
                fruits.OrderBy(fruit => fruit.Length);
            // Secondarily sort the strings alphabetically, using the default comparer.
            IOrderedEnumerable<string> sortedFruits3 =
                sortedFruits2.CreateOrderedEnumerable<string>(
                    fruit => fruit,
                    Comparer<string>.Default, false);

            // Output the resulting sequence of strings.
            foreach (string fruit in sortedFruits3)
                Console.WriteLine(fruit);

            // This code produces the following output:
            //
            // apple
            // grape
            // mango
            // banana
            // orange
            // apricot
            // strawberry

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

IOrderedEnumerable TElement 接口
IOrderedEnumerable TElement 成员
System.Linq 命名空间


IOrderedEnumerable <(Of <(TElement >)>) ..::.GetEnumerator 方法

IOrderedEnumerable
<
(Of
<
(
TElement
>
)
>
)
.
.
::
.
GetEnumerator 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedEnumerable

名称 说明
页首

参考

IOrderedEnumerable TElement 接口
IOrderedEnumerable TElement 成员
System.Linq 命名空间


IOrderedQueryable 接口

IOrderedQueryable 接口
成员

表示排序操作的结果。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IOrderedQueryable _
    Inherits IQueryable, IEnumerable
public interface IOrderedQueryable : IQueryable,
    IEnumerable
public interface class IOrderedQueryable : IQueryable,
    IEnumerable
type IOrderedQueryable =
    interface
        interface IQueryable
        interface IEnumerable
    end

IOrderedQueryable 接口由查询提供程序实现。

此接口表示调用 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 方法的排序查询的结果。调用 CreateQuery 并向其传递一个表示排序查询的表达式树时，生成的 IQueryable 对象的类型必须实现 IOrderedQueryable。 此接口表示调用 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 方法的排序查询的结果。调用 CreateQuery 并向其传递一个表示排序查询的表达式树时，生成的 IQueryable 对象的类型必须实现 IOrderedQueryable。

有关如何创建您自己的 LINQ 提供程序的更多信息，请参见 MSDN 博客上的 LINQ: Building an IQueryable Provider（LINQ：生成 IQueryable 提供程序）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IOrderedQueryable 成员
System.Linq 命名空间
Queryable
IQueryable T


IOrderedQueryable 成员

IOrderedQueryable 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable 接口

表示排序操作的结果。

IOrderedQueryable 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IOrderedQueryable 接口
System.Linq 命名空间


IOrderedQueryable 方法

IOrderedQueryable 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable 接口

IOrderedQueryable 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IOrderedQueryable 接口
System.Linq 命名空间


IOrderedQueryable 属性

IOrderedQueryable 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable 接口

IOrderedQueryable 类型公开以下成员。

名称 说明
页首

参考

IOrderedQueryable 接口
System.Linq 命名空间


IOrderedQueryable <(Of <(T >)>) 接口

IOrderedQueryable
<
(Of
<
(
T
>
)
>
)
接口
成员

表示排序操作的结果。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IOrderedQueryable(Of Out T) _
    Inherits IQueryable(Of T), IEnumerable(Of T), IOrderedQueryable,  _
    IQueryable, IEnumerable
public interface IOrderedQueryable<out T> : IQueryable<T>,
    IEnumerable<T>, IOrderedQueryable, IQueryable, IEnumerable

generic<typename T>
public interface class IOrderedQueryable : IQueryable<T>,
    IEnumerable<T>, IOrderedQueryable, IQueryable, IEnumerable
type IOrderedQueryable<'T> =
    interface
        interface IQueryable<'T>
        interface IEnumerable<'T>
        interface IOrderedQueryable
        interface IQueryable
        interface IEnumerable
    end

类型参数

outOutoutoutTT

数据源中数据的类型。

该类型参数是协变的。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息，请参见 泛型中的协变和逆变。

IOrderedQueryable<(Of <(T>)>) 接口由查询提供程序实现。

此接口表示调用 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 方法的排序查询的结果。调用 CreateQuery<(Of <(TElement>)>)(Expression) 并向其传递一个表示排序查询的表达式树时，生成的 IQueryable<(Of <(T>)>) 对象的类型必须实现 IOrderedQueryable<(Of <(T>)>)。 此接口表示调用 OrderBy、OrderByDescending、ThenBy 或 ThenByDescending 方法的排序查询的结果。调用 CreateQuery<(Of <(TElement>)>)(Expression) 并向其传递一个表示排序查询的表达式树时，生成的 IQueryable<(Of <(T>)>) 对象的类型必须实现 IOrderedQueryable<(Of <(T>)>)。

有关如何创建您自己的 LINQ 提供程序的更多信息，请参见 MSDN 博客上的 LINQ: Building an IQueryable Provider（LINQ：生成 IQueryable 提供程序）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IOrderedQueryable T 成员
System.Linq 命名空间
Queryable
IQueryable T


IOrderedQueryable <(Of <(T >)>) 成员

IOrderedQueryable
<
(Of
<
(
T
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable

表示排序操作的结果。

IOrderedQueryable T 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IOrderedQueryable T 接口
System.Linq 命名空间


IOrderedQueryable <(Of <(T >)>) 方法

IOrderedQueryable
<
(Of
<
(
T
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable

IOrderedQueryable T 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IOrderedQueryable T 接口
System.Linq 命名空间


IOrderedQueryable <(Of <(T >)>) ..::.GetEnumerator 方法

IOrderedQueryable
<
(Of
<
(
T
>
)
>
)
.
.
::
.
GetEnumerator 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable

名称 说明
页首

参考

IOrderedQueryable T 接口
IOrderedQueryable T 成员
System.Linq 命名空间


IOrderedQueryable <(Of <(T >)>) 属性

IOrderedQueryable
<
(Of
<
(
T
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IOrderedQueryable

IOrderedQueryable T 类型公开以下成员。

名称 说明
页首

参考

IOrderedQueryable T 接口
System.Linq 命名空间


IQueryable 接口

IQueryable 接口
成员

提供对未指定数据类型的特定数据源的查询进行计算的功能。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IQueryable _
    Inherits IEnumerable
public interface IQueryable : IEnumerable
public interface class IQueryable : IEnumerable
type IQueryable =
    interface
        interface IEnumerable
    end

IQueryable 接口由查询提供程序实现。该接口只能由同时实现 IQueryable<(Of <(T>)>) 的提供程序实现。如果该提供程序不实现 IQueryable<(Of <(T>)>)，则无法对提供程序数据源使用标准查询运算符。 IQueryable 接口由查询提供程序实现。该接口只能由同时实现 IQueryable<(Of <(T>)>) 的提供程序实现。如果该提供程序不实现 IQueryable<(Of <(T>)>)，则无法对提供程序数据源使用标准查询运算符。 IQueryable 接口由查询提供程序实现。该接口只能由同时实现 IQueryable<(Of <(T>)>) 的提供程序实现。如果该提供程序不实现 IQueryable<(Of <(T>)>)，则无法对提供程序数据源使用标准查询运算符。

IQueryable 接口继承 IEnumerable 接口，以便在前者表示一个查询时可以枚举该查询的结果。枚举强制执行与 IQueryable 对象关联的表达式树。“执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。在调用 Execute 方法时将执行不返回可枚举结果的查询。 IQueryable 接口继承 IEnumerable 接口，以便在前者表示一个查询时可以枚举该查询的结果。枚举强制执行与 IQueryable 对象关联的表达式树。“执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。在调用 Execute 方法时将执行不返回可枚举结果的查询。 IQueryable 接口继承 IEnumerable 接口，以便在前者表示一个查询时可以枚举该查询的结果。枚举强制执行与 IQueryable 对象关联的表达式树。“执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。在调用 Execute 方法时将执行不返回可枚举结果的查询。 IQueryable 接口继承 IEnumerable 接口，以便在前者表示一个查询时可以枚举该查询的结果。枚举强制执行与 IQueryable 对象关联的表达式树。“执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。在调用 Execute 方法时将执行不返回可枚举结果的查询。 IQueryable 接口继承 IEnumerable 接口，以便在前者表示一个查询时可以枚举该查询的结果。枚举强制执行与 IQueryable 对象关联的表达式树。“执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。在调用 Execute 方法时将执行不返回可枚举结果的查询。

有关如何创建您自己的 LINQ 提供程序的更多信息，请参见 MSDN 博客上的 LINQ: Building an IQueryable Provider（LINQ：生成 IQueryable 提供程序）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryable 成员
System.Linq 命名空间
Queryable
IQueryable T


IQueryable 成员

IQueryable 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable 接口

提供对未指定数据类型的特定数据源的查询进行计算的功能。

IQueryable 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IQueryable 接口
System.Linq 命名空间


IQueryable 方法

IQueryable 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable 接口

IQueryable 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IQueryable 接口
System.Linq 命名空间


IQueryable 属性

IQueryable 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable 接口

IQueryable 类型公开以下成员。

名称 说明
页首

参考

IQueryable 接口
System.Linq 命名空间


IQueryable ..::.ElementType 属性

IQueryable
.
.
::
.
ElementType 属性
IQueryable 接口

获取在执行与 IQueryable 的此实例关联的表达式树时返回的元素的类型。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
ReadOnly Property ElementType As Type
    Get
Type ElementType { get; }
property Type^ ElementType {
    Type^ get ();
}
abstract ElementType : Type

属性值

类型： System Type
一个 Type，表示在执行与之关联的表达式树时返回的元素的类型。

ElementType 属性表示 IQueryable<T> 或 IQueryable(Of T) 中的“T”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryable 接口
IQueryable 成员
System.Linq 命名空间


IQueryable ..::.Expression 属性

IQueryable
.
.
::
.
Expression 属性
IQueryable 接口

获取与 IQueryable 的实例关联的表达式树。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
ReadOnly Property Expression As Expression
    Get
Expression Expression { get; }
property Expression^ Expression {
    Expression^ get ();
}
abstract Expression : Expression

属性值

类型： System.Linq.Expressions Expression
与 IQueryable 的此实例关联的 Expression。

如果 IQueryable 的实例表示对数据源的 LINQ 查询，则关联的表达式树表示该查询。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryable 接口
IQueryable 成员
System.Linq 命名空间


IQueryable ..::.Provider 属性

IQueryable
.
.
::
.
Provider 属性
IQueryable 接口

获取与此数据源关联的查询提供程序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
ReadOnly Property Provider As IQueryProvider
    Get
IQueryProvider Provider { get; }
property IQueryProvider^ Provider {
    IQueryProvider^ get ();
}
abstract Provider : IQueryProvider

属性值

类型： System.Linq IQueryProvider
与此数据源关联的 IQueryProvider。

如果 IQueryable 的实例表示对数据源的 LINQ 查询，则关联的查询提供程序就是创建了 IQueryable 实例的提供程序。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryable 接口
IQueryable 成员
System.Linq 命名空间


IQueryable <(Of <(T >)>) 接口

IQueryable
<
(Of
<
(
T
>
)
>
)
接口
成员

提供对数据类型已知的特定数据源的查询进行计算的功能。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IQueryable(Of Out T) _
    Inherits IEnumerable(Of T), IQueryable, IEnumerable
public interface IQueryable<out T> : IEnumerable<T>,
    IQueryable, IEnumerable

generic<typename T>
public interface class IQueryable : IEnumerable<T>,
    IQueryable, IEnumerable
type IQueryable<'T> =
    interface
        interface IEnumerable<'T>
        interface IQueryable
        interface IEnumerable
    end

类型参数

outOutoutoutTT

数据源中数据的类型。

该类型参数是协变的。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息，请参见 泛型中的协变和逆变。

IQueryable<(Of <(T>)>) 接口由查询提供程序实现。

此接口继承 IEnumerable<(Of <(T>)>) 接口，因此，如果它表示一个查询，则可以枚举该查询的结果。枚举强制执行与 IQueryable<(Of <(T>)>) 对象关联的表达式树。在调用 Execute<(Of <(TResult>)>)(Expression) 方法时执行不返回可枚举结果的查询。 此接口继承 IEnumerable<(Of <(T>)>) 接口，因此，如果它表示一个查询，则可以枚举该查询的结果。枚举强制执行与 IQueryable<(Of <(T>)>) 对象关联的表达式树。在调用 Execute<(Of <(TResult>)>)(Expression) 方法时执行不返回可枚举结果的查询。 此接口继承 IEnumerable<(Of <(T>)>) 接口，因此，如果它表示一个查询，则可以枚举该查询的结果。枚举强制执行与 IQueryable<(Of <(T>)>) 对象关联的表达式树。在调用 Execute<(Of <(TResult>)>)(Expression) 方法时执行不返回可枚举结果的查询。

“执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。 “执行表达式树”的定义是查询提供程序所特有的。例如，它可能涉及将表达式树转换为适用于基础数据源的查询语言。

IQueryable<(Of <(T>)>) 接口使查询成为多态类型。即，因为对 IQueryable 数据源的查询表示为一个表达式树，所以可以对不同类型的数据源执行此查询。 IQueryable<(Of <(T>)>) 接口使查询成为多态类型。即，因为对 IQueryable 数据源的查询表示为一个表达式树，所以可以对不同类型的数据源执行此查询。

在 Queryable 类中定义的 static（在 Visual Basic 中为 Shared）方法（AsQueryable、ThenBy 和 ThenByDescending 除外）会扩展实现 IQueryable<(Of <(T>)>) 接口的类型的对象。

有关如何创建您自己的 LINQ 提供程序的更多信息，请参见 MSDN 博客上的 LINQ: Building an IQueryable Provider（LINQ：生成 IQueryable 提供程序）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryable T 成员
System.Linq 命名空间
Queryable


IQueryable <(Of <(T >)>) 成员

IQueryable
<
(Of
<
(
T
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable

提供对数据类型已知的特定数据源的查询进行计算的功能。

IQueryable T 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IQueryable T 接口
System.Linq 命名空间


IQueryable <(Of <(T >)>) 方法

IQueryable
<
(Of
<
(
T
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable

IQueryable T 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IQueryable T 接口
System.Linq 命名空间


IQueryable <(Of <(T >)>) ..::.GetEnumerator 方法

IQueryable
<
(Of
<
(
T
>
)
>
)
.
.
::
.
GetEnumerator 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable

名称 说明
页首

参考

IQueryable T 接口
IQueryable T 成员
System.Linq 命名空间


IQueryable <(Of <(T >)>) 属性

IQueryable
<
(Of
<
(
T
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryable

IQueryable T 类型公开以下成员。

名称 说明
页首

参考

IQueryable T 接口
System.Linq 命名空间


IQueryProvider 接口

IQueryProvider 接口
成员

定义用于创建和执行 IQueryable 对象所描述的查询的方法。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Interface IQueryProvider
public interface IQueryProvider
public interface class IQueryProvider
type IQueryProvider =  interface end

IQueryProvider 接口由查询提供程序实现。

有关如何创建您自己的 LINQ 提供程序的更多信息，请参见 MSDN 博客上的 LINQ: Building an IQueryable Provider（LINQ：生成 IQueryable 提供程序）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryProvider 成员
System.Linq 命名空间
Queryable
IQueryable T


IQueryProvider 成员

IQueryProvider 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryProvider 接口

定义用于创建和执行 IQueryable 对象所描述的查询的方法。

名称 说明
页首

参考

IQueryProvider 接口
System.Linq 命名空间


IQueryProvider 方法

IQueryProvider 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryProvider 接口
名称 说明
页首

参考

IQueryProvider 接口
System.Linq 命名空间


IQueryProvider ..::.CreateQuery 方法

IQueryProvider
.
.
::
.
CreateQuery 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryProvider 接口

构造一个 IQueryable 或 IQueryable<(Of <(T>)>) 对象，该对象可计算指定表达式树所表示的查询。

名称 说明
页首

参考

IQueryProvider 接口
IQueryProvider 成员
System.Linq 命名空间


IQueryProvider ..::.CreateQuery <(Of <(TElement >)>) 方法 (Expression)

IQueryProvider
.
.
::
.
CreateQuery
<
(Of
<
(
TElement
>
)
>
)
方法 (Expression)
IQueryProvider 接口

构造一个 IQueryable<(Of <(T>)>) 对象，该对象可计算指定表达式树所表示的查询。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Function CreateQuery(Of TElement) ( _
    expression As Expression _
) As IQueryable(Of TElement)
IQueryable<TElement> CreateQuery<TElement>(
    Expression expression
)

generic<typename TElement>
IQueryable<TElement>^ CreateQuery(
    Expression^ expression
)
abstract CreateQuery :
        expression:Expression -> IQueryable<'TElement>

类型参数

TElement

返回的 IQueryable<(Of <(T>)>) 的元素的类型。

参数

expression
类型： System.Linq.Expressions Expression
表示 LINQ 查询的表达式树。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TElement
>
)
>
)

一个 IQueryable<(Of <(T>)>)，它可计算指定表达式树所表示的查询。
说明 说明

返回的 IQueryable<(Of <(T>)>) 对象的 Expression 属性等于 expression。

如果给定一个表达式树，CreateQuery 方法可创建新的 IQueryable<(Of <(T>)>) 对象。返回的对象所表示的查询与特定 LINQ 提供程序相关联。 如果给定一个表达式树，CreateQuery 方法可创建新的 IQueryable<(Of <(T>)>) 对象。返回的对象所表示的查询与特定 LINQ 提供程序相关联。

大多数返回可枚举结果的 Queryable 标准查询运算符方法将调用此方法。这些标准查询运算符方法将向此方法传递一个表示 LINQ 查询的 MethodCallExpression。 大多数返回可枚举结果的 Queryable 标准查询运算符方法将调用此方法。这些标准查询运算符方法将向此方法传递一个表示 LINQ 查询的 MethodCallExpression。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryProvider 接口
IQueryProvider 成员
CreateQuery 重载
System.Linq 命名空间


IQueryProvider ..::.CreateQuery 方法 (Expression)

IQueryProvider
.
.
::
.
CreateQuery 方法 (Expression)
IQueryProvider 接口

构造一个 IQueryable 对象，该对象可计算指定表达式树所表示的查询。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Function CreateQuery ( _
    expression As Expression _
) As IQueryable
IQueryable CreateQuery(
    Expression expression
)
IQueryable^ CreateQuery(
    Expression^ expression
)
abstract CreateQuery :
        expression:Expression -> IQueryable

参数

expression
类型： System.Linq.Expressions Expression
表示 LINQ 查询的表达式树。

返回值

类型： System.Linq IQueryable
一个 IQueryable，它可计算指定表达式树所表示的查询。
说明 说明

返回的 IQueryable 对象的 Expression 属性等于 expression。

如果给定一个表达式树，CreateQuery 方法可创建新的 IQueryable 对象。返回的对象所表示的查询与特定 LINQ 提供程序相关联。 如果给定一个表达式树，CreateQuery 方法可创建新的 IQueryable 对象。返回的对象所表示的查询与特定 LINQ 提供程序相关联。

在 Queryable 中定义的若干标准查询运算符方法（如 OfType<(Of <(TResult>)>) 和 Cast<(Of <(TResult>)>)）将调用此方法。这些标准查询运算符方法将向此方法传递一个表示 LINQ 查询的 MethodCallExpression。 在 Queryable 中定义的若干标准查询运算符方法（如 OfType<(Of <(TResult>)>) 和 Cast<(Of <(TResult>)>)）将调用此方法。这些标准查询运算符方法将向此方法传递一个表示 LINQ 查询的 MethodCallExpression。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryProvider 接口
IQueryProvider 成员
CreateQuery 重载
System.Linq 命名空间


IQueryProvider ..::.Execute 方法

IQueryProvider
.
.
::
.
Execute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IQueryProvider 接口

执行指定表达式树所表示的查询。

名称 说明
页首

参考

IQueryProvider 接口
IQueryProvider 成员
System.Linq 命名空间


IQueryProvider ..::.Execute <(Of <(TResult >)>) 方法 (Expression)

IQueryProvider
.
.
::
.
Execute
<
(Of
<
(
TResult
>
)
>
)
方法 (Expression)
IQueryProvider 接口

执行指定表达式树所表示的强类型查询。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Function Execute(Of TResult) ( _
    expression As Expression _
) As TResult
TResult Execute<TResult>(
    Expression expression
)

generic<typename TResult>
TResult Execute(
    Expression^ expression
)
abstract Execute :
        expression:Expression -> 'TResult

类型参数

TResult

执行查询所生成的值的类型。

参数

expression
类型： System.Linq.Expressions Expression
表示 LINQ 查询的表达式树。

返回值

类型：TResult
执行指定查询所生成的值。

Execute 方法会执行那些返回单个值（而不是值的可枚举的序列）的查询。在枚举包含返回可枚举结果的查询的表达式树的 IQueryable<(Of <(T>)>) 对象时，会执行这些表达式树。 Execute 方法会执行那些返回单个值（而不是值的可枚举的序列）的查询。在枚举包含返回可枚举结果的查询的表达式树的 IQueryable<(Of <(T>)>) 对象时，会执行这些表达式树。

返回单一结果的 Queryable 标准查询运算符方法会调用 Execute。这些标准查询运算符方法将向此方法传递一个表示 LINQ 查询的 MethodCallExpression。 返回单一结果的 Queryable 标准查询运算符方法会调用 Execute。这些标准查询运算符方法将向此方法传递一个表示 LINQ 查询的 MethodCallExpression。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryProvider 接口
IQueryProvider 成员
Execute 重载
System.Linq 命名空间


IQueryProvider ..::.Execute 方法 (Expression)

IQueryProvider
.
.
::
.
Execute 方法 (Expression)
IQueryProvider 接口

执行指定表达式树所表示的查询。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Function Execute ( _
    expression As Expression _
) As Object
Object Execute(
    Expression expression
)
Object^ Execute(
    Expression^ expression
)
abstract Execute :
        expression:Expression -> Object

参数

expression
类型： System.Linq.Expressions Expression
表示 LINQ 查询的表达式树。

返回值

类型： System Object
执行指定查询所生成的值。

Execute 方法会执行那些返回单个值（而不是值的可枚举序列）的查询。在枚举表示返回可枚举结果的查询的表达式树的关联 IQueryable 对象时，会执行这些表达式树。 Execute 方法会执行那些返回单个值（而不是值的可枚举序列）的查询。在枚举表示返回可枚举结果的查询的表达式树的关联 IQueryable 对象时，会执行这些表达式树。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

IQueryProvider 接口
IQueryProvider 成员
Execute 重载
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) 类

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
类
成员

表示映射到一个或多个值的各个键的集合。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Class Lookup(Of TKey, TElement) _
    Implements ILookup(Of TKey, TElement), IEnumerable(Of IGrouping(Of TKey, TElement)),  _
    IEnumerable
public class Lookup<TKey, TElement> : ILookup<TKey, TElement>,
    IEnumerable<IGrouping<TKey, TElement>>, IEnumerable

generic<typename TKey, typename TElement>
public ref class Lookup : ILookup<TKey, TElement>,
    IEnumerable<IGrouping<TKey, TElement>^>, IEnumerable
type Lookup<'TKey, 'TElement> =
    class
        interface ILookup<'TKey, 'TElement>
        interface IEnumerable<IGrouping<'TKey, 'TElement>>
        interface IEnumerable
    end

类型参数

TKey

Lookup<(Of <(TKey, TElement>)>) 中的键的类型。

TElement

Lookup<(Of <(TKey, TElement>)>) 中的每个 IEnumerable<(Of <(T>)>) 值的元素的类型。

Lookup<(Of <(TKey, TElement>)>) 类似于 Dictionary<(Of <(TKey, TValue>)>)。不同之处在于：Dictionary<(Of <(TKey, TValue>)>) 将各个键映射到单个值，而 Lookup<(Of <(TKey, TElement>)>) 将各个键映射到值的集合。 Lookup<(Of <(TKey, TElement>)>) 类似于 Dictionary<(Of <(TKey, TValue>)>)。不同之处在于：Dictionary<(Of <(TKey, TValue>)>) 将各个键映射到单个值，而 Lookup<(Of <(TKey, TElement>)>) 将各个键映射到值的集合。

可以通过对实现 IEnumerable<(Of <(T>)>) 的对象调用 ToLookup，来创建 Lookup<(Of <(TKey, TElement>)>) 的实例。

说明 说明

没有可用来创建 Lookup<(Of <(TKey, TElement>)>) 的新实例的公共构造函数。此外，Lookup<(Of <(TKey, TElement>)>) 对象是不可变的（即，在 Lookup<(Of <(TKey, TElement>)>) 对象创建后，无法向其添加或从中移除元素或键）。 没有可用来创建 Lookup<(Of <(TKey, TElement>)>) 的新实例的公共构造函数。此外，Lookup<(Of <(TKey, TElement>)>) 对象是不可变的（即，在 Lookup<(Of <(TKey, TElement>)>) 对象创建后，无法向其添加或从中移除元素或键）。

下面的示例演示如何从对象的集合创建 Lookup<(Of <(TKey, TElement>)>)。然后，枚举 Lookup<(Of <(TKey, TElement>)>) 并输出键的关联值集合中的各个键和值。还演示如何使用 Count 和 Item 属性，以及如何使用 Contains 和 GetEnumerator 方法。 下面的示例演示如何从对象的集合创建 Lookup<(Of <(TKey, TElement>)>)。然后，枚举 Lookup<(Of <(TKey, TElement>)>) 并输出键的关联值集合中的各个键和值。还演示如何使用 Count 和 Item 属性，以及如何使用 Contains 和 GetEnumerator 方法。 下面的示例演示如何从对象的集合创建 Lookup<(Of <(TKey, TElement>)>)。然后，枚举 Lookup<(Of <(TKey, TElement>)>) 并输出键的关联值集合中的各个键和值。还演示如何使用 Count 和 Item 属性，以及如何使用 Contains 和 GetEnumerator 方法。

Structure Package
    Public Company As String
    Public Weight As Double
    Public TrackingNumber As Long
End Structure

Sub LookupExample()
    ' Create a list of Packages to put into a Lookup data structure.
    Dim packages As New System.Collections.Generic.List(Of Package)(New Package() _
        {New Package With {.Company = "Coho Vineyard", .Weight = 25.2, .TrackingNumber = 89453312L}, _
          New Package With {.Company = "Lucerne Publishing", .Weight = 18.7, .TrackingNumber = 89112755L}, _
          New Package With {.Company = "Wingtip Toys", .Weight = 6.0, .TrackingNumber = 299456122L}, _
          New Package With {.Company = "Contoso Pharmaceuticals", .Weight = 9.3, .TrackingNumber = 670053128L}, _
          New Package With {.Company = "Wide World Importers", .Weight = 33.8, .TrackingNumber = 4665518773L}})

    ' Create a Lookup to organize the packages. Use the first character of Company as the key value.
    ' Select Company appended to TrackingNumber for each element value in the Lookup.
    Dim lookup As ILookup(Of Char, String) = _
        packages.ToLookup(Function(ByVal p) Convert.ToChar(p.Company.Substring(0, 1)), _
                          Function(ByVal p) p.Company & " " & p.TrackingNumber)

    Dim output As New System.Text.StringBuilder
    ' Iterate through each IGrouping in the Lookup and output the contents.
    For Each packageGroup As IGrouping(Of Char, String) In lookup
        ' Print the key value of the IGrouping.
        output.AppendLine(packageGroup.Key)
        ' Iterate through each value in the IGrouping and print its value.
        For Each str As String In packageGroup
            output.AppendLine(String.Format("    {0}", str))
        Next
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:
    '
    ' C
    '     Coho Vineyard 89453312
    '     Contoso Pharmaceuticals 670053128
    ' L
    '     Lucerne Publishing 89112755
    ' W
    '     Wingtip Toys 299456122
    '     Wide World Importers 4665518773

    ' Get the number of key-collection pairs in the Lookup.
    Dim count As Integer = lookup.Count

    ' Select a collection of Packages by indexing directly into the Lookup.
    Dim cgroup As System.Collections.Generic.IEnumerable(Of String) = lookup("C"c)

    output = New System.Text.StringBuilder
    ' Output the results.
    output.AppendLine(vbCrLf & "Packages that have a key of 'C':")
    For Each str As String In cgroup
        output.AppendLine(str)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:
    '
    ' Packages that have a key of 'C'
    ' Coho Vineyard 89453312
    ' Contoso Pharmaceuticals 670053128

    ' Determine if there is a key with the value 'G' in the Lookup.
    Dim hasG As Boolean = lookup.Contains("G"c)
End Sub

class Package
{
    public string Company;
    public double Weight;
    public long TrackingNumber;
}

public static void LookupExample()
{
    // Create a list of Packages to put into a Lookup data structure.
    List<Package> packages = new List<Package> { new Package { Company = "Coho Vineyard", Weight = 25.2, TrackingNumber = 89453312L },
                                                 new Package { Company = "Lucerne Publishing", Weight = 18.7, TrackingNumber = 89112755L },
                                                 new Package { Company = "Wingtip Toys", Weight = 6.0, TrackingNumber = 299456122L },
                                                 new Package { Company = "Contoso Pharmaceuticals", Weight = 9.3, TrackingNumber = 670053128L },
                                                 new Package { Company = "Wide World Importers", Weight = 33.8, TrackingNumber = 4665518773L } };

    // Create a Lookup to organize the packages. Use the first character of Company as the key value.
    // Select Company appended to TrackingNumber for each element value in the Lookup.
    Lookup<char, string> lookup = (Lookup<char, string>)packages.ToLookup(p => Convert.ToChar(p.Company.Substring(0, 1)),
                                                    p => p.Company + " " + p.TrackingNumber);

    // Iterate through each IGrouping in the Lookup and output the contents.
    foreach (IGrouping<char, string> packageGroup in lookup)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(packageGroup.Key);
        // Iterate through each value in the IGrouping and print its value.
        foreach (string str in packageGroup)
            Console.WriteLine("    {0}", str);
    }

    // This code produces the following output:
    //
    // C
    //     Coho Vineyard 89453312
    //     Contoso Pharmaceuticals 670053128
    // L
    //     Lucerne Publishing 89112755
    // W
    //     Wingtip Toys 299456122
    //     Wide World Importers 4665518773

    // Get the number of key-collection pairs in the Lookup.
    int count = lookup.Count;

    // Select a collection of Packages by indexing directly into the Lookup.
    IEnumerable<string> cgroup = lookup['C'];

    // Output the results.
    Console.WriteLine("\nPackages that have a key of 'C':");
    foreach (string str in cgroup)
        Console.WriteLine(str);

    // This code produces the following output:
    //
    // Packages that have a key of 'C'
    // Coho Vineyard 89453312
    // Contoso Pharmaceuticals 670053128

    // Determine if there is a key with the value 'G' in the Lookup.
    bool hasG = lookup.Contains('G');
}

System.Linq
System.Linq..::.Lookup<(Of <(TKey, TElement>)>)Lookup
System.Linq..::.Lookup<(Of <(TKey, TElement>)>)TKey, TElement
System.Linq..::.Lookup<(Of <(TKey, TElement>)>)
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 成员
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) 成员

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Lookup

表示映射到一个或多个值的各个键的集合。

Lookup TKey, TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

Lookup TKey, TElement 类
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) 方法

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Lookup

Lookup TKey, TElement 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

Lookup TKey, TElement 类
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) ..::.ApplyResultSelector <(Of <(TResult >)>) 方法

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
ApplyResultSelector
<
(Of
<
(
TResult
>
)
>
)
方法
Lookup

对每个键及其关联值应用转换函数，并返回结果。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Function ApplyResultSelector(Of TResult) ( _
    resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult) _
) As IEnumerable(Of TResult)
public IEnumerable<TResult> ApplyResultSelector<TResult>(
    Func<TKey, IEnumerable<TElement>, TResult> resultSelector
)

public:
generic<typename TResult>
IEnumerable<TResult>^ ApplyResultSelector(
    Func<TKey, IEnumerable<TElement>^, TResult>^ resultSelector
)
member ApplyResultSelector :
        resultSelector:Func<'TKey, IEnumerable<'TElement>, 'TResult> -> IEnumerable<'TResult>

类型参数

TResult

resultSelector 生成的结果值的类型。

参数

resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)

从每个键及其关联值投影结果值的函数。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TResult
>
)
>
)

包含 Lookup<(Of <(TKey, TElement>)>) 中的各个键/值对集合中的一个值的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 类
Lookup TKey, TElement 成员
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) ..::.Contains 方法

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Contains 方法
Lookup

确定指定的键是否位于 Lookup<(Of <(TKey, TElement>)>) 中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Function Contains ( _
    key As TKey _
) As Boolean
public bool Contains(
    TKey key
)
public:
virtual bool Contains(
    TKey key
) sealed
abstract Contains :
        key:'TKey -> bool
override Contains :
        key:'TKey -> bool

参数

key
类型： TKey
要在 Lookup<(Of <(TKey, TElement>)>) 中查找的键。

返回值

类型： System Boolean
如果 key 在 Lookup<(Of <(TKey, TElement>)>) 中，则为 true；否则为 false。

实现

下面的示例演示如何使用 Contains 来确定 Lookup<(Of <(TKey, TElement>)>) 是否包含指定的键。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。 下面的示例演示如何使用 Contains 来确定 Lookup<(Of <(TKey, TElement>)>) 是否包含指定的键。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。

' Determine if there is a key with the value 'G' in the Lookup.
Dim hasG As Boolean = lookup.Contains("G"c)

// Determine if there is a key with the value 'G' in the Lookup.
bool hasG = lookup.Contains('G');

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 类
Lookup TKey, TElement 成员
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) ..::.GetEnumerator 方法

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
GetEnumerator 方法
Lookup

返回一个循环访问 Lookup<(Of <(TKey, TElement>)>) 的泛型枚举器。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Function GetEnumerator As IEnumerator(Of IGrouping(Of TKey, TElement))
public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
public:
virtual IEnumerator<IGrouping<TKey, TElement>^>^ GetEnumerator() sealed
abstract GetEnumerator : unit -> IEnumerator<IGrouping<'TKey, 'TElement>>
override GetEnumerator : unit -> IEnumerator<IGrouping<'TKey, 'TElement>>

返回值

类型： System.Collections.Generic IEnumerator
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

Lookup<(Of <(TKey, TElement>)>) 的枚举器。

实现

下面的示例演示如何使用 GetEnumerator 循环访问 Lookup<(Of <(TKey, TElement>)>) 的键和值。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。 下面的示例演示如何使用 GetEnumerator 循环访问 Lookup<(Of <(TKey, TElement>)>) 的键和值。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。

Dim output As New System.Text.StringBuilder
' Iterate through each IGrouping in the Lookup and output the contents.
For Each packageGroup As IGrouping(Of Char, String) In lookup
    ' Print the key value of the IGrouping.
    output.AppendLine(packageGroup.Key)
    ' Iterate through each value in the IGrouping and print its value.
    For Each str As String In packageGroup
        output.AppendLine(String.Format("    {0}", str))
    Next
Next

' Display the output.
MsgBox(output.ToString())

// Iterate through each IGrouping in the Lookup and output the contents.
foreach (IGrouping<char, string> packageGroup in lookup)
{
    // Print the key value of the IGrouping.
    Console.WriteLine(packageGroup.Key);
    // Iterate through each value in the IGrouping and print its value.
    foreach (string str in packageGroup)
        Console.WriteLine("    {0}", str);
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 类
Lookup TKey, TElement 成员
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) ..::.IEnumerable ..::.GetEnumerator 方法

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
IEnumerable
.
.
::
.
GetEnumerator 方法
Lookup

返回循环访问 Lookup<(Of <(TKey, TElement>)>) 的枚举器。无法继承此类。 返回循环访问 Lookup<(Of <(TKey, TElement>)>) 的枚举器。无法继承此类。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function GetEnumerator As IEnumerator
    Implements IEnumerable.GetEnumerator
IEnumerator IEnumerable.GetEnumerator()
private:
virtual IEnumerator^ GetEnumerator() sealed = IEnumerable::GetEnumerator
private abstract GetEnumerator : unit -> IEnumerator
private override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
Lookup<(Of <(TKey, TElement>)>) 的枚举器。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 类
Lookup TKey, TElement 成员
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) 属性

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Lookup

Lookup TKey, TElement 类型公开以下成员。

名称 说明
页首

参考

Lookup TKey, TElement 类
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) ..::.Count 属性

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Count 属性
Lookup

获取 Lookup<(Of <(TKey, TElement>)>) 中的键/值对集合的数目。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public ReadOnly Property Count As Integer
    Get
public int Count { get; }
public:
virtual property int Count {
    int get () sealed;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
Lookup<(Of <(TKey, TElement>)>) 中键/值对集合的数目。

实现

Count 属性的值不会更改，因为在 Lookup<(Of <(TKey, TElement>)>) 对象创建之后，无法向其添加或从中移除项。

下面的示例演示如何使用 Count 来确定 Lookup<(Of <(TKey, TElement>)>) 中键/值对集合的数目。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。 下面的示例演示如何使用 Count 来确定 Lookup<(Of <(TKey, TElement>)>) 中键/值对集合的数目。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。

' Get the number of key-collection pairs in the Lookup.
Dim count As Integer = lookup.Count

// Get the number of key-collection pairs in the Lookup.
int count = lookup.Count;

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 类
Lookup TKey, TElement 成员
System.Linq 命名空间


Lookup <(Of <(TKey, TElement >)>) ..::.Item 属性

Lookup
<
(Of
<
(
TKey, TElement
>
)
>
)
.
.
::
.
Item 属性
Lookup

获取按指定键进行索引的值的集合。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public ReadOnly Property Item ( _
    key As TKey _
) As IEnumerable(Of TElement)
    Get
public IEnumerable<TElement> this[
    TKey key
] { get; }
public:
virtual property IEnumerable<TElement>^ Item[TKey key] {
    IEnumerable<TElement>^ get (TKey key) sealed;
}
abstract Item : IEnumerable<'TElement>
override Item : IEnumerable<'TElement>

参数

key
类型： TKey
所需值集合的键。

属性值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TElement
>
)
>
)

按指定键进行索引的值的集合。

实现

此索引属性可以为 Lookup<(Of <(TKey, TElement>)>) 中的值的特定值集合编制索引，方法是使用下列语法：Visual C# 中的 myLookup[key] 或 Visual Basic 中的 myLookup(key)。如果在集合中未找到 key，则返回空序列。 此索引属性可以为 Lookup<(Of <(TKey, TElement>)>) 中的值的特定值集合编制索引，方法是使用下列语法：Visual C# 中的 myLookup[key] 或 Visual Basic 中的 myLookup(key)。如果在集合中未找到 key，则返回空序列。

下面的示例演示如何使用 Item 在 Lookup<(Of <(TKey, TElement>)>) 中直接进行索引。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。 下面的示例演示如何使用 Item 在 Lookup<(Of <(TKey, TElement>)>) 中直接进行索引。此代码示例摘自一个为 Lookup<(Of <(TKey, TElement>)>) 类提供的更大示例。

' Select a collection of Packages by indexing directly into the Lookup.
Dim cgroup As System.Collections.Generic.IEnumerable(Of String) = lookup("C"c)

// Select a collection of Packages by indexing directly into the Lookup.
IEnumerable<string> cgroup = lookup['C'];

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003, Xbox 360, Zune

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

XNA Framework

受以下版本支持：3.0

参考

Lookup TKey, TElement 类
Lookup TKey, TElement 成员
System.Linq 命名空间


OrderedParallelQuery <(Of <(TSource >)>) 类

OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
类
成员

表示已排序的并行序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Class OrderedParallelQuery(Of TSource) _
    Inherits ParallelQuery(Of TSource)
public class OrderedParallelQuery<TSource> : ParallelQuery<TSource>

generic<typename TSource>
public ref class OrderedParallelQuery : public ParallelQuery<TSource>
type OrderedParallelQuery<'TSource> =
    class
        inherit ParallelQuery<'TSource>
    end

类型参数

TSource

源集合中的元素的类型。

TSource
System.Linq
System.Linq..::.OrderedParallelQuery<(Of <(TSource>)>)OrderedParallelQuery
System.Linq..::.OrderedParallelQuery<(Of <(TSource>)>)TSource
System.Linq..::.OrderedParallelQuery<(Of <(TSource>)>)
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

OrderedParallelQuery TSource 成员
System.Linq 命名空间
System.Linq ParallelEnumerable

其他资源

并行 LINQ (PLINQ)
PLINQ 中的顺序保留
如何：在 PLINQ 查询中控制排序


OrderedParallelQuery <(Of <(TSource >)>) 成员

OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
OrderedParallelQuery

表示已排序的并行序列。

OrderedParallelQuery TSource 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

OrderedParallelQuery TSource 类
System.Linq 命名空间


OrderedParallelQuery <(Of <(TSource >)>) 方法

OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
OrderedParallelQuery

OrderedParallelQuery TSource 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

OrderedParallelQuery TSource 类
System.Linq 命名空间


OrderedParallelQuery <(Of <(TSource >)>) ..::.GetEnumerator 方法

OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
.
.
::
.
GetEnumerator 方法
OrderedParallelQuery

返回循环访问序列的枚举数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Overrides Function GetEnumerator As IEnumerator(Of TSource)
public override IEnumerator<TSource> GetEnumerator()
public:
virtual IEnumerator<TSource>^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator<'TSource>
override GetEnumerator : unit -> IEnumerator<'TSource>

返回值

类型： System.Collections.Generic IEnumerator
<
(Of
<
(
TSource
>
)
>
)

循环访问序列的枚举数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

OrderedParallelQuery TSource 类
OrderedParallelQuery TSource 成员
System.Linq 命名空间
System.Linq ParallelEnumerable

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable 类

ParallelEnumerable 类
成员

提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。这是 Enumerable 的并行等效项。 提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。这是 Enumerable 的并行等效项。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public NotInheritable Class ParallelEnumerable
public static class ParallelEnumerable
[ExtensionAttribute]
public ref class ParallelEnumerable abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
type ParallelEnumerable =  class end

System.Linq System.Linq..::.ParallelEnumerableParallelEnumerable
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable 成员

ParallelEnumerable 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。这是 Enumerable 的并行等效项。 提供一组用于查询实现 ParallelQuery{TSource} 的对象的方法。这是 Enumerable 的并行等效项。

ParallelEnumerable 类型公开以下成员。

名称 说明
页首

参考

ParallelEnumerable 类
System.Linq 命名空间


ParallelEnumerable 方法

ParallelEnumerable 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

ParallelEnumerable 类型公开以下成员。

名称 说明
页首

参考

ParallelEnumerable 类
System.Linq 命名空间


ParallelEnumerable ..::.Aggregate 方法

ParallelEnumerable
.
.
::
.
Aggregate 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Aggregate <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TSource, TSource >)>))

ParallelEnumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TSource, TSource
>
)
>
)
)
ParallelEnumerable 类

对一个序列并行应用累加器函数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    func As Func(Of TSource, TSource, TSource) _
) As TSource
public static TSource Aggregate<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, TSource, TSource> func
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Aggregate(
    ParallelQuery<TSource>^ source,
    Func<TSource, TSource, TSource>^ func
)
static member Aggregate :
        source:ParallelQuery<'TSource> *
        func:Func<'TSource, 'TSource, 'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
func
类型： System Func
<
(Of
<
(
TSource, TSource, TSource
>
)
>
)

要对每个元素调用的累加器函数。

返回值

类型：TSource
累加器的最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 func 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Aggregate 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Aggregate <(Of <(TSource, TAccumulate >)>) 方法 (ParallelQuery <(Of <(TSource >)>), TAccumulate, Func <(Of <(TAccumulate, TSource, TAccumulate >)>))

ParallelEnumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
)
ParallelEnumerable 类

对一个序列并行应用累加器函数。将指定的种子值用作累加器初始值。 对一个序列并行应用累加器函数。将指定的种子值用作累加器初始值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate) ( _
    source As ParallelQuery(Of TSource), _
    seed As TAccumulate, _
    func As Func(Of TAccumulate, TSource, TAccumulate) _
) As TAccumulate
public static TAccumulate Aggregate<TSource, TAccumulate>(
    this ParallelQuery<TSource> source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate> func
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate>
static TAccumulate Aggregate(
    ParallelQuery<TSource>^ source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate>^ func
)
static member Aggregate :
        source:ParallelQuery<'TSource> *
        seed:'TAccumulate *
        func:Func<'TAccumulate, 'TSource, 'TAccumulate> -> 'TAccumulate

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
seed
类型：TAccumulate
累加器的初始值。
func
类型： System Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)

要对每个元素调用的累加器函数。

返回值

类型：TAccumulate
累加器的最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 func 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Aggregate 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Aggregate <(Of <(TSource, TAccumulate, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), TAccumulate, Func <(Of <(TAccumulate, TSource, TAccumulate >)>), Func <(Of <(TAccumulate, TResult >)>))

ParallelEnumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)
)
ParallelEnumerable 类

对一个序列并行应用累加器函数。将指定的种子值用作累加器的初始值，并使用指定的函数选择结果值。 对一个序列并行应用累加器函数。将指定的种子值用作累加器的初始值，并使用指定的函数选择结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate, TResult) ( _
    source As ParallelQuery(Of TSource), _
    seed As TAccumulate, _
    func As Func(Of TAccumulate, TSource, TAccumulate), _
    resultSelector As Func(Of TAccumulate, TResult) _
) As TResult
public static TResult Aggregate<TSource, TAccumulate, TResult>(
    this ParallelQuery<TSource> source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate> func,
    Func<TAccumulate, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate, typename TResult>
static TResult Aggregate(
    ParallelQuery<TSource>^ source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate>^ func,
    Func<TAccumulate, TResult>^ resultSelector
)
static member Aggregate :
        source:ParallelQuery<'TSource> *
        seed:'TAccumulate *
        func:Func<'TAccumulate, 'TSource, 'TAccumulate> *
        resultSelector:Func<'TAccumulate, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

TResult

结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
seed
类型：TAccumulate
累加器的初始值。
func
类型： System Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)

要对每个元素调用的累加器函数。
resultSelector
类型： System Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)

将累加器的最终值转换为结果值的函数。

返回值

类型：TResult
已转换的累加器最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 func 或 resultSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Aggregate 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Aggregate <(Of <(TSource, TAccumulate, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TAccumulate >)>), Func <(Of <(TAccumulate, TSource, TAccumulate >)>), Func <(Of <(TAccumulate, TAccumulate, TAccumulate >)>), Func <(Of <(TAccumulate, TResult >)>))

ParallelEnumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TAccumulate, TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)
)
ParallelEnumerable 类

对一个序列并行应用累加器函数。此重载在顺序实现中不可用。 对一个序列并行应用累加器函数。此重载在顺序实现中不可用。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate, TResult) ( _
    source As ParallelQuery(Of TSource), _
    seedFactory As Func(Of TAccumulate), _
    updateAccumulatorFunc As Func(Of TAccumulate, TSource, TAccumulate), _
    combineAccumulatorsFunc As Func(Of TAccumulate, TAccumulate, TAccumulate), _
    resultSelector As Func(Of TAccumulate, TResult) _
) As TResult
public static TResult Aggregate<TSource, TAccumulate, TResult>(
    this ParallelQuery<TSource> source,
    Func<TAccumulate> seedFactory,
    Func<TAccumulate, TSource, TAccumulate> updateAccumulatorFunc,
    Func<TAccumulate, TAccumulate, TAccumulate> combineAccumulatorsFunc,
    Func<TAccumulate, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate, typename TResult>
static TResult Aggregate(
    ParallelQuery<TSource>^ source,
    Func<TAccumulate>^ seedFactory,
    Func<TAccumulate, TSource, TAccumulate>^ updateAccumulatorFunc,
    Func<TAccumulate, TAccumulate, TAccumulate>^ combineAccumulatorsFunc,
    Func<TAccumulate, TResult>^ resultSelector
)
static member Aggregate :
        source:ParallelQuery<'TSource> *
        seedFactory:Func<'TAccumulate> *
        updateAccumulatorFunc:Func<'TAccumulate, 'TSource, 'TAccumulate> *
        combineAccumulatorsFunc:Func<'TAccumulate, 'TAccumulate, 'TAccumulate> *
        resultSelector:Func<'TAccumulate, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

TResult

结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
seedFactory
类型： System Func
<
(Of
<
(
TAccumulate
>
)
>
)

一个返回初始累加器值的函数。
updateAccumulatorFunc
类型： System Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)

要对分区中的每个元素调用的累加器函数。
combineAccumulatorsFunc
类型： System Func
<
(Of
<
(
TAccumulate, TAccumulate, TAccumulate
>
)
>
)

要对每个分区中已生成的累加器结果调用的累加器函数。
resultSelector
类型： System Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)

将累加器的最终值转换为结果值的函数。

返回值

类型：TResult
已转换的累加器最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 seedFactory 或 updateAccumulatorFunc 或 combineAccumulatorsFunc 或 resultSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

此重载是特定于并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载是特定于并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载是特定于并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载是特定于并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载是特定于并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载是特定于并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Aggregate 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Aggregate <(Of <(TSource, TAccumulate, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), TAccumulate, Func <(Of <(TAccumulate, TSource, TAccumulate >)>), Func <(Of <(TAccumulate, TAccumulate, TAccumulate >)>), Func <(Of <(TAccumulate, TResult >)>))

ParallelEnumerable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TAccumulate, TAccumulate
>
)
>
)
, Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)
)
ParallelEnumerable 类

对一个序列并行应用累加器函数。此重载在顺序实现中不可用。 对一个序列并行应用累加器函数。此重载在顺序实现中不可用。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate, TResult) ( _
    source As ParallelQuery(Of TSource), _
    seed As TAccumulate, _
    updateAccumulatorFunc As Func(Of TAccumulate, TSource, TAccumulate), _
    combineAccumulatorsFunc As Func(Of TAccumulate, TAccumulate, TAccumulate), _
    resultSelector As Func(Of TAccumulate, TResult) _
) As TResult
public static TResult Aggregate<TSource, TAccumulate, TResult>(
    this ParallelQuery<TSource> source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate> updateAccumulatorFunc,
    Func<TAccumulate, TAccumulate, TAccumulate> combineAccumulatorsFunc,
    Func<TAccumulate, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate, typename TResult>
static TResult Aggregate(
    ParallelQuery<TSource>^ source,
    TAccumulate seed,
    Func<TAccumulate, TSource, TAccumulate>^ updateAccumulatorFunc,
    Func<TAccumulate, TAccumulate, TAccumulate>^ combineAccumulatorsFunc,
    Func<TAccumulate, TResult>^ resultSelector
)
static member Aggregate :
        source:ParallelQuery<'TSource> *
        seed:'TAccumulate *
        updateAccumulatorFunc:Func<'TAccumulate, 'TSource, 'TAccumulate> *
        combineAccumulatorsFunc:Func<'TAccumulate, 'TAccumulate, 'TAccumulate> *
        resultSelector:Func<'TAccumulate, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

TResult

结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
seed
类型：TAccumulate
累加器的初始值。
updateAccumulatorFunc
类型： System Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)

要对分区中的每个元素调用的累加器函数。
combineAccumulatorsFunc
类型： System Func
<
(Of
<
(
TAccumulate, TAccumulate, TAccumulate
>
)
>
)

要对每个分区中已生成的累加器结果调用的累加器函数。
resultSelector
类型： System Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)

将累加器的最终值转换为结果值的函数。

返回值

类型：TResult
已转换的累加器最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 updateAccumulatorFunc 或 combineAccumulatorsFunc 或 resultSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

此重载专用于处理并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载专用于处理并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载专用于处理并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载专用于处理并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载专用于处理并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。 此重载专用于处理并行化查询。并行化查询可以将数据源序列分区成几个子序列（分区）。在分区内的每个元素上调用 updateAccumulatorFunc。每个分区然后产生单个累积结果。然后，在每个分区的结果上调用 combineAccumulatorsFunc 来产生一个元素。此元素然后通过 resultSelector 函数进行转换。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Aggregate 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.All <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
All
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

并行确定序列中的所有元素是否都满足条件。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function All(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Boolean
public static bool All<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool All(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member All :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要将谓词应用到的元素所在的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Boolean
如果源序列中的每个元素都通过指定谓词中的测试，或者序列为空，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Any 方法

ParallelEnumerable
.
.
::
.
Any 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Any <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Any
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

确定并行序列是否包含任何元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Any(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As Boolean
public static bool Any<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Any(
    ParallelQuery<TSource>^ source
)
static member Any :
        source:ParallelQuery<'TSource> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要检查是否为空的序列。

返回值

类型： System Boolean
如果源序列包含任何元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Any 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Any <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
Any
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

并行确定序列中的任何元素是否满足条件。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Any(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Boolean
public static bool Any<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Any(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Any :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要将谓词应用到的元素所在的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Boolean
如果源序列中的任何元素都通过指定谓词中的测试，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Any 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsEnumerable <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
AsEnumerable
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

将 ParallelQuery<(Of <(TSource>)>) 转换为 IEnumerable<(Of <(T>)>) 以强制对查询进行顺序计算。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsEnumerable(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> AsEnumerable<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ AsEnumerable(
    ParallelQuery<TSource>^ source
)
static member AsEnumerable :
        source:ParallelQuery<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要强制转换为 IEnumerable<(Of <(T>)>) 的序列。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

类型为 IEnumerable<(Of <(T>)>) 的输入序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsOrdered 方法

ParallelEnumerable
.
.
::
.
AsOrdered 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsOrdered 方法 (ParallelQuery)

ParallelEnumerable
.
.
::
.
AsOrdered 方法 (ParallelQuery)
ParallelEnumerable 类

启用将数据源视为“已经排序”的处理方法，重写默认的将数据源视为“未经排序”的处理方法。只可以对由 AsParallel、ParallelEnumerable.Range 和 ParallelEnumerable.Repeat 返回的非泛型序列调用 AsOrdered。 启用将数据源视为“已经排序”的处理方法，重写默认的将数据源视为“未经排序”的处理方法。只可以对由 AsParallel、ParallelEnumerable.Range 和 ParallelEnumerable.Repeat 返回的非泛型序列调用 AsOrdered。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsOrdered ( _
    source As ParallelQuery _
) As ParallelQuery
public static ParallelQuery AsOrdered(
    this ParallelQuery source
)
[ExtensionAttribute]
public:
static ParallelQuery^ AsOrdered(
    ParallelQuery^ source
)
static member AsOrdered :
        source:ParallelQuery -> ParallelQuery

参数

source
类型： System.Linq ParallelQuery
输入序列。

返回值

类型： System.Linq ParallelQuery
将要维护后续查询运算符中的原始排序的源序列。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 在 AsOrdered 通过查询调用舍入时引发。它被允许在 ParallelEnumerable.AsParallel、ParallelEnumerable.Range 或 ParallelEnumerable.Repeat 后立即调用。 在 AsOrdered 通过查询调用舍入时引发。它被允许在 ParallelEnumerable.AsParallel、ParallelEnumerable.Range 或 ParallelEnumerable.Repeat 后立即调用。

并行处理过程中性能与保存顺序之间存在自然张力。默认情况下，并行化查询的行为如同排序的结果是任意的，除非应用了 AsOrdered 或查询中没有显式 OrderBy 运算符。有关更多信息，请参见PLINQ 中的顺序保留。 并行处理过程中性能与保存顺序之间存在自然张力。默认情况下，并行化查询的行为如同排序的结果是任意的，除非应用了 AsOrdered 或查询中没有显式 OrderBy 运算符。有关更多信息，请参见PLINQ 中的顺序保留。 并行处理过程中性能与保存顺序之间存在自然张力。默认情况下，并行化查询的行为如同排序的结果是任意的，除非应用了 AsOrdered 或查询中没有显式 OrderBy 运算符。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
AsOrdered 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsOrdered <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
AsOrdered
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

启用将数据源视为“已经排序”的处理方法，重写默认的将数据源视为“未经排序”的处理方法。只可以对由 AsParallel、ParallelEnumerable.Range 和 ParallelEnumerable.Repeat 返回的泛型序列调用 AsOrdered。 启用将数据源视为“已经排序”的处理方法，重写默认的将数据源视为“未经排序”的处理方法。只可以对由 AsParallel、ParallelEnumerable.Range 和 ParallelEnumerable.Repeat 返回的泛型序列调用 AsOrdered。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsOrdered(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> AsOrdered<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ AsOrdered(
    ParallelQuery<TSource>^ source
)
static member AsOrdered :
        source:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

输入序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

将要维护后续查询运算符中的原始排序的源序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 不是 AsParallel、ParallelEnumerable.Range 或 ParallelEnumerable.Repeat 之一时引发。

并行处理过程中性能与保存顺序之间存在自然张力。默认情况下，并行化查询的行为如同排序的结果是任意的，除非应用了 AsOrdered 或查询中没有显式 OrderBy 运算符。有关更多信息，请参见PLINQ 中的顺序保留。 并行处理过程中性能与保存顺序之间存在自然张力。默认情况下，并行化查询的行为如同排序的结果是任意的，除非应用了 AsOrdered 或查询中没有显式 OrderBy 运算符。有关更多信息，请参见PLINQ 中的顺序保留。 并行处理过程中性能与保存顺序之间存在自然张力。默认情况下，并行化查询的行为如同排序的结果是任意的，除非应用了 AsOrdered 或查询中没有显式 OrderBy 运算符。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
AsOrdered 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsParallel 方法

ParallelEnumerable
.
.
::
.
AsParallel 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

此方法将查询绑定到 PLINQ。有关更多信息，请参见并行 LINQ (PLINQ)。 此方法将查询绑定到 PLINQ。有关更多信息，请参见并行 LINQ (PLINQ)。

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsParallel <(Of <(TSource >)>) 方法 (IEnumerable <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
AsParallel
<
(Of
<
(
TSource
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

启用查询的并行化。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsParallel(Of TSource) ( _
    source As IEnumerable(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> AsParallel<TSource>(
    this IEnumerable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ AsParallel(
    IEnumerable<TSource>^ source
)
static member AsParallel :
        source:IEnumerable<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要转换为 ParallelQuery<(Of <(TSource>)>) 的 IEnumerable<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

作为要绑定到 ParallelEnumerable 扩展方法的 ParallelQuery<(Of <(TSource>)>) 的源。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
AsParallel 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsParallel 方法 (IEnumerable)

ParallelEnumerable
.
.
::
.
AsParallel 方法 (IEnumerable)
ParallelEnumerable 类

启用查询的并行化。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsParallel ( _
    source As IEnumerable _
) As ParallelQuery
public static ParallelQuery AsParallel(
    this IEnumerable source
)
[ExtensionAttribute]
public:
static ParallelQuery^ AsParallel(
    IEnumerable^ source
)
static member AsParallel :
        source:IEnumerable -> ParallelQuery

参数

source
类型： System.Collections IEnumerable
要转换为 ParallelQuery 的 IEnumerable。

返回值

类型： System.Linq ParallelQuery
作为要绑定到 ParallelEnumerable 扩展方法的 ParallelQuery 的 source。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。

[M:System.Linq.ParallelEnumerable.Cast`1] 运算符可用于将 ParallelQuery 转换为 ParallelQuery(T)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
AsParallel 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsParallel <(Of <(TSource >)>) 方法 (Partitioner <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
AsParallel
<
(Of
<
(
TSource
>
)
>
)
方法 (Partitioner
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

启用查询的并行化，并由负责将输入序列拆分成各个分区的自定义分区程序指明其出处。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsParallel(Of TSource) ( _
    source As Partitioner(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> AsParallel<TSource>(
    this Partitioner<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ AsParallel(
    Partitioner<TSource>^ source
)
static member AsParallel :
        source:Partitioner<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Collections.Concurrent Partitioner
<
(Of
<
(
TSource
>
)
>
)

针对输入序列的分区程序。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

作为要绑定到 ParallelEnumerable 扩展方法的 ParallelQuery 的 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。

启用了排序时使用源分区程序的 GetOrderedPartitions，未启用排序时使用分区程序的 GetPartitions（默认值）。不能使用源分区程序的 GetDynamicPartitions 和 GetDynamicOrderedPartitions。有关更多信息和示例，请参见PLINQ 和 TPL 的自定义分区程序。 启用了排序时使用源分区程序的 GetOrderedPartitions，未启用排序时使用分区程序的 GetPartitions（默认值）。不能使用源分区程序的 GetDynamicPartitions 和 GetDynamicOrderedPartitions。有关更多信息和示例，请参见PLINQ 和 TPL 的自定义分区程序。 启用了排序时使用源分区程序的 GetOrderedPartitions，未启用排序时使用分区程序的 GetPartitions（默认值）。不能使用源分区程序的 GetDynamicPartitions 和 GetDynamicOrderedPartitions。有关更多信息和示例，请参见PLINQ 和 TPL 的自定义分区程序。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
AsParallel 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsSequential <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
AsSequential
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

将 ParallelQuery<(Of <(TSource>)>) 转换为 IEnumerable<(Of <(T>)>) 以强制对查询进行顺序计算。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsSequential(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As IEnumerable(Of TSource)
public static IEnumerable<TSource> AsSequential<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IEnumerable<TSource>^ AsSequential(
    ParallelQuery<TSource>^ source
)
static member AsSequential :
        source:ParallelQuery<'TSource> -> IEnumerable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要转换为 IEnumerable<(Of <(T>)>) 的 ParallelQuery<(Of <(TSource>)>)。

返回值

类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

作为要绑定到顺序扩展方法的 IEnumerable<(Of <(T>)>) 的源。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。

有关更多信息，请参见PLINQ 中的顺序保留和 如何：在 PLINQ 查询中控制排序。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.AsUnordered <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
AsUnordered
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

允许将中间查询视为元素之间未应用任何排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsUnordered(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> AsUnordered<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ AsUnordered(
    ParallelQuery<TSource>^ source
)
static member AsUnordered :
        source:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

输入序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

具有任意顺序的源序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。

当查询的某个部分中不需要排序时，使用 AsUnordered 可提供性能优势。默认状态下，PLINQ 将输入的序列视为无序，除非指定了 OrderBy 或 AsOrdered。但是，如果排序已打开并且不再需要排序，那么 AsUnordered 可用于在查询中途将其关闭，这可能会提高性能。可以在查询的任何位置调用 AsUnordered；它不需要在 AsParallel 后立即调用。有关更多信息，请参见了解 PLINQ 中的加速和 PLINQ 中的顺序保留。 当查询的某个部分中不需要排序时，使用 AsUnordered 可提供性能优势。默认状态下，PLINQ 将输入的序列视为无序，除非指定了 OrderBy 或 AsOrdered。但是，如果排序已打开并且不再需要排序，那么 AsUnordered 可用于在查询中途将其关闭，这可能会提高性能。可以在查询的任何位置调用 AsUnordered；它不需要在 AsParallel 后立即调用。有关更多信息，请参见了解 PLINQ 中的加速和 PLINQ 中的顺序保留。 当查询的某个部分中不需要排序时，使用 AsUnordered 可提供性能优势。默认状态下，PLINQ 将输入的序列视为无序，除非指定了 OrderBy 或 AsOrdered。但是，如果排序已打开并且不再需要排序，那么 AsUnordered 可用于在查询中途将其关闭，这可能会提高性能。可以在查询的任何位置调用 AsUnordered；它不需要在 AsParallel 后立即调用。有关更多信息，请参见了解 PLINQ 中的加速和 PLINQ 中的顺序保留。 当查询的某个部分中不需要排序时，使用 AsUnordered 可提供性能优势。默认状态下，PLINQ 将输入的序列视为无序，除非指定了 OrderBy 或 AsOrdered。但是，如果排序已打开并且不再需要排序，那么 AsUnordered 可用于在查询中途将其关闭，这可能会提高性能。可以在查询的任何位置调用 AsUnordered；它不需要在 AsParallel 后立即调用。有关更多信息，请参见了解 PLINQ 中的加速和 PLINQ 中的顺序保留。 当查询的某个部分中不需要排序时，使用 AsUnordered 可提供性能优势。默认状态下，PLINQ 将输入的序列视为无序，除非指定了 OrderBy 或 AsOrdered。但是，如果排序已打开并且不再需要排序，那么 AsUnordered 可用于在查询中途将其关闭，这可能会提高性能。可以在查询的任何位置调用 AsUnordered；它不需要在 AsParallel 后立即调用。有关更多信息，请参见了解 PLINQ 中的加速和 PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法

ParallelEnumerable
.
.
::
.
Average 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Decimal >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Decimal) _
) As Decimal
public static decimal Average(
    this ParallelQuery<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Average(
    ParallelQuery<Decimal>^ source
)
static member Average :
        source:ParallelQuery<decimal> -> decimal

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Decimal
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Average(
    this ParallelQuery<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Average(
    ParallelQuery<Nullable<Decimal>>^ source
)
static member Average :
        source:ParallelQuery<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Double >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Double
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Double) _
) As Double
public static double Average(
    this ParallelQuery<double> source
)
[ExtensionAttribute]
public:
static double Average(
    ParallelQuery<double>^ source
)
static member Average :
        source:ParallelQuery<float> -> float

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Double
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this ParallelQuery<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    ParallelQuery<Nullable<double>>^ source
)
static member Average :
        source:ParallelQuery<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

源序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

返回值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | 用于计算平均值的值序列。值序列的平均值。source 是一个空引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Int32 >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Int32
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Integer) _
) As Double
public static double Average(
    this ParallelQuery<int> source
)
[ExtensionAttribute]
public:
static double Average(
    ParallelQuery<int>^ source
)
static member Average :
        source:ParallelQuery<int> -> float

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int32
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Nullable(Of Integer)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this ParallelQuery<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    ParallelQuery<Nullable<int>>^ source
)
static member Average :
        source:ParallelQuery<Nullable<int>> -> Nullable<float>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Int64 >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Int64
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Long) _
) As Double
public static double Average(
    this ParallelQuery<long> source
)
[ExtensionAttribute]
public:
static double Average(
    ParallelQuery<long long>^ source
)
static member Average :
        source:ParallelQuery<int64> -> float

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int64
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Nullable(Of Long)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this ParallelQuery<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    ParallelQuery<Nullable<long long>>^ source
)
static member Average :
        source:ParallelQuery<Nullable<int64>> -> Nullable<float>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Average(
    this ParallelQuery<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Average(
    ParallelQuery<Nullable<float>>^ source
)
static member Average :
        source:ParallelQuery<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average 方法 (ParallelQuery <(Of <(Single >)>))

ParallelEnumerable
.
.
::
.
Average 方法 (ParallelQuery
<
(Of
<
(
Single
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As ParallelQuery(Of Single) _
) As Single
public static float Average(
    this ParallelQuery<float> source
)
[ExtensionAttribute]
public:
static float Average(
    ParallelQuery<float>^ source
)
static member Average :
        source:ParallelQuery<float32> -> float32

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Single
>
)
>
)

用于计算平均值的值序列。

返回值

类型： System Single
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Double
public static double Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Double
public static double Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int64> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 序列中元素之和或数量大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Average <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

ParallelEnumerable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的平均值，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Average<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Average(
    ParallelQuery<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Average :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。
OverflowException | selector 函数返回一个大于元素类型的 MaxValue 的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Average 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Cast <(Of <(TResult >)>) 方法

ParallelEnumerable
.
.
::
.
Cast
<
(Of
<
(
TResult
>
)
>
)
方法
ParallelEnumerable 类

将 ParallelQuery 的元素转换为指定的类型。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Cast(Of TResult) ( _
    source As ParallelQuery _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Cast<TResult>(
    this ParallelQuery source
)

[ExtensionAttribute]
public:
generic<typename TResult>
static ParallelQuery<TResult>^ Cast(
    ParallelQuery^ source
)
static member Cast :
        source:ParallelQuery -> ParallelQuery<'TResult>

类型参数

TResult

source 中的元素要转换成的类型。

参数

source
类型： System.Linq ParallelQuery
包含要转换的元素的序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含已转换为指定类型的源序列的每个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
InvalidCastException | 源序列的类型不能转换为 TResult。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Concat 方法

ParallelEnumerable
.
.
::
.
Concat 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Concat <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Concat
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Concat 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Concat 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Concat(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Concat<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Concat(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Concat :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Concat。否则，Concat 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Concat。否则，Concat 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Concat 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Concat <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Concat
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

连接两个并行序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Concat(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Concat<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Concat(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second
)
static member Concat :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要连接的第一个序列。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要与第一个序列连接的序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含两个输入序列的已连接元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Concat 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Contains 方法

ParallelEnumerable
.
.
::
.
Contains 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Contains <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), TSource)

ParallelEnumerable
.
.
::
.
Contains
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, TSource)
ParallelEnumerable 类

通过使用默认的相等比较器，并行确定某个序列是否包含指定的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Contains(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    value As TSource _
) As Boolean
public static bool Contains<TSource>(
    this ParallelQuery<TSource> source,
    TSource value
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Contains(
    ParallelQuery<TSource>^ source,
    TSource value
)
static member Contains :
        source:ParallelQuery<'TSource> *
        value:'TSource -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要在其中定位某个值的序列。
value
类型：TSource
要在序列中定位的值。

返回值

类型： System Boolean
如果源序列包含具有指定值的元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Contains 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Contains <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), TSource, IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Contains
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, TSource, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 来并行确定序列是否包含指定的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Contains(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    value As TSource, _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
public static bool Contains<TSource>(
    this ParallelQuery<TSource> source,
    TSource value,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Contains(
    ParallelQuery<TSource>^ source,
    TSource value,
    IEqualityComparer<TSource>^ comparer
)
static member Contains :
        source:ParallelQuery<'TSource> *
        value:'TSource *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要在其中定位某个值的序列。
value
类型：TSource
要在序列中定位的值。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

一个对值进行比较的相等比较器。

返回值

类型： System Boolean
如果源序列包含具有指定值的元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Contains 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Count 方法

ParallelEnumerable
.
.
::
.
Count 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Count <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Count
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Count(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As Integer
public static int Count<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Count(
    ParallelQuery<TSource>^ source
)
static member Count :
        source:ParallelQuery<'TSource> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含要计数的元素的序列。

返回值

类型： System Int32
输入序列中的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 源中的元素数大于 MaxValue()()()。（在这种情况下 InnerException 为 OverflowException）- 或 - 在查询的评估过程中出现了一个或多个异常。 源中的元素数大于 MaxValue()()()。（在这种情况下 InnerException 为 OverflowException）- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Count 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Count <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
Count
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回一个数字，表示在指定的并行序列中满足条件的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Count(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Integer
public static int Count<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Count(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Count :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含要计数的元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Int32
一个数字，表示序列中满足谓词函数条件的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 源中的元素数大于 MaxValue()()()。（在这种情况下 InnerException 为 OverflowException）- 或 - 在查询的评估过程中出现了一个或多个异常。 源中的元素数大于 MaxValue()()()。（在这种情况下 InnerException 为 OverflowException）- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Count 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.DefaultIfEmpty 方法

ParallelEnumerable
.
.
::
.
DefaultIfEmpty 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.DefaultIfEmpty <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
DefaultIfEmpty
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回指定的并行序列的元素；如果序列为空，则返回单一实例集合中的类型参数的默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function DefaultIfEmpty(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> DefaultIfEmpty<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ DefaultIfEmpty(
    ParallelQuery<TSource>^ source
)
static member DefaultIfEmpty :
        source:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

序列为空时返回默认值的序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

如果 source 为空，则为包含 default(TSource) 的序列；否则为 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
DefaultIfEmpty 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.DefaultIfEmpty <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), TSource)

ParallelEnumerable
.
.
::
.
DefaultIfEmpty
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, TSource)
ParallelEnumerable 类

返回指定的并行序列中的元素；如果序列为空，则返回单一实例集合中的指定值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function DefaultIfEmpty(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    defaultValue As TSource _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> DefaultIfEmpty<TSource>(
    this ParallelQuery<TSource> source,
    TSource defaultValue
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ DefaultIfEmpty(
    ParallelQuery<TSource>^ source,
    TSource defaultValue
)
static member DefaultIfEmpty :
        source:ParallelQuery<'TSource> *
        defaultValue:'TSource -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

序列为空时为其返回指定值的序列。
defaultValue
类型：TSource
序列为空时要返回的值。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

如果 source 为空，则为包含 defaultValue 的序列；否则为 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
DefaultIfEmpty 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Distinct 方法

ParallelEnumerable
.
.
::
.
Distinct 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Distinct <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Distinct
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用默认的相等比较器对值进行比较，返回并行序列中的非重复元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Distinct(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Distinct<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Distinct(
    ParallelQuery<TSource>^ source
)
static member Distinct :
        source:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中移除重复元素的序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含源序列中的非重复元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Distinct 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Distinct <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Distinct
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较返回并行序列中的非重复元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Distinct(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Distinct<TSource>(
    this ParallelQuery<TSource> source,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Distinct(
    ParallelQuery<TSource>^ source,
    IEqualityComparer<TSource>^ comparer
)
static member Distinct :
        source:ParallelQuery<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中移除重复元素的序列。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含源序列中的非重复元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Distinct 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ElementAt <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
ElementAt
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

返回并行序列中指定索引处的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ElementAt(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    index As Integer _
) As TSource
public static TSource ElementAt<TSource>(
    this ParallelQuery<TSource> source,
    int index
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource ElementAt(
    ParallelQuery<TSource>^ source,
    int index
)
static member ElementAt :
        source:ParallelQuery<'TSource> *
        index:int -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。
index
类型： System Int32
要检索的从零开始的元素索引。

返回值

类型：TSource
源序列中指定位置处的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零或大于等于 source 中的元素数量。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ElementAtOrDefault <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
ElementAtOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

返回并行序列中指定索引处的元素；如果索引超出范围，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ElementAtOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    index As Integer _
) As TSource
public static TSource ElementAtOrDefault<TSource>(
    this ParallelQuery<TSource> source,
    int index
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource ElementAtOrDefault(
    ParallelQuery<TSource>^ source,
    int index
)
static member ElementAtOrDefault :
        source:ParallelQuery<'TSource> *
        index:int -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。
index
类型： System Int32
要检索的从零开始的元素索引。

返回值

类型：TSource
如果索引超出源序列的范围，则为 default(TSource)；否则为源序列中指定位置处的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Empty <(Of <(TResult >)>) 方法

ParallelEnumerable
.
.
::
.
Empty
<
(Of
<
(
TResult
>
)
>
)
方法
ParallelEnumerable 类

返回一个具有指定的类型参数的空 ParallelQuery{TResult}。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Shared Function Empty(Of TResult) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Empty<TResult>()

public:
generic<typename TResult>
static ParallelQuery<TResult>^ Empty()
static member Empty : unit -> ParallelQuery<'TResult>

类型参数

TResult

分配给返回的泛型序列的类型参数的类型。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个空序列，其类型参数为 TResult。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Except 方法

ParallelEnumerable
.
.
::
.
Except 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Except <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Except 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Except 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Except<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Except(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Except :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Except。否则，Except 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Except。否则，Except 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Except 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Except <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用默认的相等比较器对值进行比较，生成两个并行序列的差集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Except<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Except(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second
)
static member Except :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的未同时出现在 second 中的元素将会返回。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的元素如果同时出现在第一个序列中，则将导致从返回的序列中移除这些元素。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含两个序列元素的差集的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Except 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Except <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Except 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Except 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
Public Shared Function Except(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Except<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Except(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Except :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Except。否则，Except 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Except。否则，Except 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Except 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Except <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较产生两个并行序列的差集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Except<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Except(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member Except :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的未同时出现在 second 中的元素将会返回。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的元素如果同时出现在第一个序列中，则将导致从返回的序列中移除这些元素。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含两个序列元素的差集的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Except 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.First 方法

ParallelEnumerable
.
.
::
.
First 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.First <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
First
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中的第一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function First(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource First<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource First(
    ParallelQuery<TSource>^ source
)
static member First :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要返回其第一个元素的序列。

返回值

类型：TSource
返回指定序列中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
First 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.First <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
First
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足指定条件的第一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function First(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource First<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource First(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member First :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
序列中通过指定谓词函数中的测试的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中没有元素满足 predicate 中的条件。

如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
First 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.FirstOrDefault 方法

ParallelEnumerable
.
.
::
.
FirstOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.FirstOrDefault <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
FirstOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中的第一个元素；如果该序列中不包含任何元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function FirstOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource FirstOrDefault<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource FirstOrDefault(
    ParallelQuery<TSource>^ source
)
static member FirstOrDefault :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要返回其第一个元素的序列。

返回值

类型：TSource
如果 source 为空，则返回 default(TSource)；否则返回 source 中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
FirstOrDefault 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.FirstOrDefault <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
FirstOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足条件的第一个元素；如果未找到这样的元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function FirstOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource FirstOrDefault<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource FirstOrDefault(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member FirstOrDefault :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
如果 source 为空或没有元素通过 predicate 指定的测试，则返回 default(TSource)，否则返回 source 中通过 predicate 指定的测试的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则第一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
FirstOrDefault 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ForAll <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
ForAll
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

对 source 中的每个元素并行调用指定的操作。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Sub ForAll(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    action As Action(Of TSource) _
)
public static void ForAll<TSource>(
    this ParallelQuery<TSource> source,
    Action<TSource> action
)

[ExtensionAttribute]
public:
generic<typename TSource>
static void ForAll(
    ParallelQuery<TSource>^ source,
    Action<TSource>^ action
)
static member ForAll :
        source:ParallelQuery<'TSource> *
        action:Action<'TSource> -> unit

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

其元素将由 action 处理的 ParallelQuery<(Of <(TSource>)>)。
action
类型： System Action
<
(Of
<
(
TSource
>
)
>
)

要对每个元素调用的操作。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

这是处理并行化查询输出的高效方法，因为它不需要在结束时执行合并步骤。但是，执行顺序是不确定的。有关更多信息，请参见PLINQ 中的合并选项或PLINQ 中的顺序保留。 这是处理并行化查询输出的高效方法，因为它不需要在结束时执行合并步骤。但是，执行顺序是不确定的。有关更多信息，请参见PLINQ 中的合并选项或PLINQ 中的顺序保留。 这是处理并行化查询输出的高效方法，因为它不需要在结束时执行合并步骤。但是，执行顺序是不确定的。有关更多信息，请参见PLINQ 中的合并选项或PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy 方法

ParallelEnumerable
.
.
::
.
GroupBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行并行分组。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As ParallelQuery(Of IGrouping(Of TKey, TSource))
public static ParallelQuery<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static ParallelQuery<IGrouping<TKey, TSource>^>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> ParallelQuery<IGrouping<'TKey, 'TSource>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个 OrderedParallelQuery{TSource}，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TSource
>
)
>
)
>
)
>
)

依照 TKey 按降序排列的组序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行并行分组，并使用指定的 IComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of IGrouping(Of TKey, TSource))
public static ParallelQuery<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static ParallelQuery<IGrouping<TKey, TSource>^>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<IGrouping<'TKey, 'TSource>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个 OrderedParallelQuery<(Of <(TSource>)>)，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TSource
>
)
>
)
>
)
>
)

依照 TKey 按降序排列的组序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey, TElement >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行并行分组，并且通过使用指定的函数对每个组中的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement) _
) As ParallelQuery(Of IGrouping(Of TKey, TElement))
public static ParallelQuery<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static ParallelQuery<IGrouping<TKey, TElement>^>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> -> ParallelQuery<IGrouping<'TKey, 'TElement>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个 OrderedParallelQuery<(Of <(TSource>)>)，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

依照 TKey 按降序排列的组序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TKey, IEnumerable <(Of <(TSource >)>), TResult >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行并行分组，并且从每个组及其键中创建结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TResult) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> GroupBy<TSource, TKey, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TKey, IEnumerable<TSource>, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TResult>
static ParallelQuery<TResult>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TKey, IEnumerable<TSource>^, TResult>^ resultSelector
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        resultSelector:Func<'TKey, IEnumerable<'TSource>, 'TResult> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的序列，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey, TElement >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据键选择器函数对序列中的元素进行并行分组。通过使用比较器对键进行比较，并且通过使用指定的函数对每个组的元素进行投影。 根据键选择器函数对序列中的元素进行并行分组。通过使用比较器对键进行比较，并且通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of IGrouping(Of TKey, TElement))
public static ParallelQuery<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static ParallelQuery<IGrouping<TKey, TElement>^>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<IGrouping<'TKey, 'TElement>>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

IGrouping 中的元素的类型

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个 OrderedParallelQuery{TSource}，包含要排序的元素。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping 中的元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer{TSource}。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

依照 TKey 按降序排列的组序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey, TElement, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), Func <(Of <(TKey, IEnumerable <(Of <(TElement >)>), TResult >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行并行分组，并且从每个组及其键中创建结果值。通过使用指定的函数对每个组的元素进行投影。 根据指定的键选择器函数对序列中的元素进行并行分组，并且从每个组及其键中创建结果值。通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement, TResult) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> GroupBy<TSource, TKey, TElement, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    Func<TKey, IEnumerable<TElement>, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement, typename TResult>
static ParallelQuery<TResult>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    Func<TKey, IEnumerable<TElement>^, TResult>^ resultSelector
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        resultSelector:Func<'TKey, IEnumerable<'TElement>, 'TResult> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

每个 IGrouping{TKey, TElement} 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping<TKey, TElement> 中的元素的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的序列，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TKey, IEnumerable <(Of <(TSource >)>), TResult >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行并行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较。 根据指定的键选择器函数对序列中的元素进行并行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TResult) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> GroupBy<TSource, TKey, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TKey, IEnumerable<TSource>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TResult>
static ParallelQuery<TResult>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TKey, IEnumerable<TSource>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        resultSelector:Func<'TKey, IEnumerable<'TSource>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个组序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupBy <(Of <(TSource, TKey, TElement, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), Func <(Of <(TKey, IEnumerable <(Of <(TElement >)>), TResult >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键值进行比较，并且通过使用指定的函数对每个组的元素进行投影。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键值进行比较，并且通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement, TResult) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> GroupBy<TSource, TKey, TElement, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    Func<TKey, IEnumerable<TElement>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement, typename TResult>
static ParallelQuery<TResult>^ GroupBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    Func<TKey, IEnumerable<TElement>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        resultSelector:Func<'TKey, IEnumerable<'TElement>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

每个 IGrouping{TKey, TElement} 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于将每个源元素映射到 IGrouping{Key, TElement} 中的元素的函数。
resultSelector
类型： System Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)

用于从每个组中创建结果值的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

TResult 类型的元素的序列，其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupJoin 方法

ParallelEnumerable
.
.
::
.
GroupJoin 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, IEnumerable <(Of <(TInner >)>), TResult >)>))

ParallelEnumerable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 GroupJoin 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 GroupJoin 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, IEnumerable(Of TInner), TResult) _
) As ParallelQuery(Of TResult)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, IEnumerable<TInner>, TResult> resultSelector
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ GroupJoin(
    ParallelQuery<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, IEnumerable<TInner>^, TResult>^ resultSelector
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member GroupJoin :
        outer:ParallelQuery<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, IEnumerable<'TInner>, 'TResult> -> ParallelQuery<'TResult>

类型参数

TOuter

未使用此类型参数。

TInner

未使用此类型参数。

TKey

未使用此类型参数。

TResult

未使用此类型参数。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

未使用此参数。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

未使用此参数。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

未使用此参数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

未使用此参数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 GroupJoin。否则，GroupJoin 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 GroupJoin。否则，GroupJoin 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupJoin 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), ParallelQuery <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, IEnumerable <(Of <(TInner >)>), TResult >)>))

ParallelEnumerable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, ParallelQuery
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
)
ParallelEnumerable 类

基于键相等对两个序列的元素进行并行关联并对结果进行分组。使用默认的相等比较器对键进行比较。 基于键相等对两个序列的元素进行并行关联并对结果进行分组。使用默认的相等比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As ParallelQuery(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, IEnumerable(Of TInner), TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    ParallelQuery<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, IEnumerable<TInner>, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ GroupJoin(
    ParallelQuery<TOuter>^ outer,
    ParallelQuery<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, IEnumerable<TInner>^, TResult>^ resultSelector
)
static member GroupJoin :
        outer:ParallelQuery<'TOuter> *
        inner:ParallelQuery<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, IEnumerable<'TInner>, 'TResult> -> ParallelQuery<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Linq ParallelQuery
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含通过对两个序列执行分组联接获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupJoin 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, IEnumerable <(Of <(TInner >)>), TResult >)>), IEqualityComparer <(Of <(T

ParallelEnumerable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 GroupJoin 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 GroupJoin 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, IEnumerable(Of TInner), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of TResult)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, IEnumerable<TInner>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ GroupJoin(
    ParallelQuery<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, IEnumerable<TInner>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member GroupJoin :
        outer:ParallelQuery<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, IEnumerable<'TInner>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<'TResult>

类型参数

TOuter

未使用此类型参数。

TInner

未使用此类型参数。

TKey

未使用此类型参数。

TResult

未使用此类型参数。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

未使用此参数。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

未使用此参数。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

未使用此参数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

未使用此参数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)

未使用此参数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 GroupJoin。否则，GroupJoin 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 GroupJoin。否则，GroupJoin 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupJoin 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), ParallelQuery <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, IEnumerable <(Of <(TInner >)>), TResult >)>), IEqualityComparer <(Of <

ParallelEnumerable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, ParallelQuery
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

基于键相等对两个序列的元素进行并行关联并对结果进行分组。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。 基于键相等对两个序列的元素进行并行关联并对结果进行分组。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As ParallelQuery(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, IEnumerable(Of TInner), TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    ParallelQuery<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, IEnumerable<TInner>, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ GroupJoin(
    ParallelQuery<TOuter>^ outer,
    ParallelQuery<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, IEnumerable<TInner>^, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupJoin :
        outer:ParallelQuery<'TOuter> *
        inner:ParallelQuery<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, IEnumerable<'TInner>, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Linq ParallelQuery
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个 IEqualityComparer<(Of <(T>)>)，用于对键进行哈希处理和比较。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含通过对两个序列执行分组联接获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
GroupJoin 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Intersect 方法

ParallelEnumerable
.
.
::
.
Intersect 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Intersect <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Intersect 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Intersect 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Intersect<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Intersect(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Intersect :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Intersect。否则，Intersect 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Intersect。否则，Intersect 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Intersect 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Intersect <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用默认的相等比较器对值进行比较，生成两个并行序列的交集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Intersect<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Intersect(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second
)
static member Intersect :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的同时出现在 second 中的非重复元素将会返回。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的同时出现在第一个序列中的非重复元素将会返回。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含组成两个序列交集的元素的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Intersect 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Intersect <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Intersect 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Intersect 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Intersect<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Intersect(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Intersect :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Intersect。否则，Intersect 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Intersect。否则，Intersect 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Intersect 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Intersect <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用指定的 IEqualityComparer{T} 对值进行比较，生成两个并行序列的交集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Intersect<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Intersect(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member Intersect :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的同时出现在 second 中的非重复元素将会返回。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的同时出现在第一个序列中的非重复元素将会返回。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含组成两个序列交集的元素的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Intersect 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Join 方法

ParallelEnumerable
.
.
::
.
Join 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, TInner, TResult >)>))

ParallelEnumerable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Join 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Join 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, TInner, TResult) _
) As ParallelQuery(Of TResult)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TResult> Join<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector
)

[ExtensionAttribute]
[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ Join(
    ParallelQuery<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, TInner, TResult>^ resultSelector
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Join :
        outer:ParallelQuery<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, 'TInner, 'TResult> -> ParallelQuery<'TResult>

类型参数

TOuter

未使用此类型参数。

TInner

未使用此类型参数。

TKey

未使用此类型参数。

TResult

未使用此类型参数。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

未使用此参数。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

未使用此参数。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

未使用此参数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

未使用此参数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Join。否则，Join 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Join。否则，Join 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Join 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), ParallelQuery <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, TInner, TResult >)>))

ParallelEnumerable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, ParallelQuery
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
)
ParallelEnumerable 类

基于匹配键对两个序列的元素进行并行关联。使用默认的相等比较器对键进行比较。 基于匹配键对两个序列的元素进行并行关联。使用默认的相等比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As ParallelQuery(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, TInner, TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Join<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    ParallelQuery<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ Join(
    ParallelQuery<TOuter>^ outer,
    ParallelQuery<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, TInner, TResult>^ resultSelector
)
static member Join :
        outer:ParallelQuery<'TOuter> *
        inner:ParallelQuery<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, 'TInner, 'TResult> -> ParallelQuery<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Linq ParallelQuery
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)

用于从两个匹配元素创建结果元素的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含通过对两个序列执行内部联接获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Join 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, TInner, TResult >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Join 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Join 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, TInner, TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of TResult)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TResult> Join<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ Join(
    ParallelQuery<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, TInner, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Join :
        outer:ParallelQuery<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, 'TInner, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<'TResult>

类型参数

TOuter

未使用此类型参数。

TInner

未使用此类型参数。

TKey

未使用此类型参数。

TResult

未使用此类型参数。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

未使用此参数。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

未使用此参数。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

未使用此参数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

未使用此参数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)

未使用此参数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Join。否则，Join 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Join。否则，Join 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Join 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (ParallelQuery <(Of <(TOuter >)>), ParallelQuery <(Of <(TInner >)>), Func <(Of <(TOuter, TKey >)>), Func <(Of <(TInner, TKey >)>), Func <(Of <(TOuter, TInner, TResult >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)
, ParallelQuery
<
(Of
<
(
TInner
>
)
>
)
, Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
, Func
<
(Of
<
(
TInner, TKey
>
)
>
)
, Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

基于匹配键对两个序列的元素进行并行关联。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。 基于匹配键对两个序列的元素进行并行关联。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As ParallelQuery(Of TOuter), _
    inner As ParallelQuery(Of TInner), _
    outerKeySelector As Func(Of TOuter, TKey), _
    innerKeySelector As Func(Of TInner, TKey), _
    resultSelector As Func(Of TOuter, TInner, TResult), _
    comparer As IEqualityComparer(Of TKey) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Join<TOuter, TInner, TKey, TResult>(
    this ParallelQuery<TOuter> outer,
    ParallelQuery<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static ParallelQuery<TResult>^ Join(
    ParallelQuery<TOuter>^ outer,
    ParallelQuery<TInner>^ inner,
    Func<TOuter, TKey>^ outerKeySelector,
    Func<TInner, TKey>^ innerKeySelector,
    Func<TOuter, TInner, TResult>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member Join :
        outer:ParallelQuery<'TOuter> *
        inner:ParallelQuery<'TInner> *
        outerKeySelector:Func<'TOuter, 'TKey> *
        innerKeySelector:Func<'TInner, 'TKey> *
        resultSelector:Func<'TOuter, 'TInner, 'TResult> *
        comparer:IEqualityComparer<'TKey> -> ParallelQuery<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq ParallelQuery
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Linq ParallelQuery
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System Func
<
(Of
<
(
TOuter, TKey
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System Func
<
(Of
<
(
TInner, TKey
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)

用于从两个匹配元素创建结果元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个 IEqualityComparer<(Of <(T>)>)，用于对键进行哈希处理和比较。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含通过对两个序列执行内部联接获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 action 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Join 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Last 方法

ParallelEnumerable
.
.
::
.
Last 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Last <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Last
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中的最后一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Last(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource Last<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Last(
    ParallelQuery<TSource>^ source
)
static member Last :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回最后一个元素的序列。

返回值

类型：TSource
源序列中最后位置处的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Last 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Last <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
Last
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足指定条件的最后一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Last(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource Last<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Last(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Last :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
序列中通过指定谓词函数中的测试的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中没有元素满足 predicate 中的条件。

如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Last 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.LastOrDefault 方法

ParallelEnumerable
.
.
::
.
LastOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.LastOrDefault <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
LastOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中的最后一个元素；如果该序列中不包含任何元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LastOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource LastOrDefault<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource LastOrDefault(
    ParallelQuery<TSource>^ source
)
static member LastOrDefault :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。

返回值

类型：TSource
如果源序列为空，则返回 default()；否则返回该序列中的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
LastOrDefault 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.LastOrDefault <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
LastOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足条件的最后一个元素；如果未找到这样的元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LastOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource LastOrDefault<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource LastOrDefault(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member LastOrDefault :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
如果序列为空或没有元素通过谓词函数中的测试，则返回 default()；否则，返回通过谓词函数中的测试的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。 如果未对查询进行排序，则最后一个元素具有不确定性。有关更多信息，请参见PLINQ 中的顺序保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
LastOrDefault 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.LongCount 方法

ParallelEnumerable
.
.
::
.
LongCount 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.LongCount <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
LongCount
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回一个 Int64，表示并行序列中的元素的总数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LongCount(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As Long
public static long LongCount<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long LongCount(
    ParallelQuery<TSource>^ source
)
static member LongCount :
        source:ParallelQuery<'TSource> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含要计数的元素的序列。

返回值

类型： System Int64
输入序列中的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 源中的元素数大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 源中的元素数大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
OverflowException | 计算结果大于 MaxValue。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
LongCount 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.LongCount <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
LongCount
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回一个 Int64，表示并行序列中满足条件的元素的数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LongCount(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As Long
public static long LongCount<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long LongCount(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member LongCount :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

包含要计数的元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Int64
一个数字，表示序列中满足谓词函数条件的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 源中的元素数大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 源中的元素数大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。
OverflowException | 计算结果大于 MaxValue。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
LongCount 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法

ParallelEnumerable
.
.
::
.
Max 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Decimal >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Decimal) _
) As Decimal
public static decimal Max(
    this ParallelQuery<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Max(
    ParallelQuery<Decimal>^ source
)
static member Max :
        source:ParallelQuery<decimal> -> decimal

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Decimal
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Max(
    this ParallelQuery<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Max(
    ParallelQuery<Nullable<Decimal>>^ source
)
static member Max :
        source:ParallelQuery<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Double >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Double
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Double) _
) As Double
public static double Max(
    this ParallelQuery<double> source
)
[ExtensionAttribute]
public:
static double Max(
    ParallelQuery<double>^ source
)
static member Max :
        source:ParallelQuery<float> -> float

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Double
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Double
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Max(
    this ParallelQuery<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Max(
    ParallelQuery<Nullable<double>>^ source
)
static member Max :
        source:ParallelQuery<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Int32 >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Int32
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Integer) _
) As Integer
public static int Max(
    this ParallelQuery<int> source
)
[ExtensionAttribute]
public:
static int Max(
    ParallelQuery<int>^ source
)
static member Max :
        source:ParallelQuery<int> -> int

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int32
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Int32
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Max(
    this ParallelQuery<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Max(
    ParallelQuery<Nullable<int>>^ source
)
static member Max :
        source:ParallelQuery<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Int64 >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Int64
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Long) _
) As Long
public static long Max(
    this ParallelQuery<long> source
)
[ExtensionAttribute]
public:
static long long Max(
    ParallelQuery<long long>^ source
)
static member Max :
        source:ParallelQuery<int64> -> int64

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int64
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Int64
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Max(
    this ParallelQuery<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Max(
    ParallelQuery<Nullable<long long>>^ source
)
static member Max :
        source:ParallelQuery<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Max(
    this ParallelQuery<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Max(
    ParallelQuery<Nullable<float>>^ source
)
static member Max :
        source:ParallelQuery<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource Max<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Max(
    ParallelQuery<TSource>^ source
)
static member Max :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

源序列中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。

返回值

类型：TSource
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 不包含任何元素，且 TSource 是不可为 null 的值类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max 方法 (ParallelQuery <(Of <(Single >)>))

ParallelEnumerable
.
.
::
.
Max 方法 (ParallelQuery
<
(Of
<
(
Single
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max ( _
    source As ParallelQuery(Of Single) _
) As Single
public static float Max(
    this ParallelQuery<float> source
)
[ExtensionAttribute]
public:
static float Max(
    ParallelQuery<float>^ source
)
static member Max :
        source:ParallelQuery<float32> -> float32

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Single
>
)
>
)

要确定其最大值的值序列。

返回值

类型： System Single
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Integer
public static int Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int32
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Long
public static long Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int64> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int64
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Max<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Max <(Of <(TSource, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TResult >)>))

ParallelEnumerable
.
.
::
.
Max
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TResult
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource, TResult) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, TResult) _
) As TResult
public static TResult Max<TSource, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static TResult Max(
    ParallelQuery<TSource>^ source,
    Func<TSource, TResult>^ selector
)
static member Max :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要确定其最大值的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型：TResult
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 不包含任何元素，且 TSource 是不可为 null 的值类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Max 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法

ParallelEnumerable
.
.
::
.
Min 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Decimal >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Decimal) _
) As Decimal
public static decimal Min(
    this ParallelQuery<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Min(
    ParallelQuery<Decimal>^ source
)
static member Min :
        source:ParallelQuery<decimal> -> decimal

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Decimal
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Min(
    this ParallelQuery<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Min(
    ParallelQuery<Nullable<Decimal>>^ source
)
static member Min :
        source:ParallelQuery<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Double >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Double
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Double) _
) As Double
public static double Min(
    this ParallelQuery<double> source
)
[ExtensionAttribute]
public:
static double Min(
    ParallelQuery<double>^ source
)
static member Min :
        source:ParallelQuery<float> -> float

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Double
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Double
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Min(
    this ParallelQuery<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Min(
    ParallelQuery<Nullable<double>>^ source
)
static member Min :
        source:ParallelQuery<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Int32 >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Int32
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Integer) _
) As Integer
public static int Min(
    this ParallelQuery<int> source
)
[ExtensionAttribute]
public:
static int Min(
    ParallelQuery<int>^ source
)
static member Min :
        source:ParallelQuery<int> -> int

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int32
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Int32
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Min(
    this ParallelQuery<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Min(
    ParallelQuery<Nullable<int>>^ source
)
static member Min :
        source:ParallelQuery<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Int64 >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Int64
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Long) _
) As Long
public static long Min(
    this ParallelQuery<long> source
)
[ExtensionAttribute]
public:
static long long Min(
    ParallelQuery<long long>^ source
)
static member Min :
        source:ParallelQuery<int64> -> int64

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int64
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Int64
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Min(
    this ParallelQuery<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Min(
    ParallelQuery<Nullable<long long>>^ source
)
static member Min :
        source:ParallelQuery<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Min(
    this ParallelQuery<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Min(
    ParallelQuery<Nullable<float>>^ source
)
static member Min :
        source:ParallelQuery<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource Min<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Min(
    ParallelQuery<TSource>^ source
)
static member Min :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型：TSource
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 不包含任何元素，且 TSource 是不可为 null 的值类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min 方法 (ParallelQuery <(Of <(Single >)>))

ParallelEnumerable
.
.
::
.
Min 方法 (ParallelQuery
<
(Of
<
(
Single
>
)
>
)
)
ParallelEnumerable 类

返回值的并行序列中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min ( _
    source As ParallelQuery(Of Single) _
) As Single
public static float Min(
    this ParallelQuery<float> source
)
[ExtensionAttribute]
public:
static float Min(
    ParallelQuery<float>^ source
)
static member Min :
        source:ParallelQuery<float32> -> float32

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Single
>
)
>
)

一个值序列，用于确定最小值。

返回值

类型： System Single
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Integer
public static int Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int32
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Long
public static long Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int64> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int64
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Min<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 中不包含任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Min <(Of <(TSource, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TResult >)>))

ParallelEnumerable
.
.
::
.
Min
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TResult
>
)
>
)
)
ParallelEnumerable 类

对一个序列中的每个元素并行调用转换函数，并返回最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource, TResult) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, TResult) _
) As TResult
public static TResult Min<TSource, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static TResult Min(
    ParallelQuery<TSource>^ source,
    Func<TSource, TResult>^ selector
)
static member Min :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, 'TResult> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TResult

selector 返回的值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，用于确定最小值。
selector
类型： System Func
<
(Of
<
(
TSource, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型：TResult
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 不包含任何元素，且 TSource 是不可为 null 的值类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Min 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.OfType <(Of <(TResult >)>) 方法

ParallelEnumerable
.
.
::
.
OfType
<
(Of
<
(
TResult
>
)
>
)
方法
ParallelEnumerable 类

根据指定类型筛选 ParallelQuery 的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OfType(Of TResult) ( _
    source As ParallelQuery _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> OfType<TResult>(
    this ParallelQuery source
)

[ExtensionAttribute]
public:
generic<typename TResult>
static ParallelQuery<TResult>^ OfType(
    ParallelQuery^ source
)
static member OfType :
        source:ParallelQuery -> ParallelQuery<'TResult>

类型参数

TResult

筛选序列元素所根据的类型。

参数

source
类型： System.Linq ParallelQuery
要筛选其元素的序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含类型的输入序列中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.OrderBy 方法

ParallelEnumerable
.
.
::
.
OrderBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.OrderBy <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
OrderBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据键按升序对序列中的元素进行并行排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderBy(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> OrderBy<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ OrderBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member OrderBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

其中的元素将根据某个键进行排序的 OrderedParallelQuery{TSource}。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。为达到稳定排序，请更改此形式的查询：var ordered = source.Select((e,i) => new { E=e, I=i }).OrderBy((v) => v.e).ThenBy(v => v.i).Select((v) => v.e)； 与顺序实现相比，这不是稳定的排序。为达到稳定排序，请更改此形式的查询：var ordered = source.Select((e,i) => new { E=e, I=i }).OrderBy((v) => v.e).ThenBy(v => v.i).Select((v) => v.e)；

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
OrderBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.OrderBy <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
OrderBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

使用指定的比较器按升序对序列中的元素进行并行排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderBy(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> OrderBy<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ OrderBy(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member OrderBy :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer{TKey}。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

其中的元素将根据某个键进行排序的 OrderedParallelQuery{TSource}。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
OrderBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.OrderByDescending 方法

ParallelEnumerable
.
.
::
.
OrderByDescending 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.OrderByDescending <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
OrderByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据键按降序对序列中的元素进行并行排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderByDescending(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> OrderByDescending<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ OrderByDescending(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member OrderByDescending :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个 OrderedParallelQuery{TSource}，其元素将根据某个键按降序进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
OrderByDescending 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.OrderByDescending <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
OrderByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

使用指定的比较器按降序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderByDescending(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> OrderByDescending<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ OrderByDescending(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member OrderByDescending :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer{TKey}。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个 OrderedParallelQuery{TSource}，其元素将根据某个键按降序进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 KeySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
OrderByDescending 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Range 方法

ParallelEnumerable
.
.
::
.
Range 方法
ParallelEnumerable 类

生成指定范围内的整数的并行序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Shared Function Range ( _
    start As Integer, _
    count As Integer _
) As ParallelQuery(Of Integer)
public static ParallelQuery<int> Range(
    int start,
    int count
)
public:
static ParallelQuery<int>^ Range(
    int start,
    int count
)
static member Range :
        start:int *
        count:int -> ParallelQuery<int>

参数

start
类型： System Int32
序列中第一个整数的值。
count
类型： System Int32
要生成的顺序整数的数目。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
Int32
>
)
>
)

C# 中的 IEnumerable<Int32> 或 Visual Basic 中的 IEnumerable(Of Int32)，其中包含某个范围的顺序整数。
异常 | 条件
ArgumentOutOfRangeException | count 小于 0 - 或 - start + count - 1 大于 MaxValue()()()。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Repeat <(Of <(TResult >)>) 方法

ParallelEnumerable
.
.
::
.
Repeat
<
(Of
<
(
TResult
>
)
>
)
方法
ParallelEnumerable 类

生成包含一个重复值的并行序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Shared Function Repeat(Of TResult) ( _
    element As TResult, _
    count As Integer _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Repeat<TResult>(
    TResult element,
    int count
)

public:
generic<typename TResult>
static ParallelQuery<TResult>^ Repeat(
    TResult element,
    int count
)
static member Repeat :
        element:'TResult *
        count:int -> ParallelQuery<'TResult>

类型参数

TResult

要在结果序列中重复的值的类型。

参数

element
类型：TResult
要重复的值。
count
类型： System Int32
在生成序列中重复该值的次数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个包含重复值的序列。
异常 | 条件
ArgumentOutOfRangeException | count 小于 0。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Reverse <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
Reverse
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

反转并行序列中元素的顺序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Reverse(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Reverse<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Reverse(
    ParallelQuery<TSource>^ source
)
static member Reverse :
        source:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要反转的值序列。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其元素以相反顺序对应于输入序列的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Select 方法

ParallelEnumerable
.
.
::
.
Select 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Select <(Of <(TSource, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TResult >)>))

ParallelEnumerable
.
.
::
.
Select
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TResult
>
)
>
)
)
ParallelEnumerable 类

将序列中的每个元素并行投影到新窗体中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Select(Of TSource, TResult) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Select<TSource, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static ParallelQuery<TResult>^ Select(
    ParallelQuery<TSource>^ source,
    Func<TSource, TResult>^ selector
)
static member Select :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, 'TResult> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

选择器返回的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，要对该序列调用转换函数。
selector
类型： System Func
<
(Of
<
(
TSource, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其元素是对 source 的每个元素调用转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Select 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Select <(Of <(TSource, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32, TResult >)>))

ParallelEnumerable
.
.
::
.
Select
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, TResult
>
)
>
)
)
ParallelEnumerable 类

通过合并元素的索引，将序列的每个元素并行投影到新窗体中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Select(Of TSource, TResult) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Integer, TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Select<TSource, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, int, TResult> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static ParallelQuery<TResult>^ Select(
    ParallelQuery<TSource>^ source,
    Func<TSource, int, TResult>^ selector
)
static member Select :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int, 'TResult> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

选择器返回的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个值序列，要对该序列调用转换函数。
selector
类型： System Func
<
(Of
<
(
TSource, Int32, TResult
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其元素是对 source 的每个元素调用转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Select 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SelectMany 方法

ParallelEnumerable
.
.
::
.
SelectMany 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.SelectMany <(Of <(TSource, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, IEnumerable <(Of <(TResult >)>) >)>))

ParallelEnumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

将序列的每个元素并行投影到 IEnumerable{T}，并将结果序列合并为一个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TResult) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, IEnumerable(Of TResult)) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> SelectMany<TSource, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, IEnumerable<TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static ParallelQuery<TResult>^ SelectMany(
    ParallelQuery<TSource>^ source,
    Func<TSource, IEnumerable<TResult>^>^ selector
)
static member SelectMany :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, IEnumerable<'TResult>> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

选择器返回的序列元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其元素是对输入序列的每个元素调用一对多转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SelectMany 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SelectMany <(Of <(TSource, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32, IEnumerable <(Of <(TResult >)>) >)>))

ParallelEnumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

将序列的每个元素并行投影到 IEnumerable{T}，并将结果序列合并为一个序列。每个源元素的索引用于该元素的投影表。 将序列的每个元素并行投影到 IEnumerable{T}，并将结果序列合并为一个序列。每个源元素的索引用于该元素的投影表。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TResult) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Integer, IEnumerable(Of TResult)) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> SelectMany<TSource, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, int, IEnumerable<TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static ParallelQuery<TResult>^ SelectMany(
    ParallelQuery<TSource>^ source,
    Func<TSource, int, IEnumerable<TResult>^>^ selector
)
static member SelectMany :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int, IEnumerable<'TResult>> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

选择器返回的序列元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其元素是对输入序列的每个元素调用一对多转换函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SelectMany 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SelectMany <(Of <(TSource, TCollection, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, IEnumerable <(Of <(TCollection >)>) >)>), Func <(Of <(TSource, TCollection, TResult >)>))

ParallelEnumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
, Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
)
ParallelEnumerable 类

将序列的每个元素投影到 IEnumerable{T}，并将结果序列合并为一个序列，然后对其中的每个元素调用结果选择器函数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TCollection, TResult) ( _
    source As ParallelQuery(Of TSource), _
    collectionSelector As Func(Of TSource, IEnumerable(Of TCollection)), _
    resultSelector As Func(Of TSource, TCollection, TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> SelectMany<TSource, TCollection, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, IEnumerable<TCollection>> collectionSelector,
    Func<TSource, TCollection, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TCollection, typename TResult>
static ParallelQuery<TResult>^ SelectMany(
    ParallelQuery<TSource>^ source,
    Func<TSource, IEnumerable<TCollection>^>^ collectionSelector,
    Func<TSource, TCollection, TResult>^ resultSelector
)
static member SelectMany :
        source:ParallelQuery<'TSource> *
        collectionSelector:Func<'TSource, IEnumerable<'TCollection>> *
        resultSelector:Func<'TSource, 'TCollection, 'TResult> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TCollection

collectionSelector 收集的中间元素的类型。

TResult

结果序列中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
collectionSelector
类型： System Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)

一个应用于每个源元素的转换函数；函数的第二个参数表示源元素的索引。
resultSelector
类型： System Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其元素是通过以下方法得到的：对 source 的每个元素调用一对多转换函数 collectionSelector，然后将这些序列元素中的每一个元素及其相应的源元素映射到一个结果元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SelectMany 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SelectMany <(Of <(TSource, TCollection, TResult >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32, IEnumerable <(Of <(TCollection >)>) >)>), Func <(Of <(TSource, TCollection, TResult >)>))

ParallelEnumerable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
, Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
)
ParallelEnumerable 类

将序列的每个元素投影到 IEnumerable{T}，并将结果序列合并为一个序列，然后对其中的每个元素调用结果选择器函数。每个源元素的索引用于该元素的中间投影表。 将序列的每个元素投影到 IEnumerable{T}，并将结果序列合并为一个序列，然后对其中的每个元素调用结果选择器函数。每个源元素的索引用于该元素的中间投影表。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TCollection, TResult) ( _
    source As ParallelQuery(Of TSource), _
    collectionSelector As Func(Of TSource, Integer, IEnumerable(Of TCollection)), _
    resultSelector As Func(Of TSource, TCollection, TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> SelectMany<TSource, TCollection, TResult>(
    this ParallelQuery<TSource> source,
    Func<TSource, int, IEnumerable<TCollection>> collectionSelector,
    Func<TSource, TCollection, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TCollection, typename TResult>
static ParallelQuery<TResult>^ SelectMany(
    ParallelQuery<TSource>^ source,
    Func<TSource, int, IEnumerable<TCollection>^>^ collectionSelector,
    Func<TSource, TCollection, TResult>^ resultSelector
)
static member SelectMany :
        source:ParallelQuery<'TSource> *
        collectionSelector:Func<'TSource, int, IEnumerable<'TCollection>> *
        resultSelector:Func<'TSource, 'TCollection, 'TResult> -> ParallelQuery<'TResult>

类型参数

TSource

source 中的元素的类型。

TCollection

collectionSelector 收集的中间元素的类型。

TResult

要返回的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
collectionSelector
类型： System Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)

一个应用于每个源元素的转换函数；函数的第二个参数表示源元素的索引。
resultSelector
类型： System Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其元素是通过以下方法得到的：对 source 的每个元素调用一对多转换函数 collectionSelector，然后将这些序列元素中的每一个元素及其相应的源元素映射到一个结果元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SelectMany 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SequenceEqual 方法

ParallelEnumerable
.
.
::
.
SequenceEqual 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 SequenceEqual 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 SequenceEqual 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource) _
) As Boolean
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static bool SequenceEqual<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member SequenceEqual :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> -> bool

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System Boolean
此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 每次调用此方法时引发。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 SequenceEqual。否则，SequenceEqual 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 SequenceEqual。否则，SequenceEqual 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SequenceEqual 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用相应类型的默认相等比较器对序列的元素进行比较，以确定两个并行序列是否相等。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource) _
) As Boolean
public static bool SequenceEqual<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second
)
static member SequenceEqual :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> -> bool

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要与 second 进行比较的序列。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要与第一个输入序列进行比较的序列。

返回值

类型： System Boolean
如果根据相应类型的默认相等比较器，两个源序列的长度相等，且其相应元素相等，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SequenceEqual 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 SequenceEqual 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 SequenceEqual 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
Public Shared Function SequenceEqual(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static bool SequenceEqual<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public:
generic<typename TSource>
static bool SequenceEqual(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member SequenceEqual :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System Boolean
此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 每次调用此方法时引发。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 SequenceEqual。否则，SequenceEqual 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 SequenceEqual。否则，SequenceEqual 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SequenceEqual 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

使用指定的 IEqualityComparer{T} 对两个并行序列的元素进行比较，以确定这两个序列是否相等。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
public static bool SequenceEqual<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member SequenceEqual :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要与 second 进行比较的序列。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要与第一个输入序列进行比较的序列。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

一个用于比较元素的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System Boolean
如果根据相应类型的默认相等比较器，两个源序列的长度相等，且其相应元素相等，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SequenceEqual 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Single 方法

ParallelEnumerable
.
.
::
.
Single 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Single <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Single
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列的唯一元素；如果该序列并非恰好包含一个元素，则会引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Single(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource Single<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Single(
    ParallelQuery<TSource>^ source
)
static member Single :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的序列。

返回值

类型：TSource
输入序列的单个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | 输入序列包含多个元素。- 或 - 输入序列为空。 输入序列包含多个元素。- 或 - 输入序列为空。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Single 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Single <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
Single
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足指定条件的唯一元素；如果有多个这样的元素存在，则会引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Single(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource Single<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Single(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Single :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试元素是否满足条件的函数。

返回值

类型：TSource
输入序列中满足条件的单个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | 没有元素满足 predicate 中的条件。- 或 - 多个元素满足 predicate 中的条件。 没有元素满足 predicate 中的条件。- 或 - 多个元素满足 predicate 中的条件。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Single 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SingleOrDefault 方法

ParallelEnumerable
.
.
::
.
SingleOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.SingleOrDefault <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
SingleOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中的唯一元素；如果该序列为空，则返回默认值；如果该序列包含多个元素，此方法将引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SingleOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource
public static TSource SingleOrDefault<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource SingleOrDefault(
    ParallelQuery<TSource>^ source
)
static member SingleOrDefault :
        source:ParallelQuery<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的序列。

返回值

类型：TSource
返回输入序列的单个元素；如果序列不包含任何元素，则返回 default()。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SingleOrDefault 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SingleOrDefault <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
SingleOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足指定条件的唯一元素；如果这类元素不存在，则返回默认值；如果有多个元素满足该条件，此方法将引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SingleOrDefault(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As TSource
public static TSource SingleOrDefault<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource SingleOrDefault(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member SingleOrDefault :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试元素是否满足条件的函数。

返回值

类型：TSource
输入序列中满足条件的单个元素，如果未找到这样的元素，则为 default()。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。
InvalidOperationException | source 是空的，或者返回了多个元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SingleOrDefault 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Skip <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
Skip
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

跳过并行序列中指定数量的元素，然后返回剩余的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Skip(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    count As Integer _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Skip<TSource>(
    this ParallelQuery<TSource> source,
    int count
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Skip(
    ParallelQuery<TSource>^ source,
    int count
)
static member Skip :
        source:ParallelQuery<'TSource> *
        count:int -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
count
类型： System Int32
返回剩余元素前要跳过的元素数量。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含输入序列中的指定索引后出现的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

如果计数 > source.Count()，则不返回任何元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SkipWhile 方法

ParallelEnumerable
.
.
::
.
SkipWhile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.SkipWhile <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
SkipWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

跳过并行序列中满足指定条件的任何元素，然后返回剩余元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SkipWhile(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> SkipWhile<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ SkipWhile(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member SkipWhile :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，它包含输入序列中从没有通过谓词指定的测试的线性系列中第一个元素开始的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SkipWhile 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.SkipWhile <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32, Boolean >)>))

ParallelEnumerable
.
.
::
.
SkipWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
)
ParallelEnumerable 类

跳过并行序列中满足指定条件的任何元素，然后返回剩余元素。将在谓词函数的逻辑中使用元素的索引。 跳过并行序列中满足指定条件的任何元素，然后返回剩余元素。将在谓词函数的逻辑中使用元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SkipWhile(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Integer, Boolean) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> SkipWhile<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ SkipWhile(
    ParallelQuery<TSource>^ source,
    Func<TSource, int, bool>^ predicate
)
static member SkipWhile :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, int, bool> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)

用于测试每个源元素是否满足条件的函数；该函数的第二个参数表示源元素的索引。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，它包含输入序列中从没有通过谓词指定的测试的线性系列中第一个元素开始的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
SkipWhile 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法

ParallelEnumerable
.
.
::
.
Sum 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Decimal >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Decimal) _
) As Decimal
public static decimal Sum(
    this ParallelQuery<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Sum(
    ParallelQuery<Decimal>^ source
)
static member Sum :
        source:ParallelQuery<decimal> -> decimal

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Decimal
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Decimal
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Sum(
    this ParallelQuery<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Sum(
    ParallelQuery<Nullable<Decimal>>^ source
)
static member Sum :
        source:ParallelQuery<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Double >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Double
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Double) _
) As Double
public static double Sum(
    this ParallelQuery<double> source
)
[ExtensionAttribute]
public:
static double Sum(
    ParallelQuery<double>^ source
)
static member Sum :
        source:ParallelQuery<float> -> float

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Double
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Double
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue()()()。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Sum(
    this ParallelQuery<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Sum(
    ParallelQuery<Nullable<double>>^ source
)
static member Sum :
        source:ParallelQuery<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Int32 >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Int32
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Integer) _
) As Integer
public static int Sum(
    this ParallelQuery<int> source
)
[ExtensionAttribute]
public:
static int Sum(
    ParallelQuery<int>^ source
)
static member Sum :
        source:ParallelQuery<int> -> int

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int32
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Int32
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Sum(
    this ParallelQuery<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Sum(
    ParallelQuery<Nullable<int>>^ source
)
static member Sum :
        source:ParallelQuery<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Int64 >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Int64
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Long) _
) As Long
public static long Sum(
    this ParallelQuery<long> source
)
[ExtensionAttribute]
public:
static long long Sum(
    ParallelQuery<long long>^ source
)
static member Sum :
        source:ParallelQuery<int64> -> int64

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Int64
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Int64
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Sum(
    this ParallelQuery<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Sum(
    ParallelQuery<Nullable<long long>>^ source
)
static member Sum :
        source:ParallelQuery<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Sum(
    this ParallelQuery<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Sum(
    ParallelQuery<Nullable<float>>^ source
)
static member Sum :
        source:ParallelQuery<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum 方法 (ParallelQuery <(Of <(Single >)>))

ParallelEnumerable
.
.
::
.
Sum 方法 (ParallelQuery
<
(Of
<
(
Single
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As ParallelQuery(Of Single) _
) As Single
public static float Sum(
    this ParallelQuery<float> source
)
[ExtensionAttribute]
public:
static float Sum(
    ParallelQuery<float>^ source
)
static member Sum :
        source:ParallelQuery<float32> -> float32

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
Single
>
)
>
)

一个要对其求和的值序列。

返回值

类型： System Single
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Decimal >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Decimal) _
) As Decimal
public static decimal Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, decimal> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, Decimal>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, decimal> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Decimal
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Decimal
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Double >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Double
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Double) _
) As Double
public static double Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, double> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, double>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Double
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Double
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32 >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Integer) _
) As Integer
public static int Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, int>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int> -> int

类型参数

TSource

源序列中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int32
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int32
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int64 >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int64
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Long) _
) As Long
public static long Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, long> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, long long>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, int64> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Int64
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Int64
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<Decimal>>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<decimal>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<double>>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<int>>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<long long>>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<int64>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, Nullable<float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, Nullable<float>>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, Nullable<float32>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Sum <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Single >)>))

ParallelEnumerable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Single
>
)
>
)
)
ParallelEnumerable 类

并行计算一个值序列的和，这些值可通过对输入序列的每个元素调用转换函数获得。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    selector As Func(Of TSource, Single) _
) As Single
public static float Sum<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, float> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Sum(
    ParallelQuery<TSource>^ source,
    Func<TSource, float>^ selector
)
static member Sum :
        source:ParallelQuery<'TSource> *
        selector:Func<'TSource, float32> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个要对其求和的值序列。
selector
类型： System Func
<
(Of
<
(
TSource, Single
>
)
>
)

应用于每个元素的转换函数。

返回值

类型： System Single
序列中投影值的总和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 selector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。 和大于 MaxValue。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Sum 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Take <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
Take
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

从并行序列的开头返回指定数量的连续元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Take(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    count As Integer _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Take<TSource>(
    this ParallelQuery<TSource> source,
    int count
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Take(
    ParallelQuery<TSource>^ source,
    int count
)
static member Take :
        source:ParallelQuery<'TSource> *
        count:int -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
count
类型： System Int32
要返回的元素数量。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含输入序列开头的指定数量的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.TakeWhile 方法

ParallelEnumerable
.
.
::
.
TakeWhile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.TakeWhile <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
TakeWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足指定条件的任何元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function TakeWhile(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> TakeWhile<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ TakeWhile(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member TakeWhile :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，它包含输入序列中出现在无法再通过测试的元素之前的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
TakeWhile 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.TakeWhile <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32, Boolean >)>))

ParallelEnumerable
.
.
::
.
TakeWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
)
ParallelEnumerable 类

返回并行序列中满足指定条件的任何元素。将在谓词函数的逻辑中使用元素的索引。 返回并行序列中满足指定条件的任何元素。将在谓词函数的逻辑中使用元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function TakeWhile(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Integer, Boolean) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> TakeWhile<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ TakeWhile(
    ParallelQuery<TSource>^ source,
    Func<TSource, int, bool>^ predicate
)
static member TakeWhile :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, int, bool> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)

用于测试每个源元素是否满足条件的函数；该函数的第二个参数表示源元素的索引。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，它包含输入序列中出现在无法再通过测试的元素之前的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
TakeWhile 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ThenBy 方法

ParallelEnumerable
.
.
::
.
ThenBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.ThenBy <(Of <(TSource, TKey >)>) 方法 (OrderedParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
ThenBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据某个键按升序对序列中的元素并行执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenBy(Of TSource, TKey) ( _
    source As OrderedParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> ThenBy<TSource, TKey>(
    this OrderedParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ ThenBy(
    OrderedParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ThenBy :
        source:OrderedParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个包含要排序的元素的 OrderedParallelQuery{TSource}。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

其中的元素将根据某个键进行排序的 OrderedParallelQuery{TSource}。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ThenBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ThenBy <(Of <(TSource, TKey >)>) 方法 (OrderedParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
ThenBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

使用指定的比较器按升序对序列中的元素并行执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenBy(Of TSource, TKey) ( _
    source As OrderedParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> ThenBy<TSource, TKey>(
    this OrderedParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ ThenBy(
    OrderedParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member ThenBy :
        source:OrderedParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个包含要排序的元素的 OrderedParallelQuery{TSource}。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer{TKey}。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

其中的元素将根据某个键进行排序的 OrderedParallelQuery{TSource}。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ThenBy 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ThenByDescending 方法

ParallelEnumerable
.
.
::
.
ThenByDescending 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.ThenByDescending <(Of <(TSource, TKey >)>) 方法 (OrderedParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
ThenByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据某个键按降序对序列中的元素并行执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenByDescending(Of TSource, TKey) ( _
    source As OrderedParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> ThenByDescending<TSource, TKey>(
    this OrderedParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ ThenByDescending(
    OrderedParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ThenByDescending :
        source:OrderedParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个包含要排序的元素的 OrderedParallelQuery{TSource}。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ThenByDescending 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ThenByDescending <(Of <(TSource, TKey >)>) 方法 (OrderedParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
ThenByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

使用指定的比较器按降序对序列中的元素并行执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenByDescending(Of TSource, TKey) ( _
    source As OrderedParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IComparer(Of TKey) _
) As OrderedParallelQuery(Of TSource)
public static OrderedParallelQuery<TSource> ThenByDescending<TSource, TKey>(
    this OrderedParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static OrderedParallelQuery<TSource>^ ThenByDescending(
    OrderedParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IComparer<TKey>^ comparer
)
static member ThenByDescending :
        source:OrderedParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IComparer<'TKey> -> OrderedParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个包含要排序的元素的 OrderedParallelQuery{TSource}。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer{TKey}。

返回值

类型： System.Linq OrderedParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。 与顺序实现相比，这不是稳定的排序。有关实现稳定排序的方法，请参见 OrderBy 备注。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ThenByDescending 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToArray <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
ToArray
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

从 ParallelQuery<(Of <(TSource>)>) 创建一个数组。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToArray(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As TSource()
public static TSource[] ToArray<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static array<TSource>^ ToArray(
    ParallelQuery<TSource>^ source
)
static member ToArray :
        source:ParallelQuery<'TSource> -> 'TSource[]

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要从其中创建数组的序列。

返回值

类型：
array<
TSource
>
[]
()
[]

一个包含输入序列中的元素的数组。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToDictionary 方法

ParallelEnumerable
.
.
::
.
ToDictionary 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.ToDictionary <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数，从 ParallelQuery<(Of <(TSource>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As Dictionary(Of TKey, TSource)
public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static Dictionary<TKey, TSource>^ ToDictionary(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ToDictionary :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> Dictionary<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 Dictionary<(Of <(TKey, TValue>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 Dictionary<(Of <(TKey, TValue>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToDictionary 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToDictionary <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数和键比较器，从 ParallelQuery<(Of <(TSource>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IEqualityComparer(Of TKey) _
) As Dictionary(Of TKey, TSource)
public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static Dictionary<TKey, TSource>^ ToDictionary(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToDictionary :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IEqualityComparer<'TKey> -> Dictionary<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 Dictionary<(Of <(TKey, TValue>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 Dictionary<(Of <(TKey, TValue>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToDictionary 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToDictionary <(Of <(TSource, TKey, TElement >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>))

ParallelEnumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器和元素选择器函数，从 ParallelQuery<(Of <(TSource>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey, TElement) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement) _
) As Dictionary(Of TKey, TElement)
public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static Dictionary<TKey, TElement>^ ToDictionary(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector
)
static member ToDictionary :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> -> Dictionary<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 Dictionary<(Of <(TKey, TValue>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Dictionary<(Of <(TKey, TValue>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 或 elementSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToDictionary 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToDictionary <(Of <(TSource, TKey, TElement >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
ToDictionary
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数、比较器和元素选择器函数，从 ParallelQuery<(Of <(TSource>)>) 创建一个 Dictionary<(Of <(TKey, TValue>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToDictionary(Of TSource, TKey, TElement) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    comparer As IEqualityComparer(Of TKey) _
) As Dictionary(Of TKey, TElement)
public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static Dictionary<TKey, TElement>^ ToDictionary(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToDictionary :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        comparer:IEqualityComparer<'TKey> -> Dictionary<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 Dictionary<(Of <(TKey, TValue>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Collections.Generic Dictionary
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Dictionary<(Of <(TKey, TValue>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 或 elementSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。 keySelector 生成一个为 null 引用的键（在 Visual Basic 中为 Nothing）。- 或 - keySelector 为两个元素产生了重复键。- 或 - 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToDictionary 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToList <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
ToList
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

从 ParallelQuery<(Of <(TSource>)>) 创建一个 List<(Of <(T>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToList(Of TSource) ( _
    source As ParallelQuery(Of TSource) _
) As List(Of TSource)
public static List<TSource> ToList<TSource>(
    this ParallelQuery<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static List<TSource>^ ToList(
    ParallelQuery<TSource>^ source
)
static member ToList :
        source:ParallelQuery<'TSource> -> List<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 List<(Of <(T>)>) 的序列。

返回值

类型： System.Collections.Generic List
<
(Of
<
(
TSource
>
)
>
)

一个包含输入序列中的元素的 List<(Of <(T>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToLookup 方法

ParallelEnumerable
.
.
::
.
ToLookup 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.ToLookup <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>))

ParallelEnumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数，从 ParallelQuery<(Of <(TSource>)>) 创建一个 ILookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey) _
) As ILookup(Of TKey, TSource)
public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static ILookup<TKey, TSource>^ ToLookup(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector
)
static member ToLookup :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> -> ILookup<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 ILookup<(Of <(TKey, TElement>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 ILookup<(Of <(TKey, TElement>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToLookup 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToLookup <(Of <(TSource, TKey >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数和键比较器，从 ParallelQuery<(Of <(TSource>)>) 创建一个 ILookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    comparer As IEqualityComparer(Of TKey) _
) As ILookup(Of TKey, TSource)
public static ILookup<TKey, TSource> ToLookup<TSource, TKey>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static ILookup<TKey, TSource>^ ToLookup(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToLookup :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        comparer:IEqualityComparer<'TKey> -> ILookup<'TKey, 'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 ILookup<(Of <(TKey, TElement>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TSource
>
)
>
)

一个包含键和值的 ILookup<(Of <(TKey, TElement>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToLookup 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToLookup <(Of <(TSource, TKey, TElement >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>))

ParallelEnumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器和元素选择器函数，从 ParallelQuery<(Of <(TSource>)>) 创建一个 ILookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey, TElement) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement) _
) As ILookup(Of TKey, TElement)
public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static ILookup<TKey, TElement>^ ToLookup(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector
)
static member ToLookup :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> -> ILookup<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 ILookup<(Of <(TKey, TElement>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 ILookup<(Of <(TKey, TElement>)>)，包含从输入序列中选择的类型为 TElement 的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 或 elementSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToLookup 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.ToLookup <(Of <(TSource, TKey, TElement >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, TKey >)>), Func <(Of <(TSource, TElement >)>), IEqualityComparer <(Of <(TKey >)>))

ParallelEnumerable
.
.
::
.
ToLookup
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, TKey
>
)
>
)
, Func
<
(Of
<
(
TSource, TElement
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
ParallelEnumerable 类

根据指定的键选择器函数、比较器和元素选择器函数从 ParallelQuery<(Of <(TSource>)>) 创建一个 ILookup<(Of <(TKey, TElement>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ToLookup(Of TSource, TKey, TElement) ( _
    source As ParallelQuery(Of TSource), _
    keySelector As Func(Of TSource, TKey), _
    elementSelector As Func(Of TSource, TElement), _
    comparer As IEqualityComparer(Of TKey) _
) As ILookup(Of TKey, TElement)
public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
    this ParallelQuery<TSource> source,
    Func<TSource, TKey> keySelector,
    Func<TSource, TElement> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static ILookup<TKey, TElement>^ ToLookup(
    ParallelQuery<TSource>^ source,
    Func<TSource, TKey>^ keySelector,
    Func<TSource, TElement>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member ToLookup :
        source:ParallelQuery<'TSource> *
        keySelector:Func<'TSource, 'TKey> *
        elementSelector:Func<'TSource, 'TElement> *
        comparer:IEqualityComparer<'TKey> -> ILookup<'TKey, 'TElement>

类型参数

TSource

source 中的元素的类型。

TKey

keySelector 返回的键的类型。

TElement

elementSelector 返回的值的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

据其创建 ILookup<(Of <(TKey, TElement>)>) 的序列。
keySelector
类型： System Func
<
(Of
<
(
TSource, TKey
>
)
>
)

用于从每个元素中提取键的函数。
elementSelector
类型： System Func
<
(Of
<
(
TSource, TElement
>
)
>
)

用于从每个元素产生结果元素值的转换函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ILookup
<
(Of
<
(
TKey, TElement
>
)
>
)

一个 Lookup<(Of <(TKey, TElement>)>)，其中包含从输入序列中选择的 TElement 类型的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
ArgumentNullException | source 或 keySelector 或 elementSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
ToLookup 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Union 方法

ParallelEnumerable
.
.
::
.
Union 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Union <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Union 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Union 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Union<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Union(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Union :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Union。否则，Union 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Union。否则，Union 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Union 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Union <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用默认的相等比较器，生成两个并行序列的并集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Union<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Union(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second
)
static member Union :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的非重复元素构成并集的第一部分。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的非重复元素构成并集的第二部分。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含两个输入序列中的非重复元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Union 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Union <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Union 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Union 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TSource> Union<TSource>(
    this ParallelQuery<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Union(
    ParallelQuery<TSource>^ first,
    IEnumerable<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Union :
        first:ParallelQuery<'TSource> *
        second:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Union。否则，Union 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Union。否则，Union 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Union 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Union <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), ParallelQuery <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

ParallelEnumerable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
ParallelEnumerable 类

通过使用指定的 IEqualityComparer{T} 生成两个并行序列的并集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    first As ParallelQuery(Of TSource), _
    second As ParallelQuery(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Union<TSource>(
    this ParallelQuery<TSource> first,
    ParallelQuery<TSource> second,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Union(
    ParallelQuery<TSource>^ first,
    ParallelQuery<TSource>^ second,
    IEqualityComparer<TSource>^ comparer
)
static member Union :
        first:ParallelQuery<'TSource> *
        second:ParallelQuery<'TSource> *
        comparer:IEqualityComparer<'TSource> -> ParallelQuery<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的非重复元素构成并集的第一部分。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中的非重复元素构成并集的第二部分。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含两个输入序列中的非重复元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Union 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Where 方法

ParallelEnumerable
.
.
::
.
Where 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Where <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Boolean >)>))

ParallelEnumerable
.
.
::
.
Where
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
)
ParallelEnumerable 类

基于谓词并行筛选值序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Boolean) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Where<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Where(
    ParallelQuery<TSource>^ source,
    Func<TSource, bool>^ predicate
)
static member Where :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, bool> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要筛选的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含输入序列中满足条件的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Where 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Where <(Of <(TSource >)>) 方法 (ParallelQuery <(Of <(TSource >)>), Func <(Of <(TSource, Int32, Boolean >)>))

ParallelEnumerable
.
.
::
.
Where
<
(Of
<
(
TSource
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
, Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
)
ParallelEnumerable 类

基于谓词并行筛选值序列。将在谓词函数的逻辑中使用每个元素的索引。 基于谓词并行筛选值序列。将在谓词函数的逻辑中使用每个元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    predicate As Func(Of TSource, Integer, Boolean) _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> Where<TSource>(
    this ParallelQuery<TSource> source,
    Func<TSource, int, bool> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ Where(
    ParallelQuery<TSource>^ source,
    Func<TSource, int, bool>^ predicate
)
static member Where :
        source:ParallelQuery<'TSource> *
        predicate:Func<'TSource, int, bool> -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要筛选的序列。
predicate
类型： System Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

一个序列，其中包含输入序列中满足条件的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Where 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.WithCancellation <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
WithCancellation
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

设置要与查询关联的 CancellationToken。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function WithCancellation(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    cancellationToken As CancellationToken _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> WithCancellation<TSource>(
    this ParallelQuery<TSource> source,
    CancellationToken cancellationToken
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ WithCancellation(
    ParallelQuery<TSource>^ source,
    CancellationToken cancellationToken
)
static member WithCancellation :
        source:ParallelQuery<'TSource> *
        cancellationToken:CancellationToken -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其设置选项的 ParallelQuery。
cancellationToken
类型： System.Threading CancellationToken
取消标记。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

表示与源相同的查询的 ParallelQuery，但带有已注册的取消标记。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ObjectDisposedException | 与 cancellationToken 关联的 CancellationTokenSource 已被释放。
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 在该查询中，多次使用 WithCancellation。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)
如何：取消 PLINQ 查询
取消


ParallelEnumerable ..::.WithDegreeOfParallelism <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
WithDegreeOfParallelism
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

设置要在查询中使用的并行度。并行度是将用于处理查询的同时执行的任务的最大数目。 设置要在查询中使用的并行度。并行度是将用于处理查询的同时执行的任务的最大数目。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function WithDegreeOfParallelism(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    degreeOfParallelism As Integer _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> WithDegreeOfParallelism<TSource>(
    this ParallelQuery<TSource> source,
    int degreeOfParallelism
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ WithDegreeOfParallelism(
    ParallelQuery<TSource>^ source,
    int degreeOfParallelism
)
static member WithDegreeOfParallelism :
        source:ParallelQuery<'TSource> *
        degreeOfParallelism:int -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其设置并行度限制的 ParallelQuery。
degreeOfParallelism
类型： System Int32
查询的并行度。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

表示与源相同的查询的 ParallelQuery，其中设置了对并行度的限制。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | degreeOfParallelism 小于 1 或大于 63。
InvalidOperationException | WithDegreeOfParallelism 在查询中多次使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.WithExecutionMode <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
WithExecutionMode
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

设置查询的执行模式。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function WithExecutionMode(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    executionMode As ParallelExecutionMode _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> WithExecutionMode<TSource>(
    this ParallelQuery<TSource> source,
    ParallelExecutionMode executionMode
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ WithExecutionMode(
    ParallelQuery<TSource>^ source,
    ParallelExecutionMode executionMode
)
static member WithExecutionMode :
        source:ParallelQuery<'TSource> *
        executionMode:ParallelExecutionMode -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其设置选项的 ParallelQuery。
executionMode
类型： System.Linq ParallelExecutionMode
执行查询使用的模式。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

表示与源相同的查询的 ParallelQuery，但带有已注册的执行模式。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | executionMode 不是有效的 ParallelExecutionMode 值。
InvalidOperationException | WithExecutionMode 在查询中多次使用。

执行模式指定 PLINQ 是否将尝试回退到使用连续执行，如果它检测到某些查询形状。有关更多信息和示例，请参见如何：在 PLINQ 中指定执行模式。 执行模式指定 PLINQ 是否将尝试回退到使用连续执行，如果它检测到某些查询形状。有关更多信息和示例，请参见如何：在 PLINQ 中指定执行模式。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.WithMergeOptions <(Of <(TSource >)>) 方法

ParallelEnumerable
.
.
::
.
WithMergeOptions
<
(Of
<
(
TSource
>
)
>
)
方法
ParallelEnumerable 类

设置此查询的合并选项，它指定查询对输出进行缓冲处理的方式。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function WithMergeOptions(Of TSource) ( _
    source As ParallelQuery(Of TSource), _
    mergeOptions As ParallelMergeOptions _
) As ParallelQuery(Of TSource)
public static ParallelQuery<TSource> WithMergeOptions<TSource>(
    this ParallelQuery<TSource> source,
    ParallelMergeOptions mergeOptions
)

[ExtensionAttribute]
public:
generic<typename TSource>
static ParallelQuery<TSource>^ WithMergeOptions(
    ParallelQuery<TSource>^ source,
    ParallelMergeOptions mergeOptions
)
static member WithMergeOptions :
        source:ParallelQuery<'TSource> *
        mergeOptions:ParallelMergeOptions -> ParallelQuery<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

要对其设置选项的 ParallelQuery。
mergeOptions
类型： System.Linq ParallelMergeOptions
要为此查询设置的合并选项。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TSource
>
)
>
)

表示与源相同的查询的 ParallelQuery，但带有已注册的合并选项。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 是 null 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | mergeOptions 不是有效的 ParallelMergeOptions 值。
InvalidOperationException | WithMergeOptions 在查询中多次使用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)
PLINQ 中的合并选项
如何：在 PLINQ 中指定合并选项


ParallelEnumerable ..::.Zip 方法

ParallelEnumerable
.
.
::
.
Zip 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelEnumerable 类

名称 说明
页首

参考

ParallelEnumerable 类
ParallelEnumerable 成员
System.Linq 命名空间


ParallelEnumerable ..::.Zip <(Of <(TFirst, TSecond, TResult >)>) 方法 (ParallelQuery <(Of <(TFirst >)>), IEnumerable <(Of <(TSecond >)>), Func <(Of <(TFirst, TSecond, TResult >)>))

ParallelEnumerable
.
.
::
.
Zip
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TFirst
>
)
>
)
, IEnumerable
<
(Of
<
(
TSecond
>
)
>
)
, Func
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
)
ParallelEnumerable 类

注意：此 API 现在已过时。

切勿调用此 Zip 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。 切勿调用此 Zip 重载。此方法已标记为过时，调用此方法时总是会引发 NotSupportedException。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")> _
Public Shared Function Zip(Of TFirst, TSecond, TResult) ( _
    first As ParallelQuery(Of TFirst), _
    second As IEnumerable(Of TSecond), _
    resultSelector As Func(Of TFirst, TSecond, TResult) _
) As ParallelQuery(Of TResult)
[ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public static ParallelQuery<TResult> Zip<TFirst, TSecond, TResult>(
    this ParallelQuery<TFirst> first,
    IEnumerable<TSecond> second,
    Func<TFirst, TSecond, TResult> resultSelector
)

[ExtensionAttribute]
[ObsoleteAttribute(L"The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")]
public:
generic<typename TFirst, typename TSecond, typename TResult>
static ParallelQuery<TResult>^ Zip(
    ParallelQuery<TFirst>^ first,
    IEnumerable<TSecond>^ second,
    Func<TFirst, TSecond, TResult>^ resultSelector
)
[<ObsoleteAttribute("The second data source of a binary operator must be of type System.Linq.ParallelQuery<T> rather than System.Collections.Generic.IEnumerable<T>. To fix this problem, use the AsParallel() extension method to convert the right data source to System.Linq.ParallelQuery<T>.")>]
static member Zip :
        first:ParallelQuery<'TFirst> *
        second:IEnumerable<'TSecond> *
        resultSelector:Func<'TFirst, 'TSecond, 'TResult> -> ParallelQuery<'TResult>

类型参数

TFirst

未使用此类型参数。

TSecond

未使用此类型参数。

TResult

未使用此类型参数。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TFirst
>
)
>
)

未使用此参数。
second
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSecond
>
)
>
)

未使用此参数。
resultSelector
类型： System Func
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)

未使用此参数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

此重载总是会引发 NotSupportedException。

使用说明

在 Visual Basic 和 C# 中，可以在 TFirst 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
NotSupportedException | 调用此方法时发生的异常。

此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Zip。否则，Zip 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。 此重载可禁止对左边 ParallelQuery<(Of <(TSource>)>) 类型的数据源与右边 IEnumerable<(Of <(T>)>) 类型的数据源使用 Zip。否则，Zip 运算符似乎绑定到并行实现，但实际上绑定到顺序实现。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

.NET Framework Client Profile

在 4 中过时（编译器警告）

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Zip 重载
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelEnumerable ..::.Zip <(Of <(TFirst, TSecond, TResult >)>) 方法 (ParallelQuery <(Of <(TFirst >)>), ParallelQuery <(Of <(TSecond >)>), Func <(Of <(TFirst, TSecond, TResult >)>))

ParallelEnumerable
.
.
::
.
Zip
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
方法 (ParallelQuery
<
(Of
<
(
TFirst
>
)
>
)
, ParallelQuery
<
(Of
<
(
TSecond
>
)
>
)
, Func
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
)
ParallelEnumerable 类

通过使用指定的谓词函数并行合并两个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Zip(Of TFirst, TSecond, TResult) ( _
    first As ParallelQuery(Of TFirst), _
    second As ParallelQuery(Of TSecond), _
    resultSelector As Func(Of TFirst, TSecond, TResult) _
) As ParallelQuery(Of TResult)
public static ParallelQuery<TResult> Zip<TFirst, TSecond, TResult>(
    this ParallelQuery<TFirst> first,
    ParallelQuery<TSecond> second,
    Func<TFirst, TSecond, TResult> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TFirst, typename TSecond, typename TResult>
static ParallelQuery<TResult>^ Zip(
    ParallelQuery<TFirst>^ first,
    ParallelQuery<TSecond>^ second,
    Func<TFirst, TSecond, TResult>^ resultSelector
)
static member Zip :
        first:ParallelQuery<'TFirst> *
        second:ParallelQuery<'TSecond> *
        resultSelector:Func<'TFirst, 'TSecond, 'TResult> -> ParallelQuery<'TResult>

类型参数

TFirst

第一个序列中的元素的类型。

TSecond

第二个序列中的元素的类型。

TResult

返回元素的类型。

参数

first
类型： System.Linq ParallelQuery
<
(Of
<
(
TFirst
>
)
>
)

要压缩的第一个序列。
second
类型： System.Linq ParallelQuery
<
(Of
<
(
TSecond
>
)
>
)

要压缩的第二个序列。
resultSelector
类型： System Func
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)

用于从两个匹配元素创建结果元素的函数。

返回值

类型： System.Linq ParallelQuery
<
(Of
<
(
TResult
>
)
>
)

一个序列，其中包含通过对两个序列执行 resultSelector 配对获得的 TResult 类型的元素。如果序列长度不相等，这将截断为较短序列的长度。 一个序列，其中包含通过对两个序列执行 resultSelector 配对获得的 TResult 类型的元素。如果序列长度不相等，这将截断为较短序列的长度。

使用说明

在 Visual Basic 和 C# 中，可以在 TFirst 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | first 或 second 或 resultSelector 是 null 引用（在 Visual Basic 中为 Nothing）。
OperationCanceledException | 查询已使用通过 WithCancellation 传入的标记取消。
AggregateException | 在查询的评估过程中出现了一个或多个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelEnumerable 类
ParallelEnumerable 成员
Zip 重载
System.Linq 命名空间


ParallelExecutionMode 枚举

ParallelExecutionMode 枚举

查询执行模式是一种提示，它指定系统在并行化查询时应如何使性能达到平衡。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Enumeration ParallelExecutionMode
public enum ParallelExecutionMode
public enum class ParallelExecutionMode
type ParallelExecutionMode
成员名称 | 说明
Default | 这是默认设置。PLINQ 将检查查询的结构，仅在可能带来加速时才对查询进行并行化。如果查询结构指示不可能获得加速，则 PLINQ 会将查询当作普通的 LINQ to Objects 查询来执行。 这是默认设置。PLINQ 将检查查询的结构，仅在可能带来加速时才对查询进行并行化。如果查询结构指示不可能获得加速，则 PLINQ 会将查询当作普通的 LINQ to Objects 查询来执行。 这是默认设置。PLINQ 将检查查询的结构，仅在可能带来加速时才对查询进行并行化。如果查询结构指示不可能获得加速，则 PLINQ 会将查询当作普通的 LINQ to Objects 查询来执行。
ForceParallelism | 并行化整个查询，即使要使用系统开销大的算法。如果认为并行执行查询将带来加速，则使用此标志，但处于默认模式的 PLINQ 将按顺序执行它。 并行化整个查询，即使要使用系统开销大的算法。如果认为并行执行查询将带来加速，则使用此标志，但处于默认模式的 PLINQ 将按顺序执行它。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)
如何：在 PLINQ 中指定执行模式
了解 PLINQ 中的加速


ParallelMergeOptions 枚举

ParallelMergeOptions 枚举

指定查询中要使用的输出合并的首选类型。换言之，它指示 PLINQ 如何将多个分区的结果合并回单个结果序列。这仅是一个提示，系统在并行处理所有查询时可能不会考虑这一点。 指定查询中要使用的输出合并的首选类型。换言之，它指示 PLINQ 如何将多个分区的结果合并回单个结果序列。这仅是一个提示，系统在并行处理所有查询时可能不会考虑这一点。 指定查询中要使用的输出合并的首选类型。换言之，它指示 PLINQ 如何将多个分区的结果合并回单个结果序列。这仅是一个提示，系统在并行处理所有查询时可能不会考虑这一点。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Enumeration ParallelMergeOptions
public enum ParallelMergeOptions
public enum class ParallelMergeOptions
type ParallelMergeOptions
成员名称 | 说明
Default | 使用默认合并类型，即 AutoBuffered。
NotBuffered | 不利用输出缓冲区进行合并。一旦计算出结果元素，就向查询使用者提供这些元素。 不利用输出缓冲区进行合并。一旦计算出结果元素，就向查询使用者提供这些元素。
AutoBuffered | 利用系统选定大小的输出缓冲区进行合并。在向查询使用者提供结果之前，会先将结果累计到输出缓冲区中。 利用系统选定大小的输出缓冲区进行合并。在向查询使用者提供结果之前，会先将结果累计到输出缓冲区中。
FullyBuffered | 利用整个输出缓冲区进行合并。在向查询使用者提供任何结果之前，系统会先累计所有结果。 利用整个输出缓冲区进行合并。在向查询使用者提供任何结果之前，系统会先累计所有结果。

对于将被使用以及作为流输出的查询使用 NotBuffered，这在开始执行查询与产生元素之间具有最短的延迟。对于某些查询，如涉及到排序的查询（OrderBy、OrderByDescending），缓冲是必需的，NotBuffered 或 AutoBuffered 的提示将被忽略。但是，只要在查询自身内部没有执行进一步的排序，通过使用 AsOrdered 运算符创建的查询可以进行流式处理。 对于将被使用以及作为流输出的查询使用 NotBuffered，这在开始执行查询与产生元素之间具有最短的延迟。对于某些查询，如涉及到排序的查询（OrderBy、OrderByDescending），缓冲是必需的，NotBuffered 或 AutoBuffered 的提示将被忽略。但是，只要在查询自身内部没有执行进一步的排序，通过使用 AsOrdered 运算符创建的查询可以进行流式处理。 对于将被使用以及作为流输出的查询使用 NotBuffered，这在开始执行查询与产生元素之间具有最短的延迟。对于某些查询，如涉及到排序的查询（OrderBy、OrderByDescending），缓冲是必需的，NotBuffered 或 AutoBuffered 的提示将被忽略。但是，只要在查询自身内部没有执行进一步的排序，通过使用 AsOrdered 运算符创建的查询可以进行流式处理。

大多数情况下都使用 AutoBuffered；这是默认值。它在延迟和总体性能之间达成一种平衡。 大多数情况下都使用 AutoBuffered；这是默认值。它在延迟和总体性能之间达成一种平衡。

当需要信息之前可以处理整个输出时，对查询使用 FullyBuffered。当产生任何信息之前可以累积所有输出时，此选项可以提供最佳性能，尽管它不适合流处理或显示中间查询的部分结果。 当需要信息之前可以处理整个输出时，对查询使用 FullyBuffered。当产生任何信息之前可以累积所有输出时，此选项可以提供最佳性能，尽管它不适合流处理或显示中间查询的部分结果。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)
PLINQ 中的合并选项
如何：在 PLINQ 中指定合并选项


ParallelQuery 类

ParallelQuery 类
成员

表示并行序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Class ParallelQuery _
    Implements IEnumerable
public class ParallelQuery : IEnumerable
public ref class ParallelQuery : IEnumerable
type ParallelQuery =
    class
        interface IEnumerable
    end

System.Linq System.Linq..::.ParallelQueryParallelQuery

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelQuery 成员
System.Linq 命名空间
System.Linq ParallelEnumerable

其他资源

并行 LINQ (PLINQ)


ParallelQuery 成员

ParallelQuery 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelQuery 类

表示并行序列。

ParallelQuery 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ParallelQuery 类
System.Linq 命名空间


ParallelQuery 方法

ParallelQuery 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelQuery 类

ParallelQuery 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ParallelQuery 类
System.Linq 命名空间


ParallelQuery ..::.IEnumerable ..::.GetEnumerator 方法

ParallelQuery
.
.
::
.
IEnumerable
.
.
::
.
GetEnumerator 方法
ParallelQuery 类

返回循环访问序列的枚举数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Private Function GetEnumerator As IEnumerator
    Implements IEnumerable.GetEnumerator
IEnumerator IEnumerable.GetEnumerator()
private:
virtual IEnumerator^ GetEnumerator() sealed = IEnumerable::GetEnumerator
private abstract GetEnumerator : unit -> IEnumerator
private override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
循环访问序列的枚举数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelQuery 类
ParallelQuery 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


ParallelQuery <(Of <(TSource >)>) 类

ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
类
成员

表示并行序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Class ParallelQuery(Of TSource) _
    Inherits ParallelQuery _
    Implements IEnumerable(Of TSource), IEnumerable
public class ParallelQuery<TSource> : ParallelQuery,
    IEnumerable<TSource>, IEnumerable

generic<typename TSource>
public ref class ParallelQuery : public ParallelQuery,
    IEnumerable<TSource>, IEnumerable
type ParallelQuery<'TSource> =
    class
        inherit ParallelQuery
        interface IEnumerable<'TSource>
        interface IEnumerable
    end

类型参数

TSource

源序列中的元素的类型。

System.Linq
System.Linq..::.ParallelQuery<(Of <(TSource>)>)ParallelQuery
System.Linq..::.ParallelQuery<(Of <(TSource>)>)TSource
System.Linq..::.ParallelQuery<(Of <(TSource>)>)
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelQuery TSource 成员
System.Linq 命名空间
System.Linq ParallelEnumerable

其他资源

并行 LINQ (PLINQ)


ParallelQuery <(Of <(TSource >)>) 成员

ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelQuery

表示并行序列。

ParallelQuery TSource 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ParallelQuery TSource 类
System.Linq 命名空间


ParallelQuery <(Of <(TSource >)>) 方法

ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParallelQuery

ParallelQuery TSource 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ParallelQuery TSource 类
System.Linq 命名空间


ParallelQuery <(Of <(TSource >)>) ..::.GetEnumerator 方法

ParallelQuery
<
(Of
<
(
TSource
>
)
>
)
.
.
::
.
GetEnumerator 方法
ParallelQuery

返回循环访问序列的枚举数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
Public Overridable Function GetEnumerator As IEnumerator(Of TSource)
public virtual IEnumerator<TSource> GetEnumerator()
public:
virtual IEnumerator<TSource>^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator<'TSource>
override GetEnumerator : unit -> IEnumerator<'TSource>

返回值

类型： System.Collections.Generic IEnumerator
<
(Of
<
(
TSource
>
)
>
)

循环访问序列的枚举数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

ParallelQuery TSource 类
ParallelQuery TSource 成员
System.Linq 命名空间

其他资源

并行 LINQ (PLINQ)


Queryable 类

Queryable 类
成员

提供一组用于查询实现 IQueryable<(Of <(T>)>) 的数据结构的 static（在 Visual Basic 中为 Shared）方法。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public NotInheritable Class Queryable
public static class Queryable
[ExtensionAttribute]
public ref class Queryable abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
type Queryable =  class end

在 Queryable 类中声明的该组方法提供标准查询运算符的实现，用于查询实现 IQueryable<(Of <(T>)>) 的数据源。标准查询运算符是通用方法，它们遵循 LINQ 模式，使用它们可以在任何基于 .NET 的编程语言中表示数据的遍历、筛选和投影运算。 在 Queryable 类中声明的该组方法提供标准查询运算符的实现，用于查询实现 IQueryable<(Of <(T>)>) 的数据源。标准查询运算符是通用方法，它们遵循 LINQ 模式，使用它们可以在任何基于 .NET 的编程语言中表示数据的遍历、筛选和投影运算。

此类中的大部分方法被定义为扩展 IQueryable<(Of <(T>)>) 类型的扩展方法。这意味着可以像调用实现 IQueryable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。这些扩展 IQueryable<(Of <(T>)>) 的方法不直接执行任何查询。它们的功能是生成一个 Expression 对象，该对象是表示累积查询的表达式树。然后，这些方法将新的表达式树传递给输入 IQueryable<(Of <(T>)>) 的 Execute<(Of <(TResult>)>)(Expression) 方法或 CreateQuery<(Of <(TElement>)>)(Expression) 方法。调用的方法取决于 Queryable 方法的返回值，如果返回一个单一实例值，则调用的是 Execute<(Of <(TResult>)>)(Expression)；如果返回可枚举的结果，则调用的是 CreateQuery<(Of <(TElement>)>)(Expression)。 此类中的大部分方法被定义为扩展 IQueryable<(Of <(T>)>) 类型的扩展方法。这意味着可以像调用实现 IQueryable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。这些扩展 IQueryable<(Of <(T>)>) 的方法不直接执行任何查询。它们的功能是生成一个 Expression 对象，该对象是表示累积查询的表达式树。然后，这些方法将新的表达式树传递给输入 IQueryable<(Of <(T>)>) 的 Execute<(Of <(TResult>)>)(Expression) 方法或 CreateQuery<(Of <(TElement>)>)(Expression) 方法。调用的方法取决于 Queryable 方法的返回值，如果返回一个单一实例值，则调用的是 Execute<(Of <(TResult>)>)(Expression)；如果返回可枚举的结果，则调用的是 CreateQuery<(Of <(TElement>)>)(Expression)。 此类中的大部分方法被定义为扩展 IQueryable<(Of <(T>)>) 类型的扩展方法。这意味着可以像调用实现 IQueryable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。这些扩展 IQueryable<(Of <(T>)>) 的方法不直接执行任何查询。它们的功能是生成一个 Expression 对象，该对象是表示累积查询的表达式树。然后，这些方法将新的表达式树传递给输入 IQueryable<(Of <(T>)>) 的 Execute<(Of <(TResult>)>)(Expression) 方法或 CreateQuery<(Of <(TElement>)>)(Expression) 方法。调用的方法取决于 Queryable 方法的返回值，如果返回一个单一实例值，则调用的是 Execute<(Of <(TResult>)>)(Expression)；如果返回可枚举的结果，则调用的是 CreateQuery<(Of <(TElement>)>)(Expression)。 此类中的大部分方法被定义为扩展 IQueryable<(Of <(T>)>) 类型的扩展方法。这意味着可以像调用实现 IQueryable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。这些扩展 IQueryable<(Of <(T>)>) 的方法不直接执行任何查询。它们的功能是生成一个 Expression 对象，该对象是表示累积查询的表达式树。然后，这些方法将新的表达式树传递给输入 IQueryable<(Of <(T>)>) 的 Execute<(Of <(TResult>)>)(Expression) 方法或 CreateQuery<(Of <(TElement>)>)(Expression) 方法。调用的方法取决于 Queryable 方法的返回值，如果返回一个单一实例值，则调用的是 Execute<(Of <(TResult>)>)(Expression)；如果返回可枚举的结果，则调用的是 CreateQuery<(Of <(TElement>)>)(Expression)。 此类中的大部分方法被定义为扩展 IQueryable<(Of <(T>)>) 类型的扩展方法。这意味着可以像调用实现 IQueryable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。这些扩展 IQueryable<(Of <(T>)>) 的方法不直接执行任何查询。它们的功能是生成一个 Expression 对象，该对象是表示累积查询的表达式树。然后，这些方法将新的表达式树传递给输入 IQueryable<(Of <(T>)>) 的 Execute<(Of <(TResult>)>)(Expression) 方法或 CreateQuery<(Of <(TElement>)>)(Expression) 方法。调用的方法取决于 Queryable 方法的返回值，如果返回一个单一实例值，则调用的是 Execute<(Of <(TResult>)>)(Expression)；如果返回可枚举的结果，则调用的是 CreateQuery<(Of <(TElement>)>)(Expression)。 此类中的大部分方法被定义为扩展 IQueryable<(Of <(T>)>) 类型的扩展方法。这意味着可以像调用实现 IQueryable<(Of <(T>)>) 的任意对象上的实例方法一样调用它们。这些扩展 IQueryable<(Of <(T>)>) 的方法不直接执行任何查询。它们的功能是生成一个 Expression 对象，该对象是表示累积查询的表达式树。然后，这些方法将新的表达式树传递给输入 IQueryable<(Of <(T>)>) 的 Execute<(Of <(TResult>)>)(Expression) 方法或 CreateQuery<(Of <(TElement>)>)(Expression) 方法。调用的方法取决于 Queryable 方法的返回值，如果返回一个单一实例值，则调用的是 Execute<(Of <(TResult>)>)(Expression)；如果返回可枚举的结果，则调用的是 CreateQuery<(Of <(TElement>)>)(Expression)。

对目标数据执行的实际查询由实现 IQueryable<(Of <(T>)>) 的类执行。任何 IQueryable<(Of <(T>)>) 实现的预期都是执行通过 Queryable 标准查询运算符方法构造的表达式树的结果。如果数据源是 IEnumerable<(Of <(T>)>)，则该结果与在 Enumerable 类中调用相应方法的结果相同。 对目标数据执行的实际查询由实现 IQueryable<(Of <(T>)>) 的类执行。任何 IQueryable<(Of <(T>)>) 实现的预期都是执行通过 Queryable 标准查询运算符方法构造的表达式树的结果。如果数据源是 IEnumerable<(Of <(T>)>)，则该结果与在 Enumerable 类中调用相应方法的结果相同。

除了对 IQueryable<(Of <(T>)>) 对象进行运算的标准查询运算符方法，此类还包含一个 AsQueryable 方法，该方法将 IEnumerable 对象类型化为 IQueryable 对象。

System.Linq System.Linq..::.QueryableQueryable
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 成员
System.Linq 命名空间

其他资源

语言集成查询 (LINQ)
Standard Query Operators Overview
表达式树（C# 和 Visual Basic）
LINQ to SQL


Queryable 成员

Queryable 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

提供一组用于查询实现 IQueryable<(Of <(T>)>) 的数据结构的 static（在 Visual Basic 中为 Shared）方法。

Queryable 类型公开以下成员。

名称 说明
页首

参考

Queryable 类
System.Linq 命名空间


Queryable 方法

Queryable 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

Queryable 类型公开以下成员。

名称 说明
页首

参考

Queryable 类
System.Linq 命名空间


Queryable ..::.Aggregate 方法

Queryable
.
.
::
.
Aggregate 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

对序列应用累加器函数。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Aggregate <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TSource, TSource >)>) >)>))

Queryable
.
.
::
.
Aggregate
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TSource, TSource
>
)
>
)
>
)
>
)
)
Queryable 类

对序列应用累加器函数。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource) ( _
    source As IQueryable(Of TSource), _
    func As Expression(Of Func(Of TSource, TSource, TSource)) _
) As TSource
public static TSource Aggregate<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TSource, TSource>> func
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Aggregate(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TSource, TSource>^>^ func
)
static member Aggregate :
        source:IQueryable<'TSource> *
        func:Expression<Func<'TSource, 'TSource, 'TSource>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
func
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TSource, TSource
>
)
>
)
>
)
>
)

要应用于每个元素的累加器函数。

返回值

类型：TSource
累加器的最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 func 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。source 中的第一个值用作累加值的种子值，它对应于 func 中的第一个参数。 因执行表示调用 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。source 中的第一个值用作累加值的种子值，它对应于 func 中的第一个参数。 因执行表示调用 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。source 中的第一个值用作累加值的种子值，它对应于 func 中的第一个参数。

若要简化常规聚合运算，标准查询运算符集合还可以包含两个计数方法（即 Count 和 LongCount）以及四个数值聚合方法（即 Max、Min、Sum 和 Average）。

下面的代码示例演示如何使用 Aggregate<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TSource, TSource>)>)>)>)) 从一个字符串数组生成一个句子。

        Dim sentence As String = "the quick brown fox jumps over the lazy dog"

        ' Split the string into individual words.
        Dim words() As String = sentence.Split(" "c)

        ' Use Aggregate() to prepend each word to the beginning of the
        ' new sentence to reverse the word order.
        Dim reversed As String = _
            words.AsQueryable().Aggregate( _
                Function(ByVal workingSentence, ByVal nextWord) nextWord & " " & workingSentence _
            )

        MsgBox(reversed)

        ' This code produces the following output:
        '
        ' dog lazy the over jumps fox brown quick the

            string sentence = "the quick brown fox jumps over the lazy dog";

            // Split the string into individual words.
            string[] words = sentence.Split(' ');

            // Use Aggregate() to prepend each word to the beginning of the
            // new sentence to reverse the word order.
            string reversed =
                words.AsQueryable().Aggregate(
                (workingSentence, next) => next + " " + workingSentence
                );

            Console.WriteLine(reversed);

            // This code produces the following output:
            //
            // dog lazy the over jumps fox brown quick the

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Aggregate 重载
System.Linq 命名空间


Queryable ..::.Aggregate <(Of <(TSource, TAccumulate >)>) 方法 (IQueryable <(Of <(TSource >)>), TAccumulate, Expression <(Of <(Func <(Of <(TAccumulate, TSource, TAccumulate >)>) >)>))

Queryable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Expression
<
(Of
<
(
Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
>
)
>
)
)
Queryable 类

对序列应用累加器函数。将指定的种子值用作累加器初始值。 对序列应用累加器函数。将指定的种子值用作累加器初始值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate) ( _
    source As IQueryable(Of TSource), _
    seed As TAccumulate, _
    func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)) _
) As TAccumulate
public static TAccumulate Aggregate<TSource, TAccumulate>(
    this IQueryable<TSource> source,
    TAccumulate seed,
    Expression<Func<TAccumulate, TSource, TAccumulate>> func
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate>
static TAccumulate Aggregate(
    IQueryable<TSource>^ source,
    TAccumulate seed,
    Expression<Func<TAccumulate, TSource, TAccumulate>^>^ func
)
static member Aggregate :
        source:IQueryable<'TSource> *
        seed:'TAccumulate *
        func:Expression<Func<'TAccumulate, 'TSource, 'TAccumulate>> -> 'TAccumulate

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
seed
类型：TAccumulate
累加器的初始值。
func
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
>
)
>
)

要对每个元素调用的累加器函数。

返回值

类型：TAccumulate
累加器的最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 func 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。 因执行表示调用 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。 因执行表示调用 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。

若要简化常规聚合运算，标准查询运算符集合还可以包含两个计数方法（即 Count 和 LongCount）以及四个数值聚合方法（即 Max、Min、Sum 和 Average）。

下面的代码示例演示当向函数提供种子值时如何使用 Aggregate<(Of <(TSource, TAccumulate>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>)) 应用累加器函数。

        Dim ints() As Integer = {4, 8, 8, 3, 9, 0, 7, 8, 2}

        ' Count the even numbers in the array, using a seed value of 0.
        Dim numEven As Integer = _
            ints.AsQueryable().Aggregate( _
                0, _
                Function(ByVal total, ByVal number) _
                    IIf(number Mod 2 = 0, total + 1, total) _
            )

        MsgBox(String.Format("The number of even integers is: {0}", numEven))

        ' This code produces the following output:
        '
        ' The number of even integers is: 6

            int[] ints = { 4, 8, 8, 3, 9, 0, 7, 8, 2 };

            // Count the even numbers in the array, using a seed value of 0.
            int numEven =
                ints.AsQueryable().Aggregate(
                0,
                (total, next) => next % 2 == 0 ? total + 1 : total
                );

            Console.WriteLine("The number of even integers is: {0}", numEven);

            // This code produces the following output:
            //
            // The number of even integers is: 6

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Aggregate 重载
System.Linq 命名空间


Queryable ..::.Aggregate <(Of <(TSource, TAccumulate, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), TAccumulate, Expression <(Of <(Func <(Of <(TAccumulate, TSource, TAccumulate >)>) >)>), Expression <(Of <(Func <(Of <(TAccumulate, TResult >)>) >)>))

Queryable
.
.
::
.
Aggregate
<
(Of
<
(
TSource, TAccumulate, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, TAccumulate, Expression
<
(Of
<
(
Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

对序列应用累加器函数。将指定的种子值用作累加器的初始值，并使用指定的函数选择结果值。 对序列应用累加器函数。将指定的种子值用作累加器的初始值，并使用指定的函数选择结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Aggregate(Of TSource, TAccumulate, TResult) ( _
    source As IQueryable(Of TSource), _
    seed As TAccumulate, _
    func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)), _
    selector As Expression(Of Func(Of TAccumulate, TResult)) _
) As TResult
public static TResult Aggregate<TSource, TAccumulate, TResult>(
    this IQueryable<TSource> source,
    TAccumulate seed,
    Expression<Func<TAccumulate, TSource, TAccumulate>> func,
    Expression<Func<TAccumulate, TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TAccumulate, typename TResult>
static TResult Aggregate(
    IQueryable<TSource>^ source,
    TAccumulate seed,
    Expression<Func<TAccumulate, TSource, TAccumulate>^>^ func,
    Expression<Func<TAccumulate, TResult>^>^ selector
)
static member Aggregate :
        source:IQueryable<'TSource> *
        seed:'TAccumulate *
        func:Expression<Func<'TAccumulate, 'TSource, 'TAccumulate>> *
        selector:Expression<Func<'TAccumulate, 'TResult>> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TAccumulate

累加器值的类型。

TResult

结果值的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要聚合的序列。
seed
类型：TAccumulate
累加器的初始值。
func
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TAccumulate, TSource, TAccumulate
>
)
>
)
>
)
>
)

要对每个元素调用的累加器函数。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TAccumulate, TResult
>
)
>
)
>
)
>
)

将累加器的最终值转换为结果值的函数。

返回值

类型：TResult
已转换的累加器最终值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 func 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。最终累加值传递给 selector 以获取结果值。 因执行表示调用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。最终累加值传递给 selector 以获取结果值。 因执行表示调用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。最终累加值传递给 selector 以获取结果值。 因执行表示调用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对源序列中的每个值应用指定的函数 func，并返回累加值。seed 参数用作累加值的种子值，它对应于 func 中的第一个参数。最终累加值传递给 selector 以获取结果值。

若要简化常规聚合运算，标准查询运算符集合还可以包含两个计数方法（即 Count 和 LongCount）以及四个数值聚合方法（即 Max、Min、Sum 和 Average）。

下面的代码示例演示如何使用 Aggregate<(Of <(TSource, TAccumulate, TResult>)>)(IQueryable<(Of <(TSource>)>), TAccumulate, Expression<(Of <(Func<(Of <(TAccumulate, TSource, TAccumulate>)>)>)>), Expression<(Of <(Func<(Of <(TAccumulate, TResult>)>)>)>)) 应用累加器函数和结果选择器。

        Dim fruits() As String = {"apple", "mango", "orange", "passionfruit", "grape"}

        ' Determine whether any string in the array is longer than "banana".
        Dim longestName As String = _
            fruits.AsQueryable().Aggregate( _
            "banana", _
            Function(ByVal longest, ByVal fruit) IIf(fruit.Length > longest.Length, fruit, longest), _
            Function(ByVal fruit) fruit.ToUpper() _
        )

        MsgBox(String.Format( _
            "The fruit with the longest name is {0}.", longestName) _
        )

        ' This code produces the following output:
        '
        ' The fruit with the longest name is PASSIONFRUIT.

            string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" };

            // Determine whether any string in the array is longer than "banana".
            string longestName =
                fruits.AsQueryable().Aggregate(
                "banana",
                (longest, next) => next.Length > longest.Length ? next : longest,
                // Return the final result as an uppercase string.
                fruit => fruit.ToUpper()
                );

            Console.WriteLine(
                "The fruit with the longest name is {0}.",
                longestName);

            // This code produces the following output:
            //
            // The fruit with the longest name is PASSIONFRUIT.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Aggregate 重载
System.Linq 命名空间


Queryable ..::.All <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
All
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

确定序列中的所有元素是否都满足条件。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function All(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As Boolean
public static bool All<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool All(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member All :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要测试其元素是否满足条件的序列。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Boolean
如果源序列中的每个元素都通过指定谓词中的测试，或者序列为空，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 中的所有元素是否都满足 predicate 中的条件。 因执行表示调用 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 中的所有元素是否都满足 predicate 中的条件。

下面的代码示例演示如何使用 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 确定序列中的所有元素是否都满足条件。

    Sub AllEx()
        ' Create an array of Pets.
        Dim pets() As Pet = _
            {New Pet With {.Name = "Barley", .Age = 10}, _
             New Pet With {.Name = "Boots", .Age = 4}, _
             New Pet With {.Name = "Whiskers", .Age = 6}}

        ' Determine whether all pet names in the array start with 'B'.
        Dim allStartWithB As Boolean = _
            pets.AsQueryable().All(Function(ByVal pet) pet.Name.StartsWith("B"))

        MsgBox(String.Format( _
            "{0} pet names start with 'B'.", _
            IIf(allStartWithB, "All", "Not all")))
    End Sub

    Public Structure Pet
        Dim Name As String
        Dim Age As Integer
    End Structure

    ' This code produces the following output:
    '
    '  Not all pet names start with 'B'.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void AllEx1()
            {
                // Create an array of Pets.
                Pet[] pets = { new Pet { Name="Barley", Age=10 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=6 } };

                // Determine whether all pet names in the array start with 'B'.
                bool allStartWithB =
                    pets.AsQueryable().All(pet => pet.Name.StartsWith("B"));

                Console.WriteLine(
                    "{0} pet names start with 'B'.",
                    allStartWithB ? "All" : "Not all");
            }

            // This code produces the following output:
            //
            //  Not all pet names start with 'B'.

All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where 方法的直接调用中。下面的示例演示 All 方法的这一用法。 All<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where 方法的直接调用中。下面的示例演示 All 方法的这一用法。

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Structure Person
    Public LastName As String
    Public Pets() As Pet
End Structure

Sub AllEx2()
    Dim people As New List(Of Person)(New Person() _
        {New Person With {.LastName = "Haas", _
                          .Pets = New Pet() {New Pet With {.Name = "Barley", .Age = 10}, _
                                             New Pet With {.Name = "Boots", .Age = 14}, _
                                             New Pet With {.Name = "Whiskers", .Age = 6}}}, _
          New Person With {.LastName = "Fakhouri", _
                           .Pets = New Pet() {New Pet With {.Name = "Snowball", .Age = 1}}}, _
          New Person With {.LastName = "Antebi", _
                           .Pets = New Pet() {New Pet With {.Name = "Belle", .Age = 8}}}, _
          New Person With {.LastName = "Philips", _
                           .Pets = New Pet() {New Pet With {.Name = "Sweetie", .Age = 2}, _
                                              New Pet With {.Name = "Rover", .Age = 13}}}})

    ' Determine which people have pets that are all older than 5.
    Dim names = From person In people _
                Where person.Pets.AsQueryable().All(Function(pet) pet.Age > 5) _
                Select person.LastName

    For Each name As String In names
        Console.WriteLine(name)
    Next

    ' This code produces the following output:
    '
    ' Haas
    ' Antebi

End Sub

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Person
{
    public string LastName { get; set; }
    public Pet[] Pets { get; set; }
}

public static void AllEx2()
{
    List<Person> people = new List<Person>
        { new Person { LastName = "Haas",
                       Pets = new Pet[] { new Pet { Name="Barley", Age=10 },
                                          new Pet { Name="Boots", Age=14 },
                                          new Pet { Name="Whiskers", Age=6 }}},
          new Person { LastName = "Fakhouri",
                       Pets = new Pet[] { new Pet { Name = "Snowball", Age = 1}}},
          new Person { LastName = "Antebi",
                       Pets = new Pet[] { new Pet { Name = "Belle", Age = 8} }},
          new Person { LastName = "Philips",
                       Pets = new Pet[] { new Pet { Name = "Sweetie", Age = 2},
                                          new Pet { Name = "Rover", Age = 13}} }
        };

    // Determine which people have pets that are all older than 5.
    IEnumerable<string> names = from person in people
                                where person.Pets.AsQueryable().All(pet => pet.Age > 5)
                                select person.LastName;

    foreach (string name in names)
        Console.WriteLine(name);

    /* This code produces the following output:
     *
     * Haas
     * Antebi
     */
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Any 方法

Queryable
.
.
::
.
Any 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

确定 IQueryable<(Of <(T>)>) 序列中的任何元素是否都存在或满足条件。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Any <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Any
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

确定序列是否包含任何元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Any(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As Boolean
public static bool Any<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Any(
    IQueryable<TSource>^ source
)
static member Any :
        source:IQueryable<'TSource> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要检查是否为空的序列。

返回值

类型： System Boolean
如果源序列包含任何元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 是否包含任何元素。 因执行表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 是否包含任何元素。

下面的代码示例演示如何使用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 确定序列是否包含任何元素。

        Dim numbers As New List(Of Integer)(New Integer() {1, 2})

        ' Determine if the list contains any elements.
        Dim hasElements As Boolean = numbers.AsQueryable().Any()

        MsgBox(String.Format("The list {0} empty.", _
            IIf(hasElements, "is not", "is")))

        ' This code produces the following output:
        '
        ' The list is not empty.

                List<int> numbers = new List<int> { 1, 2 };

                // Determine if the list contains any elements.
                bool hasElements = numbers.AsQueryable().Any();

                Console.WriteLine("The list {0} empty.",
                    hasElements ? "is not" : "is");

                // This code produces the following output:
                //
                // The list is not empty.

Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法的直接调用中。下面的示例演示 Any 方法的这一用法。 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法返回的布尔值通常用于 where 子句（Visual Basic 中为 Where 子句）的谓词中，或用在对 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法的直接调用中。下面的示例演示 Any 方法的这一用法。

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Structure Person
    Public LastName As String
    Public Pets() As Pet
End Structure

Sub AnyEx2()
    Dim people As New List(Of Person)(New Person() _
        {New Person With {.LastName = "Haas", _
                          .Pets = New Pet() {New Pet With {.Name = "Barley", .Age = 10}, _
                                             New Pet With {.Name = "Boots", .Age = 14}, _
                                             New Pet With {.Name = "Whiskers", .Age = 6}}}, _
          New Person With {.LastName = "Fakhouri", _
                           .Pets = New Pet() {New Pet With {.Name = "Snowball", .Age = 1}}}, _
          New Person With {.LastName = "Antebi", _
                           .Pets = New Pet() {}}, _
          New Person With {.LastName = "Philips", _
                           .Pets = New Pet() {New Pet With {.Name = "Sweetie", .Age = 2}, _
                                              New Pet With {.Name = "Rover", .Age = 13}}}})

    ' Determine which people have a non-empty Pet array.
    Dim names = From person In people _
                Where person.Pets.AsQueryable().Any() _
                Select person.LastName

    For Each name As String In names
        Console.WriteLine(name)
    Next

    ' This code produces the following output:
    '
    ' Haas
    ' Fakhouri
    ' Philips

End Sub

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class Person
{
    public string LastName { get; set; }
    public Pet[] Pets { get; set; }
}

public static void AnyEx2()
{
    List<Person> people = new List<Person>
        { new Person { LastName = "Haas",
                       Pets = new Pet[] { new Pet { Name="Barley", Age=10 },
                                          new Pet { Name="Boots", Age=14 },
                                          new Pet { Name="Whiskers", Age=6 }}},
          new Person { LastName = "Fakhouri",
                       Pets = new Pet[] { new Pet { Name = "Snowball", Age = 1}}},
          new Person { LastName = "Antebi",
                       Pets = new Pet[] { }},
          new Person { LastName = "Philips",
                       Pets = new Pet[] { new Pet { Name = "Sweetie", Age = 2},
                                          new Pet { Name = "Rover", Age = 13}} }
        };

    // Determine which people have a non-empty Pet array.
    IEnumerable<string> names = from person in people
                                where person.Pets.AsQueryable().Any()
                                select person.LastName;

    foreach (string name in names)
        Console.WriteLine(name);

    /* This code produces the following output:

       Haas
       Fakhouri
       Philips
    */
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Any 重载
System.Linq 命名空间


Queryable ..::.Any <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
Any
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

确定序列中的任何元素是否都满足条件。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Any(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As Boolean
public static bool Any<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Any(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member Any :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要测试其元素是否满足条件的序列。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Boolean
如果源序列中的任何元素都通过指定谓词中的测试，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 中的任何元素是否都满足 predicate 指定的条件。 因执行表示调用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 中的任何元素是否都满足 predicate 指定的条件。

下面的代码示例演示如何使用 Any<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 确定序列中的任何元素是否都满足条件。

    Structure Pet
        Dim Name As String
        Dim Age As Integer
        Dim Vaccinated As Boolean
    End Structure

    Shared Sub AnyEx3()
        ' Create an array of Pet objects.
        Dim pets() As Pet = _
            {New Pet With {.Name = "Barley", .Age = 8, .Vaccinated = True}, _
             New Pet With {.Name = "Boots", .Age = 4, .Vaccinated = False}, _
             New Pet With {.Name = "Whiskers", .Age = 1, .Vaccinated = False}}

        ' Determine whether any pets over age 1 are also unvaccinated.
        Dim unvaccinated As Boolean = _
        pets.AsQueryable().Any(Function(p) p.Age > 1 And p.Vaccinated = False)

        MsgBox(String.Format( _
            "There {0} unvaccinated animals over age one.", _
            IIf(unvaccinated, "are", "are not any") _
        ))
    End Sub

    ' This code produces the following output:
    '
    '  There are unvaccinated animals over age one.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
                public bool Vaccinated { get; set; }
            }

            public static void AnyEx3()
            {
                // Create an array of Pet objects.
                Pet[] pets =
                    { new Pet { Name="Barley", Age=8, Vaccinated=true },
                      new Pet { Name="Boots", Age=4, Vaccinated=false },
                      new Pet { Name="Whiskers", Age=1, Vaccinated=false } };

                // Determine whether any pets over age 1 are also unvaccinated.
                bool unvaccinated =
                    pets.AsQueryable().Any(p => p.Age > 1 && p.Vaccinated == false);

                Console.WriteLine(
                    "There {0} unvaccinated animals over age one.",
                    unvaccinated ? "are" : "are not any");
            }

            // This code produces the following output:
            //
            //  There are unvaccinated animals over age one.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Any 重载
System.Linq 命名空间


Queryable ..::.AsQueryable 方法

Queryable
.
.
::
.
AsQueryable 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

将 IEnumerable 或泛型 IEnumerable<(Of <(T>)>) 转换为 IQueryable 或泛型 IQueryable<(Of <(T>)>)。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.AsQueryable <(Of <(TElement >)>) 方法 (IEnumerable <(Of <(TElement >)>))

Queryable
.
.
::
.
AsQueryable
<
(Of
<
(
TElement
>
)
>
)
方法 (IEnumerable
<
(Of
<
(
TElement
>
)
>
)
)
Queryable 类

将泛型 IEnumerable<(Of <(T>)>) 转换为泛型 IQueryable<(Of <(T>)>)。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsQueryable(Of TElement) ( _
    source As IEnumerable(Of TElement) _
) As IQueryable(Of TElement)
public static IQueryable<TElement> AsQueryable<TElement>(
    this IEnumerable<TElement> source
)

[ExtensionAttribute]
public:
generic<typename TElement>
static IQueryable<TElement>^ AsQueryable(
    IEnumerable<TElement>^ source
)
static member AsQueryable :
        source:IEnumerable<'TElement> -> IQueryable<'TElement>

类型参数

TElement

source 中的元素的类型。

参数

source
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TElement
>
)
>
)

要转换的序列。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TElement
>
)
>
)

一个 IQueryable<(Of <(T>)>)，表示输入序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TElement 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 类型实现 IQueryable<(Of <(T>)>)，则 AsQueryable<(Of <(TElement>)>)(IEnumerable<(Of <(TElement>)>)) 直接返回它。否则返回 IQueryable<(Of <(T>)>)，它通过调用 Enumerable 中而非 Queryable 中的等效查询运算符方法执行查询。 如果 source 类型实现 IQueryable<(Of <(T>)>)，则 AsQueryable<(Of <(TElement>)>)(IEnumerable<(Of <(TElement>)>)) 直接返回它。否则返回 IQueryable<(Of <(T>)>)，它通过调用 Enumerable 中而非 Queryable 中的等效查询运算符方法执行查询。

下面的代码示例演示如何使用 AsQueryable<(Of <(TElement>)>)(IEnumerable<(Of <(TElement>)>)) 将 IEnumerable<(Of <(T>)>) 转换为 IQueryable<(Of <(T>)>)。

        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        ' Convert the List to an IQueryable<int>.
        Dim iqueryable As IQueryable(Of Integer) = grades.AsQueryable()

        ' Get the Expression property of the IQueryable object.
        Dim expressionTree As System.Linq.Expressions.Expression = _
            iqueryable.Expression

        MsgBox("The NodeType of the expression tree is: " _
            & expressionTree.NodeType.ToString())
        MsgBox("The Type of the expression tree is: " _
            & expressionTree.Type.Name)

        ' This code produces the following output:
        '
        ' The NodeType of the expression tree is: Constant
        ' The Type of the expression tree is: EnumerableQuery`1

List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

// Convert the List to an IQueryable<int>.
IQueryable<int> iqueryable = grades.AsQueryable();

// Get the Expression property of the IQueryable object.
System.Linq.Expressions.Expression expressionTree =
    iqueryable.Expression;

Console.WriteLine("The NodeType of the expression tree is: "
    + expressionTree.NodeType.ToString());
Console.WriteLine("The Type of the expression tree is: "
    + expressionTree.Type.Name);

/*
    This code produces the following output:

    The NodeType of the expression tree is: Constant
    The Type of the expression tree is: EnumerableQuery`1
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
AsQueryable 重载
System.Linq 命名空间


Queryable ..::.AsQueryable 方法 (IEnumerable)

Queryable
.
.
::
.
AsQueryable 方法 (IEnumerable)
Queryable 类

将 IEnumerable 转换为 IQueryable。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function AsQueryable ( _
    source As IEnumerable _
) As IQueryable
public static IQueryable AsQueryable(
    this IEnumerable source
)
[ExtensionAttribute]
public:
static IQueryable^ AsQueryable(
    IEnumerable^ source
)
static member AsQueryable :
        source:IEnumerable -> IQueryable

参数

source
类型： System.Collections IEnumerable
要转换的序列。

返回值

类型： System.Linq IQueryable
一个 IQueryable，表示输入序列。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentException | source 未为某些 T 实现 IEnumerable<(Of <(T>)>)。
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 source 的类型实现 IQueryable<(Of <(T>)>)，则 AsQueryable(IEnumerable) 直接返回它。否则返回 IQueryable<(Of <(T>)>)，它通过调用 Enumerable 中而非 Queryable 中的等效查询运算符方法执行查询。 如果 source 的类型实现 IQueryable<(Of <(T>)>)，则 AsQueryable(IEnumerable) 直接返回它。否则返回 IQueryable<(Of <(T>)>)，它通过调用 Enumerable 中而非 Queryable 中的等效查询运算符方法执行查询。

此方法假定 source 为某些 T 实现了 IEnumerable<(Of <(T>)>)。在运行时，对于相同的 T，结果为 IQueryable<(Of <(T>)>) 类型。当您以静态方式不知道 T 的类型时，此方法在动态方案中很有用。 此方法假定 source 为某些 T 实现了 IEnumerable<(Of <(T>)>)。在运行时，对于相同的 T，结果为 IQueryable<(Of <(T>)>) 类型。当您以静态方式不知道 T 的类型时，此方法在动态方案中很有用。 此方法假定 source 为某些 T 实现了 IEnumerable<(Of <(T>)>)。在运行时，对于相同的 T，结果为 IQueryable<(Of <(T>)>) 类型。当您以静态方式不知道 T 的类型时，此方法在动态方案中很有用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
AsQueryable 重载
System.Linq 命名空间


Queryable ..::.Average 方法

Queryable
.
.
::
.
Average 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

计算数值序列的平均值。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Decimal >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Decimal
>
)
>
)
)
Queryable 类

计算 Decimal 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Decimal) _
) As Decimal
public static decimal Average(
    this IQueryable<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Average(
    IQueryable<Decimal>^ source
)
static member Average :
        source:IQueryable<decimal> -> decimal

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Decimal
>
)
>
)

要计算平均值的 Decimal 值序列。

返回值

类型： System Decimal
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Average(IQueryable<(Of <(Decimal>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Decimal>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Decimal>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Decimal>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Decimal>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Decimal>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Int32>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        Dim average As Double = grades.AsQueryable().Average()

        MsgBox(String.Format("The average grade is {0}.", average))

        ' This code produces the following output:
        '
        ' The average grade is 77.6.

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.AsQueryable().Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Nullable <(Of <(Decimal >)>) >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Decimal 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Average(
    this IQueryable<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Average(
    IQueryable<Nullable<Decimal>>^ source
)
static member Average :
        source:IQueryable<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Decimal 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Average(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        Dim average As Nullable(Of Double) = longs.AsQueryable().Average()

        MsgBox(String.Format("The average is {0}.", average))

        ' This code produces the following output:
        '
        ' The average is 133282081426.333.

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.AsQueryable().Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Double >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Double
>
)
>
)
)
Queryable 类

计算 Double 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Double) _
) As Double
public static double Average(
    this IQueryable<double> source
)
[ExtensionAttribute]
public:
static double Average(
    IQueryable<double>^ source
)
static member Average :
        source:IQueryable<float> -> float

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Double
>
)
>
)

要计算平均值的 Double 值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Average(IQueryable<(Of <(Double>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Double>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Double>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Double>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Double>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Double>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Int32>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        Dim average As Double = grades.AsQueryable().Average()

        MsgBox(String.Format("The average grade is {0}.", average))

        ' This code produces the following output:
        '
        ' The average grade is 77.6.

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.AsQueryable().Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Nullable <(Of <(Double >)>) >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Double 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this IQueryable<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    IQueryable<Nullable<double>>^ source
)
static member Average :
        source:IQueryable<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Double 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Average(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        Dim average As Nullable(Of Double) = longs.AsQueryable().Average()

        MsgBox(String.Format("The average is {0}.", average))

        ' This code produces the following output:
        '
        ' The average is 133282081426.333.

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.AsQueryable().Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Int32 >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Int32
>
)
>
)
)
Queryable 类

计算 Int32 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Integer) _
) As Double
public static double Average(
    this IQueryable<int> source
)
[ExtensionAttribute]
public:
static double Average(
    IQueryable<int>^ source
)
static member Average :
        source:IQueryable<int> -> float

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Int32
>
)
>
)

要计算平均值的 Int32 值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Average(IQueryable<(Of <(Int32>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Int32>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Int32>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Int32>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Int32>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Int32>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Int32>)>)) 计算值序列的平均值。

        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        Dim average As Double = grades.AsQueryable().Average()

        MsgBox(String.Format("The average grade is {0}.", average))

        ' This code produces the following output:
        '
        ' The average grade is 77.6.

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.AsQueryable().Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Nullable <(Of <(Int32 >)>) >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int32 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Nullable(Of Integer)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this IQueryable<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    IQueryable<Nullable<int>>^ source
)
static member Average :
        source:IQueryable<Nullable<int>> -> Nullable<float>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Int32 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Average(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        Dim average As Nullable(Of Double) = longs.AsQueryable().Average()

        MsgBox(String.Format("The average is {0}.", average))

        ' This code produces the following output:
        '
        ' The average is 133282081426.333.

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.AsQueryable().Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Int64 >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Int64
>
)
>
)
)
Queryable 类

计算 Int64 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Long) _
) As Double
public static double Average(
    this IQueryable<long> source
)
[ExtensionAttribute]
public:
static double Average(
    IQueryable<long long>^ source
)
static member Average :
        source:IQueryable<int64> -> float

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Int64
>
)
>
)

要计算平均值的 Int64 值序列。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Average(IQueryable<(Of <(Int64>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Int64>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Int64>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Int64>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Int64>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Int64>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Int32>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        Dim average As Double = grades.AsQueryable().Average()

        MsgBox(String.Format("The average grade is {0}.", average))

        ' This code produces the following output:
        '
        ' The average grade is 77.6.

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.AsQueryable().Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Nullable <(Of <(Int64 >)>) >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int64 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Nullable(Of Long)) _
) As Nullable(Of Double)
public static Nullable<double> Average(
    this IQueryable<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Average(
    IQueryable<Nullable<long long>>^ source
)
static member Average :
        source:IQueryable<Nullable<int64>> -> Nullable<float>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Int64 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算值序列的平均值。

        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        Dim average As Nullable(Of Double) = longs.AsQueryable().Average()

        MsgBox(String.Format("The average is {0}.", average))

        ' This code produces the following output:
        '
        ' The average is 133282081426.333.

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.AsQueryable().Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Nullable <(Of <(Single >)>) >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Single 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Average(
    this IQueryable<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Average(
    IQueryable<Nullable<float>>^ source
)
static member Average :
        source:IQueryable<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

要计算平均值的可以为 null 的 Single 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Average(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim longs() As Nullable(Of Long) = {Nothing, 10007L, 37L, 399846234235L}

        Dim average As Nullable(Of Double) = longs.AsQueryable().Average()

        MsgBox(String.Format("The average is {0}.", average))

        ' This code produces the following output:
        '
        ' The average is 133282081426.333.

            long?[] longs = { null, 10007L, 37L, 399846234235L };

            double? average = longs.AsQueryable().Average();

            Console.WriteLine("The average is {0}.", average);

            // This code produces the following output:
            //
            // The average is 133282081426.333.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average 方法 (IQueryable <(Of <(Single >)>))

Queryable
.
.
::
.
Average 方法 (IQueryable
<
(Of
<
(
Single
>
)
>
)
)
Queryable 类

计算 Single 值序列的平均值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average ( _
    source As IQueryable(Of Single) _
) As Single
public static float Average(
    this IQueryable<float> source
)
[ExtensionAttribute]
public:
static float Average(
    IQueryable<float>^ source
)
static member Average :
        source:IQueryable<float32> -> float32

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Single
>
)
>
)

要计算平均值的 Single 值序列。

返回值

类型： System Single
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

Average(IQueryable<(Of <(Single>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Single>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average(IQueryable<(Of <(Single>)>)) 方法生成 MethodCallExpression，表示调用 Average(IQueryable<(Of <(Single>)>)) 自身。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average(IQueryable<(Of <(Single>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。 因执行表示调用 Average(IQueryable<(Of <(Single>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中值的平均值。

下面的代码示例演示如何使用 Average(IQueryable<(Of <(Int32>)>)) 计算值序列的平均值。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim grades As New List(Of Integer)(New Integer() {78, 92, 100, 37, 81})

        Dim average As Double = grades.AsQueryable().Average()

        MsgBox(String.Format("The average grade is {0}.", average))

        ' This code produces the following output:
        '
        ' The average grade is 77.6.

            List<int> grades = new List<int> { 78, 92, 100, 37, 81 };

            double average = grades.AsQueryable().Average();

            Console.WriteLine("The average grade is {0}.", average);

            // This code produces the following output:
            //
            // The average grade is 77.6.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Decimal >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Decimal 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Decimal)) _
) As Decimal
public static decimal Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Decimal>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, decimal>> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

用于计算平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Decimal
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Double >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Double
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Double 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Double)) _
) As Double
public static double Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, double>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, float>> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Double
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32 >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Int32 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Integer)) _
) As Double
public static double Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, int>> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int64 >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int64
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Int64 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Long)) _
) As Double
public static double Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, long long>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, int64>> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int64
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Double
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Decimal 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Decimal))) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<decimal>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<Decimal>>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<decimal>>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Double 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Double))) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<double>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<double>>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<float>>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int32 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Integer))) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<int>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<int>>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<int>>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int64 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Long))) _
) As Nullable(Of Double)
public static Nullable<double> Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<long>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<long long>>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<int64>>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Single 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Single))) _
) As Nullable(Of Single)
public static Nullable<float> Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<float>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<float>>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<float32>>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

值序列的平均值；如果 source 序列为空或仅包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Average <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Single >)>) >)>))

Queryable
.
.
::
.
Average
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Single
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Single 值序列的平均值，该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Average(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Single)) _
) As Single
public static float Average<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Average(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, float>^>^ selector
)
static member Average :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, float32>> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要计算其平均值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Single
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Single
值序列的平均值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source 中不包含任何元素。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。 因执行表示调用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对每个值调用 selector 后计算 source 中值的平均值。

下面的代码示例演示如何使用 Average<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 计算 String 类型的值序列中的平均 String 长度。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Determine the average string length in the array.
        Dim average As Double = fruits.AsQueryable().Average(Function(s) s.Length)

        MsgBox(String.Format("The average string length is {0}.", average))

        ' This code produces the following output:
        '
        ' The average string length is 6.5.

            string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };

            // Determine the average string length in the array.
            double average = fruits.AsQueryable().Average(s => s.Length);

            Console.WriteLine("The average string length is {0}.", average);

            // This code produces the following output:
            //
            // The average string length is 6.5.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Average 重载
System.Linq 命名空间


Queryable ..::.Cast <(Of <(TResult >)>) 方法

Queryable
.
.
::
.
Cast
<
(Of
<
(
TResult
>
)
>
)
方法
Queryable 类

将 IQueryable 的元素转换为指定的类型。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Cast(Of TResult) ( _
    source As IQueryable _
) As IQueryable(Of TResult)
public static IQueryable<TResult> Cast<TResult>(
    this IQueryable source
)

[ExtensionAttribute]
public:
generic<typename TResult>
static IQueryable<TResult>^ Cast(
    IQueryable^ source
)
static member Cast :
        source:IQueryable -> IQueryable<'TResult>

类型参数

TResult

source 中的元素要转换成的类型。

参数

source
类型： System.Linq IQueryable
包含要转换的元素的 IQueryable。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含被转换为指定类型的源序列中的每个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidCastException | 序列中的元素不能强制转换为 TResult 类型。

Cast<(Of <(TResult>)>)(IQueryable) 方法生成 MethodCallExpression，表示调用 Cast<(Of <(TResult>)>)(IQueryable) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Cast<(Of <(TResult>)>)(IQueryable) 方法生成 MethodCallExpression，表示调用 Cast<(Of <(TResult>)>)(IQueryable) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Cast<(Of <(TResult>)>)(IQueryable) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 source 中的值转换为 TResult 类型。 因执行表示调用 Cast<(Of <(TResult>)>)(IQueryable) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 source 中的值转换为 TResult 类型。

下面的代码示例演示如何使用 Cast<(Of <(TResult>)>)(IQueryable) 将序列中的对象转换为 String 类型。

        ' Create a list of objects.
        Dim words As New List(Of Object)(New Object() {"green", "blue", "violet"})

        ' Cast the objects in the list to type 'string'
        ' and project the first letter of each string.
        Dim query As IEnumerable(Of String) = _
            words.AsQueryable() _
                    .Cast(Of String)() _
                    .Select(Function(str) str.Substring(0, 1))

        For Each s As String In query
            MsgBox(s)
        Next

        ' This code produces the following output:
        '
        ' g
        ' b
        ' v

            // Create a list of objects.
            List<object> words =
                new List<object> { "green", "blue", "violet" };

            // Cast the objects in the list to type 'string'
            // and project the first letter of each string.
            IEnumerable<string> query =
                words.AsQueryable()
                .Cast<string>()
                .Select(str => str.Substring(0, 1));

            foreach (string s in query)
                Console.WriteLine(s);

            /*  This code produces the following output:

                g
                b
                v
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Concat <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
Concat
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

连接两个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Concat(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Concat<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Concat(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2
)
static member Concat :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要连接的第一个序列。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

要与第一个序列连接的序列。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含两个输入序列的连接元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是将 source2 中的元素连接到 source1 中的元素以创建新的序列。 因执行表示调用 Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是将 source2 中的元素连接到 source1 中的元素以创建新的序列。

下面的代码示例演示如何使用 Concat<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 连接两个序列。

    ' This method creates and returns an array of Pet objects.
    Shared Function GetCats() As Pet()
        Dim cats() As Pet = _
            {New Pet With {.Name = "Barley", .Age = 8}, _
             New Pet With {.Name = "Boots", .Age = 4}, _
             New Pet With {.Name = "Whiskers", .Age = 1}}

        Return cats
    End Function

    ' This method creates and returns an array of Pet objects.
    Shared Function GetDogs() As Pet()
        Dim dogs() As Pet = _
            {New Pet With {.Name = "Bounder", .Age = 3}, _
             New Pet With {.Name = "Snoopy", .Age = 14}, _
             New Pet With {.Name = "Fido", .Age = 9}}

        Return dogs
    End Function

    Shared Sub ConcatEx1()
        Dim cats() As Pet = GetCats()
        Dim dogs() As Pet = GetDogs()

        ' Concatenate a collection of cat names to a
        ' collection of dog names by using Concat().
        Dim query As IEnumerable(Of String) = _
            cats.AsQueryable() _
            .Select(Function(cat) cat.Name) _
            .Concat(dogs.Select(Function(dog) dog.Name))

        For Each name As String In query
            MsgBox(name)
        Next
    End Sub

    Structure Pet
        Dim Name As String
        Dim Age As Integer
    End Structure

    ' This code produces the following output:
    '
    ' Barley
    ' Boots
    ' Whiskers
    ' Bounder
    ' Snoopy
    ' Fido

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            // This method creates and returns an array of Pet objects.
            static Pet[] GetCats()
            {
                Pet[] cats = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };
                return cats;
            }

            // This method creates and returns an array of Pet objects.
            static Pet[] GetDogs()
            {
                Pet[] dogs = { new Pet { Name="Bounder", Age=3 },
                               new Pet { Name="Snoopy", Age=14 },
                               new Pet { Name="Fido", Age=9 } };
                return dogs;
            }

            public static void ConcatEx1()
            {
                Pet[] cats = GetCats();
                Pet[] dogs = GetDogs();

                // Concatenate a collection of cat names to a
                // collection of dog names by using Concat().
                IEnumerable<string> query =
                    cats.AsQueryable()
                    .Select(cat => cat.Name)
                    .Concat(dogs.Select(dog => dog.Name));

                foreach (string name in query)
                    Console.WriteLine(name);
            }

            // This code produces the following output:
            //
            // Barley
            // Boots
            // Whiskers
            // Bounder
            // Snoopy
            // Fido

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Contains 方法

Queryable
.
.
::
.
Contains 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

确定 IQueryable<(Of <(T>)>) 是否包含指定的元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Contains <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), TSource)

Queryable
.
.
::
.
Contains
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, TSource)
Queryable 类

通过使用默认的相等比较器确定序列是否包含指定的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Contains(Of TSource) ( _
    source As IQueryable(Of TSource), _
    item As TSource _
) As Boolean
public static bool Contains<TSource>(
    this IQueryable<TSource> source,
    TSource item
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Contains(
    IQueryable<TSource>^ source,
    TSource item
)
static member Contains :
        source:IQueryable<'TSource> *
        item:'TSource -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要在其中定位 item 的 IQueryable<(Of <(T>)>)。
item
类型：TSource
要在序列中定位的对象。

返回值

类型： System Boolean
如果输入序列包含具有指定值的元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法生成 MethodCallExpression，表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法生成 MethodCallExpression，表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 是否包含 item。 因执行表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是确定 source 是否包含 item。

下面的代码示例演示如何使用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 确定序列是否包含特定元素。

        Dim fruits() As String = {"apple", "banana", "mango", _
                                "orange", "passionfruit", "grape"}

        ' The string to search for in the array.
        Dim mango As String = "mango"

        Dim hasMango As Boolean = fruits.AsQueryable().Contains(mango)

        MsgBox(String.Format("The array {0} contain '{1}'.", _
                IIf(hasMango, "does", "does not"), mango))

        ' This code produces the following output:
        '
        ' The array does contain 'mango'.

            string[] fruits = { "apple", "banana", "mango",
                                "orange", "passionfruit", "grape" };

            // The string to search for in the array.
            string mango = "mango";

            bool hasMango = fruits.AsQueryable().Contains(mango);

            Console.WriteLine(
                "The array {0} contain '{1}'.",
                hasMango ? "does" : "does not",
                mango);

            // This code produces the following output:
            //
            // The array does contain 'mango'.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Contains 重载
System.Linq 命名空间


Queryable ..::.Contains <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), TSource, IEqualityComparer <(Of <(TSource >)>))

Queryable
.
.
::
.
Contains
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, TSource, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 确定序列是否包含指定的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Contains(Of TSource) ( _
    source As IQueryable(Of TSource), _
    item As TSource, _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
public static bool Contains<TSource>(
    this IQueryable<TSource> source,
    TSource item,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool Contains(
    IQueryable<TSource>^ source,
    TSource item,
    IEqualityComparer<TSource>^ comparer
)
static member Contains :
        source:IQueryable<'TSource> *
        item:'TSource *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要在其中定位 item 的 IQueryable<(Of <(T>)>)。
item
类型：TSource
要在序列中定位的对象。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System Boolean
如果输入序列包含具有指定值的元素，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource, IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource, IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource, IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource, IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource, IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是通过使用 comparer 进行比较值来确定 source 是否包含 item。 因执行表示调用 Contains<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource, IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是通过使用 comparer 进行比较值来确定 source 是否包含 item。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Contains 重载
System.Linq 命名空间


Queryable ..::.Count 方法

Queryable
.
.
::
.
Count 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的元素数量。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Count <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Count
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列中的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Count(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As Integer
public static int Count<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Count(
    IQueryable<TSource>^ source
)
static member Count :
        source:IQueryable<'TSource> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

包含要计数的元素的 IQueryable<(Of <(T>)>)。

返回值

类型： System Int32
输入序列中的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | source 中的元素数量大于 MaxValue。

Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中的项数。 因执行表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中的项数。

下面的代码示例演示如何使用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 对序列中的元素进行计数。

        Dim fruits() As String = {"apple", "banana", "mango", _
                            "orange", "passionfruit", "grape"}

        Dim numberOfFruits As Integer = fruits.AsQueryable().Count()

        MsgBox(String.Format( _
            "There are {0} items in the array.", _
            numberOfFruits))

        ' This code produces the following output:
        '
        ' There are 6 items in the array.

            string[] fruits = { "apple", "banana", "mango",
                                "orange", "passionfruit", "grape" };

            int numberOfFruits = fruits.AsQueryable().Count();

            Console.WriteLine(
                "There are {0} items in the array.",
                numberOfFruits);

            // This code produces the following output:
            //
            // There are 6 items in the array.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Count 重载
System.Linq 命名空间


Queryable ..::.Count <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
Count
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回指定序列中满足条件的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Count(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As Integer
public static int Count<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Count(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member Count :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

包含要进行计数的元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Int32
序列中满足谓词函数的条件的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | source 中的元素数量大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中满足 predicate 指定的条件的项数。 因执行表示调用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中满足 predicate 指定的条件的项数。

下面的代码示例演示如何使用 Count<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 对序列中满足条件的元素进行计数。

    Structure Pet
        Public Name As String
        Public Vaccinated As Boolean
    End Structure

    Shared Sub CountEx2()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Vaccinated = True}, _
                       New Pet With {.Name = "Boots", .Vaccinated = False}, _
                       New Pet With {.Name = "Whiskers", .Vaccinated = False}}

        ' Count the number of unvaccinated pets in the array.
        Dim numberUnvaccinated As Integer = pets.AsQueryable().Count(Function(p) p.Vaccinated = False)

        MsgBox(String.Format("There are {0} unvaccinated animals.", numberUnvaccinated))
    End Sub

    ' This code produces the following output:
    '
    ' There are 2 unvaccinated animals.

            class Pet
            {
                public string Name { get; set; }
                public bool Vaccinated { get; set; }
            }

            public static void CountEx2()
            {
                // Create an array of Pet objects.
                Pet[] pets = { new Pet { Name="Barley", Vaccinated=true },
                               new Pet { Name="Boots", Vaccinated=false },
                               new Pet { Name="Whiskers", Vaccinated=false } };

                // Count the number of unvaccinated pets in the array.
                int numberUnvaccinated =
                    pets.AsQueryable().Count(p => p.Vaccinated == false);

                Console.WriteLine(
                    "There are {0} unvaccinated animals.",
                    numberUnvaccinated);
            }

            // This code produces the following output:
            //
            // There are 2 unvaccinated animals.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Count 重载
System.Linq 命名空间


Queryable ..::.DefaultIfEmpty 方法

Queryable
.
.
::
.
DefaultIfEmpty 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的元素，如果序列为空，则返回具有默认值的单一实例集合。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.DefaultIfEmpty <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
DefaultIfEmpty
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回指定序列的元素；如果序列为空，则返回单一实例集合中的类型参数的默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function DefaultIfEmpty(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> DefaultIfEmpty<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ DefaultIfEmpty(
    IQueryable<TSource>^ source
)
static member DefaultIfEmpty :
        source:IQueryable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

用于在序列为空的情况下返回默认值的 IQueryable<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

用于在 source 为空的情况下包含 default(TSource) 的 IQueryable<(Of <(T>)>)；否则为 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是在源序列不为空的情况下返回 source。否则，它返回一个包含 default(TSource) 的 IQueryable<(Of <(T>)>)。 因执行表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是在源序列不为空的情况下返回 source。否则，它返回一个包含 default(TSource) 的 IQueryable<(Of <(T>)>)。 因执行表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是在源序列不为空的情况下返回 source。否则，它返回一个包含 default(TSource) 的 IQueryable<(Of <(T>)>)。

下面的代码示例演示如何使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 在源序列为空的情况下提供默认值。

Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Shared Sub DefaultIfEmptyEx1()
    ' Create a list of Pet objects.
    Dim pets As New List(Of Pet)(New Pet() { _
                        New Pet With {.Name = "Barley", .Age = 8}, _
                        New Pet With {.Name = "Boots", .Age = 4}, _
                        New Pet With {.Name = "Whiskers", .Age = 1}})

    ' Call DefaultIfEmtpy() on the collection that Select()
    ' returns, so that if the initial list is empty, there
    ' will always be at least one item in the returned array.
    Dim names() As String = pets.AsQueryable() _
        .Select(Function(Pet) Pet.Name) _
        .DefaultIfEmpty() _
        .ToArray()

    Dim first As String = names(0)
    MsgBox(first)

    ' This code produces the following output:
    '
    ' Barley

End Sub

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void DefaultIfEmptyEx1()
{
    // Create a list of Pet objects.
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 } };

    // Call DefaultIfEmtpy() on the collection that Select()
    // returns, so that if the initial list is empty, there
    // will always be at least one item in the returned array.
    string[] names =
        pets.AsQueryable()
        .Select(pet => pet.Name)
        .DefaultIfEmpty()
        .ToArray();

    string first = names[0];
    Console.WriteLine(first);
}

/*
    This code produces the following output:

    Barley
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
DefaultIfEmpty 重载
System.Linq 命名空间


Queryable ..::.DefaultIfEmpty <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), TSource)

Queryable
.
.
::
.
DefaultIfEmpty
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, TSource)
Queryable 类

返回指定序列中的元素；如果序列为空，则返回单一实例集合中的指定值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function DefaultIfEmpty(Of TSource) ( _
    source As IQueryable(Of TSource), _
    defaultValue As TSource _
) As IQueryable(Of TSource)
public static IQueryable<TSource> DefaultIfEmpty<TSource>(
    this IQueryable<TSource> source,
    TSource defaultValue
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ DefaultIfEmpty(
    IQueryable<TSource>^ source,
    TSource defaultValue
)
static member DefaultIfEmpty :
        source:IQueryable<'TSource> *
        defaultValue:'TSource -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

用于在序列为空的情况下返回指定值的 IQueryable<(Of <(T>)>)。
defaultValue
类型：TSource
序列为空时要返回的值。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

在 source 为空的情况下包含 defaultValue 的 IQueryable<(Of <(T>)>)；否则为 source。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法生成 MethodCallExpression，表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法生成 MethodCallExpression，表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是在源序列不为空的情况下返回 source。否则，它返回一个包含 defaultValue 的 IQueryable<(Of <(T>)>)。 因执行表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是在源序列不为空的情况下返回 source。否则，它返回一个包含 defaultValue 的 IQueryable<(Of <(T>)>)。 因执行表示调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是在源序列不为空的情况下返回 source。否则，它返回一个包含 defaultValue 的 IQueryable<(Of <(T>)>)。

下面的代码示例演示一种情况，在该情况下，在 LINQ 查询中调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 是有用的。在此示例中，向 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 传递了默认值。 下面的代码示例演示一种情况，在该情况下，在 LINQ 查询中调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 是有用的。在此示例中，向 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 传递了默认值。

        ' Create a list of Pet objects.
        Dim pets As New List(Of Pet)(New Pet() { _
                           New Pet With {.Name = "Barley", .Age = 8}, _
                           New Pet With {.Name = "Boots", .Age = 4}, _
                           New Pet With {.Name = "Whiskers", .Age = 1}})

        ' This query returns pets that are 10 or older. In case there are no pets
        ' that meet that criteria, call DefaultIfEmpty(). This code passes an (optional)
        ' default value to DefaultIfEmpty().
        Dim oldPets() As String = pets.AsQueryable() _
            .Where(Function(Pet) Pet.Age >= 10) _
            .Select(Function(Pet) Pet.Name) _
            .DefaultIfEmpty("[EMPTY]") _
            .ToArray()
        Try
            MsgBox("First query: " + oldPets(0))
        Catch ex As Exception
            Console.WriteLine("First query: An exception was thrown: " + ex.Message)
        End Try

        ' This query selects only those pets that are 10 or older.
        ' This code does not call DefaultIfEmpty().
        Dim oldPets2() As String = _
            pets.AsQueryable() _
            .Where(Function(Pet) Pet.Age >= 10) _
            .Select(Function(Pet) Pet.Name) _
            .ToArray()

        ' There may be no elements in the array, so directly
        ' accessing element 0 may throw an exception.
        Try
            MsgBox("Second query: " + oldPets2(0))
        Catch ex As Exception
            MsgBox("Second query: An exception was thrown: " + ex.Message)
        End Try

        ' This code produces the following output:
        '
        ' First(query) : [EMPTY]
        ' Second query: An exception was thrown: Index was outside the bounds of the array.

                // Create a list of Pet objects.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 } };

                // This query selects only those pets that are 10 or older.
                // In case there are no pets that meet that criteria, call
                // DefaultIfEmpty(). This code passes an (optional) default
                // value to DefaultIfEmpty().
                string[] oldPets =
                    pets.AsQueryable()
                    .Where(pet => pet.Age >= 10)
                    .Select(pet => pet.Name)
                    .DefaultIfEmpty("[EMPTY]")
                    .ToArray();

                Console.WriteLine("First query: " + oldPets[0]);

                // This query selects only those pets that are 10 or older.
                // This code does not call DefaultIfEmpty().
                string[] oldPets2 =
                    pets.AsQueryable()
                    .Where(pet => pet.Age >= 10)
                    .Select(pet => pet.Name)
                    .ToArray();

                // There may be no elements in the array, so directly
                // accessing element 0 may throw an exception.
                try
                {
                    Console.WriteLine("Second query: " + oldPets2[0]);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Second query: An exception was thrown: " + e.Message);
                }

                /*
                    This code produces the following output:

                    First query: [EMPTY]
                    Second query: An exception was thrown: Index was outside the bounds of the array.
                */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
DefaultIfEmpty 重载
System.Linq 命名空间


Queryable ..::.Distinct 方法

Queryable
.
.
::
.
Distinct 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的非重复元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Distinct <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Distinct
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用默认的相等比较器对值进行比较返回序列中的非重复元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Distinct(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Distinct<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Distinct(
    IQueryable<TSource>^ source
)
static member Distinct :
        source:IQueryable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中删除重复项的 IQueryable<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

包含 source 中的非重复元素的 IQueryable<(Of <(T>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是，它返回 source 中唯一项的无序序列。 因执行表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是，它返回 source 中唯一项的无序序列。

下面的代码示例演示如何使用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 返回序列中的非重复元素。

        Dim ages As List(Of Integer) = New List(Of Integer)(New Integer() {21, 46, 46, 55, 17, 21, 55, 55})

        Dim distinctAges As IEnumerable(Of Integer) = ages.AsQueryable().Distinct()

        Dim output As New System.Text.StringBuilder
        output.AppendLine("Distinct ages:")

        For Each age As Integer In distinctAges
            output.AppendLine(age)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' Distinct(ages)
        ' 21
        ' 46
        ' 55
        ' 17

            List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };

            IEnumerable<int> distinctAges = ages.AsQueryable().Distinct();

            Console.WriteLine("Distinct ages:");

            foreach (int age in distinctAges)
                Console.WriteLine(age);

            /*
                This code produces the following output:

                Distinct ages:
                21
                46
                55
                17
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Distinct 重载
System.Linq 命名空间


Queryable ..::.Distinct <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Queryable
.
.
::
.
Distinct
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较返回序列中的非重复元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Distinct(Of TSource) ( _
    source As IQueryable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Distinct<TSource>(
    this IQueryable<TSource> source,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Distinct(
    IQueryable<TSource>^ source,
    IEqualityComparer<TSource>^ comparer
)
static member Distinct :
        source:IQueryable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中删除重复项的 IQueryable<(Of <(T>)>)。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

包含 source 中的非重复元素的 IQueryable<(Of <(T>)>)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是通过使用 comparer 对值进行比较返回 source 中的唯一项无序序列。 因执行表示调用 Distinct<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是通过使用 comparer 对值进行比较返回 source 中的唯一项无序序列。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Distinct 重载
System.Linq 命名空间


Queryable ..::.ElementAt <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
ElementAt
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

返回序列中指定索引处的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ElementAt(Of TSource) ( _
    source As IQueryable(Of TSource), _
    index As Integer _
) As TSource
public static TSource ElementAt<TSource>(
    this IQueryable<TSource> source,
    int index
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource ElementAt(
    IQueryable<TSource>^ source,
    int index
)
static member ElementAt :
        source:IQueryable<'TSource> *
        index:int -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
index
类型： System Int32
要检索的从零开始的元素索引。

返回值

类型：TSource
source 中指定位置处的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零。

ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中 index 位置处的项。 因执行表示调用 ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中 index 位置处的项。

下面的代码示例演示如何使用 ElementAt<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 返回序列中特定位置处的元素。

        Dim names() As String = {"Hartono, Tommy", "Adams, Terry", _
                           "Andersen, Henriette Thaulow", _
                           "Hedlund, Magnus", "Ito, Shu"}

        Dim rand As New Random(DateTime.Now.Millisecond)

        Dim name As String = _
            names.AsQueryable().ElementAt(rand.Next(0, names.Length))

        MsgBox(String.Format("The name chosen at random is '{0}'.", name))

        ' This code produces the following sample output.
        ' Yours may be different due to the use of Random.
        '
        ' The name chosen at random is 'Ito, Shu'.

            string[] names = { "Hartono, Tommy", "Adams, Terry",
                               "Andersen, Henriette Thaulow",
                               "Hedlund, Magnus", "Ito, Shu" };

            Random random = new Random(DateTime.Now.Millisecond);

            string name =
                names.AsQueryable().ElementAt(random.Next(0, names.Length));

            Console.WriteLine("The name chosen at random is '{0}'.", name);

            /*
                This code produces the following sample output.
                Yours may be different due to the use of Random.

                The name chosen at random is 'Ito, Shu'.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.ElementAtOrDefault <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
ElementAtOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

返回序列中指定索引处的元素；如果索引超出范围，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ElementAtOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource), _
    index As Integer _
) As TSource
public static TSource ElementAtOrDefault<TSource>(
    this IQueryable<TSource> source,
    int index
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource ElementAtOrDefault(
    IQueryable<TSource>^ source,
    int index
)
static member ElementAtOrDefault :
        source:IQueryable<'TSource> *
        index:int -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
index
类型： System Int32
要检索的从零开始的元素索引。

返回值

类型：TSource
如果 index 超出 source 的界限，则返回 default(TSource)；否则返回 source 中指定位置处的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中 index 位置处的项，如果 index 超出 source 的界限，则返回 default(TSource)。 因执行表示调用 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中 index 位置处的项，如果 index 超出 source 的界限，则返回 default(TSource)。

下面的代码示例演示如何使用 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32)。此示例使用了一个超出源序列界限的 index 值。 下面的代码示例演示如何使用 ElementAtOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32)。此示例使用了一个超出源序列界限的 index 值。

        Dim names() As String = {"Hartono, Tommy", "Adams, Terry", _
                           "Andersen, Henriette Thaulow", _
                           "Hedlund, Magnus", "Ito, Shu"}

        Dim index As Integer = 20

        Dim name As String = names.AsQueryable().ElementAtOrDefault(index)

        MsgBox(String.Format("The name at index {0} is '{1}'.", _
            index, IIf(String.IsNullOrEmpty(name), "[NONE AT THIS INDEX]", name)))

        ' This code produces the following output:
        '
        ' The name at index 20 is '[NONE AT THIS INDEX]'.

            string[] names = { "Hartono, Tommy", "Adams, Terry",
                               "Andersen, Henriette Thaulow",
                               "Hedlund, Magnus", "Ito, Shu" };

            int index = 20;

            string name = names.AsQueryable().ElementAtOrDefault(index);

            Console.WriteLine(
                "The name chosen at index {0} is '{1}'.",
                index,
                String.IsNullOrEmpty(name) ? "[NONE AT THIS INDEX]" : name);

            /*
                This code produces the following output:

                The name chosen at index 20 is '[NONE AT THIS INDEX]'.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Except 方法

Queryable
.
.
::
.
Except 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

生成两个序列的差集。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Except <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Queryable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用默认的相等比较器对值进行比较生成两个序列的差集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Except<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Except(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2
)
static member Except :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，将返回其不在 source2 中的元素。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其也出现在第一个序列中的元素将不会出现在返回的序列中。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含两个序列的差集。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 中的所有元素（也在 source2 中出现的元素除外）。 因执行表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 中的所有元素（也在 source2 中出现的元素除外）。

下面的代码示例演示如何使用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 返回仅出现在第一个源序列中的元素。

        Dim numbers1() As Double = {2.0, 2.1, 2.2, 2.3, 2.4, 2.5}
        Dim numbers2() As Double = {2.2}

        ' Get the numbers from the first array that
        ' are NOT in the second array.
        Dim onlyInFirstSet As IEnumerable(Of Double) = _
            numbers1.AsQueryable().Except(numbers2)

        Dim output As New System.Text.StringBuilder
        For Each number As Double In onlyInFirstSet
            output.AppendLine(number)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' 2
        ' 2.1
        ' 2.3
        ' 2.4
        ' 2.5

            double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
            double[] numbers2 = { 2.2 };

            // Get the numbers from the first array that
            // are NOT in the second array.
            IEnumerable<double> onlyInFirstSet =
                numbers1.AsQueryable().Except(numbers2);

            foreach (double number in onlyInFirstSet)
                Console.WriteLine(number);

            /*
                This code produces the following output:

                2
                2.1
                2.3
                2.4
                2.5
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Except 重载
System.Linq 命名空间


Queryable ..::.Except <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Queryable
.
.
::
.
Except
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较产生两个序列的差集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Except(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Except<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Except(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2,
    IEqualityComparer<TSource>^ comparer
)
static member Except :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，将返回其不在 source2 中的元素。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其也出现在第一个序列中的元素将不会出现在返回的序列中。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含两个序列的差集。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

导致执行表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 中的所有元素（也在 source2 中出现的元素除），并且 comparer 用于比较值。 导致执行表示调用 Except<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 中的所有元素（也在 source2 中出现的元素除），并且 comparer 用于比较值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Except 重载
System.Linq 命名空间


Queryable ..::.First 方法

Queryable
.
.
::
.
First 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的第一个元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.First <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
First
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列中的第一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function First(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource First<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource First(
    IQueryable<TSource>^ source
)
static member First :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要返回其第一个元素的 IQueryable<(Of <(T>)>)。

返回值

类型：TSource
source 中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 源序列为空。

First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的第一个元素。 因执行表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的第一个元素。

下面的代码示例演示如何使用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 返回序列中的第一个元素。

        Dim numbers() As Integer = {9, 34, 65, 92, 87, 435, 3, 54, _
                            83, 23, 87, 435, 67, 12, 19}

        Dim first As Integer = numbers.AsQueryable().First()

        MsgBox(first)

        ' This code produces the following output:
        '
        ' 9

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 435, 67, 12, 19 };

            int first = numbers.AsQueryable().First();

            Console.WriteLine(first);

            /*
                This code produces the following output:

                9
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
First 重载
System.Linq 命名空间


Queryable ..::.First <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
First
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回序列中满足指定条件的第一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function First(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As TSource
public static TSource First<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource First(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member First :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
通过 predicate 中测试的 source 中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 没有元素满足 predicate 中的条件。 - 或 - 源序列为空。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的第一个元素。 因执行表示调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的第一个元素。

下面的代码示例演示如何使用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 返回序列中满足条件的第一个元素。

        Dim numbers() As Integer = {9, 34, 65, 92, 87, 435, 3, 54, _
                          83, 23, 87, 435, 67, 12, 19}

        ' Get the first number in the array that is greater than 80.
        Dim first As Integer = numbers.AsQueryable().First(Function(number) number > 80)

        MsgBox(first)

        ' This code produces the following output:
        '
        ' 92

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                              83, 23, 87, 435, 67, 12, 19 };

            // Get the first number in the array that is greater than 80.
            int first = numbers.AsQueryable().First(number => number > 80);

            Console.WriteLine(first);

            /*
                This code produces the following output:

                92
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
First 重载
System.Linq 命名空间


Queryable ..::.FirstOrDefault 方法

Queryable
.
.
::
.
FirstOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的第一个元素；如果未找到元素，则返回默认值。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.FirstOrDefault <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
FirstOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列中的第一个元素；如果序列中不包含任何元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function FirstOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource FirstOrDefault<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource FirstOrDefault(
    IQueryable<TSource>^ source
)
static member FirstOrDefault :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要返回其第一个元素的 IQueryable<(Of <(T>)>)。

返回值

类型：TSource
如果 source 为空，则返回 default(TSource)；否则返回 source 中的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的第一个元素，如果 source 为空，则返回默认值。 因执行表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的第一个元素，如果 source 为空，则返回默认值。

如果 source 为空，则 FirstOrDefault 方法不提供任何方式来指定返回的默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法。 如果 source 为空，则 FirstOrDefault 方法不提供任何方式来指定返回的默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法。

下面的代码示例演示如何对空序列使用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>))。

        ' Create an empty array.
        Dim numbers() As Integer = {}
        ' Get the first item in the array, or else the
        ' default value for type int, which is 0.
        Dim first As Integer = numbers.AsQueryable().FirstOrDefault()

        MsgBox(first)

        ' This code produces the following output:

        ' 0

            // Create an empty array.
            int[] numbers = { };
            // Get the first item in the array, or else the
            // default value for type int (0).
            int first = numbers.AsQueryable().FirstOrDefault();

            Console.WriteLine(first);

            /*
                This code produces the following output:

                0
            */

如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 First<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取第一个元素。下面的代码示例使用这两种方式，在数字月份的集合为空时获取默认值 1。由于整数的默认值为 0，不对应任何月份，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。

        Dim months As New List(Of Integer)(New Integer() {})

        ' Setting the default value to 1 after the query.
        Dim firstMonth1 As Integer = months.AsQueryable().FirstOrDefault()
        If firstMonth1 = 0 Then
            firstMonth1 = 1
        End If
        MsgBox(String.Format("The value of the firstMonth1 variable is {0}", firstMonth1))

        ' Setting the default value to 1 by using DefaultIfEmpty() in the query.
        Dim firstMonth2 As Integer = months.AsQueryable().DefaultIfEmpty(1).First()
        MsgBox(String.Format("The value of the firstMonth2 variable is {0}", firstMonth2))

        ' This code produces the following output:
        '
        ' The value of the firstMonth1 variable is 1
        ' The value of the firstMonth2 variable is 1

            List<int> months = new List<int> { };

            // Setting the default value to 1 after the query.
            int firstMonth1 = months.AsQueryable().FirstOrDefault();
            if (firstMonth1 == 0)
            {
                firstMonth1 = 1;
            }
            Console.WriteLine("The value of the firstMonth1 variable is {0}", firstMonth1);

            // Setting the default value to 1 by using DefaultIfEmpty() in the query.
            int firstMonth2 = months.AsQueryable().DefaultIfEmpty(1).First();
            Console.WriteLine("The value of the firstMonth2 variable is {0}", firstMonth2);

            /*
             This code produces the following output:

             The value of the firstMonth1 variable is 1
             The value of the firstMonth2 variable is 1
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
FirstOrDefault 重载
System.Linq 命名空间


Queryable ..::.FirstOrDefault <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
FirstOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回序列中满足指定条件的第一个元素，如果未找到这样的元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function FirstOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As TSource
public static TSource FirstOrDefault<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource FirstOrDefault(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member FirstOrDefault :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
如果 source 为空或没有元素通过 predicate 指定的测试，则返回 default(TSource)，否则返回 source 中通过 predicate 指定的测试的第一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 的条件的第一个元素，如果没有任何元素满足条件，则返回默认值。 因执行表示调用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 的条件的第一个元素，如果没有任何元素满足条件，则返回默认值。

下面的代码示例演示如何通过传入谓词来使用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>))。在第二个查询中，序列中没有满足条件的元素。 下面的代码示例演示如何通过传入谓词来使用 FirstOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>))。在第二个查询中，序列中没有满足条件的元素。

        Dim names() As String = {"Hartono, Tommy", "Adams, Terry", _
                             "Andersen, Henriette Thaulow", _
                             "Hedlund, Magnus", "Ito, Shu"}

        ' Get the first string in the array that is longer
        ' than 20 characters, or the default value for type
        ' string (null) if none exists.
        Dim firstLongName As String = _
                    names.AsQueryable().FirstOrDefault(Function(name) name.Length > 20)

        MsgBox(String.Format("The first long name is '{0}'.", firstLongName))

        ' Get the first string in the array that is longer
        ' than 30 characters, or the default value for type
        ' string (null) if none exists.
        Dim firstVeryLongName As String = _
            names.AsQueryable().FirstOrDefault(Function(name) name.Length > 30)

        MsgBox(String.Format( _
            "There is {0} name that is longer than 30 characters.", _
            IIf(String.IsNullOrEmpty(firstVeryLongName), "NOT a", "a")))

        ' This code produces the following output:
        '
        ' The first long name is 'Andersen, Henriette Thaulow'.
        ' There is NOT a name that is longer than 30 characters.

            string[] names = { "Hartono, Tommy", "Adams, Terry",
                                 "Andersen, Henriette Thaulow",
                                 "Hedlund, Magnus", "Ito, Shu" };

            // Get the first string in the array that is longer
            // than 20 characters, or the default value for type
            // string (null) if none exists.
            string firstLongName =
                names.AsQueryable().FirstOrDefault(name => name.Length > 20);

            Console.WriteLine("The first long name is '{0}'.", firstLongName);

            // Get the first string in the array that is longer
            // than 30 characters, or the default value for type
            // string (null) if none exists.
            string firstVeryLongName =
                names.AsQueryable().FirstOrDefault(name => name.Length > 30);

            Console.WriteLine(
                "There is {0} name that is longer than 30 characters.",
                string.IsNullOrEmpty(firstVeryLongName) ? "NOT a" : "a");

            /*
                This code produces the following output:

                The first long name is 'Andersen, Henriette Thaulow'.
                There is NOT a name that is longer than 30 characters.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
FirstOrDefault 重载
System.Linq 命名空间


Queryable ..::.GroupBy 方法

Queryable
.
.
::
.
GroupBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

对序列中的元素进行分组。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>))

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)) _
) As IQueryable(Of IGrouping(Of TKey, TSource))
public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IQueryable<IGrouping<TKey, TSource>^>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> -> IQueryable<IGrouping<'TKey, 'TSource>>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TSource
>
)
>
)
>
)
>
)

在 C# 中为 IQueryable<IGrouping<TKey, TSource>>，或者在 Visual Basic 中为 IQueryable(Of IGrouping(Of TKey, TSource))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 对象都包含一个对象序列和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。 因执行表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 对序列中的元素进行分组。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Shared Sub GroupByEx1()
        ' Create a list of Pet objects.
        Dim pets As New List(Of Pet)(New Pet() { _
                        New Pet With {.Name = "Barley", .Age = 8}, _
                        New Pet With {.Name = "Boots", .Age = 4}, _
                        New Pet With {.Name = "Whiskers", .Age = 1}, _
                        New Pet With {.Name = "Daisy", .Age = 4}})

        ' Group the pets using Pet.Age as the key.
        ' Use Pet.Name as the value for each entry.
        Dim query = pets.AsQueryable().GroupBy(Function(pet) pet.Age)

        Dim output As New System.Text.StringBuilder
        ' Iterate over each IGrouping in the collection.
        For Each ageGroup In query
            output.AppendFormat("Age group: {0}   Number of pets: {1}{2}", ageGroup.Key, ageGroup.Count(), vbCrLf)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Age group: 8   Number of pets: 1
    ' Age group: 4   Number of pets: 2
    ' Age group: 1   Number of pets: 1

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void GroupByEx1()
            {
                // Create a list of Pet objects.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 },
                                   new Pet { Name="Daisy", Age=4 } };

                // Group the pets using Pet.Age as the key.
                // Use Pet.Name as the value for each entry.
                var query = pets.AsQueryable().GroupBy(pet => pet.Age);

                // Iterate over each IGrouping in the collection.
                foreach (var ageGroup in query)
                {
                    Console.WriteLine("Age group: {0}  Number of pets: {1}", ageGroup.Key, ageGroup.Count());
                }
            }

            /*
                This code produces the following output:

                Age group: 8  Number of pets: 1
                Age group: 4  Number of pets: 2
                Age group: 1  Number of pets: 1

            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), IEqualityComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组，并使用指定的比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    comparer As IEqualityComparer(Of TKey) _
) As IQueryable(Of IGrouping(Of TKey, TSource))
public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IQueryable<IGrouping<TKey, TSource>^>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        comparer:IEqualityComparer<'TKey> -> IQueryable<IGrouping<'TKey, 'TSource>>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TSource
>
)
>
)
>
)
>
)

在 C# 中为 IQueryable<IGrouping<TKey, TSource>>，或者在 Visual Basic 中为 IQueryable(Of IGrouping(Of TKey, TSource))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 都包含一个对象序列和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组。键值是通过对每个元素调用 keySelector 获得的，通过使用 comparer 对键值进行比较。 因执行表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组。键值是通过对每个元素调用 keySelector 获得的，通过使用 comparer 对键值进行比较。 因执行表示调用 GroupBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组。键值是通过对每个元素调用 keySelector 获得的，通过使用 comparer 对键值进行比较。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey, TElement >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TSource, TElement >)>) >)>))

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组，并且通过使用指定的函数对每个组中的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    elementSelector As Expression(Of Func(Of TSource, TElement)) _
) As IQueryable(Of IGrouping(Of TKey, TElement))
public static IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    Expression<Func<TSource, TElement>> elementSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static IQueryable<IGrouping<TKey, TElement>^>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    Expression<Func<TSource, TElement>^>^ elementSelector
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        elementSelector:Expression<Func<'TSource, 'TElement>> -> IQueryable<IGrouping<'TKey, 'TElement>>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

TElement

每个 IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

在 C# 中为 IQueryable<IGrouping<TKey, TElement>>，或在 Visual Basic 中为 IQueryable(Of IGrouping(Of TKey, TElement))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 都包含一个 TElement 类型的对象序列和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。它对每个元素调用 elementSelector 以获得结果元素。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。它对每个元素调用 elementSelector 以获得结果元素。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。它对每个元素调用 elementSelector 以获得结果元素。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>)) 对序列中的元素进行分组。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Shared Sub GroupByEx2()
        ' Create a list of Pet objects.
        Dim pets As New List(Of Pet)(New Pet() { _
                        New Pet With {.Name = "Barley", .Age = 8}, _
                        New Pet With {.Name = "Boots", .Age = 4}, _
                        New Pet With {.Name = "Whiskers", .Age = 1}, _
                        New Pet With {.Name = "Daisy", .Age = 4}})

        ' Group the pets using Pet.Age as the key.
        ' Use Pet.Name as the value for each entry.
        Dim query As IEnumerable(Of IGrouping(Of Integer, String)) = _
            pets.AsQueryable().GroupBy(Function(pet) pet.Age, Function(pet) pet.Name)

        Dim output As New System.Text.StringBuilder
        ' Iterate over each IGrouping in the collection.
        For Each petGroup As IGrouping(Of Integer, String) In query
            ' Print the key value of the IGrouping.
            output.AppendLine(petGroup.Key)
            ' Iterate over each value in the
            ' IGrouping and print the value.
            For Each name As String In petGroup
                output.AppendLine(String.Format("  {0}", name))
            Next
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' 8
    '  Barley
    ' 4
    '  Boots
    '  Daisy
    ' 1
    '  Whiskers

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void GroupByEx2()
            {
                // Create a list of Pet objects.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 },
                                   new Pet { Name="Daisy", Age=4 } };

                // Group the pets using Pet.Age as the key.
                // Use Pet.Name as the value for each entry.
                IEnumerable<IGrouping<int, string>> query =
                    pets.AsQueryable().GroupBy(pet => pet.Age, pet => pet.Name);

                // Iterate over each IGrouping in the collection.
                foreach (IGrouping<int, string> petGroup in query)
                {
                    // Print the key value of the IGrouping.
                    Console.WriteLine(petGroup.Key);
                    // Iterate over each value in the
                    // IGrouping and print the value.
                    foreach (string name in petGroup)
                        Console.WriteLine("  {0}", name);
                }
            }

            /*
                This code produces the following output:

                8
                  Barley
                4
                  Boots
                  Daisy
                1
                  Whiskers
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TKey, IEnumerable <(Of <(TSource >)>), TResult >)>) >)>))

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TResult) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> GroupBy<TSource, TKey, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    Expression<Func<TKey, IEnumerable<TSource>, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TResult>
static IQueryable<TResult>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    Expression<Func<TKey, IEnumerable<TSource>^, TResult>^>^ resultSelector
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        resultSelector:Expression<Func<'TKey, IEnumerable<'TSource>, 'TResult>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
>
)
>
)

用于从每个组中创建结果值的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 T:System.Linq.IQueryable`1，它具有 TResult 的类型参数，并且其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。resultSelector 参数用于获取每个组及其键的结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。resultSelector 参数用于获取每个组及其键的结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。resultSelector 参数用于获取每个组及其键的结果值。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>)) 对序列中的元素进行分组，以及对 TResult 类型的结果序列进行投影。

Structure Pet
    Public Name As String
    Public Age As Double
End Structure

Shared Sub GroupByEx3()
    ' Create a list of pets.
    Dim petsList As New List(Of Pet)(New Pet() { _
                       New Pet With {.Name = "Barley", .Age = 8.3}, _
                       New Pet With {.Name = "Boots", .Age = 4.9}, _
                       New Pet With {.Name = "Whiskers", .Age = 1.5}, _
                       New Pet With {.Name = "Daisy", .Age = 4.3}})

    ' Group Pet objects by the Math.Floor of their age.
    ' Then project an anonymous type from each group
    ' that consists of the key, the count of the group's
    ' elements, and the minimum and maximum age in the group.
    Dim query = petsList.AsQueryable().GroupBy( _
        Function(pet) Math.Floor(pet.Age), _
        Function(age, pets) New With { _
            .Key = age, _
            .Count = pets.Count(), _
            .Min = pets.Min(Function(pet) pet.Age), _
            .Max = pets.Max(Function(pet) pet.Age) _
        })

    Dim output As New System.Text.StringBuilder
    ' Iterate over each anonymous type.
    For Each result In query
        output.AppendLine(vbCrLf & "Age group: " & result.Key)
        output.AppendLine("Number of pets with this age: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:

    '  Age group: 8
    '  Number of pets with this age: 1
    '  Minimum age: 8.3
    '  Maximum age: 8.3

    '  Age group: 4
    '  Number of pets with this age: 2
    '  Minimum age: 4.3
    '  Maximum age: 4.9

    '  Age group: 1
    '  Number of pets with this age: 1
    '  Minimum age: 1.5
    '  Maximum age: 1.5
End Sub

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void GroupByEx3()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet objects by the Math.Floor of their age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.AsQueryable().GroupBy(
        pet => Math.Floor(pet.Age),
        (age, pets) => new
        {
            Key = age,
            Count = pets.Count(),
            Min = pets.Min(pet => pet.Age),
            Max = pets.Max(pet => pet.Age)
        });

    // Iterate over each anonymous type.
    foreach (var result in query)
    {
        Console.WriteLine("\nAge group: " + result.Key);
        Console.WriteLine("Number of pets in this age group: " + result.Count);
        Console.WriteLine("Minimum age: " + result.Min);
        Console.WriteLine("Maximum age: " + result.Max);
    }

    /*  This code produces the following output:

        Age group: 8
        Number of pets in this age group: 1
        Minimum age: 8.3
        Maximum age: 8.3

        Age group: 4
        Number of pets in this age group: 2
        Minimum age: 4.3
        Maximum age: 4.9

        Age group: 1
        Number of pets in this age group: 1
        Minimum age: 1.5
        Maximum age: 1.5
    */
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey, TElement >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TSource, TElement >)>) >)>), IEqualityComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

对序列中的元素进行分组并且通过使用指定的函数对每组中的元素进行投影。通过使用指定的比较器对键值进行比较。 对序列中的元素进行分组并且通过使用指定的函数对每组中的元素进行投影。通过使用指定的比较器对键值进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    elementSelector As Expression(Of Func(Of TSource, TElement)), _
    comparer As IEqualityComparer(Of TKey) _
) As IQueryable(Of IGrouping(Of TKey, TElement))
public static IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    Expression<Func<TSource, TElement>> elementSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement>
static IQueryable<IGrouping<TKey, TElement>^>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    Expression<Func<TSource, TElement>^>^ elementSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        elementSelector:Expression<Func<'TSource, 'TElement>> *
        comparer:IEqualityComparer<'TKey> -> IQueryable<IGrouping<'TKey, 'TElement>>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

TElement

每个 IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
IGrouping
<
(Of
<
(
TKey, TElement
>
)
>
)
>
)
>
)

在 C# 中为 IQueryable<IGrouping<TKey, TElement>>，或在 Visual Basic 中为 IQueryable(Of IGrouping(Of TKey, TElement))，其中每个 IGrouping<(Of <(TKey, TElement>)>) 都包含一个 TElement 类型的对象序列和一个键。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。通过使用 comparer 对键值进行比较。对每个元素调用 elementSelector 参数以获取结果元素。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。通过使用 comparer 对键值进行比较。对每个元素调用 elementSelector 参数以获取结果元素。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。通过使用 comparer 对键值进行比较。对每个元素调用 elementSelector 参数以获取结果元素。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。通过使用 comparer 对键值进行比较。对每个元素调用 elementSelector 参数以获取结果元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey, TElement, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TSource, TElement >)>) >)>), Expression <(Of <(Func <(Of <(TKey, IEnumerable <(Of <(TElement >)>), TResult >)>)

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的函数对每个组的元素进行投影。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement, TResult) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    elementSelector As Expression(Of Func(Of TSource, TElement)), _
    resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    Expression<Func<TSource, TElement>> elementSelector,
    Expression<Func<TKey, IEnumerable<TElement>, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement, typename TResult>
static IQueryable<TResult>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    Expression<Func<TSource, TElement>^>^ elementSelector,
    Expression<Func<TKey, IEnumerable<TElement>^, TResult>^>^ resultSelector
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        elementSelector:Expression<Func<'TSource, 'TElement>> *
        resultSelector:Expression<Func<'TKey, IEnumerable<'TElement>, 'TResult>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

TElement

每个 IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
>
)
>
)

用于从每个组中创建结果值的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 T:System.Linq.IQueryable`1，它具有 TResult 的类型参数，并且其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。

下面的代码示例演示如何使用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>)) 对序列中的元素进行分组，以及对 TResult 类型的结果序列进行投影。

Structure Pet
    Public Name As String
    Public Age As Double
End Structure

Shared Sub GroupByEx4()
    ' Create a list of pets.
    Dim petsList As New List(Of Pet)(New Pet() { _
                       New Pet With {.Name = "Barley", .Age = 8.3}, _
                       New Pet With {.Name = "Boots", .Age = 4.9}, _
                       New Pet With {.Name = "Whiskers", .Age = 1.5}, _
                       New Pet With {.Name = "Daisy", .Age = 4.3}})

    ' Group Pet.Age valuesby the Math.Floor of the age.
    ' Then project an anonymous type from each group
    ' that consists of the key, the count of the group's
    ' elements, and the minimum and maximum age in the group.
    Dim query = petsList.AsQueryable().GroupBy( _
        Function(pet) Math.Floor(pet.Age), _
        Function(pet) pet.Age, _
        Function(baseAge, ages) New With { _
            .Key = baseAge, _
            .Count = ages.Count(), _
            .Min = ages.Min(), _
            .Max = ages.Max() _
        })

    Dim output As New System.Text.StringBuilder
    ' Iterate over each anonymous type.
    For Each result In query
        output.AppendLine(vbCrLf & "Age group: " & result.Key)
        output.AppendLine("Number of pets with this age: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:

    '  Age group: 8
    '  Number of pets with this age: 1
    '  Minimum age: 8.3
    '  Maximum age: 8.3

    '  Age group: 4
    '  Number of pets with this age: 2
    '  Minimum age: 4.3
    '  Maximum age: 4.9

    '  Age group: 1
    '  Number of pets with this age: 1
    '  Minimum age: 1.5
    '  Maximum age: 1.5
End Sub

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void GroupByEx4()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet.Age values by the Math.Floor of the age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.AsQueryable().GroupBy(
        pet => Math.Floor(pet.Age),
        pet => pet.Age,
        (baseAge, ages) => new
        {
            Key = baseAge,
            Count = ages.Count(),
            Min = ages.Min(),
            Max = ages.Max()
        });

    // Iterate over each anonymous type.
    foreach (var result in query)
    {
        Console.WriteLine("\nAge group: " + result.Key);
        Console.WriteLine("Number of pets in this age group: " + result.Count);
        Console.WriteLine("Minimum age: " + result.Min);
        Console.WriteLine("Maximum age: " + result.Max);
    }

    /*  This code produces the following output:

        Age group: 8
        Number of pets in this age group: 1
        Minimum age: 8.3
        Maximum age: 8.3

        Age group: 4
        Number of pets in this age group: 2
        Minimum age: 4.3
        Maximum age: 4.9

        Age group: 1
        Number of pets in this age group: 1
        Minimum age: 1.5
        Maximum age: 1.5
    */
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TKey, IEnumerable <(Of <(TSource >)>), TResult >)>) >)>), IEqualityComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TResult) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)), _
    comparer As IEqualityComparer(Of TKey) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> GroupBy<TSource, TKey, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    Expression<Func<TKey, IEnumerable<TSource>, TResult>> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TResult>
static IQueryable<TResult>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    Expression<Func<TKey, IEnumerable<TSource>^, TResult>^>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        resultSelector:Expression<Func<'TKey, IEnumerable<'TSource>, 'TResult>> *
        comparer:IEqualityComparer<'TKey> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, TResult
>
)
>
)
>
)
>
)

用于从每个组中创建结果值的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 T:System.Linq.IQueryable`1，它具有 TResult 的类型参数，并且其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 resultSelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TSource>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键，而 resultSelector 参数用于从每个组及其键中获取结果值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupBy <(Of <(TSource, TKey, TElement, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TSource, TElement >)>) >)>), Expression <(Of <(Func <(Of <(TKey, IEnumerable <(Of <(TElement >)>), TResult >)>)

Queryable
.
.
::
.
GroupBy
<
(Of
<
(
TSource, TKey, TElement, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较，并且通过使用指定的函数对每个组的元素进行投影。 根据指定的键选择器函数对序列中的元素进行分组，并且从每个组及其键中创建结果值。通过使用指定的比较器对键进行比较，并且通过使用指定的函数对每个组的元素进行投影。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupBy(Of TSource, TKey, TElement, TResult) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    elementSelector As Expression(Of Func(Of TSource, TElement)), _
    resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)), _
    comparer As IEqualityComparer(Of TKey) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    Expression<Func<TSource, TElement>> elementSelector,
    Expression<Func<TKey, IEnumerable<TElement>, TResult>> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey, typename TElement, typename TResult>
static IQueryable<TResult>^ GroupBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    Expression<Func<TSource, TElement>^>^ elementSelector,
    Expression<Func<TKey, IEnumerable<TElement>^, TResult>^>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        elementSelector:Expression<Func<'TSource, 'TElement>> *
        resultSelector:Expression<Func<'TKey, IEnumerable<'TElement>, 'TResult>> *
        comparer:IEqualityComparer<'TKey> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

TElement

每个 IGrouping<(Of <(TKey, TElement>)>) 中的元素的类型。

TResult

resultSelector 返回的结果值的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要对其元素进行分组的 IQueryable<(Of <(T>)>)。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于提取每个元素的键的函数。
elementSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TElement
>
)
>
)
>
)
>
)

用于将每个源元素映射到 IGrouping<(Of <(TKey, TElement>)>) 中的元素的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TKey, IEnumerable
<
(Of
<
(
TElement
>
)
>
)
, TResult
>
)
>
)
>
)
>
)

用于从每个组中创建结果值的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于对键进行比较的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 T:System.Linq.IQueryable`1，它具有 TResult 的类型参数，并且其中每个元素都表示对一个组及其键的投影。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 elementSelector 或 resultSelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键值。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键值。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键值。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。 因执行表示调用 GroupBy<(Of <(TSource, TKey, TElement, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TElement>)>)>)>), Expression<(Of <(Func<(Of <(TKey, IEnumerable<(Of <(TElement>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是根据键值对 source 中的元素进行分组，而键值是通过对每个元素调用 keySelector 获得的。comparer 参数用于比较键值。elementSelector 参数用于对每个组中的元素进行投影，而 resultSelector 参数用于从每个组及其键中获取结果值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupBy 重载
System.Linq 命名空间


Queryable ..::.GroupJoin 方法

Queryable
.
.
::
.
GroupJoin 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

基于键相等对两个序列的元素进行关联并对结果进行分组。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IQueryable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Expression <(Of <(Func <(Of <(TOuter, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TInner, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TOuter, IEnumerable <(Of <(T

Queryable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

基于键相等对两个序列的元素进行关联并对结果进行分组。使用默认的相等比较器对键进行比较。 基于键相等对两个序列的元素进行关联并对结果进行分组。使用默认的相等比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As IQueryable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _
    innerKeySelector As Expression(Of Func(Of TInner, TKey)), _
    resultSelector As Expression(Of Func(Of TOuter, IEnumerable(Of TInner), TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this IQueryable<TOuter> outer,
    IEnumerable<TInner> inner,
    Expression<Func<TOuter, TKey>> outerKeySelector,
    Expression<Func<TInner, TKey>> innerKeySelector,
    Expression<Func<TOuter, IEnumerable<TInner>, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IQueryable<TResult>^ GroupJoin(
    IQueryable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Expression<Func<TOuter, TKey>^>^ outerKeySelector,
    Expression<Func<TInner, TKey>^>^ innerKeySelector,
    Expression<Func<TOuter, IEnumerable<TInner>^, TResult>^>^ resultSelector
)
static member GroupJoin :
        outer:IQueryable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Expression<Func<'TOuter, 'TKey>> *
        innerKeySelector:Expression<Func<'TInner, 'TKey>> *
        resultSelector:Expression<Func<'TOuter, IEnumerable<'TInner>, 'TResult>> -> IQueryable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq IQueryable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含通过对两个序列执行已分组的联接而获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。

因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。比较这些键是否相等以将 outer 中的每个元素和 inner 中的 0 或更多个元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。比较这些键是否相等以将 outer 中的每个元素和 inner 中的 0 或更多个元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。比较这些键是否相等以将 outer 中的每个元素和 inner 中的 0 或更多个元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。比较这些键是否相等以将 outer 中的每个元素和 inner 中的 0 或更多个元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。

下面的代码示例演示如何使用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>)) 对两个序列执行已分组的联接。

    Structure Person
        Public Name As String
    End Structure

    Structure Pet
        Public Name As String
        Public Owner As Person
    End Structure

    Shared Sub GroupJoinEx1()
        Dim magnus As New Person With {.Name = "Hedlund, Magnus"}
        Dim terry As New Person With {.Name = "Adams, Terry"}
        Dim charlotte As New Person With {.Name = "Weiss, Charlotte"}

        Dim barley As New Pet With {.Name = "Barley", .Owner = terry}
        Dim boots As New Pet With {.Name = "Boots", .Owner = terry}
        Dim whiskers As New Pet With {.Name = "Whiskers", .Owner = charlotte}
        Dim daisy As New Pet With {.Name = "Daisy", .Owner = magnus}

        Dim people As New List(Of Person)(New Person() {magnus, terry, charlotte})
        Dim pets As New List(Of Pet)(New Pet() {barley, boots, whiskers, daisy})

        ' Create a list where each element is an anonymous
        ' type that contains a person's name and a collection
        ' of the names of the pets that are owned by them.
        Dim query = _
            people.AsQueryable().GroupJoin(pets, _
                       Function(person) person, _
                       Function(pet) pet.Owner, _
                       Function(person, petCollection) _
                           New With {.OwnerName = person.Name, _
                                     .Pets = petCollection.Select( _
                                                        Function(pet) pet.Name)})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            ' Output the owner's name.
            output.AppendLine(String.Format("{0}:", obj.OwnerName))
            ' Output each of the owner's pet's names.
            For Each pet As String In obj.Pets
                output.AppendLine(String.Format("  {0}", pet))
            Next
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' Hedlund, Magnus:
    '   Daisy
    ' Adams, Terry:
    '   Barley
    '   Boots
    ' Weiss, Charlotte:
    '   Whiskers

            class Person
            {
                public string Name { get; set; }
            }

            class Pet
            {
                public string Name { get; set; }
                public Person Owner { get; set; }
            }

            public static void GroupJoinEx1()
            {
                Person magnus = new Person { Name = "Hedlund, Magnus" };
                Person terry = new Person { Name = "Adams, Terry" };
                Person charlotte = new Person { Name = "Weiss, Charlotte" };

                Pet barley = new Pet { Name = "Barley", Owner = terry };
                Pet boots = new Pet { Name = "Boots", Owner = terry };
                Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
                Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

                List<Person> people = new List<Person> { magnus, terry, charlotte };
                List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

                // Create a list where each element is an anonymous
                // type that contains a person's name and a collection
                // of names of the pets that are owned by them.
                var query =
                    people.AsQueryable().GroupJoin(pets,
                                     person => person,
                                     pet => pet.Owner,
                                     (person, petCollection) =>
                                         new
                                         {
                                             OwnerName = person.Name,
                                             Pets = petCollection.Select(pet => pet.Name)
                                         });

                foreach (var obj in query)
                {
                    // Output the owner's name.
                    Console.WriteLine("{0}:", obj.OwnerName);
                    // Output each of the owner's pet's names.
                    foreach (string pet in obj.Pets)
                        Console.WriteLine("  {0}", pet);
                }
            }

            /*
                This code produces the following output:

                Hedlund, Magnus:
                  Daisy
                Adams, Terry:
                  Barley
                  Boots
                Weiss, Charlotte:
                  Whiskers
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupJoin 重载
System.Linq 命名空间


Queryable ..::.GroupJoin <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IQueryable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Expression <(Of <(Func <(Of <(TOuter, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TInner, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TOuter, IEnumerable <(Of <(T

Queryable
.
.
::
.
GroupJoin
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

基于键相等对两个序列的元素进行关联并对结果进行分组。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。 基于键相等对两个序列的元素进行关联并对结果进行分组。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _
    outer As IQueryable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _
    innerKeySelector As Expression(Of Func(Of TInner, TKey)), _
    resultSelector As Expression(Of Func(Of TOuter, IEnumerable(Of TInner), TResult)), _
    comparer As IEqualityComparer(Of TKey) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
    this IQueryable<TOuter> outer,
    IEnumerable<TInner> inner,
    Expression<Func<TOuter, TKey>> outerKeySelector,
    Expression<Func<TInner, TKey>> innerKeySelector,
    Expression<Func<TOuter, IEnumerable<TInner>, TResult>> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IQueryable<TResult>^ GroupJoin(
    IQueryable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Expression<Func<TOuter, TKey>^>^ outerKeySelector,
    Expression<Func<TInner, TKey>^>^ innerKeySelector,
    Expression<Func<TOuter, IEnumerable<TInner>^, TResult>^>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member GroupJoin :
        outer:IQueryable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Expression<Func<'TOuter, 'TKey>> *
        innerKeySelector:Expression<Func<'TInner, 'TKey>> *
        resultSelector:Expression<Func<'TOuter, IEnumerable<'TInner>, 'TResult>> *
        comparer:IEqualityComparer<'TKey> -> IQueryable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq IQueryable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, TResult
>
)
>
)
>
)
>
)

用于从第一个序列的元素和第二个序列的匹配元素集合中创建结果元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

用于对键进行哈希处理和比较的比较器。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含通过对两个序列执行已分组的联接而获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。

因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。通过使用 comparer 比较这些键是否相等。这些比较的结果用于将 outer 中的每个元素与 inner 中的 0 或更多元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。通过使用 comparer 比较这些键是否相等。这些比较的结果用于将 outer 中的每个元素与 inner 中的 0 或更多元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。通过使用 comparer 比较这些键是否相等。这些比较的结果用于将 outer 中的每个元素与 inner 中的 0 或更多元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。通过使用 comparer 比较这些键是否相等。这些比较的结果用于将 outer 中的每个元素与 inner 中的 0 或更多元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。 因执行表示调用 GroupJoin<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, IEnumerable<(Of <(TInner>)>), TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是使用 outerKeySelector 和 innerKeySelector 函数将键从 outer 和 inner 中分别提取出来。通过使用 comparer 比较这些键是否相等。这些比较的结果用于将 outer 中的每个元素与 inner 中的 0 或更多元素进行匹配。然后，调用 resultSelector 函数以从关联元素的每个组中对结果对象进行投影。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
GroupJoin 重载
System.Linq 命名空间


Queryable ..::.Intersect 方法

Queryable
.
.
::
.
Intersect 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

生成两个序列的交集。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Intersect <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Queryable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用默认的相等比较器对值进行比较生成两个序列的交集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Intersect<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Intersect(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2
)
static member Intersect :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个序列，将返回其也出现在 source2 中的非重复元素。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个序列，将返回其也在第一个序列中出现的非重复元素。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个包含两个序列的交集的序列。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回同时位于 source1 和 source2 中的所有元素。 因执行表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回同时位于 source1 和 source2 中的所有元素。

下面的代码示例演示如何使用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 返回同时出现在两个序列中的元素。

        Dim id1() As Integer = {44, 26, 92, 30, 71, 38}
        Dim id2() As Integer = {39, 59, 83, 47, 26, 4, 30}

        ' Get the numbers that occur in both arrays (id1 and id2).
        Dim both As IEnumerable(Of Integer) = id1.AsQueryable().Intersect(id2)

        Dim output As New System.Text.StringBuilder
        For Each id As Integer In both
            output.AppendLine(id)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' 26
        ' 30

            int[] id1 = { 44, 26, 92, 30, 71, 38 };
            int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };

            // Get the numbers that occur in both arrays (id1 and id2).
            IEnumerable<int> both = id1.AsQueryable().Intersect(id2);

            foreach (int id in both)
                Console.WriteLine(id);

            /*
                This code produces the following output:

                26
                30
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Intersect 重载
System.Linq 命名空间


Queryable ..::.Intersect <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Queryable
.
.
::
.
Intersect
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 对值进行比较以生成两个序列的交集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Intersect(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Intersect<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Intersect(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2,
    IEqualityComparer<TSource>^ comparer
)
static member Intersect :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，将返回其也出现在 source2 中的非重复元素。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，将返回其也出现在第一个序列中的非重复元素。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，它包含两个序列的交集。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回同时位于 source1 和 source2 中的所有元素。comparer 参数比较元素。 因执行表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回同时位于 source1 和 source2 中的所有元素。comparer 参数比较元素。 因执行表示调用 Intersect<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回同时位于 source1 和 source2 中的所有元素。comparer 参数比较元素。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Intersect 重载
System.Linq 命名空间


Queryable ..::.Join 方法

Queryable
.
.
::
.
Join 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

基于匹配键对两个序列的元素进行关联。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IQueryable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Expression <(Of <(Func <(Of <(TOuter, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TInner, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TOuter, TInner, TResult >)>) >)>)

Queryable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

基于匹配键对两个序列的元素进行关联。使用默认的相等比较器对键进行比较。 基于匹配键对两个序列的元素进行关联。使用默认的相等比较器对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As IQueryable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _
    innerKeySelector As Expression(Of Func(Of TInner, TKey)), _
    resultSelector As Expression(Of Func(Of TOuter, TInner, TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> Join<TOuter, TInner, TKey, TResult>(
    this IQueryable<TOuter> outer,
    IEnumerable<TInner> inner,
    Expression<Func<TOuter, TKey>> outerKeySelector,
    Expression<Func<TInner, TKey>> innerKeySelector,
    Expression<Func<TOuter, TInner, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IQueryable<TResult>^ Join(
    IQueryable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Expression<Func<TOuter, TKey>^>^ outerKeySelector,
    Expression<Func<TInner, TKey>^>^ innerKeySelector,
    Expression<Func<TOuter, TInner, TResult>^>^ resultSelector
)
static member Join :
        outer:IQueryable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Expression<Func<'TOuter, 'TKey>> *
        innerKeySelector:Expression<Func<'TInner, 'TKey>> *
        resultSelector:Expression<Func<'TOuter, 'TInner, 'TResult>> -> IQueryable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq IQueryable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
>
)
>
)

用于从两个匹配元素创建结果元素的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，具有通过对两个序列执行内部联接而获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。

因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。比较这些键是否相等以与每个序列中的元素进行匹配。将存储与 outer 中的元素匹配的 inner 中的每个元素的元素对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。比较这些键是否相等以与每个序列中的元素进行匹配。将存储与 outer 中的元素匹配的 inner 中的每个元素的元素对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。比较这些键是否相等以与每个序列中的元素进行匹配。将存储与 outer 中的元素匹配的 inner 中的每个元素的元素对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。比较这些键是否相等以与每个序列中的元素进行匹配。将存储与 outer 中的元素匹配的 inner 中的每个元素的元素对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。比较这些键是否相等以与每个序列中的元素进行匹配。将存储与 outer 中的元素匹配的 inner 中的每个元素的元素对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。比较这些键是否相等以与每个序列中的元素进行匹配。将存储与 outer 中的元素匹配的 inner 中的每个元素的元素对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。

下面的代码示例演示如何使用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>)) 基于公共键对两个序列执行内部联接。

    Structure Person
        Public Name As String
    End Structure

    Structure Pet
        Public Name As String
        Public Owner As Person
    End Structure

    Shared Sub JoinEx1()
        Dim magnus As New Person With {.Name = "Hedlund, Magnus"}
        Dim terry As New Person With {.Name = "Adams, Terry"}
        Dim charlotte As New Person With {.Name = "Weiss, Charlotte"}

        Dim barley As New Pet With {.Name = "Barley", .Owner = terry}
        Dim boots As New Pet With {.Name = "Boots", .Owner = terry}
        Dim whiskers As New Pet With {.Name = "Whiskers", .Owner = charlotte}
        Dim daisy As New Pet With {.Name = "Daisy", .Owner = magnus}

        Dim people As New List(Of Person)(New Person() {magnus, terry, charlotte})
        Dim pets As New List(Of Pet)(New Pet() {barley, boots, whiskers, daisy})

        ' Join the list of Person objects and the list of Pet objects
        ' to create a list of person-pet pairs where each element is
        ' an anonymous type that contains pet's name and the name of the
        ' Person object that owns the pet.
        Dim query = people.AsQueryable().Join(pets, _
                        Function(person) person, _
                        Function(pet) pet.Owner, _
                        Function(person, pet) _
                            New With {.OwnerName = person.Name, .Pet = pet.Name})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(String.Format( _
                "{0} - {1}", obj.OwnerName, obj.Pet))
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' Hedlund, Magnus - Daisy
    ' Adams, Terry - Barley
    ' Adams, Terry - Boots
    ' Weiss, Charlotte - Whiskers

            class Person
            {
                public string Name { get; set; }
            }

            class Pet
            {
                public string Name { get; set; }
                public Person Owner { get; set; }
            }

            public static void JoinEx1()
            {
                Person magnus = new Person { Name = "Hedlund, Magnus" };
                Person terry = new Person { Name = "Adams, Terry" };
                Person charlotte = new Person { Name = "Weiss, Charlotte" };

                Pet barley = new Pet { Name = "Barley", Owner = terry };
                Pet boots = new Pet { Name = "Boots", Owner = terry };
                Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
                Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

                List<Person> people = new List<Person> { magnus, terry, charlotte };
                List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

                // Join the list of Person objects and the list of Pet objects
                // to create a list of person-pet pairs where each element is
                // an anonymous type that contains the name of pet and the name
                // of the person that owns the pet.
                var query = people.AsQueryable().Join(pets,
                                person => person,
                                pet => pet.Owner,
                                (person, pet) =>
                                    new { OwnerName = person.Name, Pet = pet.Name });

                foreach (var obj in query)
                {
                    Console.WriteLine(
                        "{0} - {1}",
                        obj.OwnerName,
                        obj.Pet);
                }
            }

            /*
                This code produces the following output:

                Hedlund, Magnus - Daisy
                Adams, Terry - Barley
                Adams, Terry - Boots
                Weiss, Charlotte - Whiskers
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Join 重载
System.Linq 命名空间


Queryable ..::.Join <(Of <(TOuter, TInner, TKey, TResult >)>) 方法 (IQueryable <(Of <(TOuter >)>), IEnumerable <(Of <(TInner >)>), Expression <(Of <(Func <(Of <(TOuter, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TInner, TKey >)>) >)>), Expression <(Of <(Func <(Of <(TOuter, TInner, TResult >)>) >)>)

Queryable
.
.
::
.
Join
<
(Of
<
(
TOuter, TInner, TKey, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TOuter
>
)
>
)
, IEnumerable
<
(Of
<
(
TInner
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

基于匹配键对两个序列的元素进行关联。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。 基于匹配键对两个序列的元素进行关联。使用指定的 IEqualityComparer<(Of <(T>)>) 对键进行比较。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Join(Of TOuter, TInner, TKey, TResult) ( _
    outer As IQueryable(Of TOuter), _
    inner As IEnumerable(Of TInner), _
    outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _
    innerKeySelector As Expression(Of Func(Of TInner, TKey)), _
    resultSelector As Expression(Of Func(Of TOuter, TInner, TResult)), _
    comparer As IEqualityComparer(Of TKey) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> Join<TOuter, TInner, TKey, TResult>(
    this IQueryable<TOuter> outer,
    IEnumerable<TInner> inner,
    Expression<Func<TOuter, TKey>> outerKeySelector,
    Expression<Func<TInner, TKey>> innerKeySelector,
    Expression<Func<TOuter, TInner, TResult>> resultSelector,
    IEqualityComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TOuter, typename TInner, typename TKey, typename TResult>
static IQueryable<TResult>^ Join(
    IQueryable<TOuter>^ outer,
    IEnumerable<TInner>^ inner,
    Expression<Func<TOuter, TKey>^>^ outerKeySelector,
    Expression<Func<TInner, TKey>^>^ innerKeySelector,
    Expression<Func<TOuter, TInner, TResult>^>^ resultSelector,
    IEqualityComparer<TKey>^ comparer
)
static member Join :
        outer:IQueryable<'TOuter> *
        inner:IEnumerable<'TInner> *
        outerKeySelector:Expression<Func<'TOuter, 'TKey>> *
        innerKeySelector:Expression<Func<'TInner, 'TKey>> *
        resultSelector:Expression<Func<'TOuter, 'TInner, 'TResult>> *
        comparer:IEqualityComparer<'TKey> -> IQueryable<'TResult>

类型参数

TOuter

第一个序列中的元素的类型。

TInner

第二个序列中的元素的类型。

TKey

键选择器函数返回的键的类型。

TResult

结果元素的类型。

参数

outer
类型： System.Linq IQueryable
<
(Of
<
(
TOuter
>
)
>
)

要联接的第一个序列。
inner
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TInner
>
)
>
)

要与第一个序列联接的序列。
outerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TKey
>
)
>
)
>
)
>
)

用于从第一个序列的每个元素提取联接键的函数。
innerKeySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TInner, TKey
>
)
>
)
>
)
>
)

用于从第二个序列的每个元素提取联接键的函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TOuter, TInner, TResult
>
)
>
)
>
)
>
)

用于从两个匹配元素创建结果元素的函数。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TKey
>
)
>
)

一个 IEqualityComparer<(Of <(T>)>)，用于对键进行哈希处理和比较。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，具有通过对两个序列执行内部联接而获得的 TResult 类型的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TOuter 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | outer 或 inner 或 outerKeySelector 或 innerKeySelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 outer 参数的 Provider 属性表示。

因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。通过使用 comparer 比较这些键是否相等。这些比较的结果用于创建与 outer 中的元素匹配的 inner 中的每个元素的匹配对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。通过使用 comparer 比较这些键是否相等。这些比较的结果用于创建与 outer 中的元素匹配的 inner 中的每个元素的匹配对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。通过使用 comparer 比较这些键是否相等。这些比较的结果用于创建与 outer 中的元素匹配的 inner 中的每个元素的匹配对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。通过使用 comparer 比较这些键是否相等。这些比较的结果用于创建与 outer 中的元素匹配的 inner 中的每个元素的匹配对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。通过使用 comparer 比较这些键是否相等。这些比较的结果用于创建与 outer 中的元素匹配的 inner 中的每个元素的匹配对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。 因执行表示调用 Join<(Of <(TOuter, TInner, TKey, TResult>)>)(IQueryable<(Of <(TOuter>)>), IEnumerable<(Of <(TInner>)>), Expression<(Of <(Func<(Of <(TOuter, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TInner, TKey>)>)>)>), Expression<(Of <(Func<(Of <(TOuter, TInner, TResult>)>)>)>), IEqualityComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 outer 参数类型的实现。预期的行为是一个内部联接。outerKeySelector 和 innerKeySelector 函数用于从 outer 和 inner 中分别提取键。通过使用 comparer 比较这些键是否相等。这些比较的结果用于创建与 outer 中的元素匹配的 inner 中的每个元素的匹配对。然后，调用 resultSelector 函数以从每对匹配元素对结果对象进行投影。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Join 重载
System.Linq 命名空间


Queryable ..::.Last 方法

Queryable
.
.
::
.
Last 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的最后一个元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Last <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Last
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列中的最后一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Last(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource Last<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Last(
    IQueryable<TSource>^ source
)
static member Last :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要返回其最后一个元素的 IQueryable<(Of <(T>)>)。

返回值

类型：TSource
位于 source 中最后位置处的值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 源序列为空。

Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最后一个元素。 因执行表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最后一个元素。

下面的代码示例演示如何使用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 返回数组中的最后一个元素。

        Dim numbers() As Integer = {9, 34, 65, 92, 87, 435, 3, 54, _
                            83, 23, 87, 67, 12, 19}

        Dim last As Integer = numbers.AsQueryable().Last()

        MsgBox(last)

        ' This code produces the following output:
        ' 19

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 67, 12, 19 };

            int last = numbers.AsQueryable().Last();

            Console.WriteLine(last);

            /*
                This code produces the following output:

                19
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Last 重载
System.Linq 命名空间


Queryable ..::.Last <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
Last
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回序列中满足指定条件的最后一个元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Last(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As TSource
public static TSource Last<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Last(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member Last :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
source 中的最后一个元素，它通过了由 predicate 指定的测试。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 没有元素满足 predicate 中的条件。 - 或 - 源序列为空。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的最后一个元素。 因执行表示调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的最后一个元素。

下面的代码示例演示如何使用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 返回数组中满足条件的最后一个元素。

        Dim numbers() As Integer = {9, 34, 65, 92, 87, 435, 3, 54, _
                            83, 23, 87, 67, 12, 19}

        ' Get the last number in the array that is greater than 80.
        Dim last As Integer = numbers.AsQueryable().Last(Function(num) num > 80)

        MsgBox(last)

        ' This code produces the following output:
        ' 87

            int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54,
                                83, 23, 87, 67, 12, 19 };

            // Get the last number in the array that is greater than 80.
            int last = numbers.AsQueryable().Last(num => num > 80);

            Console.WriteLine(last);

            /*
                This code produces the following output:

                87
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Last 重载
System.Linq 命名空间


Queryable ..::.LastOrDefault 方法

Queryable
.
.
::
.
LastOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的最后一个元素；如果未找到元素，则返回默认值。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.LastOrDefault <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
LastOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列中的最后一个元素，如果序列中不包含任何元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LastOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource LastOrDefault<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource LastOrDefault(
    IQueryable<TSource>^ source
)
static member LastOrDefault :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要返回其最后一个元素的 IQueryable<(Of <(T>)>)。

返回值

类型：TSource
如果 source 为空，则返回 default(TSource)；否则返回 source 中的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最后一个元素，如果 source 为空，则返回默认值。 因执行表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最后一个元素，如果 source 为空，则返回默认值。

LastOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法。 LastOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法。

下面的代码示例演示如何对空数组使用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>))。

        ' Create an empty array.
        Dim fruits() As String = {}

        ' Get the last item in the array, or else the default
        ' value for type string (null).
        Dim last As String = fruits.AsQueryable().LastOrDefault()

        MsgBox(IIf(String.IsNullOrEmpty(last), "[STRING IS NULL OR EMPTY]", last))

        ' This code produces the following output:
        ' [STRING IS NULL OR EMPTY]

            // Create an empty array.
            string[] fruits = { };

            // Get the last item in the array, or else the default
            // value for type string (null).
            string last = fruits.AsQueryable().LastOrDefault();

            Console.WriteLine(
                String.IsNullOrEmpty(last) ? "[STRING IS NULL OR EMPTY]" : last);

            /*
                This code produces the following output:

                [STRING IS NULL OR EMPTY]
            */

如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Last<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取最后一个元素。下面的代码示例使用这两种方式，在月份的数字日期集合为空时获取默认值 1。由于整数的默认值为 0，不对应月份中的任何日期，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。

        Dim daysOfMonth As New List(Of Integer)(New Integer() {})

        ' Setting the default value to 1 after the query.
        Dim lastDay1 As Integer = daysOfMonth.AsQueryable().LastOrDefault()
        If lastDay1 = 0 Then
            lastDay1 = 1
        End If
        MsgBox(String.Format("The value of the lastDay1 variable is {0}", lastDay1))

        ' Setting the default value to 1 by using DefaultIfEmpty() in the query.
        Dim lastDay2 As Integer = daysOfMonth.AsQueryable().DefaultIfEmpty(1).Last()
        MsgBox(String.Format("The value of the lastDay2 variable is {0}", lastDay2))

        ' This code produces the following output:
        '
        ' The value of the lastDay1 variable is 1
        ' The value of the lastDay2 variable is 1

List<int> daysOfMonth = new List<int> { };

// Setting the default value to 1 after the query.
int lastDay1 = daysOfMonth.AsQueryable().LastOrDefault();
if (lastDay1 == 0)
{
    lastDay1 = 1;
}
Console.WriteLine("The value of the lastDay1 variable is {0}", lastDay1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int lastDay2 = daysOfMonth.AsQueryable().DefaultIfEmpty(1).Last();
Console.WriteLine("The value of the lastDay2 variable is {0}", lastDay2);

/*
 This code produces the following output:

 The value of the lastDay1 variable is 1
 The value of the lastDay2 variable is 1
*/

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
LastOrDefault 重载
System.Linq 命名空间


Queryable ..::.LastOrDefault <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
LastOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回序列中满足条件的最后一个元素；如果未找到这样的元素，则返回默认值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LastOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As TSource
public static TSource LastOrDefault<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource LastOrDefault(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member LastOrDefault :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型：TSource
如果 source 为空或没有元素通过谓词函数中的测试，则返回 default(TSource)；否则，返回通过谓词函数中测试的 source 的最后一个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的最后一个元素。如果 source 中没有这样的元素，则返回默认值。 因执行表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的最后一个元素。如果 source 中没有这样的元素，则返回默认值。 因执行表示调用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的最后一个元素。如果 source 中没有这样的元素，则返回默认值。

下面的代码示例演示如何通过传入谓词来使用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>))。在第二次调用该方法时，序列中没有满足条件的元素。 下面的代码示例演示如何通过传入谓词来使用 LastOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>))。在第二次调用该方法时，序列中没有满足条件的元素。

        Dim numbers() As Double = {49.6, 52.3, 51.0, 49.4, 50.2, 48.3}

        ' Get the last number in the array that rounds to 50.0,
        ' or else the default value for type double (0.0).
        Dim last50 As Double = _
             numbers.AsQueryable().LastOrDefault(Function(n) Math.Round(n) = 50.0)

        MsgBox(String.Format("The last number that rounds to 50 is {0}.", last50))

        ' Get the last number in the array that rounds to 40.0,
        ' or else the default value for type double (0.0).
        Dim last40 As Double = _
            numbers.AsQueryable().LastOrDefault(Function(n) Math.Round(n) = 40.0)

        MsgBox(String.Format("The last number that rounds to 40 is {0}.", _
            IIf(last40 = 0.0, "[DOES NOT EXIST]", last40.ToString())))

        'This code produces the following output:

        'The last number that rounds to 50 is 50.2.
        'The last number that rounds to 40 is [DOES NOT EXIST].

            double[] numbers = { 49.6, 52.3, 51.0, 49.4, 50.2, 48.3 };

            // Get the last number in the array that rounds to 50.0,
            // or else the default value for type double (0.0).
            double last50 =
                numbers.AsQueryable().LastOrDefault(n => Math.Round(n) == 50.0);

            Console.WriteLine("The last number that rounds to 50 is {0}.", last50);

            // Get the last number in the array that rounds to 40.0,
            // or else the default value for type double (0.0).
            double last40 =
                numbers.AsQueryable().LastOrDefault(n => Math.Round(n) == 40.0);

            Console.WriteLine(
                "The last number that rounds to 40 is {0}.",
                last40 == 0.0 ? "[DOES NOT EXIST]" : last40.ToString());

            /*
                This code produces the following output:

                The last number that rounds to 50 is 50.2.
                The last number that rounds to 40 is [DOES NOT EXIST].
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
LastOrDefault 重载
System.Linq 命名空间


Queryable ..::.LongCount 方法

Queryable
.
.
::
.
LongCount 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回一个 Int64，表示序列中的元素的数量。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.LongCount <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
LongCount
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回一个 Int64，表示序列中的元素的总数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LongCount(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As Long
public static long LongCount<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long LongCount(
    IQueryable<TSource>^ source
)
static member LongCount :
        source:IQueryable<'TSource> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

包含要进行计数的元素的 IQueryable<(Of <(T>)>)。

返回值

类型： System Int64
source 中的元素的数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 元素的数量超过 MaxValue。

LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中的项数并返回 Int64。 因执行表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算 source 中的项数并返回 Int64。

下面的代码示例演示如何使用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 对数组中的元素进行计数。

        Dim fruits() As String = {"apple", "banana", "mango", _
                              "orange", "passionfruit", "grape"}

        Dim count As Long = fruits.AsQueryable().LongCount()

        MsgBox(String.Format("There are {0} fruits in the collection.", count))

        ' This code produces the following output:

        ' There are 6 fruits in the collection.

            string[] fruits = { "apple", "banana", "mango",
                                  "orange", "passionfruit", "grape" };

            long count = fruits.AsQueryable().LongCount();

            Console.WriteLine("There are {0} fruits in the collection.", count);

            /*
                This code produces the following output:

                There are 6 fruits in the collection.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
LongCount 重载
System.Linq 命名空间


Queryable ..::.LongCount <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
LongCount
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回一个 Int64，它表示序列中满足条件的元素数量。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function LongCount(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As Long
public static long LongCount<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long LongCount(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member LongCount :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

包含要进行计数的元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System Int64
source 中满足谓词函数的条件的元素数量。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 匹配元素的数量超过 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算满足 predicate 指定条件的 source 中的项数，并返回 Int64。 因执行表示调用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是计算满足 predicate 指定条件的 source 中的项数，并返回 Int64。

下面的代码示例演示如何使用 LongCount<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 对数组中满足条件的元素进行计数。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Shared Sub LongCountEx2()
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                           New Pet With {.Name = "Boots", .Age = 4}, _
                           New Pet With {.Name = "Whiskers", .Age = 1}}

        Const Age As Integer = 3

        ' Count the number of Pet objects where Pet.Age is greater than 3.
        Dim count As Long = pets.AsQueryable().LongCount(Function(Pet) Pet.Age > Age)

        MsgBox(String.Format("There are {0} animals over age {1}.", count, Age))
    End Sub

    ' This code produces the following output:

    ' There are 2 animals over age 3.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void LongCountEx2()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                const int Age = 3;

                // Count the number of Pet objects where Pet.Age is greater than 3.
                long count = pets.AsQueryable().LongCount(pet => pet.Age > Age);

                Console.WriteLine("There are {0} animals over age {1}.", count, Age);
            }

            /*
                This code produces the following output:

                There are 2 animals over age 3.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
LongCount 重载
System.Linq 命名空间


Queryable ..::.Max 方法

Queryable
.
.
::
.
Max 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的最大值。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Max <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Max
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回泛型 IQueryable<(Of <(T>)>) 中的最大值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource Max<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Max(
    IQueryable<TSource>^ source
)
static member Max :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要确定最大值的值序列。

返回值

类型：TSource
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最大值。 因执行表示调用 Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最大值。

下面的代码示例演示如何使用 Max<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 确定序列中的最大值。

        Dim longs As New List(Of Long)(New Long() {4294967296L, 466855135L, 81125L})

        Dim max As Long = longs.AsQueryable().Max()

        MsgBox(String.Format("The largest number is {0}.", max))

        'This code produces the following output:

        'The largest number is 4294967296.

            List<long> longs = new List<long> { 4294967296L, 466855135L, 81125L };

            long max = longs.AsQueryable().Max();

            Console.WriteLine("The largest number is {0}.", max);

            /*
                This code produces the following output:

                The largest number is 4294967296.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Max 重载
System.Linq 命名空间


Queryable ..::.Max <(Of <(TSource, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TResult >)>) >)>))

Queryable
.
.
::
.
Max
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

对泛型 IQueryable<(Of <(T>)>) 的每个元素调用投影函数，并返回最大结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Max(Of TSource, TResult) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, TResult)) _
) As TResult
public static TResult Max<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static TResult Max(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TResult>^>^ selector
)
static member Max :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, 'TResult>> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TResult

由 selector 表示的函数返回的值类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要确定最大值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TResult
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型：TResult
序列中的最大值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回最大值。 因执行表示调用 Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回最大值。

下面的代码示例演示如何使用 Max<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 确定投影值序列中的最大值。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Shared Sub MaxEx2()
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                       New Pet With {.Name = "Boots", .Age = 4}, _
                       New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Add Pet.Age to the length of Pet.Name
        ' to determine the "maximum" Pet object in the array.
        Dim max As Integer = _
            pets.AsQueryable().Max(Function(pet) pet.Age + pet.Name.Length)

        MsgBox(String.Format("The maximum pet age plus name length is {0}.", max))

        'This code produces the following output:

        'The maximum pet age plus name length is 14.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MaxEx2()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                // Add Pet.Age to the length of Pet.Name
                // to determine the "maximum" Pet object in the array.
                int max =
                    pets.AsQueryable().Max(pet => pet.Age + pet.Name.Length);

                Console.WriteLine(
                    "The maximum pet age plus name length is {0}.",
                    max);
            }

            /*
                This code produces the following output:

                The maximum pet age plus name length is 14.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Max 重载
System.Linq 命名空间


Queryable ..::.Min 方法

Queryable
.
.
::
.
Min 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中的最小值。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Min <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Min
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回泛型 IQueryable<(Of <(T>)>) 中的最小值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource Min<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Min(
    IQueryable<TSource>^ source
)
static member Min :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要确定最小值的值序列。

返回值

类型：TSource
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最小值。 因执行表示调用 Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的最小值。

下面的代码示例演示如何使用 Min<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 确定序列中的最小值。

        Dim doubles() As Double = {1.5E+104, 9.0E+103, -2.0E+103}

        Dim min As Double = doubles.AsQueryable().Min()

        MsgBox(String.Format("The smallest number is {0}.", min))

        'This code produces the following output:

        'The smallest number is -2E+103.

            double[] doubles = { 1.5E+104, 9E+103, -2E+103 };

            double min = doubles.AsQueryable().Min();

            Console.WriteLine("The smallest number is {0}.", min);

            /*
                This code produces the following output:

                The smallest number is -2E+103.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Min 重载
System.Linq 命名空间


Queryable ..::.Min <(Of <(TSource, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TResult >)>) >)>))

Queryable
.
.
::
.
Min
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

对泛型 IQueryable<(Of <(T>)>) 的每个元素调用投影函数，并返回最小结果值。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Min(Of TSource, TResult) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, TResult)) _
) As TResult
public static TResult Min<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static TResult Min(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TResult>^>^ selector
)
static member Min :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, 'TResult>> -> 'TResult

类型参数

TSource

source 中的元素的类型。

TResult

由 selector 表示的函数返回的值类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要确定最小值的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TResult
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型：TResult
序列中的最小值。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回最小值。 因执行表示调用 Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回最小值。

下面的代码示例演示如何使用 Min<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 确定投影值序列中的最小值。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Shared Sub MinEx2()
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                       New Pet With {.Name = "Boots", .Age = 4}, _
                       New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Get the Pet object that has the smallest Age value.
        Dim min As Integer = pets.AsQueryable().Min(Function(pet) pet.Age)

        MsgBox(String.Format("The youngest animal is age {0}.", min))
    End Sub

    'This code produces the following output:

    'The youngest animal is age 1.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void MinEx2()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                // Get the Pet object that has the smallest Age value.
                int min = pets.AsQueryable().Min(pet => pet.Age);

                Console.WriteLine("The youngest animal is age {0}.", min);
            }

            /*
                This code produces the following output:

                The youngest animal is age 1.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Min 重载
System.Linq 命名空间


Queryable ..::.OfType <(Of <(TResult >)>) 方法

Queryable
.
.
::
.
OfType
<
(Of
<
(
TResult
>
)
>
)
方法
Queryable 类

根据指定类型筛选 IQueryable 的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OfType(Of TResult) ( _
    source As IQueryable _
) As IQueryable(Of TResult)
public static IQueryable<TResult> OfType<TResult>(
    this IQueryable source
)

[ExtensionAttribute]
public:
generic<typename TResult>
static IQueryable<TResult>^ OfType(
    IQueryable^ source
)
static member OfType :
        source:IQueryable -> IQueryable<'TResult>

类型参数

TResult

筛选序列元素所根据的类型。

参数

source
类型： System.Linq IQueryable
要对其元素进行筛选的 IQueryable。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个集合，包含 source 中的类型为 TResult 的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

OfType 方法生成 MethodCallExpression，表示调用 OfType 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 OfType 方法生成 MethodCallExpression，表示调用 OfType 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 OfType 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是筛选出不是 TResult 类型的 source 中的任何元素。 因执行表示调用 OfType 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是筛选出不是 TResult 类型的 source 中的任何元素。

下面的代码示例演示如何使用 OfType 从 MemberInfo 类型的元素列表中，筛选出不是 PropertyInfo 类型的元素。

        ' Create a list of MemberInfo objects.
        Dim members As List(Of System.Reflection.MemberInfo) = GetType(String).GetMembers().ToList()

        ' Return only those items that can be cast to type PropertyInfo.
        Dim propertiesOnly As IQueryable(Of System.Reflection.PropertyInfo) = _
                members.AsQueryable().OfType(Of System.Reflection.PropertyInfo)()

        Dim output As New System.Text.StringBuilder
        output.AppendLine("Members of type 'PropertyInfo' are:")
        For Each pi As System.Reflection.PropertyInfo In propertiesOnly
            output.AppendLine(pi.Name)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' Members of type 'PropertyInfo' are:
        ' Chars
        ' Length

            // Create a list of MemberInfo objects.
            List<System.Reflection.MemberInfo> members = typeof(String).GetMembers().ToList();

            // Return only those items that can be cast to type PropertyInfo.
            IQueryable<System.Reflection.PropertyInfo> propertiesOnly =
                members.AsQueryable().OfType<System.Reflection.PropertyInfo>();

            Console.WriteLine("Members of type 'PropertyInfo' are:");
            foreach (System.Reflection.PropertyInfo pi in propertiesOnly)
                Console.WriteLine(pi.Name);

            /*
                This code produces the following output:

                Members of type 'PropertyInfo' are:
                Chars
                Length
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.OrderBy 方法

Queryable
.
.
::
.
OrderBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

按升序对序列的元素排序。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.OrderBy <(Of <(TSource, TKey >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>))

Queryable
.
.
::
.
OrderBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
)
Queryable 类

根据键按升序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderBy(Of TSource, TKey) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ OrderBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector
)
static member OrderBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，根据键对其元素排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的元素排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。 因执行表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的元素排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。

下面的代码示例演示如何使用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 对序列中的元素进行排序。

    Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Shared Sub OrderByEx1()
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Sort the Pet objects in the array by Pet.Age.
        Dim query As IEnumerable(Of Pet) = _
                    pets.AsQueryable().OrderBy(Function(pet) pet.Age)

        Dim output As New System.Text.StringBuilder
        For Each pet As Pet In query
            output.AppendLine(String.Format("{0} - {1}", pet.Name, pet.Age))
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' Whiskers - 1
    ' Boots - 4
    ' Barley - 8

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void OrderByEx1()
            {
                Pet[] pets = { new Pet { Name="Barley", Age=8 },
                               new Pet { Name="Boots", Age=4 },
                               new Pet { Name="Whiskers", Age=1 } };

                // Sort the Pet objects in the array by Pet.Age.
                IEnumerable<Pet> query =
                    pets.AsQueryable().OrderBy(pet => pet.Age);

                foreach (Pet pet in query)
                    Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
            }

            /*
                This code produces the following output:

                Whiskers - 1
                Boots - 4
                Barley - 8
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
OrderBy 重载
System.Linq 命名空间


Queryable ..::.OrderBy <(Of <(TSource, TKey >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), IComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
OrderBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

使用指定的比较器按升序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderBy(Of TSource, TKey) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    comparer As IComparer(Of TKey) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ OrderBy(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    IComparer<TKey>^ comparer
)
static member OrderBy :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        comparer:IComparer<'TKey> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，根据键对其元素排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的元素排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。comparer 参数用于比较键。 因执行表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的元素排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。comparer 参数用于比较键。 因执行表示调用 OrderBy<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的元素排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。comparer 参数用于比较键。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
OrderBy 重载
System.Linq 命名空间


Queryable ..::.OrderByDescending 方法

Queryable
.
.
::
.
OrderByDescending 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

按降序对序列的元素排序。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.OrderByDescending <(Of <(TSource, TKey >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>))

Queryable
.
.
::
.
OrderByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
)
Queryable 类

根据键按降序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderByDescending(Of TSource, TKey) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ OrderByDescending(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector
)
static member OrderByDescending :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从元素中提取键的函数。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是按降序对 source 中的元素进行排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。 因执行表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是按降序对 source 中的元素进行排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
OrderByDescending 重载
System.Linq 命名空间


Queryable ..::.OrderByDescending <(Of <(TSource, TKey >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), IComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
OrderByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

使用指定的比较器按降序对序列的元素排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function OrderByDescending(Of TSource, TKey) ( _
    source As IQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    comparer As IComparer(Of TKey) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ OrderByDescending(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    IComparer<TKey>^ comparer
)
static member OrderByDescending :
        source:IQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        comparer:IComparer<'TKey> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要排序的值序列。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

执行表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树导致出现的查询行为取决于 source 参数类型的实现。预期的行为是按降序对 source 中的元素进行排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。comparer 参数用于比较键。 执行表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树导致出现的查询行为取决于 source 参数类型的实现。预期的行为是按降序对 source 中的元素进行排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。comparer 参数用于比较键。 执行表示调用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树导致出现的查询行为取决于 source 参数类型的实现。预期的行为是按降序对 source 中的元素进行排序，排序依据是通过对 source 中的每个元素调用 keySelector 所获得的键。comparer 参数用于比较键。

下面的代码示例演示如何通过使用自定义比较器用 OrderByDescending<(Of <(TSource, TKey>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 对序列中的元素按降序排序。

    ''' <summary>
    ''' This class provides a custom implementation of the
    ''' IComparer.Compare() method. It sorts by the fractional part of the decimal number.
    ''' </summary>
    Class SpecialComparer
        Implements IComparer(Of Decimal)

        ''' <summary>
        ''' Compare two decimal numbers by their fractional parts.
        ''' </summary>
        ''' <param name="d1">The first decimal to compare.</param>
        ''' <param name="d2">The second decimal to compare.</param>
        ''' <returns>1 if the first decimal's fractional part is greater than
        ''' the second decimal's fractional part,
        ''' -1 if the first decimal's fractional
        ''' part is less than the second decimal's fractional part,
        ''' or the result of calling Decimal.Compare()
        ''' if the fractional parts are equal.</returns>
        Function Compare(ByVal d1 As Decimal, ByVal d2 As Decimal) As Integer _
            Implements IComparer(Of Decimal).Compare

            Dim fractional1 As Decimal
            Dim fractional2 As Decimal

            ' Get the fractional part of the first number.
            Try
                fractional1 = Decimal.Remainder(d1, Decimal.Floor(d1))
            Catch ex As DivideByZeroException
                fractional1 = d1
            End Try

            ' Get the fractional part of the second number.
            Try
                fractional2 = Decimal.Remainder(d2, Decimal.Floor(d2))
            Catch ex As DivideByZeroException
                fractional2 = d2
            End Try

            If (fractional1 = fractional2) Then
                ' The fractional parts are equal, so compare the entire numbers.
                Return Decimal.Compare(d1, d2)
            ElseIf (fractional1 > fractional2) Then
                Return 1
            Else
                Return -1
            End If
        End Function
    End Class

    Sub OrderByDescendingEx1()
        ' Create a list of decimal values.
        Dim decimals As New List(Of Decimal)(New Decimal() _
                                             {6.2D, 8.3D, 0.5D, 1.3D, 6.3D, 9.7D})

        ' Order the elements of the list by passing
        ' in the custom IComparer class.
        Dim query As IEnumerable(Of Decimal) = _
            decimals.AsQueryable(). _
            OrderByDescending(Function(num) num, New SpecialComparer())

        Dim output As New System.Text.StringBuilder
        For Each num As Decimal In query
            output.AppendLine(num)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' 9.7
    ' 0.5
    ' 8.3
    ' 6.3
    ' 1.3
    ' 6.2

            /// <summary>
            /// This IComparer class sorts by the fractional part of the decimal number.
            /// </summary>
            public class SpecialComparer : IComparer<decimal>
            {
                /// <summary>
                /// Compare two decimal numbers by their fractional parts.
                /// </summary>
                /// <param name="d1">The first decimal to compare.</param>
                /// <param name="d2">The second decimal to compare.</param>
                /// <returns>1 if the first decimal's fractional part
                /// is greater than the second decimal's fractional part,
                /// -1 if the first decimal's fractional
                /// part is less than the second decimal's fractional part,
                /// or the result of calling Decimal.Compare()
                /// if the fractional parts are equal.</returns>
                public int Compare(decimal d1, decimal d2)
                {
                    decimal fractional1, fractional2;

                    // Get the fractional part of the first number.
                    try
                    {
                        fractional1 = decimal.Remainder(d1, decimal.Floor(d1));
                    }
                    catch (DivideByZeroException)
                    {
                        fractional1 = d1;
                    }
                    // Get the fractional part of the second number.
                    try
                    {
                        fractional2 = decimal.Remainder(d2, decimal.Floor(d2));
                    }
                    catch (DivideByZeroException)
                    {
                        fractional2 = d2;
                    }

                    if (fractional1 == fractional2)
                        return Decimal.Compare(d1, d2);
                    else if (fractional1 > fractional2)
                        return 1;
                    else
                        return -1;
                }
            }

            public static void OrderByDescendingEx1()
            {
                List<decimal> decimals =
                    new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };

                // Sort the decimal values in descending order
                // by using a custom comparer.
                IEnumerable<decimal> query =
                    decimals.AsQueryable()
                    .OrderByDescending(num => num, new SpecialComparer());

                foreach (decimal num in query)
                    Console.WriteLine(num);
            }

            /*
                This code produces the following output:

                9.7
                0.5
                8.3
                6.3
                1.3
                6.2
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
OrderByDescending 重载
System.Linq 命名空间


Queryable ..::.Reverse <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
Reverse
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

反转序列中元素的顺序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Reverse(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Reverse<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Reverse(
    IQueryable<TSource>^ source
)
static member Reverse :
        source:IQueryable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要反转的值序列。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素以相反顺序对应于输入序列的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是反转 source 中的元素的顺序。 因执行表示调用 Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是反转 source 中的元素的顺序。

下面的代码示例演示如何使用 Reverse<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 反转数组中元素的顺序。

        Dim appleLetters As New List(Of Char)(New Char() _
                                              {"a"c, "p"c, "p"c, "l"c, "e"c})

        ' Reverse the order of the characters in the collection.
        Dim reversed As IQueryable(Of Char) = _
           appleLetters.AsQueryable().Reverse()

        Dim output As New System.Text.StringBuilder
        For Each chr As Char In reversed
            output.Append(chr & " ")
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:
        '
        ' e l p p a

            char[] apple = { 'a', 'p', 'p', 'l', 'e' };

            // Reverse the order of the characters in the collection.
            IQueryable<char> reversed = apple.AsQueryable().Reverse();

            foreach (char chr in reversed)
                Console.Write(chr + " ");
            Console.WriteLine();

            /*
                This code produces the following output:

                e l p p a
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Select 方法

Queryable
.
.
::
.
Select 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

将序列中的每个元素投影到新表中。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Select <(Of <(TSource, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TResult >)>) >)>))

Queryable
.
.
::
.
Select
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

将序列中的每个元素投影到新表中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Select(Of TSource, TResult) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> Select<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IQueryable<TResult>^ Select(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, TResult>^>^ selector
)
static member Select :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, 'TResult>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

由 selector 表示的函数返回的值类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TResult
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素为对 source 的每个元素调用投影函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个不同的表中。 因执行表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个不同的表中。

下面的代码示例演示如何使用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TResult>)>)>)>)) 对值序列进行投影。

        Dim range As New List(Of Integer)(New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10})

        ' Project the square of each int value.
        Dim squares As IEnumerable(Of Integer) = _
            range.AsQueryable().Select(Function(x) x * x)

        Dim output As New System.Text.StringBuilder
        For Each num As Integer In squares
            output.AppendLine(num)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' 1
        ' 4
        ' 9
        ' 16
        ' 25
        ' 36
        ' 49
        ' 64
        ' 81
        ' 100

            List<int> range =
                new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            // Project the square of each int value.
            IEnumerable<int> squares =
                range.AsQueryable().Select(x => x * x);

            foreach (int num in squares)
                Console.WriteLine(num);

            /*
                This code produces the following output:

                1
                4
                9
                16
                25
                36
                49
                64
                81
                100
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Select 重载
System.Linq 命名空间


Queryable ..::.Select <(Of <(TSource, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32, TResult >)>) >)>))

Queryable
.
.
::
.
Select
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

通过合并元素的索引将序列的每个元素投影到新表中。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Select(Of TSource, TResult) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Integer, TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> Select<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int, TResult>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IQueryable<TResult>^ Select(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int, TResult>^>^ selector
)
static member Select :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, int, 'TResult>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

由 selector 表示的函数返回的值类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, TResult
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素为对 source 的每个元素调用投影函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个不同的表中。 因执行表示调用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个不同的表中。

下面的代码示例演示如何使用 Select<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, TResult>)>)>)>)) 对一个值序列进行投影并在投影的表中使用每个元素的索引。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", _
                              "passionfruit", "grape"}

        ' Project an anonymous type that contains the
        ' index of the string in the source array, and
        ' a string that contains the same number of characters
        ' as the string's index in the source array.
        Dim query = _
            fruits.AsQueryable() _
            .Select(Function(fruit, index) New With {index, .str = fruit.Substring(0, index)})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(obj.ToString())
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' { index = 0, str =  }
        ' { index = 1, str = b }
        ' { index = 2, str = ma }
        ' { index = 3, str = ora }
        ' { index = 4, str = pass }
        ' { index = 5, str = grape }

            string[] fruits = { "apple", "banana", "mango", "orange",
                                  "passionfruit", "grape" };

            // Project an anonymous type that contains the
            // index of the string in the source array, and
            // a string that contains the same number of characters
            // as the string's index in the source array.
            var query =
                fruits.AsQueryable()
                .Select((fruit, index) =>
                            new { index, str = fruit.Substring(0, index) });

            foreach (var obj in query)
                Console.WriteLine("{0}", obj);

            /*
                This code produces the following output:

                { index = 0, str =  }
                { index = 1, str = b }
                { index = 2, str = ma }
                { index = 3, str = ora }
                { index = 4, str = pass }
                { index = 5, str = grape }
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Select 重载
System.Linq 命名空间


Queryable ..::.SelectMany 方法

Queryable
.
.
::
.
SelectMany 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

将序列的每个元素投影到一个 IEnumerable<(Of <(T>)>) 并将结果序列组合为一个 IQueryable<(Of <(T>)>) 类型的序列。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.SelectMany <(Of <(TSource, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, IEnumerable <(Of <(TResult >)>) >)>) >)>))

Queryable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

将序列的每个元素投影到一个 IEnumerable<(Of <(T>)>)，并将结果序列组合为一个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TResult) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, IEnumerable(Of TResult))) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> SelectMany<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, IEnumerable<TResult>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IQueryable<TResult>^ SelectMany(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, IEnumerable<TResult>^>^>^ selector
)
static member SelectMany :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, IEnumerable<'TResult>>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

由 selector 表示的函数返回的序列中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素是对输入序列的每个元素调用一对多投影函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。然后，可枚举的结果就连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。然后，可枚举的结果就连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。然后，可枚举的结果就连接为一个一维序列。

下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 对数组执行一对多的投影。

    Structure PetOwner
        Public Name As String
        Public Pets() As String
    End Structure

    Shared Sub SelectManyEx1()
        Dim petOwners() As PetOwner = _
            {New PetOwner With _
             {.Name = "Higa, Sidney", .Pets = New String() {"Scruffy", "Sam"}}, _
             New PetOwner With _
             {.Name = "Ashkenazi, Ronen", .Pets = New String() {"Walker", "Sugar"}}, _
             New PetOwner With _
             {.Name = "Price, Vernette", .Pets = New String() {"Scratches", "Diesel"}}}

        ' Query using SelectMany().
        Dim query1 As IEnumerable(Of String) = _
                    petOwners.AsQueryable().SelectMany(Function(petOwner) petOwner.Pets)

        Dim output As New System.Text.StringBuilder("Using SelectMany():" & vbCrLf)
        ' Only one foreach loop is required to iterate through
        ' the results because it is a one-dimensional collection.
        For Each pet As String In query1
            output.AppendLine(pet)
        Next

        ' This code shows how to use Select() instead of SelectMany().
        Dim query2 As IEnumerable(Of String()) = _
                    petOwners.AsQueryable().Select(Function(petOwner) petOwner.Pets)

        output.AppendLine(vbCrLf & "Using Select():")
        ' Notice that two foreach loops are required to iterate through
        ' the results because the query returns a collection of arrays.
        For Each petArray() As String In query2
            For Each pet As String In petArray
                output.AppendLine(pet)
            Next
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' Using SelectMany():
    ' Scruffy
    ' Sam
    ' Walker
    ' Sugar
    ' Scratches
    ' Diesel

    ' Using Select():
    ' Scruffy
    ' Sam
    ' Walker
    ' Sugar
    ' Scratches
    ' Diesel

            class PetOwner
            {
                public string Name { get; set; }
                public List<String> Pets { get; set; }
            }

            public static void SelectManyEx1()
            {
                PetOwner[] petOwners =
                    { new PetOwner { Name="Higa, Sidney",
                          Pets = new List<string>{ "Scruffy", "Sam" } },
                      new PetOwner { Name="Ashkenazi, Ronen",
                          Pets = new List<string>{ "Walker", "Sugar" } },
                      new PetOwner { Name="Price, Vernette",
                          Pets = new List<string>{ "Scratches", "Diesel" } } };

                // Query using SelectMany().
                IEnumerable<string> query1 =
                    petOwners.AsQueryable().SelectMany(petOwner => petOwner.Pets);

                Console.WriteLine("Using SelectMany():");

                // Only one foreach loop is required to iterate through the
                // results because it is a one-dimensional collection.
                foreach (string pet in query1)
                    Console.WriteLine(pet);

                // This code shows how to use Select() instead of SelectMany().
                IEnumerable<List<String>> query2 =
                    petOwners.AsQueryable().Select(petOwner => petOwner.Pets);

                Console.WriteLine("\nUsing Select():");

                // Notice that two foreach loops are required to iterate through
                // the results because the query returns a collection of arrays.
                foreach (List<String> petList in query2)
                {
                    foreach (string pet in petList)
                    {
                        Console.WriteLine(pet);
                    }
                    Console.WriteLine();
                }
            }

            /*
                This code produces the following output:

                Using SelectMany():
                Scruffy
                Sam
                Walker
                Sugar
                Scratches
                Diesel

                Using Select():
                Scruffy
                Sam

                Walker
                Sugar

                Scratches
                Diesel
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SelectMany 重载
System.Linq 命名空间


Queryable ..::.SelectMany <(Of <(TSource, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32, IEnumerable <(Of <(TResult >)>) >)>) >)>))

Queryable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

将序列的每个元素投影到一个 IEnumerable<(Of <(T>)>)，并将结果序列组合为一个序列。每个源元素的索引用于该元素的投影表。 将序列的每个元素投影到一个 IEnumerable<(Of <(T>)>)，并将结果序列组合为一个序列。每个源元素的索引用于该元素的投影表。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TResult) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Integer, IEnumerable(Of TResult))) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> SelectMany<TSource, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int, IEnumerable<TResult>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TResult>
static IQueryable<TResult>^ SelectMany(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int, IEnumerable<TResult>^>^>^ selector
)
static member SelectMany :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, int, IEnumerable<'TResult>>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TResult

由 selector 表示的函数返回的序列中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TResult
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数；此函数的第二个参数表示源元素的索引。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素是对输入序列的每个元素调用一对多投影函数的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。每个可枚举的结果合并到源元素的索引中。然后，可枚举的结果就连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。每个可枚举的结果合并到源元素的索引中。然后，可枚举的结果就连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。每个可枚举的结果合并到源元素的索引中。然后，可枚举的结果就连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 selector 以将它投影到一个可枚举表中。每个可枚举的结果合并到源元素的索引中。然后，可枚举的结果就连接为一个一维序列。

下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TResult>)>)>)>)>)>)) 对数组执行一对多的投影并使用每个源元素的索引。

    Structure PetOwner
        Public Name As String
        Public Pets() As String
    End Structure

    Shared Sub SelectManyEx2()
        Dim petOwners() As PetOwner = _
            {New PetOwner With _
             {.Name = "Higa, Sidney", .Pets = New String() {"Scruffy", "Sam"}}, _
             New PetOwner With _
             {.Name = "Ashkenazi, Ronen", .Pets = New String() {"Walker", "Sugar"}}, _
             New PetOwner With _
             {.Name = "Price, Vernette", .Pets = New String() {"Scratches", "Diesel"}}, _
             New PetOwner With _
             {.Name = "Hines, Patrick", .Pets = New String() {"Dusty"}}}

        ' For each PetOwner element in the source array,
        ' project a sequence of strings where each string
        ' consists of the index of the PetOwner element in the
        ' source array and the name of each pet in PetOwner.Pets.
        Dim query As IEnumerable(Of String) = _
            petOwners.AsQueryable() _
            .SelectMany(Function(petOwner, index) petOwner.Pets.Select(Function(pet) index.ToString() + pet))

        Dim output As New System.Text.StringBuilder
        For Each pet As String In query
            output.AppendLine(pet)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' 0Scruffy
    ' 0Sam
    ' 1Walker
    ' 1Sugar
    ' 2Scratches
    ' 2Diesel
    ' 3Dusty

            class PetOwner
            {
                public string Name { get; set; }
                public List<string> Pets { get; set; }
            }

            public static void SelectManyEx2()
            {
                PetOwner[] petOwners =
                    { new PetOwner { Name="Higa, Sidney",
                          Pets = new List<string>{ "Scruffy", "Sam" } },
                      new PetOwner { Name="Ashkenazi, Ronen",
                          Pets = new List<string>{ "Walker", "Sugar" } },
                      new PetOwner { Name="Price, Vernette",
                          Pets = new List<string>{ "Scratches", "Diesel" } },
                      new PetOwner { Name="Hines, Patrick",
                          Pets = new List<string>{ "Dusty" } } };

                // For each PetOwner element in the source array,
                // project a sequence of strings where each string
                // consists of the index of the PetOwner element in the
                // source array and the name of each pet in PetOwner.Pets.
                IEnumerable<string> query =
                    petOwners.AsQueryable()
                    .SelectMany(
                    (petOwner, index) => petOwner.Pets.Select(pet => index + pet)
                    );

                foreach (string pet in query)
                    Console.WriteLine(pet);
            }

            // This code produces the following output:
            //
            // 0Scruffy
            // 0Sam
            // 1Walker
            // 1Sugar
            // 2Scratches
            // 2Diesel
            // 3Dusty

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SelectMany 重载
System.Linq 命名空间


Queryable ..::.SelectMany <(Of <(TSource, TCollection, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, IEnumerable <(Of <(TCollection >)>) >)>) >)>), Expression <(Of <(Func <(Of <(TSource, TCollection, TResult >)>) >)>))

Queryable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

将序列的每个元素投影到一个 IEnumerable<(Of <(T>)>)，并对其中的每个元素调用结果选择器函数。每个中间序列的结果值都组合为一个一维序列，并将其返回。 将序列的每个元素投影到一个 IEnumerable<(Of <(T>)>)，并对其中的每个元素调用结果选择器函数。每个中间序列的结果值都组合为一个一维序列，并将其返回。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TCollection, TResult) ( _
    source As IQueryable(Of TSource), _
    collectionSelector As Expression(Of Func(Of TSource, IEnumerable(Of TCollection))), _
    resultSelector As Expression(Of Func(Of TSource, TCollection, TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, IEnumerable<TCollection>>> collectionSelector,
    Expression<Func<TSource, TCollection, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TCollection, typename TResult>
static IQueryable<TResult>^ SelectMany(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, IEnumerable<TCollection>^>^>^ collectionSelector,
    Expression<Func<TSource, TCollection, TResult>^>^ resultSelector
)
static member SelectMany :
        source:IQueryable<'TSource> *
        collectionSelector:Expression<Func<'TSource, IEnumerable<'TCollection>>> *
        resultSelector:Expression<Func<'TSource, 'TCollection, 'TResult>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TCollection

由 collectionSelector 表示的函数收集的中间元素类型。

TResult

结果序列的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
collectionSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
>
)
>
)

一个应用于输入序列的每个元素的投影函数。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
>
)
>
)

一个应用于每个中间序列的每个元素的投影函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素是通过对 source 的每个元素调用一对多投影函数 collectionSelector，然后将这些序列元素的每一个及其对应的 source 元素映射到结果元素中的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 collectionSelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。

下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 对数组执行一对多的投影。此示例使用结果选择器函数保留源元素，该源元素与 Select 的最后调用范围内的每个中间序列相对应。 下面的代码示例演示如何使用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 对数组执行一对多的投影。此示例使用结果选择器函数保留源元素，该源元素与 Select 的最后调用范围内的每个中间序列相对应。

    Structure PetOwner
        Public Name As String
        Public Pets As List(Of Pet)
    End Structure

    Structure Pet
        Public Name As String
        Public Breed As String
    End Structure

    Shared Sub SelectManyEx3()
        Dim petOwners() As PetOwner = _
                    {New PetOwner With {.Name = "Higa", _
                          .Pets = New List(Of Pet)(New Pet() { _
                              New Pet With {.Name = "Scruffy", .Breed = "Poodle"}, _
                              New Pet With {.Name = "Sam", .Breed = "Hound"}})}, _
                      New PetOwner With {.Name = "Ashkenazi", _
                          .Pets = New List(Of Pet)(New Pet() { _
                              New Pet With {.Name = "Walker", .Breed = "Collie"}, _
                              New Pet With {.Name = "Sugar", .Breed = "Poodle"}})}, _
                      New PetOwner With {.Name = "Price", _
                          .Pets = New List(Of Pet)(New Pet() { _
                              New Pet With {.Name = "Scratches", .Breed = "Dachshund"}, _
                              New Pet With {.Name = "Diesel", .Breed = "Collie"}})}, _
                      New PetOwner With {.Name = "Hines", _
                          .Pets = New List(Of Pet)(New Pet() { _
                              New Pet With {.Name = "Dusty", .Breed = "Collie"}})} _
                    }

        ' This query demonstrates how to obtain a sequence of
        ' the names of all the pets whose breed is "Collie", while
        ' keeping an association with the owner that owns the pet.
        Dim query = petOwners.AsQueryable() _
            .SelectMany(Function(owner) owner.Pets, _
                   Function(owner, pet) New With {owner, pet}) _
            .Where(Function(ownerAndPet) ownerAndPet.pet.Breed = "Collie") _
            .Select(Function(ownerAndPet) New With { _
                .Owner = ownerAndPet.owner.Name, _
                .Pet = ownerAndPet.pet.Name})

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(String.Format("Owner={0}, Pet={1}", obj.Owner, obj.Pet))
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' Owner=Ashkenazi, Pet=Walker
    ' Owner=Price, Pet=Diesel
    ' Owner=Hines, Pet=Dusty

            class PetOwner
            {
                public string Name { get; set; }
                public List<Pet> Pets { get; set; }
            }

            class Pet
            {
                public string Name { get; set; }
                public string Breed { get; set; }
            }

            public static void SelectManyEx3()
            {
                PetOwner[] petOwners =
                    { new PetOwner { Name="Higa",
                          Pets = new List<Pet>{
                              new Pet { Name="Scruffy", Breed="Poodle" },
                              new Pet { Name="Sam", Breed="Hound" } } },
                      new PetOwner { Name="Ashkenazi",
                          Pets = new List<Pet>{
                              new Pet { Name="Walker", Breed="Collie" },
                              new Pet { Name="Sugar", Breed="Poodle" } } },
                      new PetOwner { Name="Price",
                          Pets = new List<Pet>{
                              new Pet { Name="Scratches", Breed="Dachshund" },
                              new Pet { Name="Diesel", Breed="Collie" } } },
                      new PetOwner { Name="Hines",
                          Pets = new List<Pet>{
                              new Pet { Name="Dusty", Breed="Collie" } } }
                    };

                // This query demonstrates how to obtain a sequence of
                // the names of all the pets whose breed is "Collie", while
                // keeping an association with the owner that owns the pet.
                var query =
                    petOwners.AsQueryable()
                    // Create a sequence of ALL the Pet objects. Then
                    // project an anonymous type that consists of each
                    // Pet in the new sequence and the PetOwner object
                    // from the initial array that corresponds to that pet.
                   .SelectMany(owner => owner.Pets,
                               (owner, pet) => new { owner, pet })
                    // Filter the sequence of anonymous types to only
                    // keep pets whose breed is "Collie".
                    .Where(ownerAndPet => ownerAndPet.pet.Breed == "Collie")
                    // Project an anonymous type that consists
                    // of the pet owner's name and the pet's name.
                    .Select(ownerAndPet => new
                    {
                        Owner = ownerAndPet.owner.Name,
                        Pet = ownerAndPet.pet.Name
                    });

                // Print the results.
                foreach (var obj in query)
                    Console.WriteLine(obj);
            }

            /* This code produces the following output:

                { Owner = Ashkenazi, Pet = Walker }
                { Owner = Price, Pet = Diesel }
                { Owner = Hines, Pet = Dusty }
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SelectMany 重载
System.Linq 命名空间


Queryable ..::.SelectMany <(Of <(TSource, TCollection, TResult >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32, IEnumerable <(Of <(TCollection >)>) >)>) >)>), Expression <(Of <(Func <(Of <(TSource, TCollection, TResult >)>) >)>))

Queryable
.
.
::
.
SelectMany
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
>
)
>
)
)
Queryable 类

将序列中的每个元素投影到一个 IEnumerable<(Of <(T>)>)，它合并了生成它的源元素的索引。对每个中间序列的每个元素调用结果选择器函数，并且将结果值合并为一个一维序列，并将其返回。 将序列中的每个元素投影到一个 IEnumerable<(Of <(T>)>)，它合并了生成它的源元素的索引。对每个中间序列的每个元素调用结果选择器函数，并且将结果值合并为一个一维序列，并将其返回。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SelectMany(Of TSource, TCollection, TResult) ( _
    source As IQueryable(Of TSource), _
    collectionSelector As Expression(Of Func(Of TSource, Integer, IEnumerable(Of TCollection))), _
    resultSelector As Expression(Of Func(Of TSource, TCollection, TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> SelectMany<TSource, TCollection, TResult>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int, IEnumerable<TCollection>>> collectionSelector,
    Expression<Func<TSource, TCollection, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TCollection, typename TResult>
static IQueryable<TResult>^ SelectMany(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int, IEnumerable<TCollection>^>^>^ collectionSelector,
    Expression<Func<TSource, TCollection, TResult>^>^ resultSelector
)
static member SelectMany :
        source:IQueryable<'TSource> *
        collectionSelector:Expression<Func<'TSource, int, IEnumerable<'TCollection>>> *
        resultSelector:Expression<Func<'TSource, 'TCollection, 'TResult>> -> IQueryable<'TResult>

类型参数

TSource

source 中的元素的类型。

TCollection

由 collectionSelector 表示的函数收集的中间元素类型。

TResult

结果序列的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个要投影的值序列。
collectionSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, IEnumerable
<
(Of
<
(
TCollection
>
)
>
)
>
)
>
)
>
)
>
)

要应用于输入序列的每个元素的投影函数；此函数的第二个参数表示源元素的索引。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TCollection, TResult
>
)
>
)
>
)
>
)

一个应用于每个中间序列的每个元素的投影函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素是通过对 source 的每个元素调用一对多投影函数 collectionSelector，然后将这些序列元素的每一个及其对应的 source 元素映射到结果元素中的结果。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 collectionSelector 或 resultSelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。每个可枚举的结果合并了源元素的索引。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。每个可枚举的结果合并了源元素的索引。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。每个可枚举的结果合并了源元素的索引。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。每个可枚举的结果合并了源元素的索引。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。 因执行表示调用 SelectMany<(Of <(TSource, TCollection, TResult>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, IEnumerable<(Of <(TCollection>)>)>)>)>)>), Expression<(Of <(Func<(Of <(TSource, TCollection, TResult>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 的每个元素调用 collectionSelector 以将它投影到一个可枚举表中。每个可枚举的结果合并了源元素的索引。然后对每个中间序列中的每个元素调用由 resultSelector 表示的函数。结果值被连接为一个一维序列。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SelectMany 重载
System.Linq 命名空间


Queryable ..::.SequenceEqual 方法

Queryable
.
.
::
.
SequenceEqual 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

确定两个序列是否相等。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Queryable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用默认的相等比较器比较元素以确定两个序列是否相等。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource) _
) As Boolean
public static bool SequenceEqual<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2
)
static member SequenceEqual :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> -> bool

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素用于与 source2 中的元素进行比较。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素用于与第一个序列中的元素进行比较。

返回值

类型： System Boolean
如果两个源序列的长度相等并且它们的对应元素也相等，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是确定两个源序列是否相等。 因执行表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是确定两个源序列是否相等。

下面的代码示例演示如何使用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 确定两个序列是否相等。在本示例中，这两个序列相等。 下面的代码示例演示如何使用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 确定两个序列是否相等。在本示例中，这两个序列相等。

    Class Pet
        Public Name As String
        Public Age As Integer
    End Class

    Shared Sub SequenceEqualEx1()
        Dim pet1 As New Pet With {.Name = "Turbo", .Age = 2}
        Dim pet2 As New Pet With {.Name = "Peanut", .Age = 8}

        ' Create two lists of pets.
        Dim pets1 As New List(Of Pet)(New Pet() {pet1, pet2})
        Dim pets2 As New List(Of Pet)(New Pet() {pet1, pet2})

        ' Determine if the lists are equal.
        Dim equal As Boolean = pets1.AsQueryable().SequenceEqual(pets2)

        ' Display the output.
        Dim text As String = IIf(equal, "are", "are not")
        MsgBox("The lists " & text & " equal.")
    End Sub

    'This code produces the following output:

    'The lists are equal.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void SequenceEqualEx1()
            {
                Pet pet1 = new Pet { Name = "Turbo", Age = 2 };
                Pet pet2 = new Pet { Name = "Peanut", Age = 8 };

                // Create two lists of pets.
                List<Pet> pets1 = new List<Pet> { pet1, pet2 };
                List<Pet> pets2 = new List<Pet> { pet1, pet2 };

                // Determine if the lists are equal.
                bool equal = pets1.AsQueryable().SequenceEqual(pets2);

                Console.WriteLine(
                    "The lists {0} equal.",
                    equal ? "are" : "are not");
            }

            /*
                This code produces the following output:

                The lists are equal.
            */

下面的代码示例比较两个不相等的序列。

    Class Pet
        Public Name As String
        Public Age As Integer
    End Class

    Shared Sub SequenceEqualEx2()
        Dim pet1 As New Pet With {.Name = "Turbo", .Age = 2}
        Dim pet2 As New Pet With {.Name = "Peanut", .Age = 8}

        ' Create two lists of pets.
        Dim pets1 As New List(Of Pet)()
        pets1.Add(pet1)
        pets1.Add(pet2)

        Dim pets2 As New List(Of Pet)()
        pets2.Add(New Pet With {.Name = "Turbo", .Age = 2})
        pets2.Add(New Pet With {.Name = "Peanut", .Age = 8})

        ' Determine if the lists are equal.
        Dim equal As Boolean = pets1.AsQueryable().SequenceEqual(pets2)

        ' Display the output.
        Dim text As String = IIf(equal, "are", "are not")
        MsgBox("The lists " & text & " equal.")
    End Sub

    ' This code produces the following output:

    ' The lists are not equal.

            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            public static void SequenceEqualEx2()
            {
                Pet pet1 = new Pet() { Name = "Turbo", Age = 2 };
                Pet pet2 = new Pet() { Name = "Peanut", Age = 8 };

                // Create two lists of pets.
                List<Pet> pets1 = new List<Pet> { pet1, pet2 };
                List<Pet> pets2 = new List<Pet> {
                    new Pet { Name = "Turbo", Age = 2 },
                    new Pet { Name = "Peanut", Age = 8 }
                };

                // Determine if the lists are equal.
                bool equal = pets1.AsQueryable().SequenceEqual(pets2);

                Console.WriteLine("The lists {0} equal.", equal ? "are" : "are NOT");
            }

            /*
                This code produces the following output:

                The lists are NOT equal.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SequenceEqual 重载
System.Linq 命名空间


Queryable ..::.SequenceEqual <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Queryable
.
.
::
.
SequenceEqual
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 比较元素以确定两个序列是否相等。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SequenceEqual(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As Boolean
public static bool SequenceEqual<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static bool SequenceEqual(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2,
    IEqualityComparer<TSource>^ comparer
)
static member SequenceEqual :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> bool

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，其元素用于与 source2 中的元素进行比较。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

一个 IEnumerable<(Of <(T>)>)，其元素用于与第一个序列中的元素进行比较。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

一个用于比较元素的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System Boolean
如果两个源序列的长度相等并且它们的对应元素也相等，则为 true；否则为 false。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是通过使用 comparer 比较元素以确定两个源序列是否相等。 因执行表示调用 SequenceEqual<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是通过使用 comparer 比较元素以确定两个源序列是否相等。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SequenceEqual 重载
System.Linq 命名空间


Queryable ..::.Single 方法

Queryable
.
.
::
.
Single 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回值序列的单个特定元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Single <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
Single
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列的唯一元素；如果该序列并非恰好包含一个元素，则会引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Single(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource Single<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Single(
    IQueryable<TSource>^ source
)
static member Single :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的 IQueryable<(Of <(T>)>)。

返回值

类型：TSource
输入序列的单个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | source具有多个元素。

Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的唯一元素。 因执行表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的唯一元素。

下面的代码示例演示如何使用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 选择数组的唯一元素。

        ' Create two arrays.
        Dim fruits1() As String = {"orange"}
        Dim fruits2() As String = {"orange", "apple"}

        ' Get the only item in the first array.
        Dim result As String = fruits1.AsQueryable().Single()

        ' Display the result.
        MsgBox("First query: " & result)

        Try
            ' Try to get the only item in the second array.
            Dim fruit2 As String = fruits2.AsQueryable().Single()
            MsgBox("Second query: " + fruit2)
        Catch
            MsgBox("Second query: The collection does not contain exactly one element.")
        End Try

        ' This code produces the following output:

        ' First query: orange
        ' Second query: The collection does not contain exactly one element.

            // Create two arrays.
            string[] fruits1 = { "orange" };
            string[] fruits2 = { "orange", "apple" };

            // Get the only item in the first array.
            string fruit1 = fruits1.AsQueryable().Single();

            Console.WriteLine("First query: " + fruit1);

            try
            {
                // Try to get the only item in the second array.
                string fruit2 = fruits2.AsQueryable().Single();
                Console.WriteLine("Second query: " + fruit2);
            }
            catch (System.InvalidOperationException)
            {
                Console.WriteLine(
                    "Second query: The collection does not contain exactly one element."
                    );
            }

            /*
                This code produces the following output:

                First query: orange
                Second query: The collection does not contain exactly one element
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Single 重载
System.Linq 命名空间


Queryable ..::.Single <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
Single
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回序列中满足指定条件的唯一元素；如果有多个这样的元素存在，则会引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Single(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As TSource
public static TSource Single<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource Single(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member Single :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回单个元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试元素是否满足条件的函数。

返回值

类型：TSource
满足 predicate 中条件的输入序列中的单个元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 没有元素满足 predicate 中的条件。 - 或 - 多个元素满足 predicate 中的条件。 - 或 - 源序列为空。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的唯一元素。 因执行表示调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定的条件的唯一元素。

下面的代码示例演示如何使用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 选择数组中满足条件的唯一元素。

        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Get the only string in the array whose length is greater than 10.
        Dim result As String = _
            fruits.AsQueryable().Single(Function(fruit) fruit.Length > 10)

        ' Display the result.
        MsgBox("First Query: " & result)

        Try
            ' Try to get the only string in the array
            ' whose length is greater than 15.
            Dim fruit2 As String = fruits.AsQueryable().Single(Function(fruit) fruit.Length > 15)
            MsgBox("Second Query: " + fruit2)
        Catch
            Dim text As String = "Second Query: The collection does not contain "
            text = text & "exactly one element whose length is greater than 15."
            MsgBox(text)
        End Try

        ' This code produces the following output:

        ' First Query: passionfruit
        ' Second Query: The collection does not contain exactly one
        '   element whose length is greater than 15.

            string[] fruits = { "apple", "banana", "mango",
                                  "orange", "passionfruit", "grape" };

            // Get the only string in the array whose length is greater than 10.
            string fruit1 = fruits.AsQueryable().Single(fruit => fruit.Length > 10);

            Console.WriteLine("First Query: " + fruit1);

            try
            {
                // Try to get the only string in the array
                // whose length is greater than 15.
                string fruit2 = fruits.AsQueryable().Single(fruit => fruit.Length > 15);
                Console.WriteLine("Second Query: " + fruit2);
            }
            catch (System.InvalidOperationException)
            {
                Console.Write("Second Query: The collection does not contain ");
                Console.WriteLine("exactly one element whose length is greater than 15.");
            }

            /*
                This code produces the following output:

                First Query: passionfruit
                Second Query: The collection does not contain exactly one
                element whose length is greater than 15.
             */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Single 重载
System.Linq 命名空间


Queryable ..::.SingleOrDefault 方法

Queryable
.
.
::
.
SingleOrDefault 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

返回序列中单个特定元素，如果未找到这样的元素，则返回默认值。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.SingleOrDefault <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>))

Queryable
.
.
::
.
SingleOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

返回序列中的唯一元素；如果该序列为空，则返回默认值；如果该序列包含多个元素，此方法将引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SingleOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource) _
) As TSource
public static TSource SingleOrDefault<TSource>(
    this IQueryable<TSource> source
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource SingleOrDefault(
    IQueryable<TSource>^ source
)
static member SingleOrDefault :
        source:IQueryable<'TSource> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要返回其单个元素的 IQueryable<(Of <(T>)>)。

返回值

类型：TSource
返回输入序列的单个元素；如果序列不包含任何元素，则返回 default(TSource)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的唯一元素；如果 source 为空，则返回默认值。 因执行表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的唯一元素；如果 source 为空，则返回默认值。

SingleOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法。 SingleOrDefault 方法不提供任何方式来指定默认值。如果您希望指定一个 default(TSource) 之外的默认值，请使用“示例”部分中介绍的 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法。

下面的代码示例演示如何使用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 选择数组的唯一元素。第二个查询演示当序列不是恰好包含一个元素时，SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 将返回默认值。 下面的代码示例演示如何使用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 选择数组的唯一元素。第二个查询演示当序列不是恰好包含一个元素时，SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 将返回默认值。

        ' Create two arrays. The second is empty.
        Dim fruits1() As String = {"orange"}
        Dim fruits2() As String = {}

        ' Get the only item in the first array, or else
        ' the default value for type string (null).
        Dim fruit1 As String = fruits1.AsQueryable().SingleOrDefault()
        MsgBox("First Query: " + fruit1)

        ' Get the only item in the second array, or else
        ' the default value for type string (null).
        Dim fruit2 As String = fruits2.AsQueryable().SingleOrDefault()
        MsgBox("Second Query: " & _
            IIf(String.IsNullOrEmpty(fruit2), "No such string!", fruit2))

        ' This code produces the following output:

        ' First Query: orange
        ' Second Query: No such string!

            // Create two arrays. The second is empty.
            string[] fruits1 = { "orange" };
            string[] fruits2 = { };

            // Get the only item in the first array, or else
            // the default value for type string (null).
            string fruit1 = fruits1.AsQueryable().SingleOrDefault();
            Console.WriteLine("First Query: " + fruit1);

            // Get the only item in the second array, or else
            // the default value for type string (null).
            string fruit2 = fruits2.AsQueryable().SingleOrDefault();
            Console.WriteLine("Second Query: " +
                (String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2));

            /*
                This code produces the following output:

                First Query: orange
                Second Query: No such string!
            */

如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。 如果集合不包含任何元素，则有时 default(TSource) 的值不是您希望使用的默认值。如果集合为空，则与其检查结果是否包含不需要的默认值，然后根据需要更改它，不如使用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 方法来指定您希望使用的默认值。然后调用 Single<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>)) 来获取元素。下面的代码示例使用这两种方式，在页码的集合为空时获取默认值 1。由于整数的默认值为 0，通常不是一个有效的页码，因此必须指定默认值为 1。在查询完成之后，检查第一个结果变量是否为不需要的默认值。通过调用 DefaultIfEmpty<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), TSource) 将默认值指定为 1 来获取第二个结果变量。

        Dim pageNumbers() As Integer = {}

        ' Setting the default value to 1 after the query.
        Dim pageNumber1 As Integer = pageNumbers.AsQueryable().SingleOrDefault()
        If pageNumber1 = 0 Then
            pageNumber1 = 1
        End If
        MsgBox(String.Format("The value of the pageNumber1 variable is {0}", pageNumber1))

        ' Setting the default value to 1 by using DefaultIfEmpty() in the query.
        Dim pageNumber2 As Integer = pageNumbers.AsQueryable().DefaultIfEmpty(1).Single()
        MsgBox(String.Format("The value of the pageNumber2 variable is {0}", pageNumber2))

        ' This code produces the following output:

        ' The value of the pageNumber1 variable is 1
        ' The value of the pageNumber2 variable is 1

            int[] pageNumbers = { };

            // Setting the default value to 1 after the query.
            int pageNumber1 = pageNumbers.AsQueryable().SingleOrDefault();
            if (pageNumber1 == 0)
            {
                pageNumber1 = 1;
            }
            Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);

            // Setting the default value to 1 by using DefaultIfEmpty() in the query.
            int pageNumber2 = pageNumbers.AsQueryable().DefaultIfEmpty(1).Single();
            Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);

            /*
             This code produces the following output:

             The value of the pageNumber1 variable is 1
             The value of the pageNumber2 variable is 1
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SingleOrDefault 重载
System.Linq 命名空间


Queryable ..::.SingleOrDefault <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
SingleOrDefault
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

返回序列中满足指定条件的唯一元素；如果这类元素不存在，则返回默认值；如果有多个元素满足该条件，此方法将引发异常。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SingleOrDefault(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As TSource
public static TSource SingleOrDefault<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static TSource SingleOrDefault(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member SingleOrDefault :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> 'TSource

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回单个元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试元素是否满足条件的函数。

返回值

类型：TSource
返回满足 predicate 中条件的输入序列的单个元素；如果未找到这样的元素，则返回 default(TSource)。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定条件的唯一元素；如果这样的元素不存在，则返回默认值。 因执行表示调用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中满足 predicate 指定条件的唯一元素；如果这样的元素不存在，则返回默认值。

下面的代码示例演示如何使用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 选择数组中满足条件的唯一元素。第二个查询演示当序列不是恰好包含一个满足条件的元素时，SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 将返回默认值。 下面的代码示例演示如何使用 SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 选择数组中满足条件的唯一元素。第二个查询演示当序列不是恰好包含一个满足条件的元素时，SingleOrDefault<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 将返回默认值。

        Dim fruits() As String = _
            {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

        ' Get the single string in the array whose length is greater
        ' than 10, or else the default value for type string (null).
        Dim fruit1 As String = _
            fruits.AsQueryable().SingleOrDefault(Function(fruit) fruit.Length > 10)
        ' Display the result.
        MsgBox("First Query: " & fruit1)

        ' Get the single string in the array whose length is greater
        ' than 15, or else the default value for type string (null).
        Dim fruit2 As String = _
            fruits.AsQueryable().SingleOrDefault(Function(fruit) fruit.Length > 15)
        MsgBox("Second Query: " & _
            IIf(String.IsNullOrEmpty(fruit2), "No such string!", fruit2))

        ' This code produces the following output:

        ' First Query: passionfruit
        ' Second Query: No such string!

            string[] fruits = { "apple", "banana", "mango",
                                  "orange", "passionfruit", "grape" };

            // Get the single string in the array whose length is greater
            // than 10, or else the default value for type string (null).
            string fruit1 =
                fruits.AsQueryable().SingleOrDefault(fruit => fruit.Length > 10);
            Console.WriteLine("First Query: " + fruit1);

            // Get the single string in the array whose length is greater
            // than 15, or else the default value for type string (null).
            string fruit2 =
               fruits.AsQueryable().SingleOrDefault(fruit => fruit.Length > 15);
            Console.WriteLine("Second Query: " +
                (String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2));

            /*
                This code produces the following output:

                First Query: passionfruit
                Second Query: No such string!
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SingleOrDefault 重载
System.Linq 命名空间


Queryable ..::.Skip <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
Skip
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

跳过序列中指定数量的元素，然后返回剩余的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Skip(Of TSource) ( _
    source As IQueryable(Of TSource), _
    count As Integer _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Skip<TSource>(
    this IQueryable<TSource> source,
    int count
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Skip(
    IQueryable<TSource>^ source,
    int count
)
static member Skip :
        source:IQueryable<'TSource> *
        count:int -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
count
类型： System Int32
返回剩余元素前要跳过的元素数量。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含输入序列中指定索引后出现的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是跳过 source 中的前 count 个元素并返回剩余元素。 因执行表示调用 Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是跳过 source 中的前 count 个元素并返回剩余元素。

下面的代码示例演示如何使用 Skip<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 跳过排序数组中的指定数量的元素，并返回剩余元素。

        Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

        ' Sort the grades in descending order and
        ' get all except the first three.
        Dim lowerGrades = grades.AsQueryable() _
            .OrderByDescending(Function(g) g) _
            .Skip(3)

        Dim output As New System.Text.StringBuilder
        output.AppendLine("All grades except the top three are:")
        For Each grade As Integer In lowerGrades
            output.AppendLine(grade)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' All grades except the top three are:
        ' 82
        ' 70
        ' 59
        ' 56

            int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

            // Sort the grades in descending order and
            // get all except the first three.
            IEnumerable<int> lowerGrades =
                grades.AsQueryable().OrderByDescending(g => g).Skip(3);

            Console.WriteLine("All grades except the top three are:");
            foreach (int grade in lowerGrades)
                Console.WriteLine(grade);

            /*
                This code produces the following output:

                All grades except the top three are:
                82
                70
                59
                56
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.SkipWhile 方法

Queryable
.
.
::
.
SkipWhile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.SkipWhile <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
SkipWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SkipWhile(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> SkipWhile<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ SkipWhile(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member SkipWhile :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含从未通过 predicate 指定测试的线性系列中的第一个元素开始的 source 中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。 因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。 因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。

下面的代码示例演示如何使用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 在条件为 true 的情况下跳过数组的元素。

        Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

        ' Get all grades less than 80 by first  sorting the grades
        ' in descending order and then taking all the grades that
        ' occur after the first grade that is less than 80.
        Dim lowerGrades = grades.AsQueryable() _
            .OrderByDescending(Function(grade) grade) _
            .SkipWhile(Function(grade) grade >= 80)

        Dim output As New System.Text.StringBuilder
        output.AppendLine("All grades below 80:")
        For Each grade As Integer In lowerGrades
            output.AppendLine(grade)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' All grades below 80:
        ' 70
        ' 59
        ' 56

            int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

            // Get all grades less than 80 by first
            // sorting the grades in descending order and then
            // taking all the grades after the first grade
            // that is less than 80.
            IEnumerable<int> lowerGrades =
                grades.AsQueryable()
                .OrderByDescending(grade => grade)
                .SkipWhile(grade => grade >= 80);

            Console.WriteLine("All grades below 80:");
            foreach (int grade in lowerGrades)
                Console.WriteLine(grade);

            /*
                This code produces the following output:

                All grades below 80:
                70
                59
                56
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SkipWhile 重载
System.Linq 命名空间


Queryable ..::.SkipWhile <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32, Boolean >)>) >)>))

Queryable
.
.
::
.
SkipWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。将在谓词函数的逻辑中使用元素的索引。 只要满足指定的条件，就跳过序列中的元素，然后返回剩余元素。将在谓词函数的逻辑中使用元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function SkipWhile(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> SkipWhile<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ SkipWhile(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int, bool>^>^ predicate
)
static member SkipWhile :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, int, bool>> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从中返回元素的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数；此函数的第二个参数表示源元素的索引。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含从未通过 predicate 指定测试的线性系列中的第一个元素开始的 source 中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。返回该元素和所有剩余元素。每个源元素的索引都作为 predicate 的第二个参数提供。

下面的代码示例演示如何使用 SkipWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 在满足取决于元素索引的条件时跳过数组的元素。

        Dim amounts() As Integer = {5000, 2500, 9000, 8000, _
                            6500, 4000, 1500, 5500}

        ' Skip over amounts in the array until the first amount
        ' that is less than or equal to the product of its
        ' index in the array and 1000. Take the remaining items.
        Dim query = amounts.AsQueryable() _
            .SkipWhile(Function(amount, index) amount > index * 1000)

        Dim output As New System.Text.StringBuilder
        For Each amount As Integer In query
            output.AppendLine(amount)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' 4000
        ' 1500
        ' 5500

            int[] amounts = { 5000, 2500, 9000, 8000,
                                6500, 4000, 1500, 5500 };

            // Skip over amounts in the array until the first amount
            // that is less than or equal to the product of its
            // index in the array and 1000. Take the remaining items.
            IEnumerable<int> query =
                amounts.AsQueryable()
                .SkipWhile((amount, index) => amount > index * 1000);

            foreach (int amount in query)
                Console.WriteLine(amount);

            /*
                This code produces the following output:

                4000
                1500
                5500
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
SkipWhile 重载
System.Linq 命名空间


Queryable ..::.Sum 方法

Queryable
.
.
::
.
Sum 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

计算数值序列之和。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Decimal >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Decimal
>
)
>
)
)
Queryable 类

计算 Decimal 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Decimal) _
) As Decimal
public static decimal Sum(
    this IQueryable<decimal> source
)
[ExtensionAttribute]
public:
static Decimal Sum(
    IQueryable<Decimal>^ source
)
static member Sum :
        source:IQueryable<decimal> -> decimal

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Decimal
>
)
>
)

一个要计算和的 Decimal 值序列。

返回值

类型： System Decimal
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

Sum(IQueryable<(Of <(Decimal>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Decimal>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Decimal>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Decimal>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Decimal>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Decimal>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Single>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

        Dim sum As Single = numbers.AsQueryable().Sum()

        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:

        ' The sum of the numbers is 635.13.

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.AsQueryable().Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
                This code produces the following output:

                The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Nullable <(Of <(Decimal >)>) >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Decimal 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Nullable(Of Decimal)) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Sum(
    this IQueryable<Nullable<decimal>> source
)
[ExtensionAttribute]
public:
static Nullable<Decimal> Sum(
    IQueryable<Nullable<Decimal>>^ source
)
static member Sum :
        source:IQueryable<Nullable<decimal>> -> Nullable<decimal>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Decimal 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

Sum(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

        MsgBox("Total points earned: " & sum)

        'This code produces the following output:

        'Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.AsQueryable().Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
                This code produces the following output:

                Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Double >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Double
>
)
>
)
)
Queryable 类

计算 Double 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Double) _
) As Double
public static double Sum(
    this IQueryable<double> source
)
[ExtensionAttribute]
public:
static double Sum(
    IQueryable<double>^ source
)
static member Sum :
        source:IQueryable<float> -> float

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Double
>
)
>
)

一个要计算和的 Double 值序列。

返回值

类型： System Double
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Sum(IQueryable<(Of <(Double>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Double>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Double>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Double>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Double>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Double>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Single>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

        Dim sum As Single = numbers.AsQueryable().Sum()

        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:

        ' The sum of the numbers is 635.13.

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.AsQueryable().Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
                This code produces the following output:

                The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Nullable <(Of <(Double >)>) >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Double 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Nullable(Of Double)) _
) As Nullable(Of Double)
public static Nullable<double> Sum(
    this IQueryable<Nullable<double>> source
)
[ExtensionAttribute]
public:
static Nullable<double> Sum(
    IQueryable<Nullable<double>>^ source
)
static member Sum :
        source:IQueryable<Nullable<float>> -> Nullable<float>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Double 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Sum(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

        MsgBox("Total points earned: " & sum)

        'This code produces the following output:

        'Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.AsQueryable().Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
                This code produces the following output:

                Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Int32 >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Int32
>
)
>
)
)
Queryable 类

计算 Int32 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Integer) _
) As Integer
public static int Sum(
    this IQueryable<int> source
)
[ExtensionAttribute]
public:
static int Sum(
    IQueryable<int>^ source
)
static member Sum :
        source:IQueryable<int> -> int

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Int32
>
)
>
)

一个要计算和的 Int32 值序列。

返回值

类型： System Int32
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

Sum(IQueryable<(Of <(Int32>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Int32>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Int32>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Int32>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Int32>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Int32>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Single>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

        Dim sum As Single = numbers.AsQueryable().Sum()

        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:

        ' The sum of the numbers is 635.13.

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.AsQueryable().Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
                This code produces the following output:

                The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Nullable <(Of <(Int32 >)>) >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int32 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Nullable(Of Integer)) _
) As Nullable(Of Integer)
public static Nullable<int> Sum(
    this IQueryable<Nullable<int>> source
)
[ExtensionAttribute]
public:
static Nullable<int> Sum(
    IQueryable<Nullable<int>>^ source
)
static member Sum :
        source:IQueryable<Nullable<int>> -> Nullable<int>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Int32 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

Sum(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

        MsgBox("Total points earned: " & sum)

        'This code produces the following output:

        'Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.AsQueryable().Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
                This code produces the following output:

                Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Int64 >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Int64
>
)
>
)
)
Queryable 类

计算 Int64 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Long) _
) As Long
public static long Sum(
    this IQueryable<long> source
)
[ExtensionAttribute]
public:
static long long Sum(
    IQueryable<long long>^ source
)
static member Sum :
        source:IQueryable<int64> -> int64

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Int64
>
)
>
)

一个要计算和的 Int64 值序列。

返回值

类型： System Int64
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

Sum(IQueryable<(Of <(Int64>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Int64>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Int64>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Int64>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Int64>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Int64>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Single>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

        Dim sum As Single = numbers.AsQueryable().Sum()

        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:

        ' The sum of the numbers is 635.13.

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.AsQueryable().Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
                This code produces the following output:

                The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Nullable <(Of <(Int64 >)>) >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int64 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Nullable(Of Long)) _
) As Nullable(Of Long)
public static Nullable<long> Sum(
    this IQueryable<Nullable<long>> source
)
[ExtensionAttribute]
public:
static Nullable<long long> Sum(
    IQueryable<Nullable<long long>>^ source
)
static member Sum :
        source:IQueryable<Nullable<int64>> -> Nullable<int64>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Int64 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

Sum(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列的值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请将源序列的元素替换为相应数字类型的元素。

        Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

        MsgBox("Total points earned: " & sum)

        'This code produces the following output:

        'Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.AsQueryable().Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
                This code produces the following output:

                Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Nullable <(Of <(Single >)>) >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Single 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Nullable(Of Single)) _
) As Nullable(Of Single)
public static Nullable<float> Sum(
    this IQueryable<Nullable<float>> source
)
[ExtensionAttribute]
public:
static Nullable<float> Sum(
    IQueryable<Nullable<float>>^ source
)
static member Sum :
        source:IQueryable<Nullable<float32>> -> Nullable<float32>

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)

要计算和的可以为 null 的 Single 值序列。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Nullable<(Of <(Single>)>)>)>)) 计算序列的值之和。

        Dim points As Nullable(Of Single)() = {Nothing, 0, 92.83F, Nothing, 100.0F, 37.46F, 81.1F}

        Dim sum As Nullable(Of Single) = points.AsQueryable().Sum()

        MsgBox("Total points earned: " & sum)

        'This code produces the following output:

        'Total points earned: 311.39

            float?[] points = { null, 0, 92.83F, null, 100.0F, 37.46F, 81.1F };

            float? sum = points.AsQueryable().Sum();

            Console.WriteLine("Total points earned: {0}", sum);

            /*
                This code produces the following output:

                Total points earned: 311.39
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum 方法 (IQueryable <(Of <(Single >)>))

Queryable
.
.
::
.
Sum 方法 (IQueryable
<
(Of
<
(
Single
>
)
>
)
)
Queryable 类

计算 Single 值序列之和。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum ( _
    source As IQueryable(Of Single) _
) As Single
public static float Sum(
    this IQueryable<float> source
)
[ExtensionAttribute]
public:
static float Sum(
    IQueryable<float>^ source
)
static member Sum :
        source:IQueryable<float32> -> float32

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
Single
>
)
>
)

一个要计算和的 Single 值序列。

返回值

类型： System Single
序列值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Sum(IQueryable<(Of <(Single>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Single>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum(IQueryable<(Of <(Single>)>)) 方法生成 MethodCallExpression，表示调用 Sum(IQueryable<(Of <(Single>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum(IQueryable<(Of <(Single>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。 因执行表示调用 Sum(IQueryable<(Of <(Single>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回 source 中的值之和。

下面的代码示例演示如何使用 Sum(IQueryable<(Of <(Single>)>)) 计算序列的值之和。

        Dim numbers As New List(Of Single)(New Single() {43.68F, 1.25F, 583.7F, 6.5F})

        Dim sum As Single = numbers.AsQueryable().Sum()

        MsgBox("The sum of the numbers is " & sum)

        ' This code produces the following output:

        ' The sum of the numbers is 635.13.

            List<float> numbers = new List<float> { 43.68F, 1.25F, 583.7F, 6.5F };

            float sum = numbers.AsQueryable().Sum();

            Console.WriteLine("The sum of the numbers is {0}.", sum);

            /*
                This code produces the following output:

                The sum of the numbers is 635.13.
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Decimal >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Decimal 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Decimal)) _
) As Decimal
public static decimal Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, decimal>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Decimal Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Decimal>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, decimal>> -> decimal

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Decimal
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Decimal
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Decimal>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Double >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Double
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Double 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Double)) _
) As Double
public static double Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, double>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static double Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, double>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, float>> -> float

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Double
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Double
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32 >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Int32 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Integer)) _
) As Integer
public static int Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static int Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, int>> -> int

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Int32
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int64 >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int64
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Int64 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Long)) _
) As Long
public static long Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, long>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static long long Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, long long>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, int64>> -> int64

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int64
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Int64
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int64>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Decimal >)>) >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Decimal 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Decimal))) _
) As Nullable(Of Decimal)
public static Nullable<decimal> Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<decimal>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<Decimal> Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<Decimal>>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<decimal>>> -> Nullable<decimal>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Decimal
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Decimal
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Decimal>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Double >)>) >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Double 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Double))) _
) As Nullable(Of Double)
public static Nullable<double> Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<double>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<double> Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<double>>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<float>>> -> Nullable<float>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Double
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Double
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Double>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Int32 >)>) >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int32 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Integer))) _
) As Nullable(Of Integer)
public static Nullable<int> Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<int>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<int> Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<int>>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<int>>> -> Nullable<int>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int32
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Int32
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int32>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Int64 >)>) >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Int64 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Long))) _
) As Nullable(Of Long)
public static Nullable<long> Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<long>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<long long> Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<long long>>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<int64>>> -> Nullable<int64>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Int64
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Int64
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
OverflowException | 和大于 MaxValue。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Int64>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Nullable <(Of <(Single >)>) >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
>
)
>
)
)
Queryable 类

计算可以为 null 的 Single 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Nullable(Of Single))) _
) As Nullable(Of Single)
public static Nullable<float> Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, Nullable<float>>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static Nullable<float> Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, Nullable<float>>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, Nullable<float32>>> -> Nullable<float32>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Nullable
<
(Of
<
(
Single
>
)
>
)
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Nullable
<
(Of
<
(
Single
>
)
>
)

投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Nullable<(Of <(Single>)>)>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Sum <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Single >)>) >)>))

Queryable
.
.
::
.
Sum
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Single
>
)
>
)
>
)
>
)
)
Queryable 类

计算 Single 值序列之和，而该序列是通过对输入序列中的每个元素调用投影函数而获得的。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Sum(Of TSource) ( _
    source As IQueryable(Of TSource), _
    selector As Expression(Of Func(Of TSource, Single)) _
) As Single
public static float Sum<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, float>> selector
)

[ExtensionAttribute]
public:
generic<typename TSource>
static float Sum(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, float>^>^ selector
)
static member Sum :
        source:IQueryable<'TSource> *
        selector:Expression<Func<'TSource, float32>> -> float32

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 TSource 类型的值序列。
selector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Single
>
)
>
)
>
)
>
)

要应用于每个元素的投影函数。

返回值

类型： System Single
投影值之和。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 selector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 Execute<(Of <(TResult>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。 因执行表示调用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Single>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是对 source 中的每个元素调用 selector，并返回结果值之和。

下面的代码示例演示如何使用 Sum<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Double>)>)>)>)) 计算序列的投影值之和。

说明 说明

此代码示例使用此重载方法的重载，该重载与本主题介绍的特定重载不同。若要将该示例扩展到此主题，请更改 selector 函数的函数体。

    Structure Package
        Public Company As String
        Public Weight As Double
    End Structure

    Shared Sub SumEx3()
        Dim packages As New List(Of Package)(New Package() { _
                New Package With {.Company = "Coho Vineyard", .Weight = 25.2}, _
                  New Package With {.Company = "Lucerne Publishing", .Weight = 18.7}, _
                  New Package With {.Company = "Wingtip Toys", .Weight = 6.0}, _
                  New Package With {.Company = "Adventure Works", .Weight = 33.8}})

        ' Calculate the sum of all package weights.
        Dim totalWeight As Double = packages.AsQueryable().Sum(Function(pkg) pkg.Weight)

        MsgBox("The total weight of the packages is: " & totalWeight)
    End Sub

    'This code produces the following output:

    'The total weight of the packages is: 83.7

            class Package
            {
                public string Company { get; set; }
                public double Weight { get; set; }
            }

            public static void SumEx3()
            {
                List<Package> packages =
                    new List<Package>
                        { new Package { Company = "Coho Vineyard", Weight = 25.2 },
                          new Package { Company = "Lucerne Publishing", Weight = 18.7 },
                          new Package { Company = "Wingtip Toys", Weight = 6.0 },
                          new Package { Company = "Adventure Works", Weight = 33.8 } };

                // Calculate the sum of all package weights.
                double totalWeight = packages.AsQueryable().Sum(pkg => pkg.Weight);

                Console.WriteLine("The total weight of the packages is: {0}", totalWeight);
            }

            /*
                This code produces the following output:

                The total weight of the packages is: 83.7
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Sum 重载
System.Linq 命名空间


Queryable ..::.Take <(Of <(TSource >)>) 方法

Queryable
.
.
::
.
Take
<
(Of
<
(
TSource
>
)
>
)
方法
Queryable 类

从序列的开头返回指定数量的连续元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Take(Of TSource) ( _
    source As IQueryable(Of TSource), _
    count As Integer _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Take<TSource>(
    this IQueryable<TSource> source,
    int count
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Take(
    IQueryable<TSource>^ source,
    int count
)
static member Take :
        source:IQueryable<'TSource> *
        count:int -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
count
类型： System Int32
要返回的元素数量。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含从 source 开始处的指定数量的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 方法生成 MethodCallExpression，表示调用 Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是采用从 source 开始处的前 count 个元素。 因执行表示调用 Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是采用从 source 开始处的前 count 个元素。

下面的代码示例演示如何使用 Take<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Int32) 从序列的开始处返回元素。

        Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

        ' Sort the grades in descending order and take the first three.
        Dim topThreeGrades = _
            grades.AsQueryable().OrderByDescending(Function(grade) grade).Take(3)

        Dim output As New System.Text.StringBuilder
        output.AppendLine("The top three grades are:")
        For Each grade As Integer In topThreeGrades
            output.AppendLine(grade)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' The top three grades are:
        ' 98
        ' 92
        ' 85

            int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

            // Sort the grades in descending order and take the first three.
            IEnumerable<int> topThreeGrades =
                grades.AsQueryable().OrderByDescending(grade => grade).Take(3);

            Console.WriteLine("The top three grades are:");
            foreach (int grade in topThreeGrades)
                Console.WriteLine(grade);

            /*
                This code produces the following output:

                The top three grades are:
                98
                92
                85
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.TakeWhile 方法

Queryable
.
.
::
.
TakeWhile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

只要满足指定的条件，就会返回序列的元素，然后跳过剩余的元素。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.TakeWhile <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
TakeWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

只要满足指定的条件，就会返回序列的元素。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function TakeWhile(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> TakeWhile<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ TakeWhile(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member TakeWhile :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含不再通过由 predicate 指定测试的元素之前出现的输入序列中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。 因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。 因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。

下面的代码示例演示如何使用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 在条件满足的情况下从序列的开头返回元素。

        Dim fruits() As String = {"apple", "banana", "mango", "orange", _
                              "passionfruit", "grape"}

        ' Take strings from the array until a string
        ' that is equal to "orange" is found.
        Dim query = fruits.AsQueryable() _
            .TakeWhile(Function(fruit) String.Compare("orange", fruit, True) <> 0)

        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next

        ' Display the output.
        MsgBox(output.ToString())

        'This code produces the following output:

        'apple
        'banana
        'mango

            string[] fruits = { "apple", "banana", "mango", "orange",
                                  "passionfruit", "grape" };

            // Take strings from the array until a string
            // that is equal to "orange" is found.
            IEnumerable<string> query =
                fruits.AsQueryable()
                .TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);

            foreach (string fruit in query)
                Console.WriteLine(fruit);

            /*
                This code produces the following output:

                apple
                banana
                mango
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
TakeWhile 重载
System.Linq 命名空间


Queryable ..::.TakeWhile <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32, Boolean >)>) >)>))

Queryable
.
.
::
.
TakeWhile
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

只要满足指定的条件，就会返回序列的元素。将在谓词函数的逻辑中使用元素的索引。 只要满足指定的条件，就会返回序列的元素。将在谓词函数的逻辑中使用元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function TakeWhile(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> TakeWhile<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ TakeWhile(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int, bool>^>^ predicate
)
static member TakeWhile :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, int, bool>> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要从其返回元素的序列。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数；此函数的第二个参数表示源序列中元素的索引。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含不再通过由 predicate 指定测试的元素之前出现的输入序列中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是将 predicate 应用到 source 中的每个元素，直到它找到一个 predicate 返回 false 的元素。在该点之前，它返回所有的元素。每个源元素的索引都作为 predicate 的第二个参数提供。

下面的代码示例演示如何使用 TakeWhile<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 在满足使用元素索引的条件时，从序列的开始处返回元素。

        Dim fruits() As String = _
            {"apple", "passionfruit", "banana", "mango", _
             "orange", "blueberry", "grape", "strawberry"}

        ' Take strings from the array until a string whose length
        ' is less than its index in the array is found.
        Dim query = fruits.AsQueryable() _
            .TakeWhile(Function(fruit, index) fruit.Length >= index)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' apple
        ' passionfruit
        ' banana
        ' mango
        ' orange
        ' blueberry

            string[] fruits = { "apple", "passionfruit", "banana", "mango",
                                  "orange", "blueberry", "grape", "strawberry" };

            // Take strings from the array until a string whose length
            // is less than its index in the array is found.
            IEnumerable<string> query =
                fruits.AsQueryable()
                .TakeWhile((fruit, index) => fruit.Length >= index);

            foreach (string fruit in query)
                Console.WriteLine(fruit);

            /*
                This code produces the following output:

                apple
                passionfruit
                banana
                mango
                orange
                blueberry
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
TakeWhile 重载
System.Linq 命名空间


Queryable ..::.ThenBy 方法

Queryable
.
.
::
.
ThenBy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

按升序对序列中的元素执行后续排序。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.ThenBy <(Of <(TSource, TKey >)>) 方法 (IOrderedQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>))

Queryable
.
.
::
.
ThenBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
)
Queryable 类

根据某个键按升序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenBy(Of TSource, TKey) ( _
    source As IOrderedQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> ThenBy<TSource, TKey>(
    this IOrderedQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ ThenBy(
    IOrderedQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector
)
static member ThenBy :
        source:IOrderedQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，包含要排序的元素。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，根据键对其元素排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。

下面的代码示例演示如何使用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 对序列中的元素执行次要排序。

        Dim fruits() As String = _
            {"grape", "passionfruit", "banana", "mango", _
             "orange", "raspberry", "apple", "blueberry"}

        ' Sort the strings first by their length and then
        ' alphabetically by passing the identity selector function.
        Dim query = fruits.AsQueryable() _
            .OrderBy(Function(fruit) fruit.Length).ThenBy(Function(fruit) fruit)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        'This code produces the following output:

        'apple
        'grape
        'mango
        'banana
        'orange
        'blueberry
        'raspberry
        'passionfruit

            string[] fruits = { "grape", "passionfruit", "banana", "apple",
                                  "orange", "raspberry", "mango", "blueberry" };

            // Sort the strings first by their length and then
            // alphabetically by passing the identity selector function.
            IEnumerable<string> query =
                fruits.AsQueryable()
                .OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);

            foreach (string fruit in query)
                Console.WriteLine(fruit);

            /*
                This code produces the following output:

                apple
                grape
                mango
                banana
                orange
                blueberry
                raspberry
                passionfruit
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
ThenBy 重载
System.Linq 命名空间


Queryable ..::.ThenBy <(Of <(TSource, TKey >)>) 方法 (IOrderedQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), IComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
ThenBy
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

使用指定的比较器按升序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenBy(Of TSource, TKey) ( _
    source As IOrderedQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    comparer As IComparer(Of TKey) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> ThenBy<TSource, TKey>(
    this IOrderedQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ ThenBy(
    IOrderedQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    IComparer<TKey>^ comparer
)
static member ThenBy :
        source:IOrderedQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        comparer:IComparer<'TKey> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，包含要排序的元素。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，根据键对其元素排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
ThenBy 重载
System.Linq 命名空间


Queryable ..::.ThenByDescending 方法

Queryable
.
.
::
.
ThenByDescending 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

按降序对序列中的元素执行后续排序。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.ThenByDescending <(Of <(TSource, TKey >)>) 方法 (IOrderedQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>))

Queryable
.
.
::
.
ThenByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
)
Queryable 类

根据某个键按降序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenByDescending(Of TSource, TKey) ( _
    source As IOrderedQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> ThenByDescending<TSource, TKey>(
    this IOrderedQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ ThenByDescending(
    IOrderedQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector
)
static member ThenByDescending :
        source:IOrderedQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 表示的函数返回的键类型。

参数

source
类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，包含要排序的元素。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从每个元素中提取键的函数。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，将根据键按降序对其元素进行排序。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 方法生成 MethodCallExpression，表示调用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。 因执行表示调用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。 因执行表示调用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
ThenByDescending 重载
System.Linq 命名空间


Queryable ..::.ThenByDescending <(Of <(TSource, TKey >)>) 方法 (IOrderedQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, TKey >)>) >)>), IComparer <(Of <(TKey >)>))

Queryable
.
.
::
.
ThenByDescending
<
(Of
<
(
TSource, TKey
>
)
>
)
方法 (IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)
, IComparer
<
(Of
<
(
TKey
>
)
>
)
)
Queryable 类

使用指定的比较器按降序对序列中的元素执行后续排序。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function ThenByDescending(Of TSource, TKey) ( _
    source As IOrderedQueryable(Of TSource), _
    keySelector As Expression(Of Func(Of TSource, TKey)), _
    comparer As IComparer(Of TKey) _
) As IOrderedQueryable(Of TSource)
public static IOrderedQueryable<TSource> ThenByDescending<TSource, TKey>(
    this IOrderedQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector,
    IComparer<TKey> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource, typename TKey>
static IOrderedQueryable<TSource>^ ThenByDescending(
    IOrderedQueryable<TSource>^ source,
    Expression<Func<TSource, TKey>^>^ keySelector,
    IComparer<TKey>^ comparer
)
static member ThenByDescending :
        source:IOrderedQueryable<'TSource> *
        keySelector:Expression<Func<'TSource, 'TKey>> *
        comparer:IComparer<'TKey> -> IOrderedQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

TKey

由 keySelector 函数返回的键的类型。

参数

source
类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IOrderedQueryable<(Of <(T>)>)，包含要排序的元素。
keySelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, TKey
>
)
>
)
>
)
>
)

用于从每个元素中提取键的函数。
comparer
类型： System.Collections.Generic IComparer
<
(Of
<
(
TKey
>
)
>
)

一个用于比较键的 IComparer<(Of <(T>)>)。

返回值

类型： System.Linq IOrderedQueryable
<
(Of
<
(
TSource
>
)
>
)

一个集合，其中的元素是根据某个键按降序进行排序的。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 keySelector 或 comparer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 方法生成 MethodCallExpression，表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source 参数的 Provider 属性表示。调用 CreateQuery<(Of <(TElement>)>)(Expression) 的结果是转换为 IOrderedQueryable<(Of <(T>)>) 类型，并将其返回。

因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。 因执行表示调用 ThenBy<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是基于通过对 source 的每个元素调用 keySelector 获取的键，按降序执行对 source 的元素的次要排序。所有以前建立的排序顺序都保留。comparer 参数用于比较键值。

下面的代码示例演示如何通过使用自定义比较器用 ThenByDescending<(Of <(TSource, TKey>)>)(IOrderedQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, TKey>)>)>)>), IComparer<(Of <(TKey>)>)) 对序列中的元素按降序执行次要排序。

    Class CaseInsensitiveComparer
        Implements IComparer(Of String)

        Function Compare(ByVal x As String, ByVal y As String) As Integer _
            Implements IComparer(Of String).Compare

            ' Compare values and ignore case.
            Return String.Compare(x, y, True)
        End Function
    End Class

    Sub ThenByDescendingEx1()
        Dim fruits() As String = _
            {"apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE"}

        ' Sort the strings first ascending by their length and
        ' then descending by using a custom case insensitive comparer.
        Dim query = fruits.AsQueryable() _
            .OrderBy(Function(fruit) fruit.Length) _
            .ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())

        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next

        ' Display the results.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:

    ' apPLe
    ' apple
    ' APple
    ' apPLE
    ' orange
    ' ORANGE
    ' baNanA
    ' BAnana

            public class CaseInsensitiveComparer : IComparer<string>
            {
                public int Compare(string x, string y)
                {
                    return string.Compare(x, y, true);
                }
            }

            public static void ThenByDescendingEx1()
            {
                string[] fruits =
                { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };

                // Sort the strings first ascending by their length and
                // then descending using a custom case insensitive comparer.
                IEnumerable<string> query =
                    fruits.AsQueryable()
                    .OrderBy(fruit => fruit.Length)
                    .ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());

                foreach (string fruit in query)
                    Console.WriteLine(fruit);
            }

            /*
                This code produces the following output:

                apPLe
                apple
                APple
                apPLE
                orange
                ORANGE
                baNanA
                BAnana
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
ThenByDescending 重载
System.Linq 命名空间


Queryable ..::.Union 方法

Queryable
.
.
::
.
Union 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

生成两个序列的并集。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Union <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>))

Queryable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用默认的相等比较器生成两个序列的并集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Union<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Union(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2
)
static member Union :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

非重复元素组成合并运算的第一组的一个序列。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

非重复元素组成合并运算的第二组的一个序列。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含两个输入序列中的元素（重复元素除外）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 和 source2 中的元素的并集。 因执行表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 和 source2 中的元素的并集。

下面的代码示例演示如何使用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>)) 获取两个序列的并集。

        Dim ints1() As Integer = {5, 3, 9, 7, 5, 9, 3, 7}
        Dim ints2() As Integer = {8, 3, 6, 4, 4, 9, 1, 0}

        ' Get the set union of the items in the two arrays.
        Dim union = ints1.AsQueryable().Union(ints2)

        Dim output As New System.Text.StringBuilder
        For Each num As Integer In union
            output.Append(String.Format("{0} ", num))
        Next

        ' Display the output.
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' 5 3 9 7 8 6 4 1 0

            int[] ints1 = { 5, 3, 9, 7, 5, 9, 3, 7 };
            int[] ints2 = { 8, 3, 6, 4, 4, 9, 1, 0 };

            // Get the set union of the items in the two arrays.
            IEnumerable<int> union = ints1.AsQueryable().Union(ints2);

            foreach (int num in union)
                Console.Write("{0} ", num);

            /*
                This code produces the following output:

                5 3 9 7 8 6 4 1 0
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Union 重载
System.Linq 命名空间


Queryable ..::.Union <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), IEnumerable <(Of <(TSource >)>), IEqualityComparer <(Of <(TSource >)>))

Queryable
.
.
::
.
Union
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, IEnumerable
<
(Of
<
(
TSource
>
)
>
)
, IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)
)
Queryable 类

通过使用指定的 IEqualityComparer<(Of <(T>)>) 生成两个序列的并集。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Union(Of TSource) ( _
    source1 As IQueryable(Of TSource), _
    source2 As IEnumerable(Of TSource), _
    comparer As IEqualityComparer(Of TSource) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Union<TSource>(
    this IQueryable<TSource> source1,
    IEnumerable<TSource> source2,
    IEqualityComparer<TSource> comparer
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Union(
    IQueryable<TSource>^ source1,
    IEnumerable<TSource>^ source2,
    IEqualityComparer<TSource>^ comparer
)
static member Union :
        source1:IQueryable<'TSource> *
        source2:IEnumerable<'TSource> *
        comparer:IEqualityComparer<'TSource> -> IQueryable<'TSource>

类型参数

TSource

输入序列中的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

非重复元素组成合并运算的第一组的一个序列。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSource
>
)
>
)

非重复元素组成合并运算的第二组的一个序列。
comparer
类型： System.Collections.Generic IEqualityComparer
<
(Of
<
(
TSource
>
)
>
)

用于比较值的 IEqualityComparer<(Of <(T>)>)。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含两个输入序列中的元素（重复元素除外）。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 方法生成 MethodCallExpression，表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

因执行表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 和 source2 中的元素的并集。comparer 参数用于比较值。 因执行表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 和 source2 中的元素的并集。comparer 参数用于比较值。 因执行表示调用 Union<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), IEnumerable<(Of <(TSource>)>), IEqualityComparer<(Of <(TSource>)>)) 的表达式树而发生的查询行为取决于 source1 参数类型的实现。预期的行为是返回 source1 和 source2 中的元素的并集。comparer 参数用于比较值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Union 重载
System.Linq 命名空间


Queryable ..::.Where 方法

Queryable
.
.
::
.
Where 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
Queryable 类

基于谓词筛选值序列。

名称 说明
页首

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


Queryable ..::.Where <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Boolean >)>) >)>))

Queryable
.
.
::
.
Where
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

基于谓词筛选值序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Boolean)) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Where<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Where(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, bool>^>^ predicate
)
static member Where :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, bool>> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要筛选的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含满足由 predicate 指定的条件的输入序列中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回满足由 predicate 指定的条件的 source 中的元素。 因执行表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回满足由 predicate 指定的条件的 source 中的元素。

下面的代码示例演示如何使用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Boolean>)>)>)>)) 筛选序列。

        Dim fruits As New List(Of String)(New String() _
                                {"apple", "passionfruit", "banana", "mango", _
                                 "orange", "blueberry", "grape", "strawberry"})

        ' Get all strings whose length is less than 6.
        Dim query = fruits.AsQueryable().Where(Function(fruit) fruit.Length < 6)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each fruit As String In query
            output.AppendLine(fruit)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' apple
        ' mango
        ' grape

            List<string> fruits =
                new List<string> { "apple", "passionfruit", "banana", "mango",
                                   "orange", "blueberry", "grape", "strawberry" };

            // Get all strings whose length is less than 6.
            IEnumerable<string> query =
                fruits.AsQueryable().Where(fruit => fruit.Length < 6);

            foreach (string fruit in query)
                Console.WriteLine(fruit);

            /*
                This code produces the following output:

                apple
                mango
                grape
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Where 重载
System.Linq 命名空间


Queryable ..::.Where <(Of <(TSource >)>) 方法 (IQueryable <(Of <(TSource >)>), Expression <(Of <(Func <(Of <(TSource, Int32, Boolean >)>) >)>))

Queryable
.
.
::
.
Where
<
(Of
<
(
TSource
>
)
>
)
方法 (IQueryable
<
(Of
<
(
TSource
>
)
>
)
, Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
>
)
>
)
)
Queryable 类

基于谓词筛选值序列。将在谓词函数的逻辑中使用每个元素的索引。 基于谓词筛选值序列。将在谓词函数的逻辑中使用每个元素的索引。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Where(Of TSource) ( _
    source As IQueryable(Of TSource), _
    predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _
) As IQueryable(Of TSource)
public static IQueryable<TSource> Where<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, int, bool>> predicate
)

[ExtensionAttribute]
public:
generic<typename TSource>
static IQueryable<TSource>^ Where(
    IQueryable<TSource>^ source,
    Expression<Func<TSource, int, bool>^>^ predicate
)
static member Where :
        source:IQueryable<'TSource> *
        predicate:Expression<Func<'TSource, int, bool>> -> IQueryable<'TSource>

类型参数

TSource

source 中的元素的类型。

参数

source
类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

要筛选的 IQueryable<(Of <(T>)>)。
predicate
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TSource, Int32, Boolean
>
)
>
)
>
)
>
)

用于测试每个元素是否满足条件的函数；此函数的第二个参数表示源序列中元素的索引。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TSource
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含满足由 predicate 指定的条件的输入序列中的元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TSource 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source 或 predicate 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。 此方法至少有一个 Expression<(Of <(TDelegate>)>) 类型的实参，其形参类型是 Func<(Of <(T, TResult>)>) 类型之一。对于这些参数，您可以 lambda 表达式形式传递，并且该表达式将被编译为 Expression<(Of <(TDelegate>)>)。

Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 方法生成 MethodCallExpression，表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery(Expression) 方法，由 source 参数的 Provider 属性表示。

因执行表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回满足由 predicate 指定的条件的 source 中的元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回满足由 predicate 指定的条件的 source 中的元素。每个源元素的索引都作为 predicate 的第二个参数提供。 因执行表示调用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 的表达式树而发生的查询行为取决于 source 参数类型的实现。预期的行为是返回满足由 predicate 指定的条件的 source 中的元素。每个源元素的索引都作为 predicate 的第二个参数提供。

下面的代码示例演示如何基于合并了每个元素索引的谓词使用 Where<(Of <(TSource>)>)(IQueryable<(Of <(TSource>)>), Expression<(Of <(Func<(Of <(TSource, Int32, Boolean>)>)>)>)) 筛选序列。

        Dim numbers() As Integer = {0, 30, 20, 15, 90, 85, 40, 75}

        ' Get all the numbers that are less than or equal to
        ' the product of their index in the array and 10.
        Dim query = numbers.AsQueryable() _
            .Where(Function(number, index) number <= index * 10)

        ' Display the results.
        Dim output As New System.Text.StringBuilder
        For Each number As Integer In query
            output.AppendLine(number)
        Next
        MsgBox(output.ToString())

        ' This code produces the following output:

        ' 0
        ' 20
        ' 15
        ' 40

            int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };

            // Get all the numbers that are less than or equal to
            // the product of their index in the array and 10.
            IEnumerable<int> query =
                numbers.AsQueryable()
                .Where((number, index) => number <= index * 10);

            foreach (int number in query)
                Console.WriteLine(number);

            /*
                This code produces the following output:

                0
                20
                15
                40
            */

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5

.NET Framework Client Profile

受以下版本支持：4、3.5 SP1

参考

Queryable 类
Queryable 成员
Where 重载
System.Linq 命名空间


Queryable ..::.Zip <(Of <(TFirst, TSecond, TResult >)>) 方法

Queryable
.
.
::
.
Zip
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
方法
Queryable 类

通过使用指定的谓词函数合并两个序列。

命名空间： System.Linq
程序集： System.Core（在 System.Core.dll 中）
<ExtensionAttribute> _
Public Shared Function Zip(Of TFirst, TSecond, TResult) ( _
    source1 As IQueryable(Of TFirst), _
    source2 As IEnumerable(Of TSecond), _
    resultSelector As Expression(Of Func(Of TFirst, TSecond, TResult)) _
) As IQueryable(Of TResult)
public static IQueryable<TResult> Zip<TFirst, TSecond, TResult>(
    this IQueryable<TFirst> source1,
    IEnumerable<TSecond> source2,
    Expression<Func<TFirst, TSecond, TResult>> resultSelector
)

[ExtensionAttribute]
public:
generic<typename TFirst, typename TSecond, typename TResult>
static IQueryable<TResult>^ Zip(
    IQueryable<TFirst>^ source1,
    IEnumerable<TSecond>^ source2,
    Expression<Func<TFirst, TSecond, TResult>^>^ resultSelector
)
static member Zip :
        source1:IQueryable<'TFirst> *
        source2:IEnumerable<'TSecond> *
        resultSelector:Expression<Func<'TFirst, 'TSecond, 'TResult>> -> IQueryable<'TResult>

类型参数

TFirst

第一个输入序列中的元素的类型。

TSecond

第二个输入序列中的元素的类型。

TResult

结果序列的元素的类型。

参数

source1
类型： System.Linq IQueryable
<
(Of
<
(
TFirst
>
)
>
)

要合并的第一个序列。
source2
类型： System.Collections.Generic IEnumerable
<
(Of
<
(
TSecond
>
)
>
)

要合并的第二个序列。
resultSelector
类型： System.Linq.Expressions Expression
<
(Of
<
(
Func
<
(Of
<
(
TFirst, TSecond, TResult
>
)
>
)
>
)
>
)

用于指定如何合并这两个序列的元素的函数。

返回值

类型： System.Linq IQueryable
<
(Of
<
(
TResult
>
)
>
)

一个 IQueryable<(Of <(T>)>)，包含两个输入序列的已合并元素。

使用说明

在 Visual Basic 和 C# 中，可以在 TFirst 类型的任何对象上将此方法作为实例方法来调用。当使用实例方法语法调用此方法时，请省略第一个参数。有关更多信息，请参见 或 。
异常 | 条件
ArgumentNullException | source1 或 source2 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Zip<(Of <(TFirst, TSecond, TResult>)>) 方法生成 MethodCallExpression，表示调用 Zip<(Of <(TFirst, TSecond, TResult>)>) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。 Zip<(Of <(TFirst, TSecond, TResult>)>) 方法生成 MethodCallExpression，表示调用 Zip<(Of <(TFirst, TSecond, TResult>)>) 自身作为构造的泛型方法。然后，它将 MethodCallExpression 传递给 IQueryProvider 的 CreateQuery<(Of <(TElement>)>)(Expression) 方法，由 source1 参数的 Provider 属性表示。

该方法将第一个序列中的每个元素与第二个序列中有相同索引的元素合并。如果该序列不具有相同数目的元素，则直到它到达其中一个的末尾，该方法才合并序列。例如，如果一个序列有三个元素，另一个序列具有四个元素，那么结果序列将只有三个元素。 该方法将第一个序列中的每个元素与第二个序列中有相同索引的元素合并。如果该序列不具有相同数目的元素，则直到它到达其中一个的末尾，该方法才合并序列。例如，如果一个序列有三个元素，另一个序列具有四个元素，那么结果序列将只有三个元素。 该方法将第一个序列中的每个元素与第二个序列中有相同索引的元素合并。如果该序列不具有相同数目的元素，则直到它到达其中一个的末尾，该方法才合并序列。例如，如果一个序列有三个元素，另一个序列具有四个元素，那么结果序列将只有三个元素。

下面的代码示例演示如何使用 Zip<(Of <(TFirst, TSecond, TResult>)>) 方法来合并两个序列。

        Dim numbers() As Integer = {1, 2, 3, 4}
        Dim words() As String = {"one", "two", "three"}
        Dim numbersAndWords = numbers.AsQueryable().Zip(words, Function(first, second) first & " " & second)

        For Each item In numbersAndWords
            Console.WriteLine(item)
        Next

        ' This code produces the following output:

        ' 1 one
        ' 2 two
        ' 3 three

            int[] numbers = { 1, 2, 3, 4 };
            string[] words = { "one", "two", "three" };

            var numbersAndWords = numbers.AsQueryable().Zip(words, (first, second) => first + " " + second);

            foreach (var item in numbersAndWords)
                Console.WriteLine(item);

            // This code produces the following output:

            // 1 one
            // 2 two
            // 3 three

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

.NET Framework Client Profile

受以下版本支持：4

参考

Queryable 类
Queryable 成员
System.Linq 命名空间


System.Web 命名空间

System.Web 命名空间

The System.Web namespace supplies classes and interfaces that enable browser-server communication.This namespace includes the HttpRequest class, which provides extensive information about the current HTTP request; the HttpResponse class, which manages HTTP output to the client; and the HttpServerUtility class, which provides access to server-side utilities and processes.System.Web also includes classes for cookie manipulation, file transfer, exception information, and output cache control. The System.Web namespace supplies classes and interfaces that enable browser-server communication.This namespace includes the HttpRequest class, which provides extensive information about the current HTTP request; the HttpResponse class, which manages HTTP output to the client; and the HttpServerUtility class, which provides access to server-side utilities and processes.System.Web also includes classes for cookie manipulation, file transfer, exception information, and output cache control. The System.Web namespace supplies classes and interfaces that enable browser-server communication.This namespace includes the HttpRequest class, which provides extensive information about the current HTTP request; the HttpResponse class, which manages HTTP output to the client; and the HttpServerUtility class, which provides access to server-side utilities and processes.System.Web also includes classes for cookie manipulation, file transfer, exception information, and output cache control.

 | 类 | 说明
公共类 | AspNetHostingPermission | ASP.NET 寄宿的环境中的控件访问权限。无法继承此类。 ASP.NET 寄宿的环境中的控件访问权限。无法继承此类。
公共类 | AspNetHostingPermissionAttribute | 允许对使用声明安全性应用到代码中的 AspNetHostingPermission 进行安全操作。无法继承此类。 允许对使用声明安全性应用到代码中的 AspNetHostingPermission 进行安全操作。无法继承此类。
公共类 | DefaultHttpHandler | 表示默认 HTTP 处理程序的属性和方法。
公共类 | HtmlString | 表示不应再次进行编码的 HTML 编码的字符串。
公共类 | HttpApplication | 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法、属性和事件。此类是用户在 Global.asax 文件中所定义的应用程序的基类。 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法、属性和事件。此类是用户在 Global.asax 文件中所定义的应用程序的基类。
公共类 | HttpApplicationState | 启用 ASP.NET 应用程序中多个会话和请求之间的全局信息共享。
公共类 | HttpApplicationStateBase | 用作一些类的基类，通过这些类，可在 ASP.NET 应用程序内的多个会话和请求之间共享信息。
公共类 | HttpApplicationStateWrapper | 封装 HTTP 内部对象，通过该对象，可在 ASP.NET 应用程序内的多个请求和会话之间共享信息。
公共类 | HttpBrowserCapabilities | 使服务器能够收集有关在客户端运行的浏览器功能的信息。
公共类 | HttpBrowserCapabilitiesBase | 用作某些类的基类，这些类使服务器可以收集发出当前请求的浏览器的功能相关信息。
公共类 | HttpBrowserCapabilitiesWrapper | 封装 HTTP 内部对象，该对象使服务器可以收集发出当前请求的浏览器的功能相关信息。
公共类 | HttpCachePolicy | 包含用于设置缓存特定的 HTTP 标头的方法和用于控制 ASP.NET 页输出缓存的方法。
公共类 | HttpCachePolicyBase | 用作某些类的基类，这些类包含的方法可用于设置特定于缓存的 HTTP 标头以及用于控制 ASP.NET 页输出缓存。
公共类 | HttpCachePolicyWrapper | 封装 HTTP 内部对象，该对象包含的方法可用于设置特定于缓存的 HTTP 标头以及用于控制 ASP.NET 页输出缓存。
公共类 | HttpCacheVaryByContentEncodings | 提供一种类型安全的方式来设置 HttpCachePolicy 类的 VaryByContentEncodings 属性。
公共类 | HttpCacheVaryByHeaders | 提供一种设置 VaryByHeaders 属性的类型安全的方法。
公共类 | HttpCacheVaryByParams | 提供一种设置 VaryByParams 属性的类型安全的方法。
公共类 | HttpClientCertificate | 提供由客户端为响应服务器对客户端标识的请求而发出的客户证书字段。
公共类 | HttpCompileException | 发生编译器错误时引发的异常。
公共类 | HttpContext | 封装有关个别 HTTP 请求的所有 HTTP 特定的信息。
公共类 | HttpContextBase | 用作包含有关某个 HTTP 请求的 HTTP 特定信息的类的基类。
公共类 | HttpContextWrapper | 封装包含有关单个 HTTP 请求的 HTTP 特定信息的 HTTP 内部对象。
公共类 | HttpCookie | 提供创建和操作各 HTTP Cookie 的类型安全方法。
公共类 | HttpCookieCollection | 提供操作 HTTP Cookie 的类型安全方法。
公共类 | HttpException | 描述在处理 HTTP 请求期间发生的异常。
公共类 | HttpFileCollection | 提供对客户端上载文件的访问，并组织这些文件。
公共类 | HttpFileCollectionBase | 用作一些类的基类，这些类提供对客户端已上载的文件的访问。
公共类 | HttpFileCollectionWrapper | 封装 HTTP 内部对象，该对象提供对客户端已上载的文件的访问。
公共类 | HttpModuleCollection | 提供一种索引和检索 IHttpModule 对象集合的方法。
公共类 | HttpParseException | 发生分析错误时引发的异常。
公共类 | HttpPostedFile | 提供对客户端已上载的单独文件的访问。
公共类 | HttpPostedFileBase | 充当类的基类，这些类提供对客户端已上载的单独文件的访问。
公共类 | HttpPostedFileWrapper | 封装 HTTP 内部对象，该对象提供对客户端已上载的单独文件的访问。
公共类 | HttpRequest | 使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。
公共类 | HttpRequestBase | 用作一些类的基类，这些类使 ASP.NET 可以读取客户端在 Web 请求过程中发送的 HTTP 值。
公共类 | HttpRequestValidationException | 当从客户端收到作为请求数据一部分的潜在恶意输入字符串时引发的异常。无法继承此类。 当从客户端收到作为请求数据一部分的潜在恶意输入字符串时引发的异常。无法继承此类。
公共类 | HttpRequestWrapper | 封装 HTTP 内部对象，该对象使 ASP.NET 可以读取客户端在 Web 请求过程中发送的 HTTP 值。
公共类 | HttpResponse | 封装来自 ASP.NET 操作的 HTTP 响应信息。
公共类 | HttpResponseBase | 用作一些类的基类，可提供来自 ASP.NET 操作的 HTTP 响应信息。
公共类 | HttpResponseWrapper | 封装 HTTP 内部对象，该对象提供来自 ASP.NET 操作的 HTTP 响应信息。
公共类 | HttpRuntime | 为当前应用程序提供一组 ASP.NET 运行时服务。
公共类 | HttpServerUtility | 提供用于处理 Web 请求的 Helper 方法。
公共类 | HttpServerUtilityBase | 用作提供帮助器方法以处理 Web 请求的类的基类。
公共类 | HttpServerUtilityWrapper | 封装 HTTP 内部对象，该对象提供帮助器方法用于处理 Web 请求。
公共类 | HttpSessionStateBase | 用作一些类的基类，可提供对会话状态值、会话级别设置以及生存期管理方法的访问。
公共类 | HttpSessionStateWrapper | 封装 HTTP 内部对象，该对象提供对会话状态值、会话级别设置和生存期管理方法的访问。
公共类 | HttpStaticObjectsCollection | 为 StaticObjects 属性提供应用程序范围内的对象的集合。
公共类 | HttpStaticObjectsCollectionBase | 用作一些类的基类，这些类为 StaticObjects 属性提供应用程序范围的对象的集合。
公共类 | HttpStaticObjectsCollectionWrapper | 封装 HTTP 内部对象，该对象为 StaticObjects 属性提供应用程序范围的对象的集合。
公共类 | HttpUnhandledException | 发生一般异常时引发的异常。
公共类 | HttpUtility | 提供用于在处理 Web 请求时编码和解码 URL 的方法。此类不能被继承。 提供用于在处理 Web 请求时编码和解码 URL 的方法。此类不能被继承。
公共类 | HttpWorkerRequest | 此抽象类定义由 ASP.NET 托管代码用于处理请求的基本辅助方法和枚举。
公共类 | HttpWriter | 提供通过内部 HttpResponse 对象访问的 TextWriter 对象。
公共类 | IisTraceListener | 提供一个将所有跟踪和调试输出路由到 IIS 7.0 基础结构的侦听器。
公共类 | ParserError | 表示分析器错误或警告。无法继承此类。 表示分析器错误或警告。无法继承此类。
公共类 | ParserErrorCollection | 管理分析过程中检测到的一组分析器错误。无法继承此类。 管理分析过程中检测到的一组分析器错误。无法继承此类。
公共类 | PreApplicationStartMethodAttribute | 提供对应用程序启动的扩展支持。
公共类 | ProcessInfo | 提供有关当前正在执行的进程的信息。
公共类 | ProcessModelInfo | 包含用于返回有关辅助进程的信息的方法。
公共类 | SiteMap | SiteMap 类是站点的导航结构在内存中的表示形式，导航结构由一个或多个站点地图提供程序提供。无法继承此类。 SiteMap 类是站点的导航结构在内存中的表示形式，导航结构由一个或多个站点地图提供程序提供。无法继承此类。
公共类 | SiteMapNode | 表示分层的站点地图结构（如 SiteMap 类和实现抽象类 SiteMapProvider 的类所描述的结构）中的一个节点。
公共类 | SiteMapNodeCollection | 提供 SiteMapNode 对象的强类型集合并实现 IHierarchicalEnumerable 接口，以支持在该集合中导航。
公共类 | SiteMapProvider | 为所有站点地图数据提供程序提供公共基类，并为开发人员提供一条实现自定义站点地图数据提供程序的途径，这些提供程序可与 ASP.NET 站点地图基础结构一起用作 SiteMap 对象的持久存储区。
公共类 | SiteMapProviderCollection | 由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。无法继承此类。 由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。无法继承此类。
公共类 | SiteMapResolveEventArgs | 为通过调用 SiteMapProvider 类的 CurrentNode 属性引发的事件提供数据。
公共类 | StaticSiteMapProvider | 作为 SiteMapProvider 抽象类的部分实现和 XmlSiteMapProvider 类（它是 ASP.NET 中的默认站点地图提供程序）的基类。
公共类 | TraceContext | 捕获并提供有关 Web 请求的执行详细信息。无法继承此类。 捕获并提供有关 Web 请求的执行详细信息。无法继承此类。
公共类 | TraceContextEventArgs | 向所有处理 TraceFinished 事件的方法提供跟踪记录的集合。无法继承此类。 向所有处理 TraceFinished 事件的方法提供跟踪记录的集合。无法继承此类。
公共类 | TraceContextRecord | 表示 ASP.NET 跟踪消息和任何关联数据。
公共类 | VirtualPathUtility | 为常见的虚拟路径操作提供实用工具方法。
公共类 | WebPageTraceListener | 提供一个将 Trace 消息定向到 ASP.NET 网页输出的侦听器。
公共类 | XmlSiteMapProvider | XmlSiteMapProvider 类是从 SiteMapProvider 类派生的，并且是 ASP.NET 的默认站点地图提供者。XmlSiteMapProvider 类根据文件扩展名为 .sitemap 的 XML 文件生成站点地图树。 XmlSiteMapProvider 类是从 SiteMapProvider 类派生的，并且是 ASP.NET 的默认站点地图提供者。XmlSiteMapProvider 类根据文件扩展名为 .sitemap 的 XML 文件生成站点地图树。
 | 接口 | 说明
公共接口 | IHtmlString | 表示不应再次进行编码的 HTML 编码的字符串。
公共接口 | IHttpAsyncHandler | 定义 HTTP 异步处理程序对象必须实现的协定。
公共接口 | IHttpHandler | 定义 ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定。
公共接口 | IHttpHandlerFactory | 定义类工厂为创建新的 IHttpHandler 对象而必须实现的协定。
公共接口 | IHttpModule | 向实现类提供模块初始化和处置事件。
公共接口 | IPartitionResolver | 定义必须实现的方法，这些方法用于自定义的会话状态分区解析。
 | 委托 | 说明
公共委托 | BeginEventHandler | 表示处理异步事件（如应用程序事件）的方法。此委托在异步操作开始时调用。 表示处理异步事件（如应用程序事件）的方法。此委托在异步操作开始时调用。
公共委托 | EndEventHandler | 表示处理异步事件（如应用程序事件）的方法。
公共委托 | HttpCacheValidateHandler | 表示一个方法，在从缓存提供某个缓存项之前将调用该方法来验证该项。
公共委托 | HttpResponseSubstitutionCallback | 表示处理缓存后替换的方法。
公共委托 | HttpWorkerRequest EndOfSendNotification | 表示用于在完成发送响应后通知调用方的方法。
公共委托 | SiteMapResolveEventHandler | 表示的方法将用于处理 SiteMapProvider 或静态 SiteMap 类的特定实例的 SiteMapResolve 事件。
公共委托 | TraceContextEventHandler | 表示处理 TraceContext 的 TraceFinished 事件的方法。
 | 枚举 | 说明
公共枚举 | ApplicationShutdownReason | 指定 AppDomain 类为何关闭。
公共枚举 | AspNetHostingPermissionLevel | 指定授予 ASP.NET Web 应用程序的信任级别。
公共枚举 | HttpCacheability | 提供用于设置 Cache-Control HTTP 标头的枚举值。
公共枚举 | HttpCacheRevalidation | 提供用于设置重新验证特定的 Cache-Control HTTP 标头的枚举值。
公共枚举 | HttpCookieMode | 指定如何将 Cookie 用于 Web 应用程序。
公共枚举 | HttpValidationStatus | 提供指示缓存验证状态的枚举值。
公共枚举 | ProcessShutdownReason | 提供指示进程关闭原因的枚举值。
公共枚举 | ProcessStatus | 提供指示进程当前状态的枚举值。
公共枚举 | RequestNotification | 指示处理 HttpApplication 请求期间发生事件和其他生命周期事件的时间。
公共枚举 | RequestNotificationStatus | 基础结构。 指定请求管线中通知的状态。
公共枚举 | TraceMode | 指定跟踪消息发出到页的 HTML 输出中所采用的顺序。


ApplicationShutdownReason 枚举

ApplicationShutdownReason 枚举

指定 AppDomain 类为何关闭。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration ApplicationShutdownReason
public enum ApplicationShutdownReason
public enum class ApplicationShutdownReason
type ApplicationShutdownReason
成员名称 | 说明
None | 未提供关闭原因。
HostingEnvironment | 宿主环境关闭了应用程序域。
ChangeInGlobalAsax | Global.asax 文件已更改。
ConfigurationChange | 应用程序级配置文件已更改。
UnloadAppDomainCalled | 已调用 UnloadAppDomain。
ChangeInSecurityPolicyFile | 代码访问安全性策略文件已更改。
BinDirChangeOrDirectoryRename | Bin 文件夹已更改，或其中的文件已更改。
BrowsersDirChangeOrDirectoryRename | App_Browsers 文件夹已更改，或其中的文件已更改。
CodeDirChangeOrDirectoryRename | App_Code 文件夹已更改，或其中的文件已更改。
ResourcesDirChangeOrDirectoryRename | App_GlobalResources 文件夹已更改，或其中的文件已更改。
IdleTimeout | 已达到最长空闲时间限制。
PhysicalApplicationPathChanged | 应用程序的物理路径已更改。
HttpRuntimeClose | 已调用 Close。
InitializationError | 出现 AppDomain 初始化错误。
MaxRecompilationsReached | 已达到资源的动态重新编译最大次数。
BuildManagerChange | 编译系统关闭了应用程序域。BuildManagerChange 成员是在 .NET Framework 3.5 版中引入的。 有关更多信息，请参见 .NET Framework Architecture。 编译系统关闭了应用程序域。BuildManagerChange 成员是在 .NET Framework 3.5 版中引入的。 有关更多信息，请参见 .NET Framework Architecture。

ApplicationShutdownReason 表示 HostingEnvironment 类的 ShutdownReason 属性的可能值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

System.Web 命名空间
ShutdownReason
Close
AppDomain
AppDomainAppPath
UnloadAppDomain
IdleTimeout

其他资源

ASP.NET 网站布局
Global.asax 语法
安全策略管理
compilation 元素（ASP.NET 设置架构）


AspNetHostingPermission 类

AspNetHostingPermission 类
成员

ASP.NET 寄宿的环境中的控件访问权限。无法继承此类。 ASP.NET 寄宿的环境中的控件访问权限。无法继承此类。

命名空间： System.Web
程序集： System（在 System.dll 中）
<SerializableAttribute> _
Public NotInheritable Class AspNetHostingPermission _
    Inherits CodeAccessPermission _
    Implements IUnrestrictedPermission
[SerializableAttribute]
public sealed class AspNetHostingPermission : CodeAccessPermission,
    IUnrestrictedPermission
[SerializableAttribute]
public ref class AspNetHostingPermission sealed : public CodeAccessPermission,
    IUnrestrictedPermission
[<SealedAttribute>]
[<SerializableAttribute>]
type AspNetHostingPermission =
    class
        inherit CodeAccessPermission
        interface IUnrestrictedPermission
    end

AspNetHostingPermission 类与代码访问安全性结合使用，帮助保护 System.Web 命名空间中的公共类型。代码必须至少被分配 Minimal 信任级别才能访问受保护的 ASP.NET 类。 AspNetHostingPermission 类与代码访问安全性结合使用，帮助保护 System.Web 命名空间中的公共类型。代码必须至少被分配 Minimal 信任级别才能访问受保护的 ASP.NET 类。

AspNetHostingPermission 类的 Level 属性通过在 trust 配置元素中配置相应信任级别来进行设置。默认情况下，trust 配置元素的 level 特性设置为 Full。也就是说，默认情况下，ASP.NET 应用程序在 Unrestricted 级别下运行。当创建一个 ASP.NET 应用程序域时，ASP.NET 会读取为 trust 配置元素的 level 特性指定的值，使用指定的 Level 特性创建 AspNetHostingPermission 类的实例，然后将该类添加到该应用程序域的权限集。有关更多信息，请参见 ASP.NET 信任级别和策略文件。 AspNetHostingPermission 类的 Level 属性通过在 trust 配置元素中配置相应信任级别来进行设置。默认情况下，trust 配置元素的 level 特性设置为 Full。也就是说，默认情况下，ASP.NET 应用程序在 Unrestricted 级别下运行。当创建一个 ASP.NET 应用程序域时，ASP.NET 会读取为 trust 配置元素的 level 特性指定的值，使用指定的 Level 特性创建 AspNetHostingPermission 类的实例，然后将该类添加到该应用程序域的权限集。有关更多信息，请参见 ASP.NET 信任级别和策略文件。 AspNetHostingPermission 类的 Level 属性通过在 trust 配置元素中配置相应信任级别来进行设置。默认情况下，trust 配置元素的 level 特性设置为 Full。也就是说，默认情况下，ASP.NET 应用程序在 Unrestricted 级别下运行。当创建一个 ASP.NET 应用程序域时，ASP.NET 会读取为 trust 配置元素的 level 特性指定的值，使用指定的 Level 特性创建 AspNetHostingPermission 类的实例，然后将该类添加到该应用程序域的权限集。有关更多信息，请参见 ASP.NET 信任级别和策略文件。 AspNetHostingPermission 类的 Level 属性通过在 trust 配置元素中配置相应信任级别来进行设置。默认情况下，trust 配置元素的 level 特性设置为 Full。也就是说，默认情况下，ASP.NET 应用程序在 Unrestricted 级别下运行。当创建一个 ASP.NET 应用程序域时，ASP.NET 会读取为 trust 配置元素的 level 特性指定的值，使用指定的 Level 特性创建 AspNetHostingPermission 类的实例，然后将该类添加到该应用程序域的权限集。有关更多信息，请参见 ASP.NET 信任级别和策略文件。 AspNetHostingPermission 类的 Level 属性通过在 trust 配置元素中配置相应信任级别来进行设置。默认情况下，trust 配置元素的 level 特性设置为 Full。也就是说，默认情况下，ASP.NET 应用程序在 Unrestricted 级别下运行。当创建一个 ASP.NET 应用程序域时，ASP.NET 会读取为 trust 配置元素的 level 特性指定的值，使用指定的 Level 特性创建 AspNetHostingPermission 类的实例，然后将该类添加到该应用程序域的权限集。有关更多信息，请参见 ASP.NET 信任级别和策略文件。

对于受信任的站点，建议您将 trust 配置元素的 level 特性设置为 High。对于不受信任的站点（例如承载那些运行外部客户代码的站点的 Web 服务器），建议您将 trust 配置元素的 level 特性设置为 Medium。 对于受信任的站点，建议您将 trust 配置元素的 level 特性设置为 High。对于不受信任的站点（例如承载那些运行外部客户代码的站点的 Web 服务器），建议您将 trust 配置元素的 level 特性设置为 Medium。

为 .NET Framework 定义的默认权限集（例如 LocalIntranet、Internet 等等）不包括 AspNetHostingPermission 权限。也就是说，默认情况下，AspNetHostingPermission 权限仅分配给在 Full 信任下运行的应用程序。 为 .NET Framework 定义的默认权限集（例如 LocalIntranet、Internet 等等）不包括 AspNetHostingPermission 权限。也就是说，默认情况下，AspNetHostingPermission 权限仅分配给在 Full 信任下运行的应用程序。

下面的代码示例演示一个使用 AspNetHostingPermission 权限保护的类。代码必须至少以 MinimalAspNetHostingPermission 权限 Level 运行才能创建类的实例。 下面的代码示例演示一个使用 AspNetHostingPermission 权限保护的类。代码必须至少以 MinimalAspNetHostingPermission 权限 Level 运行才能创建类的实例。

Imports System
Imports System.Web
Imports System.Security.Permissions

<AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Medium)> _
Public Class CustomAspNetClass

End Class

using System;
using System.Web;
using System.Security.Permissions;

[AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Medium)]
public class CustomAspNetClass
{

}

System.Web System.Web..::.AspNetHostingPermissionAspNetHostingPermission
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 成员
System.Web 命名空间
AspNetHostingPermissionAttribute
AspNetHostingPermissionLevel

其他资源

Code Access Security
声明性安全
通过部分受信任的代码使用库
ASP.NET 信任级别和策略文件


AspNetHostingPermission 成员

AspNetHostingPermission 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermission 类

ASP.NET 寄宿的环境中的控件访问权限。无法继承此类。 ASP.NET 寄宿的环境中的控件访问权限。无法继承此类。

AspNetHostingPermission 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

AspNetHostingPermission 类
System.Web 命名空间


AspNetHostingPermission 构造函数

AspNetHostingPermission 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermission 类

初始化 AspNetHostingPermission 类的新实例。

名称 说明
页首

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间


AspNetHostingPermission 构造函数 (AspNetHostingPermissionLevel)

AspNetHostingPermission 构造函数 (AspNetHostingPermissionLevel)
AspNetHostingPermission 类

使用指定的权限级别初始化 AspNetHostingPermission 类的新实例。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Sub New ( _
    level As AspNetHostingPermissionLevel _
)
public AspNetHostingPermission(
    AspNetHostingPermissionLevel level
)
public:
AspNetHostingPermission(
    AspNetHostingPermissionLevel level
)
new :
        level:AspNetHostingPermissionLevel -> AspNetHostingPermission

参数

level
类型： System.Web AspNetHostingPermissionLevel
AspNetHostingPermissionLevel 枚举值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
AspNetHostingPermission 重载
System.Web 命名空间
Level


AspNetHostingPermission 构造函数 (PermissionState)

AspNetHostingPermission 构造函数 (PermissionState)
AspNetHostingPermission 类

用指定的 PermissionState 枚举值初始化 AspNetHostingPermission 类的新实例。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Sub New ( _
    state As PermissionState _
)
public AspNetHostingPermission(
    PermissionState state
)
public:
AspNetHostingPermission(
    PermissionState state
)
new :
        state:PermissionState -> AspNetHostingPermission

参数

state
类型： System.Security.Permissions PermissionState
一个 PermissionState 枚举值。
异常 | 条件
ArgumentException | state 未设置为 PermissionState 枚举值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
AspNetHostingPermission 重载
System.Web 命名空间


AspNetHostingPermission 方法

AspNetHostingPermission 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermission 类

AspNetHostingPermission 类型公开以下成员。

名称 说明
页首

参考

AspNetHostingPermission 类
System.Web 命名空间


AspNetHostingPermission ..::.Copy 方法

AspNetHostingPermission
.
.
::
.
Copy 方法
AspNetHostingPermission 类

通过派生类实现时，创建和返回当前权限对象的相同副本。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Function Copy As IPermission
public override IPermission Copy()
public:
virtual IPermission^ Copy() override
abstract Copy : unit -> IPermission
override Copy : unit -> IPermission

返回值

类型： System.Security IPermission
当前权限对象的副本。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间


AspNetHostingPermission ..::.FromXml 方法

AspNetHostingPermission
.
.
::
.
FromXml 方法
AspNetHostingPermission 类

从 XML 编码重新构造具有指定状态的权限对象。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Sub FromXml ( _
    securityElement As SecurityElement _
)
public override void FromXml(
    SecurityElement securityElement
)
public:
virtual void FromXml(
    SecurityElement^ securityElement
) override
abstract FromXml :
        securityElement:SecurityElement -> unit
override FromXml :
        securityElement:SecurityElement -> unit

参数

securityElement
类型： System.Security SecurityElement
包含用于重新构造权限对象的 XML 编码的 SecurityElement。

实现

异常 | 条件
ArgumentNullException | securityElement 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | securityElement 的 Tag 属性不等于“IPermission”。 - 或 - securityElement 的类 Attribute 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")。

有关格式化权限对象状态的 XML 表示形式的详细信息，请参见 实现自定义权限。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间
ISecurityEncodable
IPermission
SecurityElement

其他资源

实现自定义权限


AspNetHostingPermission ..::.Intersect 方法

AspNetHostingPermission
.
.
::
.
Intersect 方法
AspNetHostingPermission 类

通过派生类实现时，创建和返回是当前权限和指定权限的交集的权限。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Function Intersect ( _
    target As IPermission _
) As IPermission
public override IPermission Intersect(
    IPermission target
)
public:
virtual IPermission^ Intersect(
    IPermission^ target
) override
abstract Intersect :
        target:IPermission -> IPermission
override Intersect :
        target:IPermission -> IPermission

参数

target
类型： System.Security IPermission
将与当前权限合并的权限。它必须与当前权限属于同一类型。 将与当前权限合并的权限。它必须与当前权限属于同一类型。

返回值

类型： System.Security IPermission
表示当前权限与指定权限的交集的 IPermission；如果交集为空，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

实现

异常 | 条件
ArgumentException | target 不是 AspNetHostingPermission。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间
Union
IsSubsetOf


AspNetHostingPermission ..::.IsSubsetOf 方法

AspNetHostingPermission
.
.
::
.
IsSubsetOf 方法
AspNetHostingPermission 类

返回一个值，指示当前的权限是否为指定权限的一个子集。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Function IsSubsetOf ( _
    target As IPermission _
) As Boolean
public override bool IsSubsetOf(
    IPermission target
)
public:
virtual bool IsSubsetOf(
    IPermission^ target
) override
abstract IsSubsetOf :
        target:IPermission -> bool
override IsSubsetOf :
        target:IPermission -> bool

参数

target
类型： System.Security IPermission
与当前权限进行合并的 IPermission。它必须与当前 IPermission 属于同一类型。 与当前权限进行合并的 IPermission。它必须与当前 IPermission 属于同一类型。

返回值

类型： System Boolean
如果当前 IPermission 是指定 IPermission 的子集，则为 true；否则为 false。

实现

异常 | 条件
ArgumentException | target 不是 AspNetHostingPermission。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间
Union
Intersect


AspNetHostingPermission ..::.IsUnrestricted 方法

AspNetHostingPermission
.
.
::
.
IsUnrestricted 方法
AspNetHostingPermission 类

返回一个值，该值指示是否允许对受当前权限保护的资源进行不受限制地访问。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Function IsUnrestricted As Boolean
public bool IsUnrestricted()
public:
virtual bool IsUnrestricted() sealed
abstract IsUnrestricted : unit -> bool
override IsUnrestricted : unit -> bool

返回值

类型： System Boolean
如果允许不受限制地使用受此权限所保护的资源，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间


AspNetHostingPermission ..::.ToXml 方法

AspNetHostingPermission
.
.
::
.
ToXml 方法
AspNetHostingPermission 类

创建权限对象及其当前状态的 XML 编码。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Function ToXml As SecurityElement
public override SecurityElement ToXml()
public:
virtual SecurityElement^ ToXml() override
abstract ToXml : unit -> SecurityElement
override ToXml : unit -> SecurityElement

返回值

类型： System.Security SecurityElement
包含权限对象的 XML 编码的 SecurityElement，包括所有状态信息。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间


AspNetHostingPermission ..::.Union 方法

AspNetHostingPermission
.
.
::
.
Union 方法
AspNetHostingPermission 类

创建一个权限，该权限是当前权限与指定权限的并集。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Function Union ( _
    target As IPermission _
) As IPermission
public override IPermission Union(
    IPermission target
)
public:
virtual IPermission^ Union(
    IPermission^ target
) override
abstract Union :
        target:IPermission -> IPermission
override Union :
        target:IPermission -> IPermission

参数

target
类型： System.Security IPermission
将与当前权限合并的权限。它必须与当前权限属于同一类型。 将与当前权限合并的权限。它必须与当前权限属于同一类型。

返回值

类型： System.Security IPermission
代表当前权限和指定权限并集的 IPermission。

实现

异常 | 条件
ArgumentException | target 不是 AspNetHostingPermission。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间
IsSubsetOf
Intersect


AspNetHostingPermission 属性

AspNetHostingPermission 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermission 类

AspNetHostingPermission 类型公开以下成员。

名称 说明
页首

参考

AspNetHostingPermission 类
System.Web 命名空间


AspNetHostingPermission ..::.Level 属性

AspNetHostingPermission
.
.
::
.
Level 属性
AspNetHostingPermission 类

获取或设置 ASP.NET 应用程序的当前宿主权限级别。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Property Level As AspNetHostingPermissionLevel
    Get
    Set
public AspNetHostingPermissionLevel Level { get; set; }
public:
property AspNetHostingPermissionLevel Level {
    AspNetHostingPermissionLevel get ();
    void set (AspNetHostingPermissionLevel value);
}
member Level : AspNetHostingPermissionLevel with get, set

属性值

类型： System.Web AspNetHostingPermissionLevel
AspNetHostingPermissionLevel 枚举值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermission 类
AspNetHostingPermission 成员
System.Web 命名空间


AspNetHostingPermissionAttribute 类

AspNetHostingPermissionAttribute 类
成员

允许对使用声明安全性应用到代码中的 AspNetHostingPermission 进行安全操作。无法继承此类。 允许对使用声明安全性应用到代码中的 AspNetHostingPermission 进行安全操作。无法继承此类。

命名空间： System.Web
程序集： System（在 System.dll 中）
<SerializableAttribute> _
<AttributeUsageAttribute(AttributeTargets.All, AllowMultiple := True, Inherited := False)> _
Public NotInheritable Class AspNetHostingPermissionAttribute _
    Inherits CodeAccessSecurityAttribute
[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
public sealed class AspNetHostingPermissionAttribute : CodeAccessSecurityAttribute
[SerializableAttribute]
[AttributeUsageAttribute(AttributeTargets::All, AllowMultiple = true, Inherited = false)]
public ref class AspNetHostingPermissionAttribute sealed : public CodeAccessSecurityAttribute
[<SealedAttribute>]
[<SerializableAttribute>]
[<AttributeUsageAttribute(AttributeTargets.All, AllowMultiple = true, Inherited = false)>]
type AspNetHostingPermissionAttribute =
    class
        inherit CodeAccessSecurityAttribute
    end

System.Web System.Web..::.AspNetHostingPermissionAttributeAspNetHostingPermissionAttribute
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermissionAttribute 成员
System.Web 命名空间
AspNetHostingPermission


AspNetHostingPermissionAttribute 成员

AspNetHostingPermissionAttribute 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermissionAttribute 类

允许对使用声明安全性应用到代码中的 AspNetHostingPermission 进行安全操作。无法继承此类。 允许对使用声明安全性应用到代码中的 AspNetHostingPermission 进行安全操作。无法继承此类。

AspNetHostingPermissionAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

AspNetHostingPermissionAttribute 类
System.Web 命名空间


AspNetHostingPermissionAttribute 构造函数

AspNetHostingPermissionAttribute 构造函数
AspNetHostingPermissionAttribute 类

初始化 AspNetHostingPermissionAttribute 类的新实例。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Sub New ( _
    action As SecurityAction _
)
public AspNetHostingPermissionAttribute(
    SecurityAction action
)
public:
AspNetHostingPermissionAttribute(
    SecurityAction action
)
new :
        action:SecurityAction -> AspNetHostingPermissionAttribute

参数

action
类型： System.Security.Permissions SecurityAction
SecurityAction 枚举值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermissionAttribute 类
AspNetHostingPermissionAttribute 成员
System.Web 命名空间


AspNetHostingPermissionAttribute 方法

AspNetHostingPermissionAttribute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermissionAttribute 类

AspNetHostingPermissionAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

AspNetHostingPermissionAttribute 类
System.Web 命名空间


AspNetHostingPermissionAttribute ..::.CreatePermission 方法

AspNetHostingPermissionAttribute
.
.
::
.
CreatePermission 方法
AspNetHostingPermissionAttribute 类

使用先前由 Level 属性设置的权限级别来创建新的 AspNetHostingPermission。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Overrides Function CreatePermission As IPermission
public override IPermission CreatePermission()
public:
virtual IPermission^ CreatePermission() override
abstract CreatePermission : unit -> IPermission
override CreatePermission : unit -> IPermission

返回值

类型： System.Security IPermission
一个 IPermission，它是新的 AspNetHostingPermission。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermissionAttribute 类
AspNetHostingPermissionAttribute 成员
System.Web 命名空间


AspNetHostingPermissionAttribute 属性

AspNetHostingPermissionAttribute 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
AspNetHostingPermissionAttribute 类

AspNetHostingPermissionAttribute 类型公开以下成员。

名称 说明
页首

参考

AspNetHostingPermissionAttribute 类
System.Web 命名空间


AspNetHostingPermissionAttribute ..::.Level 属性

AspNetHostingPermissionAttribute
.
.
::
.
Level 属性
AspNetHostingPermissionAttribute 类

获取或设置当前宿主权限级别。

命名空间： System.Web
程序集： System（在 System.dll 中）
Public Property Level As AspNetHostingPermissionLevel
    Get
    Set
public AspNetHostingPermissionLevel Level { get; set; }
public:
property AspNetHostingPermissionLevel Level {
    AspNetHostingPermissionLevel get ();
    void set (AspNetHostingPermissionLevel value);
}
member Level : AspNetHostingPermissionLevel with get, set

属性值

类型： System.Web AspNetHostingPermissionLevel
AspNetHostingPermissionLevel 枚举值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

AspNetHostingPermissionAttribute 类
AspNetHostingPermissionAttribute 成员
System.Web 命名空间


AspNetHostingPermissionLevel 枚举

AspNetHostingPermissionLevel 枚举

指定授予 ASP.NET Web 应用程序的信任级别。

命名空间： System.Web
程序集： System（在 System.dll 中）
<SerializableAttribute> _
Public Enumeration AspNetHostingPermissionLevel
[SerializableAttribute]
public enum AspNetHostingPermissionLevel
[SerializableAttribute]
public enum class AspNetHostingPermissionLevel
[<SerializableAttribute>]
type AspNetHostingPermissionLevel
成员名称 | 说明
None | 指示不授予任何权限。任何要求 AspNetHostingPermission 的请求都将失败。 指示不授予任何权限。任何要求 AspNetHostingPermission 的请求都将失败。
Minimal | 指示由要求 Minimal 信任级别的请求所保护的功能将会成功。此级别允许代码执行，但不允许代码与系统中的资源进行交互。通过使用配置文件中的 trust 节至少配置 Minimal 信任级别，可授予此级别。 指示由要求 Minimal 信任级别的请求所保护的功能将会成功。此级别允许代码执行，但不允许代码与系统中的资源进行交互。通过使用配置文件中的 trust 节至少配置 Minimal 信任级别，可授予此级别。 指示由要求 Minimal 信任级别的请求所保护的功能将会成功。此级别允许代码执行，但不允许代码与系统中的资源进行交互。通过使用配置文件中的 trust 节至少配置 Minimal 信任级别，可授予此级别。
Low | 指示由任何要求低于或等于 Low 信任级别的请求所保护的功能将会成功。此级别用于允许对受约束环境中的有限资源进行只读访问。通过在配置文件的 trust 节中指定 Low 信任级别可授予此级别。 指示由任何要求低于或等于 Low 信任级别的请求所保护的功能将会成功。此级别用于允许对受约束环境中的有限资源进行只读访问。通过在配置文件的 trust 节中指定 Low 信任级别可授予此级别。 指示由任何要求低于或等于 Low 信任级别的请求所保护的功能将会成功。此级别用于允许对受约束环境中的有限资源进行只读访问。通过在配置文件的 trust 节中指定 Low 信任级别可授予此级别。
Medium | 指示由任何要求低于或等于 Medium 信任级别的请求所保护的功能将会成功。通过在配置文件的 trust 节中至少配置 Medium 信任级别，可授予此级别。 指示由任何要求低于或等于 Medium 信任级别的请求所保护的功能将会成功。通过在配置文件的 trust 节中至少配置 Medium 信任级别，可授予此级别。
High | 指示由任何要求低于或等于 High 信任级别的请求所保护的功能将会成功。此级别适用于高度信任的托管代码应用程序，这些应用程序需要使用大多数支持不完全受信任访问的托管权限。此级别没有授予某些最高权限（例如，调入本机代码的能力），但确实提供了一种方式，以最小特权运行受信任应用程序或为高度信任的应用程序提供某种程度的限制。通过在配置文件的 trust 节中至少配置 High 信任级别，可授予此级别。 指示由任何要求低于或等于 High 信任级别的请求所保护的功能将会成功。此级别适用于高度信任的托管代码应用程序，这些应用程序需要使用大多数支持不完全受信任访问的托管权限。此级别没有授予某些最高权限（例如，调入本机代码的能力），但确实提供了一种方式，以最小特权运行受信任应用程序或为高度信任的应用程序提供某种程度的限制。通过在配置文件的 trust 节中至少配置 High 信任级别，可授予此级别。 指示由任何要求低于或等于 High 信任级别的请求所保护的功能将会成功。此级别适用于高度信任的托管代码应用程序，这些应用程序需要使用大多数支持不完全受信任访问的托管权限。此级别没有授予某些最高权限（例如，调入本机代码的能力），但确实提供了一种方式，以最小特权运行受信任应用程序或为高度信任的应用程序提供某种程度的限制。通过在配置文件的 trust 节中至少配置 High 信任级别，可授予此级别。 指示由任何要求低于或等于 High 信任级别的请求所保护的功能将会成功。此级别适用于高度信任的托管代码应用程序，这些应用程序需要使用大多数支持不完全受信任访问的托管权限。此级别没有授予某些最高权限（例如，调入本机代码的能力），但确实提供了一种方式，以最小特权运行受信任应用程序或为高度信任的应用程序提供某种程度的限制。通过在配置文件的 trust 节中至少配置 High 信任级别，可授予此级别。
Unrestricted | 指示任何要求获得使用应用程序的所有功能的权限的请求都会得到准许。这等效于在配置文件的 trust 节中授予 Full 信任级别。 指示任何要求获得使用应用程序的所有功能的权限的请求都会得到准许。这等效于在配置文件的 trust 节中授予 Full 信任级别。

有关授予各个信任级别的权限的详细信息，请参见 ASP.NET 代码访问安全性。

此枚举的成员可定义应用程序的安全级别，这些级别可以是从完全信任（应用程序不受代码访问安全性约束）到最小程度信任（应用程序只有可以执行的权限）的各个级别。可以在 Web.config 或 Machine.config 文件中使用 trust 配置元素来设置 ASP.NET 资源的信任级别。 此枚举的成员可定义应用程序的安全级别，这些级别可以是从完全信任（应用程序不受代码访问安全性约束）到最小程度信任（应用程序只有可以执行的权限）的各个级别。可以在 Web.config 或 Machine.config 文件中使用 trust 配置元素来设置 ASP.NET 资源的信任级别。

如果要锁定某个服务器或网站的安全策略，可将 location 元素与 allowOverride=false 特性一起使用，以确保信任策略设置无法在本地重写。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

.NET Framework Client Profile

受以下版本支持：4

参考

System.Web 命名空间

其他资源

ASP.NET 代码访问安全性
trust 元素（ASP.NET 设置架构）


BeginEventHandler 委托

BeginEventHandler 委托

表示处理异步事件（如应用程序事件）的方法。此委托在异步操作开始时调用。 表示处理异步事件（如应用程序事件）的方法。此委托在异步操作开始时调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Function BeginEventHandler ( _
    sender As Object, _
    e As EventArgs, _
    cb As AsyncCallback, _
    extraData As Object _
) As IAsyncResult
public delegate IAsyncResult BeginEventHandler(
    Object sender,
    EventArgs e,
    AsyncCallback cb,
    Object extraData
)
public delegate IAsyncResult^ BeginEventHandler(
    Object^ sender,
    EventArgs^ e,
    AsyncCallback^ cb,
    Object^ extraData
)
type BeginEventHandler =
    delegate of
        sender:Object *
        e:EventArgs *
        cb:AsyncCallback *
        extraData:Object -> IAsyncResult

参数

sender
类型： System Object
事件源。
e
类型： System EventArgs
包含事件数据的 EventArgs。
cb
类型： System AsyncCallback
异步方法调用完成时要调用的委托。如果 cb 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不调用委托。 异步方法调用完成时要调用的委托。如果 cb 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不调用委托。
extraData
类型： System Object
处理请求所需的任何其他数据。

返回值

类型： System IAsyncResult
IAsyncResult，它表示 BeginEventHandler 操作的结果。

当创建 BeginEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 BeginEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 BeginEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 BeginEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的代码示例使用 BeginEventHandler 委托来注册异步页的处理程序。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<%@ page language="VB" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  Dim myRequest As System.Net.WebRequest

  Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Label1.Text = "Page_Load: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()

    Dim bh As New BeginEventHandler(AddressOf Me.BeginGetAsyncData)
    Dim eh As New EndEventHandler(AddressOf Me.EndGetAsyncData)

    Me.AddOnPreRenderCompleteAsync(bh, eh)

    ' Initialize the WebRequest object.
    Dim address As String
    address = "http://localhost/"
    myRequest = System.Net.WebRequest.Create(address)

  End Sub

  Function BeginGetAsyncData(ByVal src As Object, ByVal args As EventArgs, ByVal cb As AsyncCallback, ByVal state As Object) As IAsyncResult
    Label2.Text = "BeginGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    Return Me.myRequest.BeginGetResponse(cb, state)
  End Function

  Sub EndGetAsyncData(ByVal ar As IAsyncResult)
    Label3.Text = "EndGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()

    Dim myResponse As System.Net.WebResponse
    myResponse = Me.myRequest.EndGetResponse(ar)

    Dim reader As New System.IO.StreamReader(myResponse.GetResponseStream())
    result.Text = reader.ReadToEnd()
    myResponse.Close()
  End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>

<%@ page language="C#" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  System.Net.WebRequest myRequest;

  void Page_Load(object sender, EventArgs e)
  {
    Label1.Text = "Page_Load: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    BeginEventHandler bh = new BeginEventHandler(this.BeginGetAsyncData);
    EndEventHandler eh = new EndEventHandler(this.EndGetAsyncData);

    AddOnPreRenderCompleteAsync(bh, eh);

    // Initialize the WebRequest.
    string address = "http://localhost/";

    myRequest = System.Net.WebRequest.Create(address);
  }

  IAsyncResult BeginGetAsyncData(Object src, EventArgs args, AsyncCallback cb, Object state)
  {
    Label2.Text = "BeginGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();
    return myRequest.BeginGetResponse(cb, state);
  }

  void EndGetAsyncData(IAsyncResult ar)
  {
    Label3.Text = "EndGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    System.Net.WebResponse myResponse = myRequest.EndGetResponse(ar);

    result.Text = new System.IO.StreamReader(myResponse.GetResponseStream()).ReadToEnd();
    myResponse.Close();
  }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpApplication


DefaultHttpHandler 类

DefaultHttpHandler 类
成员

表示默认 HTTP 处理程序的属性和方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class DefaultHttpHandler _
    Implements IHttpAsyncHandler, IHttpHandler
public class DefaultHttpHandler : IHttpAsyncHandler,
    IHttpHandler
public ref class DefaultHttpHandler : IHttpAsyncHandler,
    IHttpHandler
type DefaultHttpHandler =
    class
        interface IHttpAsyncHandler
        interface IHttpHandler
    end

当已经通过 Internet 信息服务 (IIS) 6.0 配置了请求截获，并且未向请求的扩展应用任何显式 httpHandlers 绑定时，DefaultHttpHandler 对象将截获 HTTP 管线中的传入请求。

请求截获可以通过 IIS 6.0 中引入的通配符应用程序映射功能来设置。有关更多信息，请在 MSDN Library 上搜索有关使用通配符应用程序映射来重新映射 URL 的信息。 请求截获可以通过 IIS 6.0 中引入的通配符应用程序映射功能来设置。有关更多信息，请在 MSDN Library 上搜索有关使用通配符应用程序映射来重新映射 URL 的信息。

DefaultHttpHandler 类实现 IHttpAsyncHandler 接口以提供异步请求处理。有关 HTTP 处理程序的常规信息，请参见 HTTP 处理程序和 HTTP 模块概述。此外，请参见以下内容以获取更多信息： DefaultHttpHandler 类实现 IHttpAsyncHandler 接口以提供异步请求处理。有关 HTTP 处理程序的常规信息，请参见 HTTP 处理程序和 HTTP 模块概述。此外，请参见以下内容以获取更多信息： DefaultHttpHandler 类实现 IHttpAsyncHandler 接口以提供异步请求处理。有关 HTTP 处理程序的常规信息，请参见 HTTP 处理程序和 HTTP 模块概述。此外，请参见以下内容以获取更多信息：

  • 关于创建异步 HTTP 处理程序，请参见 演练：创建异步 HTTP 处理程序。

  • 关于注册 HTTP 处理程序，请参见 如何：注册 HTTP 处理程序。

类可以从 DefaultHttpHandler 类派生以提供自定义的请求处理。从 DefaultHttpHandler 派生的异步 HTTP 处理程序可以重写 BeginProcessRequest 方法以更改请求的处理方式。 类可以从 DefaultHttpHandler 类派生以提供自定义的请求处理。从 DefaultHttpHandler 派生的异步 HTTP 处理程序可以重写 BeginProcessRequest 方法以更改请求的处理方式。

DefaultHttpHandler 不使用 ASP.NET 错误。使用 IIS 错误或适当的 ISAPI 自定义错误机制的现有内容将照常工作。 DefaultHttpHandler 不使用 ASP.NET 错误。使用 IIS 错误或适当的 ISAPI 自定义错误机制的现有内容将照常工作。

下面的代码示例演示如何通过从 DefaultHttpHandler 类派生来实现自定义的 HTTP 处理程序。

Public Class defaulthttpexampleVB
    Inherits DefaultHttpHandler

    Private _context As HttpContext

    Public Overrides Function BeginProcessRequest _
        (ByVal context As HttpContext, _
         ByVal callback As AsyncCallback, _
         ByVal state As Object) As IAsyncResult

        Dim ar As New AsyncResultSample(callback, state)
        _context = context

        Return (ar)
    End Function

    Public Overrides Sub EndProcessRequest(ByVal result As IAsyncResult)
        _context.Response.Write("EndProcessRequest called.")
    End Sub

    ' This method should not be called asynchronously.
    Public Overrides Sub ProcessRequest(ByVal context As HttpContext)
        Throw New InvalidOperationException _
          ("Asynchronous processing failed.")
    End Sub

    ' Enables pooling when set to true
    Public Overrides ReadOnly Property IsReusable() As Boolean
        Get
            Return True
        End Get
    End Property
End Class

' Tracks state between the begin and end calls.
Class AsyncResultSample
    Implements IAsyncResult
    Private callback As AsyncCallback = Nothing
    Private _asyncState As Object
    Private _isCompleted As Boolean

    Friend Sub New(ByVal cb As AsyncCallback, ByVal state As Object)
        Me.callback = cb
        _asyncState = state
        _isCompleted = False
    End Sub

    Public ReadOnly Property AsyncState() As Object _
      Implements IAsyncResult.AsyncState
        Get
            Return _asyncState
        End Get
    End Property

    Public ReadOnly Property CompletedSynchronously() _
      As Boolean Implements IAsyncResult.CompletedSynchronously
        Get
            Return False
        End Get
    End Property

    Public ReadOnly Property AsyncWaitHandle() _
      As WaitHandle Implements IAsyncResult.AsyncWaitHandle
        Get
            Throw New InvalidOperationException _
              ("ASP.NET should not use this property .")
        End Get
    End Property

    Public ReadOnly Property IsCompleted() _
      As Boolean Implements IAsyncResult.IsCompleted
        Get
            Return IsCompleted
        End Get
    End Property

    Friend Sub SetCompleted()
        _isCompleted = True
        If (callback <> Nothing) Then
            callback(Me)
        End If
    End Sub
End Class

public class AsyncDefaultHttpHandler : DefaultHttpHandler
{
    private HttpContext _context;

    public override IAsyncResult BeginProcessRequest(
      HttpContext context, AsyncCallback callback, object state)
    {
        AsyncResultSample ar = new AsyncResultSample(callback, state);
        _context = context;

        return ar;
    }

    public override void EndProcessRequest(IAsyncResult result)
    {
        _context.Response.Write("EndProcessRequest called.");
    }

    // This method should not be called asynchronously.
    public override void ProcessRequest(HttpContext context)
    {
        throw new InvalidOperationException(
                  "Asynchronous processing failed.");
    }

    // Enables pooling when set to true
    public override bool IsReusable
    {
        get { return true; }
    }
}

// Tracks state between the begin and end calls.
class AsyncResultSample : IAsyncResult
{
    private AsyncCallback callback = null;
    private Object asyncState;
    private Boolean isCompleted;

    internal AsyncResultSample(AsyncCallback cb, Object state)
    {
        this.callback = cb;
        asyncState = state;
        isCompleted = false;
    }

    public object AsyncState
    {
        get
        {
            return asyncState;
        }
    }

    public bool CompletedSynchronously
    {
        get
        {
            return false;
        }
    }

    public WaitHandle AsyncWaitHandle
    {
        get
        {
            throw new InvalidOperationException(
                      "ASP.NET should not use this property .");
        }
    }

    public bool IsCompleted
    {
        get
        {
            return isCompleted;
        }
    }

    internal void SetCompleted()
    {
        isCompleted = true;
        if (callback != null)
        {
            callback(this);
        }
    }

}

System.Web System.Web..::.DefaultHttpHandlerDefaultHttpHandler
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 成员
System.Web 命名空间

其他资源

HTTP Handlers
如何：注册 HTTP 处理程序
演练：创建异步 HTTP 处理程序


DefaultHttpHandler 成员

DefaultHttpHandler 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DefaultHttpHandler 类

表示默认 HTTP 处理程序的属性和方法。

DefaultHttpHandler 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

DefaultHttpHandler 类
System.Web 命名空间


DefaultHttpHandler 构造函数

DefaultHttpHandler 构造函数
DefaultHttpHandler 类

初始化 DefaultHttpHandler 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public DefaultHttpHandler()
public:
DefaultHttpHandler()
new : unit -> DefaultHttpHandler

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间


DefaultHttpHandler 方法

DefaultHttpHandler 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DefaultHttpHandler 类

DefaultHttpHandler 类型公开以下成员。

名称 说明
页首

参考

DefaultHttpHandler 类
System.Web 命名空间


DefaultHttpHandler ..::.BeginProcessRequest 方法

DefaultHttpHandler
.
.
::
.
BeginProcessRequest 方法
DefaultHttpHandler 类

启动对 HTTP 处理程序的异步调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function BeginProcessRequest ( _
    context As HttpContext, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
public virtual IAsyncResult BeginProcessRequest(
    HttpContext context,
    AsyncCallback callback,
    Object state
)
public:
virtual IAsyncResult^ BeginProcessRequest(
    HttpContext^ context,
    AsyncCallback^ callback,
    Object^ state
)
abstract BeginProcessRequest :
        context:HttpContext *
        callback:AsyncCallback *
        state:Object -> IAsyncResult
override BeginProcessRequest :
        context:HttpContext *
        callback:AsyncCallback *
        state:Object -> IAsyncResult

参数

context
类型： System.Web HttpContext
为用于服务 HTTP 请求的内部服务器对象提供引用的对象。
callback
类型： System AsyncCallback
将在完成异步方法调用时调用的方法。如果 callback 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不调用委托。 将在完成异步方法调用时调用的方法。如果 callback 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不调用委托。
state
类型： System Object
处理请求所需的所有状态数据。

返回值

类型： System IAsyncResult
包含有关进程状态信息的 IAsyncResult。

实现

异常 | 条件
HttpException | 处理请求的前提条件未满足，被请求的文件具有 .asp 后缀或请求是通过 POST 发送的。

在创建用于异步用途的 HTTP 处理程序时，处理程序必须实现由 ASP.NET 异步调用的异步 BeginProcessRequest 和 EndProcessRequest 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间


DefaultHttpHandler ..::.EndProcessRequest 方法

DefaultHttpHandler
.
.
::
.
EndProcessRequest 方法
DefaultHttpHandler 类

为异步进程提供一种结束方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub EndProcessRequest ( _
    result As IAsyncResult _
)
public virtual void EndProcessRequest(
    IAsyncResult result
)
public:
virtual void EndProcessRequest(
    IAsyncResult^ result
)
abstract EndProcessRequest :
        result:IAsyncResult -> unit
override EndProcessRequest :
        result:IAsyncResult -> unit

参数

result
类型： System IAsyncResult
一个包含有关进程状态的信息的对象。

实现

可使用 EndProcessRequest 方法来引发在异步处理期间捕获的任何异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间


DefaultHttpHandler ..::.OnExecuteUrlPreconditionFailure 方法

DefaultHttpHandler
.
.
::
.
OnExecuteUrlPreconditionFailure 方法
DefaultHttpHandler 类

在前提条件阻止 DefaultHttpHandler 对象处理请求时被调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub OnExecuteUrlPreconditionFailure
public virtual void OnExecuteUrlPreconditionFailure()
public:
virtual void OnExecuteUrlPreconditionFailure()
abstract OnExecuteUrlPreconditionFailure : unit -> unit
override OnExecuteUrlPreconditionFailure : unit -> unit

前提条件由客户端在请求标头字段中指定，并在 Web 服务器上进行评估。例如，通过使用前提条件，客户端可以防止将请求的方法（如 GET）应用于计划资源以外的资源。有关更多信息，请参见位于万维网联合会 (W3C) 网站上 Hypertext Transfer Protocol -- HTTP/1.1（超文本传输协议 -- HTTP/1.1）规范中的第 14 节“Header Field Definitions”（标头字段定义）。 前提条件由客户端在请求标头字段中指定，并在 Web 服务器上进行评估。例如，通过使用前提条件，客户端可以防止将请求的方法（如 GET）应用于计划资源以外的资源。有关更多信息，请参见位于万维网联合会 (W3C) 网站上 Hypertext Transfer Protocol -- HTTP/1.1（超文本传输协议 -- HTTP/1.1）规范中的第 14 节“Header Field Definitions”（标头字段定义）。 前提条件由客户端在请求标头字段中指定，并在 Web 服务器上进行评估。例如，通过使用前提条件，客户端可以防止将请求的方法（如 GET）应用于计划资源以外的资源。有关更多信息，请参见位于万维网联合会 (W3C) 网站上 Hypertext Transfer Protocol -- HTTP/1.1（超文本传输协议 -- HTTP/1.1）规范中的第 14 节“Header Field Definitions”（标头字段定义）。

OnExecuteUrlPreconditionFailure 方法在前提条件阻止 DefaultHttpHandler 对象处理请求时被调用。派生类可以重写 OnExecuteUrlPreconditionFailure 方法以便在前提条件不满足时引发异常。DefaultHttpHandler 不会在 OnExecuteUrlPreconditionFailure 方法中引发异常。 OnExecuteUrlPreconditionFailure 方法在前提条件阻止 DefaultHttpHandler 对象处理请求时被调用。派生类可以重写 OnExecuteUrlPreconditionFailure 方法以便在前提条件不满足时引发异常。DefaultHttpHandler 不会在 OnExecuteUrlPreconditionFailure 方法中引发异常。 OnExecuteUrlPreconditionFailure 方法在前提条件阻止 DefaultHttpHandler 对象处理请求时被调用。派生类可以重写 OnExecuteUrlPreconditionFailure 方法以便在前提条件不满足时引发异常。DefaultHttpHandler 不会在 OnExecuteUrlPreconditionFailure 方法中引发异常。

以下任何操作都会导致前提条件失败：

  • 调用 HttpResponse..::.Write。

  • 调用 HttpResponse..::.AddHeader。

  • 调用 HttpResponse..::.Flush。

  • 更改响应的缓存策略。

  • 将 Stream 对象作为筛选器添加到 HttpResponse..::.Filter 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间


DefaultHttpHandler ..::.OverrideExecuteUrlPath 方法

DefaultHttpHandler
.
.
::
.
OverrideExecuteUrlPath 方法
DefaultHttpHandler 类

重写当前请求的目标 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function OverrideExecuteUrlPath As String
public virtual string OverrideExecuteUrlPath()
public:
virtual String^ OverrideExecuteUrlPath()
abstract OverrideExecuteUrlPath : unit -> string
override OverrideExecuteUrlPath : unit -> string

返回值

类型： System String
要在请求中使用的被重写的 URL；如果未提供被重写的 URL，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

OverrideExecuteUrlPath 方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），除非它在从 DefaultHttpHandler 类派生的类中被重写。

仅当 ASP.NET 在 IIS 6.0 上以辅助进程隔离模式运行且在调用 DefaultHttpHandler 对象之前未修改响应时，才会调用 OverrideExecuteUrlPath 方法。以下任何操作都会修改响应： 仅当 ASP.NET 在 IIS 6.0 上以辅助进程隔离模式运行且在调用 DefaultHttpHandler 对象之前未修改响应时，才会调用 OverrideExecuteUrlPath 方法。以下任何操作都会修改响应：

  • 调用 HttpResponse..::.Write。

  • 调用 HttpResponse..::.AddHeader。

  • 调用 HttpResponse..::.Flush。

  • 更改响应的缓存策略。

  • 将 Stream 对象作为筛选器添加到 HttpResponse..::.Filter 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间


DefaultHttpHandler ..::.ProcessRequest 方法

DefaultHttpHandler
.
.
::
.
ProcessRequest 方法
DefaultHttpHandler 类

使 DefaultHttpHandler 对象能够处理 HTTP Web 请求。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub ProcessRequest ( _
    context As HttpContext _
)
public virtual void ProcessRequest(
    HttpContext context
)
public:
virtual void ProcessRequest(
    HttpContext^ context
)
abstract ProcessRequest :
        context:HttpContext -> unit
override ProcessRequest :
        context:HttpContext -> unit

参数

context
类型： System.Web HttpContext
为用于服务 HTTP 请求的内部服务器对象提供引用的对象。

实现

异常 | 条件
InvalidOperationException | ProcessRequest 被同步地调用。

不应该同步调用 ProcessRequest 方法。从 DefaultHttpHandler 类派生的类可以重写 ProcessRequest 以提供自定义的请求处理。 不应该同步调用 ProcessRequest 方法。从 DefaultHttpHandler 类派生的类可以重写 ProcessRequest 以提供自定义的请求处理。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间
ProcessRequest


DefaultHttpHandler 属性

DefaultHttpHandler 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
DefaultHttpHandler 类

DefaultHttpHandler 类型公开以下成员。

名称 说明
页首

参考

DefaultHttpHandler 类
System.Web 命名空间


DefaultHttpHandler ..::.Context 属性

DefaultHttpHandler
.
.
::
.
Context 属性
DefaultHttpHandler 类

获取与当前 DefaultHttpHandler 对象关联的上下文。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected ReadOnly Property Context As HttpContext
    Get
protected HttpContext Context { get; }
protected:
property HttpContext^ Context {
    HttpContext^ get ();
}
member Context : HttpContext

属性值

类型： System.Web HttpContext
一个包含当前上下文的 HttpContext 对象。

Context 属性提供对派生类的当前 HttpContext 对象的访问。HttpContext 对象提供对请求的内部 Request、Response 和 Server 属性的访问。有关访问上下文信息的更多信息，请参见 HttpContext。 Context 属性提供对派生类的当前 HttpContext 对象的访问。HttpContext 对象提供对请求的内部 Request、Response 和 Server 属性的访问。有关访问上下文信息的更多信息，请参见 HttpContext。 Context 属性提供对派生类的当前 HttpContext 对象的访问。HttpContext 对象提供对请求的内部 Request、Response 和 Server 属性的访问。有关访问上下文信息的更多信息，请参见 HttpContext。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间
HttpContext


DefaultHttpHandler ..::.ExecuteUrlHeaders 属性

DefaultHttpHandler
.
.
::
.
ExecuteUrlHeaders 属性
DefaultHttpHandler 类

获取要随请求一起传输的请求标头和请求值的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected ReadOnly Property ExecuteUrlHeaders As NameValueCollection
    Get
protected NameValueCollection ExecuteUrlHeaders { get; }
protected:
property NameValueCollection^ ExecuteUrlHeaders {
    NameValueCollection^ get ();
}
member ExecuteUrlHeaders : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
包含请求标头和值的 NameValueCollection。

ExecuteUrlHeaders 属性返回一个空集合，除非它在从 DefaultHttpHandler 类派生的类中得到填充。所添加的标头会在将请求传回 Internet 信息服务 (IIS) 之前被追加到请求的标头集合中。 ExecuteUrlHeaders 属性返回一个空集合，除非它在从 DefaultHttpHandler 类派生的类中得到填充。所添加的标头会在将请求传回 Internet 信息服务 (IIS) 之前被追加到请求的标头集合中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间


DefaultHttpHandler ..::.IsReusable 属性

DefaultHttpHandler
.
.
::
.
IsReusable 属性
DefaultHttpHandler 类

获取一个布尔值，该值指示另一个请求可以使用 DefaultHttpHandler 类的当前实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsReusable As Boolean
    Get
public virtual bool IsReusable { get; }
public:
virtual property bool IsReusable {
    bool get ();
}
abstract IsReusable : bool
override IsReusable : bool

属性值

类型： System Boolean
如果 DefaultHttpHandler 是可重用的，则为 true；否则为 false。

实现

若要显式地将 IsReusable 属性设置为 true 或 false，请重写 IsReusable 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

DefaultHttpHandler 类
DefaultHttpHandler 成员
System.Web 命名空间
ProcessRequest


EndEventHandler 委托

EndEventHandler 委托

表示处理异步事件（如应用程序事件）的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Sub EndEventHandler ( _
    ar As IAsyncResult _
)
public delegate void EndEventHandler(
    IAsyncResult ar
)
public delegate void EndEventHandler(
    IAsyncResult^ ar
)
type EndEventHandler =
    delegate of
        ar:IAsyncResult -> unit

参数

ar
类型： System IAsyncResult
IAsyncResult，它是 BeginEventHandler 操作的结果。

此委托是在对 BeginEventHandler 委托的回调发出异步操作完成的信号时由事件源调用的。

创建 EndEventHandler 委托时，标识将处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 创建 EndEventHandler 委托时，标识将处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 创建 EndEventHandler 委托时，标识将处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 创建 EndEventHandler 委托时，标识将处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的代码示例使用 EndEventHandler 委托来注册异步页的处理程序。

<%@ page language="VB" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  Dim myRequest As System.Net.WebRequest

  Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Label1.Text = "Page_Load: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()

    Dim bh As New BeginEventHandler(AddressOf Me.BeginGetAsyncData)
    Dim eh As New EndEventHandler(AddressOf Me.EndGetAsyncData)

    Me.AddOnPreRenderCompleteAsync(bh, eh)

    ' Initialize the WebRequest object.
    Dim address As String
    address = "http://localhost/"
    myRequest = System.Net.WebRequest.Create(address)

  End Sub

  Function BeginGetAsyncData(ByVal src As Object, ByVal args As EventArgs, ByVal cb As AsyncCallback, ByVal state As Object) As IAsyncResult
    Label2.Text = "BeginGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()
    Return Me.myRequest.BeginGetResponse(cb, state)
  End Function

  Sub EndGetAsyncData(ByVal ar As IAsyncResult)
    Label3.Text = "EndGetAsyncData: Thread #" & System.Threading.Thread.CurrentThread.GetHashCode()

    Dim myResponse As System.Net.WebResponse
    myResponse = Me.myRequest.EndGetResponse(ar)

    Dim reader As New System.IO.StreamReader(myResponse.GetResponseStream())
    result.Text = reader.ReadToEnd()
    myResponse.Close()
  End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>

<%@ page language="C#" Async="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  System.Net.WebRequest myRequest;

  void Page_Load(object sender, EventArgs e)
  {
    Label1.Text = "Page_Load: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    BeginEventHandler bh = new BeginEventHandler(this.BeginGetAsyncData);
    EndEventHandler eh = new EndEventHandler(this.EndGetAsyncData);

    AddOnPreRenderCompleteAsync(bh, eh);

    // Initialize the WebRequest.
    string address = "http://localhost/";

    myRequest = System.Net.WebRequest.Create(address);
  }

  IAsyncResult BeginGetAsyncData(Object src, EventArgs args, AsyncCallback cb, Object state)
  {
    Label2.Text = "BeginGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();
    return myRequest.BeginGetResponse(cb, state);
  }

  void EndGetAsyncData(IAsyncResult ar)
  {
    Label3.Text = "EndGetAsyncData: thread #" + System.Threading.Thread.CurrentThread.GetHashCode();

    System.Net.WebResponse myResponse = myRequest.EndGetResponse(ar);

    result.Text = new System.IO.StreamReader(myResponse.GetResponseStream()).ReadToEnd();
    myResponse.Close();
  }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Page.AddOnPreRenderCompleteAsync Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="Label1" runat="server">
        Label 1</asp:label><br />
      <asp:label id="Label2" runat="server">
        Label 2</asp:label><br />
      <asp:label id="Label3" runat="server">
        Label 3</asp:label><br />
      <asp:textbox id="result" runat="server" textMode="multiLine" ReadOnly="true" columns="80" rows="25" />
    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpApplication


HtmlString 类

HtmlString 类
成员

表示不应再次进行编码的 HTML 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HtmlString _
    Implements IHtmlString
public class HtmlString : IHtmlString
public ref class HtmlString : IHtmlString
type HtmlString =
    class
        interface IHtmlString
    end

System.Web System.Web..::.HtmlStringHtmlString
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HtmlString 成员
System.Web 命名空间


HtmlString 成员

HtmlString 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HtmlString 类

表示不应再次进行编码的 HTML 编码的字符串。

HtmlString 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HtmlString 类
System.Web 命名空间


HtmlString 构造函数

HtmlString 构造函数
HtmlString 类

初始化 HtmlString 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    value As String _
)
public HtmlString(
    string value
)
public:
HtmlString(
    String^ value
)
new :
        value:string -> HtmlString

参数

value
类型： System String
要进行 HTML 编码的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HtmlString 类
HtmlString 成员
System.Web 命名空间


HtmlString 方法

HtmlString 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HtmlString 类

HtmlString 类型公开以下成员。

名称 说明
页首

参考

HtmlString 类
System.Web 命名空间


HtmlString ..::.ToHtmlString 方法

HtmlString
.
.
::
.
ToHtmlString 方法
HtmlString 类

返回 HTML 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function ToHtmlString As String
public string ToHtmlString()
public:
virtual String^ ToHtmlString() sealed
abstract ToHtmlString : unit -> string
override ToHtmlString : unit -> string

返回值

类型： System String
HTML 编码的字符串。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HtmlString 类
HtmlString 成员
System.Web 命名空间


HtmlString ..::.ToString 方法

HtmlString
.
.
::
.
ToString 方法
HtmlString 类

返回表示当前对象的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
表示当前对象的字符串。

此方法返回区分区域性的可读字符串。该字符串也采用 HTML 编码。 此方法返回区分区域性的可读字符串。该字符串也采用 HTML 编码。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HtmlString 类
HtmlString 成员
System.Web 命名空间


HttpApplication 类

HttpApplication 类
成员

定义 ASP.NET 应用程序中的所有应用程序对象共有的方法、属性和事件。此类是用户在 Global.asax 文件中所定义的应用程序的基类。 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法、属性和事件。此类是用户在 Global.asax 文件中所定义的应用程序的基类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpApplication _
    Implements IHttpAsyncHandler, IHttpHandler, IComponent, IDisposable
public class HttpApplication : IHttpAsyncHandler,
    IHttpHandler, IComponent, IDisposable
public ref class HttpApplication : IHttpAsyncHandler,
    IHttpHandler, IComponent, IDisposable
type HttpApplication =
    class
        interface IHttpAsyncHandler
        interface IHttpHandler
        interface IComponent
        interface IDisposable
    end

HttpApplication 类的实例是在 ASP.NET 基础结构中创建的，而不是由用户直接创建的。使用 HttpApplication 类的一个实例来处理其生存期中收到的众多请求。但是，它每次只能处理一个请求。这样，成员变量才可用于存储针对每个请求的数据。 HttpApplication 类的实例是在 ASP.NET 基础结构中创建的，而不是由用户直接创建的。使用 HttpApplication 类的一个实例来处理其生存期中收到的众多请求。但是，它每次只能处理一个请求。这样，成员变量才可用于存储针对每个请求的数据。 HttpApplication 类的实例是在 ASP.NET 基础结构中创建的，而不是由用户直接创建的。使用 HttpApplication 类的一个实例来处理其生存期中收到的众多请求。但是，它每次只能处理一个请求。这样，成员变量才可用于存储针对每个请求的数据。 HttpApplication 类的实例是在 ASP.NET 基础结构中创建的，而不是由用户直接创建的。使用 HttpApplication 类的一个实例来处理其生存期中收到的众多请求。但是，它每次只能处理一个请求。这样，成员变量才可用于存储针对每个请求的数据。

应用程序引发的事件可以由实现 IHttpModule 接口的自定义模块处理，也可以由 Global.asax 文件中定义的事件处理程序代码处理。可以将实现 IHttpModule 接口的自定义模块放在 App_Code 文件夹中，也可以放在 Bin 文件夹下的某个 DLL 中。 应用程序引发的事件可以由实现 IHttpModule 接口的自定义模块处理，也可以由 Global.asax 文件中定义的事件处理程序代码处理。可以将实现 IHttpModule 接口的自定义模块放在 App_Code 文件夹中，也可以放在 Bin 文件夹下的某个 DLL 中。

HttpApplication 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 HttpApplication 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

说明 说明

如果 IIS 7.0 在集成模式下运行，App_Code 文件夹或 Bin 文件夹中的自定义模块将应用于请求管线中的所有请求。Global.asax 文件中的事件处理程序代码则只应用于映射到某个 ASP.NET 处理程序的请求。 如果 IIS 7.0 在集成模式下运行，App_Code 文件夹或 Bin 文件夹中的自定义模块将应用于请求管线中的所有请求。Global.asax 文件中的事件处理程序代码则只应用于映射到某个 ASP.NET 处理程序的请求。

按照以下顺序引发应用程序事件：

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  5. PostAuthorizeRequest

  6. ResolveRequestCache

  7. PostResolveRequestCache

    在 PostResolveRequestCache 事件之后和 PostMapRequestHandler 事件之前，会创建一个事件处理程序（一个对应于请求 URL 的页）。如果服务器在集成模式下运行 IIS 7.0 并且 .NET Framework 至少为 3.0 版本，则会引发 MapRequestHandler 事件。如果服务器在经典模式下运行 IIS 7.0 或者运行的是较早版本的 IIS，则无法处理此事件。 在 PostResolveRequestCache 事件之后和 PostMapRequestHandler 事件之前，会创建一个事件处理程序（一个对应于请求 URL 的页）。如果服务器在集成模式下运行 IIS 7.0 并且 .NET Framework 至少为 3.0 版本，则会引发 MapRequestHandler 事件。如果服务器在经典模式下运行 IIS 7.0 或者运行的是较早版本的 IIS，则无法处理此事件。 在 PostResolveRequestCache 事件之后和 PostMapRequestHandler 事件之前，会创建一个事件处理程序（一个对应于请求 URL 的页）。如果服务器在集成模式下运行 IIS 7.0 并且 .NET Framework 至少为 3.0 版本，则会引发 MapRequestHandler 事件。如果服务器在经典模式下运行 IIS 7.0 或者运行的是较早版本的 IIS，则无法处理此事件。

  8. PostMapRequestHandler

  9. AcquireRequestState

  10. PostAcquireRequestState

  11. PreRequestHandlerExecute

    执行事件处理程序。

  12. PostRequestHandlerExecute

  13. ReleaseRequestState

  14. PostReleaseRequestState

    在引发 PostReleaseRequestState 事件之后，现有的所有响应筛选器都将对输出进行筛选。

  15. UpdateRequestCache

  16. PostUpdateRequestCache

  17. LogRequest.

    仅在 IIS 7.0 处于集成模式并且 .NET Framework 至少为 3.0 版本的情况下才支持此事件。

  18. PostLogRequest

    仅在 IIS 7.0 处于集成模式并且 .NET Framework 至少为 3.0 版本的情况下才支持此事件。

  19. EndRequest

下面的两个示例演示如何使用 HttpApplication 类及其事件。第一个示例演示如何创建自定义 HTTP 模块以及如何将事件连接到该模块。第二个示例演示如何修改 Web.config 文件。 下面的两个示例演示如何使用 HttpApplication 类及其事件。第一个示例演示如何创建自定义 HTTP 模块以及如何将事件连接到该模块。第二个示例演示如何修改 Web.config 文件。 下面的两个示例演示如何使用 HttpApplication 类及其事件。第一个示例演示如何创建自定义 HTTP 模块以及如何将事件连接到该模块。第二个示例演示如何修改 Web.config 文件。

下面的示例演示如何创建自定义 HTTP 模块并将 AcquireRequestState 事件连接到该 HTTP 模块。HTTP 模块将截获对 Web 应用程序资源的所有请求，从而使您可以筛选客户端请求。预订 HttpApplication 事件的任何 HTTP 模块都必须实现 IHttpModule 接口。 下面的示例演示如何创建自定义 HTTP 模块并将 AcquireRequestState 事件连接到该 HTTP 模块。HTTP 模块将截获对 Web 应用程序资源的所有请求，从而使您可以筛选客户端请求。预订 HttpApplication 事件的任何 HTTP 模块都必须实现 IHttpModule 接口。 下面的示例演示如何创建自定义 HTTP 模块并将 AcquireRequestState 事件连接到该 HTTP 模块。HTTP 模块将截获对 Web 应用程序资源的所有请求，从而使您可以筛选客户端请求。预订 HttpApplication 事件的任何 HTTP 模块都必须实现 IHttpModule 接口。

Imports System
Imports System.Web

Namespace Samples.AspNet.VB
    Public Class CustomHTTPModule
        Implements IHttpModule

        Public Sub New()

            ' Class constructor.

        End Sub

        ' Classes that inherit IHttpModule
        ' must implement the Init and Dispose methods.
        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init

            AddHandler app.AcquireRequestState, AddressOf app_AcquireRequestState
            AddHandler app.PostAcquireRequestState, AddressOf app_PostAcquireRequestState

        End Sub

        Public Sub Dispose() Implements IHttpModule.Dispose

            ' Add code to clean up the
            ' instance variables of a module.

        End Sub

        ' Define a custom AcquireRequestState event handler.
        Public Sub app_AcquireRequestState(ByVal o As Object, ByVal ea As EventArgs)

            Dim httpApp As HttpApplication = CType(o, HttpApplication)
            Dim ctx As HttpContext = HttpContext.Current
            ctx.Response.Write(" Executing AcquireRequestState ")

        End Sub

        ' Define a custom PostAcquireRequestState event handler.
        Public Sub app_PostAcquireRequestState(ByVal o As Object, ByVal ea As EventArgs)

            Dim httpApp As HttpApplication = CType(o, HttpApplication)
            Dim ctx As HttpContext = HttpContext.Current
            ctx.Response.Write(" Executing PostAcquireRequestState ")

        End Sub

    End Class

End Namespace

using System;
using System.Web;

namespace Samples.AspNet.CS
{
    public class CustomHTTPModule : IHttpModule
    {
        public CustomHTTPModule()
        {
            // Class constructor.
        }

        // Classes that inherit IHttpModule
        // must implement the Init and Dispose methods.
        public void Init(HttpApplication app)
        {

            app.AcquireRequestState += new EventHandler(app_AcquireRequestState);
            app.PostAcquireRequestState += new EventHandler(app_PostAcquireRequestState);
        }

        public void Dispose()
        {
            // Add code to clean up the
            // instance variables of a module.
        }

        // Define a custom AcquireRequestState event handler.
        public void app_AcquireRequestState(object o, EventArgs ea)
        {
            HttpApplication httpApp = (HttpApplication)o;
            HttpContext ctx = HttpContext.Current;
            ctx.Response.Write(" Executing AcquireRequestState ");
        }

        // Define a custom PostAcquireRequestState event handler.
        public void app_PostAcquireRequestState(object o, EventArgs ea)
        {
            HttpApplication httpApp = (HttpApplication)o;
            HttpContext ctx = HttpContext.Current;
            ctx.Response.Write(" Executing PostAcquireRequestState ");
        }

    }
}

在自定义 HTTP 模块中的事件可以发生之前，必须先修改 Web.config 文件中的配置设置，通知 ASP.NET 有关该 HTTP 模块的信息。下面的示例演示 Web.config 文件的 httpModules 节中的相应配置设置。以下设置适用于 IIS 7.0 经典模式以及较早的 IIS 版本。 在自定义 HTTP 模块中的事件可以发生之前，必须先修改 Web.config 文件中的配置设置，通知 ASP.NET 有关该 HTTP 模块的信息。下面的示例演示 Web.config 文件的 httpModules 节中的相应配置设置。以下设置适用于 IIS 7.0 经典模式以及较早的 IIS 版本。 在自定义 HTTP 模块中的事件可以发生之前，必须先修改 Web.config 文件中的配置设置，通知 ASP.NET 有关该 HTTP 模块的信息。下面的示例演示 Web.config 文件的 httpModules 节中的相应配置设置。以下设置适用于 IIS 7.0 经典模式以及较早的 IIS 版本。

<configuration>
  <system.web>
    <httpModules>
      <add type="Samples.AspNet.CS.CustomHTTPModule"
        name="CustomHttpModule" />
      </httpModules>
  </system.web>
</configuration>
<configuration>
  <system.web>
    <httpModules>
      <add type="Samples.AspNet.VB.CustomHTTPModule"
        name="CustomHttpModule" />
      </httpModules>
  </system.web>
</configuration>

以下设置适用于 IIS 7.0 集成模式。

<configuration>
  <system.webServer>
    <modules>
      <add type="Samples.AspNet.CS.CustomHTTPModule"
        name="CustomHttpModule" />
      </modules>
  </system.webServer>
</configuration>
<configuration>
  <system.webServer>
    <modules>
      <add type="Samples.AspNet.VB.CustomHTTPModule"
        name="CustomHttpModule" />
      <modules>
  </system.webServer>
</configuration>

System.Web System.Web..::.HttpApplicationHttpApplication
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 成员
System.Web 命名空间
IHttpHandlerFactory
IHttpHandler
IHttpModule

其他资源

httpHandlers 元素（ASP.NET 设置架构）
httpModules 元素（ASP.NET 设置架构）


HttpApplication 成员

HttpApplication 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

定义 ASP.NET 应用程序中的所有应用程序对象共有的方法、属性和事件。此类是用户在 Global.asax 文件中所定义的应用程序的基类。 定义 ASP.NET 应用程序中的所有应用程序对象共有的方法、属性和事件。此类是用户在 Global.asax 文件中所定义的应用程序的基类。

HttpApplication 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpApplication 类
System.Web 命名空间


HttpApplication 构造函数

HttpApplication 构造函数
HttpApplication 类

初始化 HttpApplication 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpApplication()
public:
HttpApplication()
new : unit -> HttpApplication

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication 方法

HttpApplication 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

HttpApplication 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplication 类
System.Web 命名空间


HttpApplication ..::.AddOnAcquireRequestStateAsync 方法

HttpApplication
.
.
::
.
AddOnAcquireRequestStateAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 AcquireRequestState 事件添加到当前请求的异步 AcquireRequestState 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 AcquireRequestState 事件添加到当前请求的异步 AcquireRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnAcquireRequestStateAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnAcquireRequestStateAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnAcquireRequestStateAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnAcquireRequestStateAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 AcquireRequestState 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
结束 AcquireRequestState 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnAcquireRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 AcquireRequestState 事件添加到当前请求的异步 AcquireRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnAcquireRequestStateAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnAcquireRequestStateAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnAcquireRequestStateAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnAcquireRequestStateAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 AcquireRequestState 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
结束 AcquireRequestState 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 AcquireRequestState 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnAcquireRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnAuthenticateRequestAsync 方法

HttpApplication
.
.
::
.
AddOnAuthenticateRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 AuthenticateRequest 事件添加到当前请求的异步 AuthenticateRequest 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 AuthenticateRequest 事件添加到当前请求的异步 AuthenticateRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnAuthenticateRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnAuthenticateRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnAuthenticateRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnAuthenticateRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 AuthenticateRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 AuthenticateRequest 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnAuthenticateRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 AuthenticateRequest 事件添加到当前请求的异步 AuthenticateRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnAuthenticateRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnAuthenticateRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnAuthenticateRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnAuthenticateRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 AuthenticateRequest 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 AuthenticateRequest 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 AuthenticateRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnAuthenticateRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnAuthorizeRequestAsync 方法

HttpApplication
.
.
::
.
AddOnAuthorizeRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 AuthorizeRequest 事件添加到当前请求的异步 AuthorizeRequest 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 AuthorizeRequest 事件添加到当前请求的异步 AuthorizeRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnAuthorizeRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnAuthorizeRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnAuthorizeRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnAuthorizeRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 AuthorizeRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 AuthorizeRequest 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnAuthorizeRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 AuthorizeRequest 事件添加到当前请求的异步 AuthorizeRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnAuthorizeRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnAuthorizeRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnAuthorizeRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnAuthorizeRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 AuthorizeRequest 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 AuthorizeRequest 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 AcquireRequestState 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnAuthorizeRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnBeginRequestAsync 方法

HttpApplication
.
.
::
.
AddOnBeginRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 BeginRequest 事件添加到当前请求的异步 BeginRequest 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnBeginRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnBeginRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 BeginRequest 事件添加到当前请求的异步 BeginRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnBeginRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnBeginRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnBeginRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnBeginRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 BeginRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 BeginRequest 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnBeginRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnBeginRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnBeginRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 BeginRequest 事件添加到当前请求的异步 BeginRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnBeginRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnBeginRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnBeginRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnBeginRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 BeginRequest 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 BeginRequest 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 BeginRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnBeginRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnEndRequestAsync 方法

HttpApplication
.
.
::
.
AddOnEndRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 EndRequest 事件添加到当前请求的异步 EndRequest 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnEndRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnEndRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 EndRequest 事件添加到当前请求的异步 EndRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnEndRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnEndRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnEndRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnEndRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 EndRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 EndRequest 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnEndRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnEndRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnEndRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 EndRequest 事件添加到当前请求的异步 EndRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnEndRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnEndRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnEndRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnEndRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 EndRequest 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 EndRequest 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 EndRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnEndRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnLogRequestAsync 方法

HttpApplication
.
.
::
.
AddOnLogRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 LogRequest 事件添加到当前请求的异步 LogRequest 事件处理程序的集合。

名称 说明
页首

AddOnLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 AddOnLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnLogRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnLogRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 LogRequest 事件添加到当前请求的异步 LogRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnLogRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnLogRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnLogRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnLogRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 LogRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 LogRequest 的异步处理的 EndEventHandler。

AddOnLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 AddOnLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
AddOnLogRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnLogRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnLogRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 LogRequest 事件添加到当前请求的异步 LogRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnLogRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnLogRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnLogRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnLogRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
BeginEventHandler 用于开始 LogRequest 的异步处理。
endHandler
类型： System.Web EndEventHandler
EndEventHandler 用于结束 LogRequest 的异步处理。
state
类型： System Object
要添加到异步 LogRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
AddOnLogRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnMapRequestHandlerAsync 方法

HttpApplication
.
.
::
.
AddOnMapRequestHandlerAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 MapRequestHandler 事件添加到当前请求的异步 MapRequestHandler 事件处理程序的集合。

名称 说明
页首

AddOnMapRequestHandlerAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 AddOnMapRequestHandlerAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 MapRequestHandler 事件添加到当前请求的异步 MapRequestHandler 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnMapRequestHandlerAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnMapRequestHandlerAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnMapRequestHandlerAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnMapRequestHandlerAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 MapRequestHandler 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 MapRequestHandler 的异步处理的 EndEventHandler。

AddOnMapRequestHandlerAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 AddOnMapRequestHandlerAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
AddOnMapRequestHandlerAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 MapRequestHandler 事件添加到当前请求的异步 MapRequestHandler 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnMapRequestHandlerAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnMapRequestHandlerAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnMapRequestHandlerAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnMapRequestHandlerAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
BeginEventHandler 用于开始 MapRequestHandler 的异步处理。
endHandler
类型： System.Web EndEventHandler
EndEventHandler 用于结束 MapRequestHandler 的异步处理。
state
类型： System Object
要添加到异步 MapRequestHandler 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
AddOnMapRequestHandlerAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostAcquireRequestStateAsync 方法

HttpApplication
.
.
::
.
AddOnPostAcquireRequestStateAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostAcquireRequestState 事件添加到当前请求的异步 PostAcquireRequestState 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostAcquireRequestState 事件添加到当前请求的异步 PostAcquireRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostAcquireRequestStateAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostAcquireRequestStateAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostAcquireRequestStateAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostAcquireRequestStateAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostAcquireRequestState 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostAcquireRequestState 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostAcquireRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostAcquireRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostAcquireRequestState 事件添加到当前请求的异步 PostAcquireRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostAcquireRequestStateAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostAcquireRequestStateAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostAcquireRequestStateAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostAcquireRequestStateAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostAcquireRequestState 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostAcquireRequestState 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostAcquireRequestState 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostAcquireRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostAuthenticateRequestAsync 方法

HttpApplication
.
.
::
.
AddOnPostAuthenticateRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 AddOnPostAcquireRequestStateAsync 事件添加到当前请求的异步 PostAuthenticateRequest 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostAuthenticateRequest 事件添加到当前请求的异步 PostAuthenticateRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostAuthenticateRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostAuthenticateRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostAuthenticateRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostAuthenticateRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
BeginEventHandler 用于开始 PostAuthenticateRequest 的异步处理。
eh
类型： System.Web EndEventHandler
EndEventHandler 用于结束 PostAuthenticateRequest 的异步处理。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostAuthenticateRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostAuthenticateRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostAuthorizeRequest 事件添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostAuthenticateRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostAuthenticateRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostAuthenticateRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostAuthenticateRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostAuthorizeRequest 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostAuthorizeRequest 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostAuthorizeRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostAuthenticateRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostAuthorizeRequestAsync 方法

HttpApplication
.
.
::
.
AddOnPostAuthorizeRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostAuthorizeRequest 事件添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostAuthorizeRequest 事件添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostAuthorizeRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostAuthorizeRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostAuthorizeRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostAuthorizeRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostAuthorizeRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostAuthorizeRequest 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostAuthorizeRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostAuthorizeRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostAuthorizeRequest 添加到当前请求的异步 PostAuthorizeRequest 事件处理程序的集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostAuthorizeRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostAuthorizeRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostAuthorizeRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostAuthorizeRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostAuthorizeRequest 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostAuthorizeRequest 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostAuthorizeRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostAuthorizeRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostLogRequestAsync 方法

HttpApplication
.
.
::
.
AddOnPostLogRequestAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostLogRequest 事件添加到当前请求的异步 PostLogRequest 事件处理程序的集合。

名称 说明
页首

AddOnPostLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 AddOnPostLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostLogRequestAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostLogRequestAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostLogRequest 事件添加到当前请求的异步 PostLogRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostLogRequestAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostLogRequestAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostLogRequestAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostLogRequestAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostLogRequest 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostLogRequest 的异步处理的 EndEventHandler。

AddOnPostLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 AddOnPostLogRequestAsync 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
AddOnPostLogRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostLogRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostLogRequestAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostLogRequest 事件添加到当前请求的异步 PostLogRequest 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostLogRequestAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostLogRequestAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostLogRequestAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostLogRequestAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
BeginEventHandler 用于开始 PostLogRequest 的异步处理。
endHandler
类型： System.Web EndEventHandler
EndEventHandler 用于结束 PostLogRequest 的异步处理。
state
类型： System Object
要添加到异步 PostLogRequest 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
AddOnPostLogRequestAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostMapRequestHandlerAsync 方法

HttpApplication
.
.
::
.
AddOnPostMapRequestHandlerAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostMapRequestHandler 事件添加到当前请求的异步 PostMapRequestHandler 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostMapRequestHandler 事件添加到当前请求的异步 PostMapRequestHandler 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostMapRequestHandlerAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostMapRequestHandlerAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostMapRequestHandlerAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostMapRequestHandlerAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostMapRequestHandler 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostMapRequestHandler 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostMapRequestHandlerAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostMapRequestHandlerAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostMapRequestHandler 事件添加到当前请求的异步 PostMapRequestHandler 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostMapRequestHandlerAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostMapRequestHandlerAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostMapRequestHandlerAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostMapRequestHandlerAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostMapRequestHandler 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostMapRequestHandler 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostMapRequestHandler 集合的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostMapRequestHandlerAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostReleaseRequestStateAsync 方法

HttpApplication
.
.
::
.
AddOnPostReleaseRequestStateAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostReleaseRequestState 事件添加到当前请求的异步 PostReleaseRequestState 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostReleaseRequestState 事件添加到当前请求的异步 PostReleaseRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostReleaseRequestStateAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostReleaseRequestStateAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostReleaseRequestStateAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostReleaseRequestStateAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostReleaseRequestState 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostReleaseRequestState 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostReleaseRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostReleaseRequestState 事件添加到当前请求的异步 PostReleaseRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostReleaseRequestStateAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostReleaseRequestStateAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostReleaseRequestStateAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostReleaseRequestStateAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostReleaseRequestState 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostReleaseRequestState 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostReleaseRequestState 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostReleaseRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostRequestHandlerExecuteAsync 方法

HttpApplication
.
.
::
.
AddOnPostRequestHandlerExecuteAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostRequestHandlerExecute 事件添加到当前请求的异步 PostRequestHandlerExecute 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostRequestHandlerExecute 事件添加到当前请求的异步 PostRequestHandlerExecute 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostRequestHandlerExecuteAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostRequestHandlerExecuteAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostRequestHandlerExecuteAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostRequestHandlerExecuteAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostRequestHandlerExecute 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostRequestHandlerExecute 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostRequestHandlerExecuteAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostRequestHandlerExecute 事件添加到当前请求的异步 PostRequestHandlerExecute 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostRequestHandlerExecuteAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostRequestHandlerExecuteAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostRequestHandlerExecuteAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostRequestHandlerExecuteAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostRequestHandlerExecute 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostRequestHandlerExecute 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostRequestHandlerExecute 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostRequestHandlerExecuteAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostResolveRequestCacheAsync 方法

HttpApplication
.
.
::
.
AddOnPostResolveRequestCacheAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostResolveRequestCache 事件添加到当前请求的异步 PostResolveRequestCache 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostResolveRequestCache 事件添加到当前请求的异步 PostResolveRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostResolveRequestCacheAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostResolveRequestCacheAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostResolveRequestCacheAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostResolveRequestCacheAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PostResolveRequestCache 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PostResolveRequestCache 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostResolveRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostResolveRequestCache 事件添加到当前请求的异步 PostResolveRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostResolveRequestCacheAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostResolveRequestCacheAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostResolveRequestCacheAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostResolveRequestCacheAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PostResolveRequestCache 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PostResolveRequestCache 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostResolveRequestCache 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostResolveRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostUpdateRequestCacheAsync 方法

HttpApplication
.
.
::
.
AddOnPostUpdateRequestCacheAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PostUpdateRequestCache 事件添加到当前请求的异步 PostUpdateRequestCache 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPostUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPostUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PostUpdateRequestCache 事件添加到当前请求的异步 PostUpdateRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostUpdateRequestCacheAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPostUpdateRequestCacheAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPostUpdateRequestCacheAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPostUpdateRequestCacheAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
BeginEventHandler 用于开始 PostUpdateRequestCache 的异步处理。
eh
类型： System.Web EndEventHandler
终止 PostUpdateRequestCache 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostUpdateRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPostUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPostUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PostUpdateRequestCache 事件添加到当前请求的异步 PostUpdateRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPostUpdateRequestCacheAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPostUpdateRequestCacheAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPostUpdateRequestCacheAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPostUpdateRequestCacheAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
BeginEventHandler 用于开始事件的异步处理。
endHandler
类型： System.Web EndEventHandler
终止 PostUpdateRequestCache 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PostUpdateRequestCache 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPostUpdateRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPreRequestHandlerExecuteAsync 方法

HttpApplication
.
.
::
.
AddOnPreRequestHandlerExecuteAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 PreRequestHandlerExecute 事件添加到当前请求的异步 PreRequestHandlerExecute 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnPreRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnPreRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 PreRequestHandlerExecute 事件添加到当前请求的异步 PreRequestHandlerExecute 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPreRequestHandlerExecuteAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnPreRequestHandlerExecuteAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnPreRequestHandlerExecuteAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnPreRequestHandlerExecuteAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 PreRequestHandlerExecute 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 PreRequestHandlerExecute 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPreRequestHandlerExecuteAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnPreRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnPreRequestHandlerExecuteAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 PreRequestHandlerExecute 事件添加到当前请求的异步 PreRequestHandlerExecute 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnPreRequestHandlerExecuteAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnPreRequestHandlerExecuteAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnPreRequestHandlerExecuteAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnPreRequestHandlerExecuteAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 PreRequestHandlerExecute 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 PreRequestHandlerExecute 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 PreRequestHandlerExecute 集合的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnPreRequestHandlerExecuteAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnReleaseRequestStateAsync 方法

HttpApplication
.
.
::
.
AddOnReleaseRequestStateAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 ReleaseRequestState 事件添加到当前请求的异步 ReleaseRequestState 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 ReleaseRequestState 事件添加到当前请求的异步 ReleaseRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnReleaseRequestStateAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnReleaseRequestStateAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnReleaseRequestStateAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnReleaseRequestStateAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 ReleaseRequestState 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 ReleaseRequestState 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnReleaseRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnReleaseRequestStateAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 ReleaseRequestState 事件添加到当前请求的异步 ReleaseRequestState 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnReleaseRequestStateAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnReleaseRequestStateAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnReleaseRequestStateAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnReleaseRequestStateAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 ReleaseRequestState 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 ReleaseRequestState 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 ReleaseRequestState 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnReleaseRequestStateAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnResolveRequestCacheAsync 方法

HttpApplication
.
.
::
.
AddOnResolveRequestCacheAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 ResolveRequestCache 事件处理程序添加到当前请求的异步 ResolveRequestCache 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 ResolveRequestCache 事件处理程序添加到当前请求的异步 ResolveRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnResolveRequestCacheAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnResolveRequestCacheAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnResolveRequestCacheAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnResolveRequestCacheAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 ResolveRequestCache 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 ResolveRequestCache 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnResolveRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnResolveRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 ResolveRequestCache 事件处理程序添加到当前请求的异步 ResolveRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnResolveRequestCacheAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnResolveRequestCacheAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnResolveRequestCacheAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnResolveRequestCacheAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 ResolveRequestCache 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 ResolveRequestCache 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 ResolveRequestCache 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnResolveRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnUpdateRequestCacheAsync 方法

HttpApplication
.
.
::
.
AddOnUpdateRequestCacheAsync 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

将指定的 UpdateRequestCache 事件添加到当前请求的异步 UpdateRequestCache 事件处理程序的集合。

名称 说明
页首

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.AddOnUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)

HttpApplication
.
.
::
.
AddOnUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler)
HttpApplication 类

将指定的 UpdateRequestCache 事件添加到当前请求的异步 UpdateRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnUpdateRequestCacheAsync ( _
    bh As BeginEventHandler, _
    eh As EndEventHandler _
)
public void AddOnUpdateRequestCacheAsync(
    BeginEventHandler bh,
    EndEventHandler eh
)
public:
void AddOnUpdateRequestCacheAsync(
    BeginEventHandler^ bh,
    EndEventHandler^ eh
)
member AddOnUpdateRequestCacheAsync :
        bh:BeginEventHandler *
        eh:EndEventHandler -> unit

参数

bh
类型： System.Web BeginEventHandler
启动 UpdateRequestCache 的异步处理的 BeginEventHandler。
eh
类型： System.Web EndEventHandler
终止 UpdateRequestCache 的异步处理的 EndEventHandler。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
AddOnUpdateRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.AddOnUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)

HttpApplication
.
.
::
.
AddOnUpdateRequestCacheAsync 方法 (BeginEventHandler, EndEventHandler, Object)
HttpApplication 类

将指定的 UpdateRequestCache 事件添加到当前请求的异步 UpdateRequestCache 事件处理程序的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddOnUpdateRequestCacheAsync ( _
    beginHandler As BeginEventHandler, _
    endHandler As EndEventHandler, _
    state As Object _
)
public void AddOnUpdateRequestCacheAsync(
    BeginEventHandler beginHandler,
    EndEventHandler endHandler,
    Object state
)
public:
void AddOnUpdateRequestCacheAsync(
    BeginEventHandler^ beginHandler,
    EndEventHandler^ endHandler,
    Object^ state
)
member AddOnUpdateRequestCacheAsync :
        beginHandler:BeginEventHandler *
        endHandler:EndEventHandler *
        state:Object -> unit

参数

beginHandler
类型： System.Web BeginEventHandler
启动 UpdateRequestCache 的异步处理的 BeginEventHandler。
endHandler
类型： System.Web EndEventHandler
终止 UpdateRequestCache 的异步处理的 EndEventHandler。
state
类型： System Object
要添加到异步 UpdateRequestCache 的关联状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
AddOnUpdateRequestCacheAsync 重载
System.Web 命名空间


HttpApplication ..::.CompleteRequest 方法

HttpApplication
.
.
::
.
CompleteRequest 方法
HttpApplication 类

使 ASP.NET 跳过 HTTP 执行管线链中的所有事件和筛选并直接执行 EndRequest 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub CompleteRequest
public void CompleteRequest()
public:
void CompleteRequest()
member CompleteRequest : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Dispose 方法

HttpApplication
.
.
::
.
Dispose 方法
HttpApplication 类

处置 HttpApplication 实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Dispose
public virtual void Dispose()
public:
virtual void Dispose()
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

在执行 Dispose 方法时无法使用 Request、Response、Session 和 Application 属性。

Dispose 方法针对应用程序实例中每个已注册的 HttpModules 调用 Dispose 方法，并引发 Disposed 事件。

对继承者的说明

在派生类中重写 Dispose 时，一定要调用基类的 Dispose 方法以便注册的委托可接收到事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.GetOutputCacheProviderName 方法

HttpApplication
.
.
::
.
GetOutputCacheProviderName 方法
HttpApplication 类

获取为网站配置的默认输出缓存提供程序的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetOutputCacheProviderName ( _
    context As HttpContext _
) As String
public virtual string GetOutputCacheProviderName(
    HttpContext context
)
public:
virtual String^ GetOutputCacheProviderName(
    HttpContext^ context
)
abstract GetOutputCacheProviderName :
        context:HttpContext -> string
override GetOutputCacheProviderName :
        context:HttpContext -> string

参数

context
类型： System.Web HttpContext
一个 HttpContext，提供对服务于 HTTP 请求的内部服务器对象的引用。

返回值

类型： System String
默认提供程序的名称。
异常 | 条件
ProviderException | context为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或是一个空字符串 ("")。

可以重写此方法，并使用它来返回为网站配置的任何输出缓存提供程序的名称。ASP.NET 检索对指定提供者的引用，并用它来存储当前执行请求的输出缓存数据。 可以重写此方法，并使用它来返回为网站配置的任何输出缓存提供程序的名称。ASP.NET 检索对指定提供者的引用，并用它来存储当前执行请求的输出缓存数据。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.GetVaryByCustomString 方法

HttpApplication
.
.
::
.
GetVaryByCustomString 方法
HttpApplication 类

提供 VaryByCustom 属性在整个应用程序范围内的实现。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetVaryByCustomString ( _
    context As HttpContext, _
    custom As String _
) As String
public virtual string GetVaryByCustomString(
    HttpContext context,
    string custom
)
public:
virtual String^ GetVaryByCustomString(
    HttpContext^ context,
    String^ custom
)
abstract GetVaryByCustomString :
        context:HttpContext *
        custom:string -> string
override GetVaryByCustomString :
        context:HttpContext *
        custom:string -> string

参数

context
类型： System.Web HttpContext
一个 HttpContext 对象，包含有关当前 Web 请求的信息。
custom
类型： System String
自定义字符串，它指定哪个缓存的响应被用于响应当前请求。

返回值

类型： System String
如果 custom 参数的值为 "browser"，则为浏览器的 Type；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

可以重写 GetVaryByCustomString 以添加一个新方法，该方法计算基于当前请求的自定义变化依据值。此实现必须调用它不能识别的自定义值的基类。有关更多信息，请参见 如何：使用自定义字符串对页的各个版本进行缓存。 可以重写 GetVaryByCustomString 以添加一个新方法，该方法计算基于当前请求的自定义变化依据值。此实现必须调用它不能识别的自定义值的基类。有关更多信息，请参见 如何：使用自定义字符串对页的各个版本进行缓存。 可以重写 GetVaryByCustomString 以添加一个新方法，该方法计算基于当前请求的自定义变化依据值。此实现必须调用它不能识别的自定义值的基类。有关更多信息，请参见 如何：使用自定义字符串对页的各个版本进行缓存。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间

其他资源

如何：使用自定义字符串对页的各个版本进行缓存


HttpApplication ..::.IHttpAsyncHandler ..::.BeginProcessRequest 方法

HttpApplication
.
.
::
.
IHttpAsyncHandler
.
.
::
.
BeginProcessRequest 方法
HttpApplication 类

启动对 HTTP 事件处理程序的异步调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function BeginProcessRequest ( _
    context As HttpContext, _
    cb As AsyncCallback, _
    extraData As Object _
) As IAsyncResult Implements IHttpAsyncHandler.BeginProcessRequest
IAsyncResult IHttpAsyncHandler.BeginProcessRequest(
    HttpContext context,
    AsyncCallback cb,
    Object extraData
)
private:
virtual IAsyncResult^ BeginProcessRequest(
    HttpContext^ context,
    AsyncCallback^ cb,
    Object^ extraData
) sealed = IHttpAsyncHandler::BeginProcessRequest
private abstract BeginProcessRequest :
        context:HttpContext *
        cb:AsyncCallback *
        extraData:Object -> IAsyncResult
private override BeginProcessRequest :
        context:HttpContext *
        cb:AsyncCallback *
        extraData:Object -> IAsyncResult

参数

context
类型： System.Web HttpContext
一个 HttpContext，提供对服务于 HTTP 请求的内部服务器对象的引用。
cb
类型： System AsyncCallback
异步方法调用完成时要调用的 AsyncCallback。如果 cb 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则没有调用该委托。 异步方法调用完成时要调用的 AsyncCallback。如果 cb 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则没有调用该委托。
extraData
类型： System Object
处理该请求所必需的所有额外数据。

返回值

类型： System IAsyncResult
包含有关进程状态信息的 IAsyncResult。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.IHttpAsyncHandler ..::.EndProcessRequest 方法

HttpApplication
.
.
::
.
IHttpAsyncHandler
.
.
::
.
EndProcessRequest 方法
HttpApplication 类

在进程完成时提供一个异步进程 End 方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub EndProcessRequest ( _
    result As IAsyncResult _
) Implements IHttpAsyncHandler.EndProcessRequest
void IHttpAsyncHandler.EndProcessRequest(
    IAsyncResult result
)
private:
virtual void EndProcessRequest(
    IAsyncResult^ result
) sealed = IHttpAsyncHandler::EndProcessRequest
private abstract EndProcessRequest :
        result:IAsyncResult -> unit
private override EndProcessRequest :
        result:IAsyncResult -> unit

参数

result
类型： System IAsyncResult
包含有关进程状态信息的 IAsyncResult。

实现

可使用 IHttpAsyncHandler..::.EndProcessRequest 方法引发异步处理期间捕获的任何异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.IHttpHandler ..::.ProcessRequest 方法

HttpApplication
.
.
::
.
IHttpHandler
.
.
::
.
ProcessRequest 方法
HttpApplication 类

通过实现 IHttpHandler 接口的自定义 HTTP 处理程序启用 HTTP Web 请求的处理。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub ProcessRequest ( _
    context As HttpContext _
) Implements IHttpHandler.ProcessRequest
void IHttpHandler.ProcessRequest(
    HttpContext context
)
private:
virtual void ProcessRequest(
    HttpContext^ context
) sealed = IHttpHandler::ProcessRequest
private abstract ProcessRequest :
        context:HttpContext -> unit
private override ProcessRequest :
        context:HttpContext -> unit

参数

context
类型： System.Web HttpContext
一个 HttpContext，提供对服务于 HTTP 请求的内部服务器对象的引用。

实现

异常 | 条件
HttpException | 在所有情况下。

为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。该对象提供对请求的内部 Request、Response 和 Server 对象的访问。 为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。该对象提供对请求的内部 Request、Response 和 Server 对象的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Init 方法

HttpApplication
.
.
::
.
Init 方法
HttpApplication 类

在添加所有事件处理程序模块之后执行自定义初始化代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Init
public virtual void Init()
public:
virtual void Init()
abstract Init : unit -> unit
override Init : unit -> unit

在派生类中，您可以重写 Init 方法以添加自定义的一次性初始化代码。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication 属性

HttpApplication 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

HttpApplication 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplication 类
System.Web 命名空间


HttpApplication ..::.Application 属性

HttpApplication
.
.
::
.
Application 属性
HttpApplication 类

获取应用程序的当前状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Application As HttpApplicationState
    Get
[BrowsableAttribute(false)]
public HttpApplicationState Application { get; }
[BrowsableAttribute(false)]
public:
property HttpApplicationState^ Application {
    HttpApplicationState^ get ();
}
[<BrowsableAttribute(false)>]
member Application : HttpApplicationState

属性值

类型： System.Web HttpApplicationState
当前请求的 HttpApplicationState。

应用程序的当前状态由一个应用程序范围内对象的键/值对字典组成，可将其用于存储与来自多个客户端的多个 Web 请求相关的 .NET Framework 对象和标量值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Context 属性

HttpApplication
.
.
::
.
Context 属性
HttpApplication 类

获取关于当前请求的 HTTP 特定信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Context As HttpContext
    Get
[BrowsableAttribute(false)]
public HttpContext Context { get; }
[BrowsableAttribute(false)]
public:
property HttpContext^ Context {
    HttpContext^ get ();
}
[<BrowsableAttribute(false)>]
member Context : HttpContext

属性值

类型： System.Web HttpContext
当前请求的 HttpContext。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Events 属性

HttpApplication
.
.
::
.
Events 属性
HttpApplication 类

获取处理所有应用程序事件的事件处理程序委托列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected ReadOnly Property Events As EventHandlerList
    Get
protected EventHandlerList Events { get; }
protected:
property EventHandlerList^ Events {
    EventHandlerList^ get ();
}
member Events : EventHandlerList

属性值

类型： System.ComponentModel EventHandlerList
EventHandlerList，它包含事件处理程序委托的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.IHttpHandler ..::.IsReusable 属性

HttpApplication
.
.
::
.
IHttpHandler
.
.
::
.
IsReusable 属性
HttpApplication 类

获取一个 Boolean 值，它指示其他请求是否可以使用 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property IsReusable As Boolean
    Implements IHttpHandler.IsReusable
    Get
bool IHttpHandler.IsReusable { get; }
private:
virtual property bool IsReusable {
    bool get () sealed = IHttpHandler::IsReusable::get;
}
private abstract IsReusable : bool
private override IsReusable : bool

属性值

类型： System Boolean
如果 IHttpHandler 实例可重用，则为 true；否则为 false。

实现

若要将 IsReusable 属性显式设置为 true 或 false，请提供重写 IsReusable 属性访问器的代码。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Modules 属性

HttpApplication
.
.
::
.
Modules 属性
HttpApplication 类

获取当前应用程序的模块集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Modules As HttpModuleCollection
    Get
[BrowsableAttribute(false)]
public HttpModuleCollection Modules { get; }
[BrowsableAttribute(false)]
public:
property HttpModuleCollection^ Modules {
    HttpModuleCollection^ get ();
}
[<BrowsableAttribute(false)>]
member Modules : HttpModuleCollection

属性值

类型： System.Web HttpModuleCollection
一个 HttpModuleCollection，包含用于应用程序的模块的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Request 属性

HttpApplication
.
.
::
.
Request 属性
HttpApplication 类

获取当前请求所对应的内部请求对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Request As HttpRequest
    Get
[BrowsableAttribute(false)]
public HttpRequest Request { get; }
[BrowsableAttribute(false)]
public:
property HttpRequest^ Request {
    HttpRequest^ get ();
}
[<BrowsableAttribute(false)>]
member Request : HttpRequest

属性值

类型： System.Web HttpRequest
应用程序将处理的 HttpRequest 对象。
异常 | 条件
HttpException | HttpRequest 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Response 属性

HttpApplication
.
.
::
.
Response 属性
HttpApplication 类

获取当前请求所对应的内部响应对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Response As HttpResponse
    Get
[BrowsableAttribute(false)]
public HttpResponse Response { get; }
[BrowsableAttribute(false)]
public:
property HttpResponse^ Response {
    HttpResponse^ get ();
}
[<BrowsableAttribute(false)>]
member Response : HttpResponse

属性值

类型： System.Web HttpResponse
应用程序将处理的 HttpResponse 对象。
异常 | 条件
HttpException | HttpResponse 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Server 属性

HttpApplication
.
.
::
.
Server 属性
HttpApplication 类

获取当前请求所对应的内部服务器对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Server As HttpServerUtility
    Get
[BrowsableAttribute(false)]
public HttpServerUtility Server { get; }
[BrowsableAttribute(false)]
public:
property HttpServerUtility^ Server {
    HttpServerUtility^ get ();
}
[<BrowsableAttribute(false)>]
member Server : HttpServerUtility

属性值

类型： System.Web HttpServerUtility
应用程序将处理的 HttpServerUtility 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Session 属性

HttpApplication
.
.
::
.
Session 属性
HttpApplication 类

获取提供对会话数据的访问的内部会话对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property Session As HttpSessionState
    Get
[BrowsableAttribute(false)]
public HttpSessionState Session { get; }
[BrowsableAttribute(false)]
public:
property HttpSessionState^ Session {
    HttpSessionState^ get ();
}
[<BrowsableAttribute(false)>]
member Session : HttpSessionState

属性值

类型： System.Web.SessionState HttpSessionState
当前会话的 HttpSessionState 对象。
异常 | 条件
HttpException | HttpSessionState 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.Site 属性

HttpApplication
.
.
::
.
Site 属性
HttpApplication 类

获取或设置 IComponent 实现的网站接口。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public Property Site As ISite
    Get
    Set
[BrowsableAttribute(false)]
public ISite Site { get; set; }
[BrowsableAttribute(false)]
public:
virtual property ISite^ Site {
    ISite^ get () sealed;
    void set (ISite^ value) sealed;
}
[<BrowsableAttribute(false)>]
abstract Site : ISite with get, set
[<BrowsableAttribute(false)>]
override Site : ISite with get, set

属性值

类型： System.ComponentModel ISite
一个 ISite 对象，它使容器能够管理其子组件并与它们进行通信。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.User 属性

HttpApplication
.
.
::
.
User 属性
HttpApplication 类

获取当前请求的内部用户对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<BrowsableAttribute(False)> _
Public ReadOnly Property User As IPrincipal
    Get
[BrowsableAttribute(false)]
public IPrincipal User { get; }
[BrowsableAttribute(false)]
public:
property IPrincipal^ User {
    IPrincipal^ get ();
}
[<BrowsableAttribute(false)>]
member User : IPrincipal

属性值

类型： System.Security.Principal IPrincipal
IPrincipal 对象，表示当前已验证身份的用户或匿名用户。
异常 | 条件
HttpException | IPrincipal 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication 事件

HttpApplication 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplication 类

HttpApplication 类型公开以下成员。

名称 说明
页首

参考

HttpApplication 类
System.Web 命名空间


HttpApplication ..::.AcquireRequestState 事件

HttpApplication
.
.
::
.
AcquireRequestState 事件
HttpApplication 类

当 ASP.NET 获取与当前请求关联的当前状态（如会话状态）时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event AcquireRequestState As EventHandler
public event EventHandler AcquireRequestState
public:
 event EventHandler^ AcquireRequestState {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member AcquireRequestState : IEvent<EventHandler,
    EventArgs>

AcquireRequestState 事件在创建了事件处理程序之后引发。

有关如何处理事件的更多信息，请参见使用事件。

有关处理 AcquireRequestState 事件的示例，请参见 HttpApplication 概述主题。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostAcquireRequestState


HttpApplication ..::.AuthenticateRequest 事件

HttpApplication
.
.
::
.
AuthenticateRequest 事件
HttpApplication 类

当安全模块已建立用户标识时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event AuthenticateRequest As EventHandler
public event EventHandler AuthenticateRequest
public:
 event EventHandler^ AuthenticateRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member AuthenticateRequest : IEvent<EventHandler,
    EventArgs>

AuthenticateRequest 事件发出信号表示配置的身份验证机制已对当前请求进行了身份验证。订阅 AuthenticateRequest 事件可确保在处理附加模块或事件处理程序之前对请求进行身份验证。 AuthenticateRequest 事件发出信号表示配置的身份验证机制已对当前请求进行了身份验证。订阅 AuthenticateRequest 事件可确保在处理附加模块或事件处理程序之前对请求进行身份验证。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostAuthenticateRequest


HttpApplication ..::.AuthorizeRequest 事件

HttpApplication
.
.
::
.
AuthorizeRequest 事件
HttpApplication 类

当安全模块已验证用户授权时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event AuthorizeRequest As EventHandler
public event EventHandler AuthorizeRequest
public:
 event EventHandler^ AuthorizeRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member AuthorizeRequest : IEvent<EventHandler,
    EventArgs>

AuthorizeRequest 事件发出信号表示 ASP.NET 已对当前请求进行了授权。订阅 AuthorizeRequest 事件可确保在处理附加的模块或事件处理程序之前对请求进行身份验证和授权。 AuthorizeRequest 事件发出信号表示 ASP.NET 已对当前请求进行了授权。订阅 AuthorizeRequest 事件可确保在处理附加的模块或事件处理程序之前对请求进行身份验证和授权。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostAuthorizeRequest


HttpApplication ..::.BeginRequest 事件

HttpApplication
.
.
::
.
BeginRequest 事件
HttpApplication 类

在 ASP.NET 响应请求时作为 HTTP 执行管线链中的第一个事件发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event BeginRequest As EventHandler
public event EventHandler BeginRequest
public:
 event EventHandler^ BeginRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member BeginRequest : IEvent<EventHandler,
    EventArgs>

BeginRequest 事件发出信号表示创建任何给定的新请求。此事件始终被引发，并且始终是请求处理期间发生的第一个事件。 BeginRequest 事件发出信号表示创建任何给定的新请求。此事件始终被引发，并且始终是请求处理期间发生的第一个事件。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
EndRequest


HttpApplication ..::.Disposed 事件

HttpApplication
.
.
::
.
Disposed 事件
HttpApplication 类

在释放应用程序时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event Disposed As EventHandler
public event EventHandler Disposed
public:
virtual  event EventHandler^ Disposed {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
abstract Disposed : IEvent<EventHandler,
    EventArgs>
override Disposed : IEvent<EventHandler,
    EventArgs>

实现

当创建 Disposed 委托时，请标识将处理事件的方法。若要使事件与事件处理程序相关联，请将 Disposed 委托的一个实例添加到事件。除非移除了 Disposed 委托，否则每次发生该事件时都会调用事件处理程序。 当创建 Disposed 委托时，请标识将处理事件的方法。若要使事件与事件处理程序相关联，请将 Disposed 委托的一个实例添加到事件。除非移除了 Disposed 委托，否则每次发生该事件时都会调用事件处理程序。 当创建 Disposed 委托时，请标识将处理事件的方法。若要使事件与事件处理程序相关联，请将 Disposed 委托的一个实例添加到事件。除非移除了 Disposed 委托，否则每次发生该事件时都会调用事件处理程序。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.EndRequest 事件

HttpApplication
.
.
::
.
EndRequest 事件
HttpApplication 类

在 ASP.NET 响应请求时作为 HTTP 执行管线链中的最后一个事件发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event EndRequest As EventHandler
public event EventHandler EndRequest
public:
 event EventHandler^ EndRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member EndRequest : IEvent<EventHandler,
    EventArgs>

在调用 CompleteRequest 方法时始终引发 EndRequest 事件。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
BeginRequest


HttpApplication ..::.Error 事件

HttpApplication
.
.
::
.
Error 事件
HttpApplication 类

当引发未经处理的异常时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event Error As EventHandler
public event EventHandler Error
public:
 event EventHandler^ Error {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member Error : IEvent<EventHandler,
    EventArgs>

引发 Error 事件的异常可以通过对 GetLastError 方法的调用来访问。如果应用程序生成自定义错误输出，请通过调用 ClearError 方法来取消由 ASP.NET 生成的默认错误消息。 引发 Error 事件的异常可以通过对 GetLastError 方法的调用来访问。如果应用程序生成自定义错误输出，请通过调用 ClearError 方法来取消由 ASP.NET 生成的默认错误消息。

说明 说明

如果 Web 应用程序包含 XML Web services，则不能将 Error 事件用于这些服务的全局异常处理。XML Web services 的 HTTP 处理程序使用 XML Web services 中发生的任何异常，并在调用 Error 之前将该异常转换为一个 SOAP 错误。要处理 XML Web service 异常，请生成一个 SOAP 扩展，以便在一个自定义的全局异常处理程序中处理 Web 服务异常。有关更多信息，请参见Handling and Throwing Exceptions in XML Web Services。 如果 Web 应用程序包含 XML Web services，则不能将 Error 事件用于这些服务的全局异常处理。XML Web services 的 HTTP 处理程序使用 XML Web services 中发生的任何异常，并在调用 Error 之前将该异常转换为一个 SOAP 错误。要处理 XML Web service 异常，请生成一个 SOAP 扩展，以便在一个自定义的全局异常处理程序中处理 Web 服务异常。有关更多信息，请参见Handling and Throwing Exceptions in XML Web Services。 如果 Web 应用程序包含 XML Web services，则不能将 Error 事件用于这些服务的全局异常处理。XML Web services 的 HTTP 处理程序使用 XML Web services 中发生的任何异常，并在调用 Error 之前将该异常转换为一个 SOAP 错误。要处理 XML Web service 异常，请生成一个 SOAP 扩展，以便在一个自定义的全局异常处理程序中处理 Web 服务异常。有关更多信息，请参见Handling and Throwing Exceptions in XML Web Services。 如果 Web 应用程序包含 XML Web services，则不能将 Error 事件用于这些服务的全局异常处理。XML Web services 的 HTTP 处理程序使用 XML Web services 中发生的任何异常，并在调用 Error 之前将该异常转换为一个 SOAP 错误。要处理 XML Web service 异常，请生成一个 SOAP 扩展，以便在一个自定义的全局异常处理程序中处理 Web 服务异常。有关更多信息，请参见Handling and Throwing Exceptions in XML Web Services。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间


HttpApplication ..::.LogRequest 事件

HttpApplication
.
.
::
.
LogRequest 事件
HttpApplication 类

恰好在 ASP.NET 为当前请求执行任何记录之前发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event LogRequest As EventHandler
public event EventHandler LogRequest
public:
 event EventHandler^ LogRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member LogRequest : IEvent<EventHandler,
    EventArgs>

即使发生错误，也会引发 LogRequest 事件。您可以为 LogRequest 事件提供一个事件处理程序，以便实现请求的自定义记录。 即使发生错误，也会引发 LogRequest 事件。您可以为 LogRequest 事件提供一个事件处理程序，以便实现请求的自定义记录。

有关如何处理事件的更多信息，请参见使用事件。

LogRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 LogRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

下面的示例演示如何为 LogRequest 事件提供一个事件处理程序。该事件处理程序还可以处理其他几个事件。因此，使用 CurrentNotification 和 IsPostNotification 属性来确定要运行的代码。 下面的示例演示如何为 LogRequest 事件提供一个事件处理程序。该事件处理程序还可以处理其他几个事件。因此，使用 CurrentNotification 和 IsPostNotification 属性来确定要运行的代码。 下面的示例演示如何为 LogRequest 事件提供一个事件处理程序。该事件处理程序还可以处理其他几个事件。因此，使用 CurrentNotification 和 IsPostNotification 属性来确定要运行的代码。

Imports System
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports Microsoft.VisualBasic

' Module that demonstrates one event handler for several events.
Namespace Samples

    Public Class ModuleExampleTestVB
        Implements IHttpModule

        Public Sub New()
            ' Constructor
        End Sub

        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.AuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.PostAuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.LogRequest, AddressOf Me.App_Handler
            AddHandler app.PostLogRequest, AddressOf Me.App_Handler
        End Sub

        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub

        ' One handler for AuthenticationRequest, PostAuthenticateRequest,
    ' LogRequest, and PostLogRequest events
        Public Sub App_Handler(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim context As HttpContext = app.Context

            If (context.CurrentNotification = RequestNotification.AuthenticateRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the AuthenticateRequest event is raised.
                Else

                    ' PostAuthenticateRequest
                    ' Put code here that runs after the AuthenticateRequest event completes.

                End If
            End If

            If (context.CurrentNotification = RequestNotification.LogRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the LogRequest event is raised.

                Else
                    ' PostLogRequest
                    ' Put code here that runs after the LogRequest event completes.

                End If
            End If
        End Sub
    End Class

End Namespace

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;

// Module that demonstrates one event handler for several events.
namespace Samples
{
    public class ModuleExampleTestCS : IHttpModule
    {
        public ModuleExampleTestCS()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.AuthenticateRequest += new EventHandler(App_Handler);
            app.PostAuthenticateRequest += new EventHandler(App_Handler);
            app.LogRequest += new EventHandler(App_Handler);
            app.PostLogRequest += new EventHandler(App_Handler);
        }
        public void Dispose()
        {
        }
        // One handler for AuthenticationRequest, PostAuthenticateRequest,
    // LogRequest, and PostLogRequest events
        public void App_Handler(object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpContext context = app.Context;

            if (context.CurrentNotification == RequestNotification.AuthenticateRequest)
            {

                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the AuthenticateRequest event is raised.
                }
                else
                {
                    // PostAuthenticateRequest
                    // Put code here that runs after the AuthenticateRequest event completes.
                }
            }
            if (context.CurrentNotification == RequestNotification.LogRequest)
            {
                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the LogRequest event is raised.
                }
                else
                {
                    // PostLogRequest
                    // Put code here that runs after the LogRequest event completes.
                }
            }

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostLogRequest


HttpApplication ..::.MapRequestHandler 事件

HttpApplication
.
.
::
.
MapRequestHandler 事件
HttpApplication 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在选择了用来响应请求的处理程序时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event MapRequestHandler As EventHandler
public event EventHandler MapRequestHandler
public:
 event EventHandler^ MapRequestHandler {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member MapRequestHandler : IEvent<EventHandler,
    EventArgs>

ASP.NET 基础结构使用 MapRequestHandler 事件来确定用于当前请求的请求处理程序。有关更多信息，请参见如何：注册 HTTP 处理程序。 ASP.NET 基础结构使用 MapRequestHandler 事件来确定用于当前请求的请求处理程序。有关更多信息，请参见如何：注册 HTTP 处理程序。

有关如何处理事件的更多信息，请参见使用事件。

MapRequestHandler 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 MapRequestHandler 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostMapRequestHandler


HttpApplication ..::.PostAcquireRequestState 事件

HttpApplication
.
.
::
.
PostAcquireRequestState 事件
HttpApplication 类

在已获得与当前请求关联的请求状态（例如会话状态）时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostAcquireRequestState As EventHandler
public event EventHandler PostAcquireRequestState
public:
 event EventHandler^ PostAcquireRequestState {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostAcquireRequestState : IEvent<EventHandler,
    EventArgs>

PostAcquireRequestState 事件在 AcquireRequestState 事件发生之后引发。预订 AcquireRequestState 事件的功能可以访问由 PostAcquireRequestState 处理的任何数据。 PostAcquireRequestState 事件在 AcquireRequestState 事件发生之后引发。预订 AcquireRequestState 事件的功能可以访问由 PostAcquireRequestState 处理的任何数据。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
AcquireRequestState


HttpApplication ..::.PostAuthenticateRequest 事件

HttpApplication
.
.
::
.
PostAuthenticateRequest 事件
HttpApplication 类

当安全模块已建立用户标识时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostAuthenticateRequest As EventHandler
public event EventHandler PostAuthenticateRequest
public:
 event EventHandler^ PostAuthenticateRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostAuthenticateRequest : IEvent<EventHandler,
    EventArgs>

PostAuthenticateRequest 事件在 AuthenticateRequest 事件发生之后引发。预订 PostAuthenticateRequest 事件的功能可以访问由 PostAuthenticateRequest 处理的任何数据。 PostAuthenticateRequest 事件在 AuthenticateRequest 事件发生之后引发。预订 PostAuthenticateRequest 事件的功能可以访问由 PostAuthenticateRequest 处理的任何数据。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
AuthenticateRequest


HttpApplication ..::.PostAuthorizeRequest 事件

HttpApplication
.
.
::
.
PostAuthorizeRequest 事件
HttpApplication 类

在当前请求的用户已获授权时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostAuthorizeRequest As EventHandler
public event EventHandler PostAuthorizeRequest
public:
 event EventHandler^ PostAuthorizeRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostAuthorizeRequest : IEvent<EventHandler,
    EventArgs>

PostAuthorizeRequest 事件发出信号表示 ASP.NET 已对当前请求进行了授权。订阅 PostAuthorizeRequest 事件可确保在处理附加的模块或处理程序之前对请求进行身份验证和授权。 PostAuthorizeRequest 事件发出信号表示 ASP.NET 已对当前请求进行了授权。订阅 PostAuthorizeRequest 事件可确保在处理附加的模块或处理程序之前对请求进行身份验证和授权。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
AuthorizeRequest


HttpApplication ..::.PostLogRequest 事件

HttpApplication
.
.
::
.
PostLogRequest 事件
HttpApplication 类

在 ASP.NET 处理完 LogRequest 事件的所有事件处理程序后发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostLogRequest As EventHandler
public event EventHandler PostLogRequest
public:
 event EventHandler^ PostLogRequest {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostLogRequest : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

PostLogRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 PostLogRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
LogRequest


HttpApplication ..::.PostMapRequestHandler 事件

HttpApplication
.
.
::
.
PostMapRequestHandler 事件
HttpApplication 类

在 ASP.NET 已将当前请求映射到相应的事件处理程序时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostMapRequestHandler As EventHandler
public event EventHandler PostMapRequestHandler
public:
 event EventHandler^ PostMapRequestHandler {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostMapRequestHandler : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
MapRequestHandler


HttpApplication ..::.PostReleaseRequestState 事件

HttpApplication
.
.
::
.
PostReleaseRequestState 事件
HttpApplication 类

在 ASP.NET 已完成所有请求事件处理程序的执行并且请求状态数据已存储时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostReleaseRequestState As EventHandler
public event EventHandler PostReleaseRequestState
public:
 event EventHandler^ PostReleaseRequestState {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostReleaseRequestState : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
ReleaseRequestState


HttpApplication ..::.PostRequestHandlerExecute 事件

HttpApplication
.
.
::
.
PostRequestHandlerExecute 事件
HttpApplication 类

在 ASP.NET 事件处理程序（例如，某页或某个 XML Web service）执行完毕时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostRequestHandlerExecute As EventHandler
public event EventHandler PostRequestHandlerExecute
public:
 event EventHandler^ PostRequestHandlerExecute {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostRequestHandlerExecute : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PreRequestHandlerExecute


HttpApplication ..::.PostResolveRequestCache 事件

HttpApplication
.
.
::
.
PostResolveRequestCache 事件
HttpApplication 类

在 ASP.NET 跳过当前事件处理程序的执行并允许缓存模块满足来自缓存的请求时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostResolveRequestCache As EventHandler
public event EventHandler PostResolveRequestCache
public:
 event EventHandler^ PostResolveRequestCache {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostResolveRequestCache : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
ResolveRequestCache


HttpApplication ..::.PostUpdateRequestCache 事件

HttpApplication
.
.
::
.
PostUpdateRequestCache 事件
HttpApplication 类

在 ASP.NET 完成缓存模块的更新并存储了用于从缓存中为后续请求提供服务的响应后，发生此事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PostUpdateRequestCache As EventHandler
public event EventHandler PostUpdateRequestCache
public:
 event EventHandler^ PostUpdateRequestCache {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PostUpdateRequestCache : IEvent<EventHandler,
    EventArgs>

PostUpdateRequestCache 事件在 UpdateRequestCache 事件发生之后引发。引发 PostUpdateRequestCache 以后，ASP.NET 已完成代码处理并且缓存的内容已结束。 PostUpdateRequestCache 事件在 UpdateRequestCache 事件发生之后引发。引发 PostUpdateRequestCache 以后，ASP.NET 已完成代码处理并且缓存的内容已结束。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
UpdateRequestCache


HttpApplication ..::.PreRequestHandlerExecute 事件

HttpApplication
.
.
::
.
PreRequestHandlerExecute 事件
HttpApplication 类

恰好在 ASP.NET 开始执行事件处理程序（例如，某页或某个 XML Web services）前发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PreRequestHandlerExecute As EventHandler
public event EventHandler PreRequestHandlerExecute
public:
 event EventHandler^ PreRequestHandlerExecute {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PreRequestHandlerExecute : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostRequestHandlerExecute


HttpApplication ..::.PreSendRequestContent 事件

HttpApplication
.
.
::
.
PreSendRequestContent 事件
HttpApplication 类

恰好在 ASP.NET 向客户端发送内容之前发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PreSendRequestContent As EventHandler
public event EventHandler PreSendRequestContent
public:
 event EventHandler^ PreSendRequestContent {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PreSendRequestContent : IEvent<EventHandler,
    EventArgs>

PreSendRequestContent 事件可能发生多次。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PreSendRequestHeaders


HttpApplication ..::.PreSendRequestHeaders 事件

HttpApplication
.
.
::
.
PreSendRequestHeaders 事件
HttpApplication 类

恰好在 ASP.NET 向客户端发送 HTTP 标头之前发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event PreSendRequestHeaders As EventHandler
public event EventHandler PreSendRequestHeaders
public:
 event EventHandler^ PreSendRequestHeaders {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member PreSendRequestHeaders : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PreSendRequestContent


HttpApplication ..::.ReleaseRequestState 事件

HttpApplication
.
.
::
.
ReleaseRequestState 事件
HttpApplication 类

在 ASP.NET 执行完所有请求事件处理程序后发生。该事件将使状态模块保存当前状态数据。 在 ASP.NET 执行完所有请求事件处理程序后发生。该事件将使状态模块保存当前状态数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event ReleaseRequestState As EventHandler
public event EventHandler ReleaseRequestState
public:
 event EventHandler^ ReleaseRequestState {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member ReleaseRequestState : IEvent<EventHandler,
    EventArgs>

引发 ReleaseRequestState 事件以后，应用程序以该请求结束，并发出 ASP.NET 信号以存储该请求状态。

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostReleaseRequestState


HttpApplication ..::.ResolveRequestCache 事件

HttpApplication
.
.
::
.
ResolveRequestCache 事件
HttpApplication 类

在 ASP.NET 完成授权事件以使缓存模块从缓存中为请求提供服务后发生，从而绕过事件处理程序（例如某个页或 XML Web services）的执行。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event ResolveRequestCache As EventHandler
public event EventHandler ResolveRequestCache
public:
 event EventHandler^ ResolveRequestCache {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member ResolveRequestCache : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
PostResolveRequestCache


HttpApplication ..::.UpdateRequestCache 事件

HttpApplication
.
.
::
.
UpdateRequestCache 事件
HttpApplication 类

当 ASP.NET 执行完事件处理程序以使缓存模块存储将用于从缓存为后续请求提供服务的响应时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event UpdateRequestCache As EventHandler
public event EventHandler UpdateRequestCache
public:
 event EventHandler^ UpdateRequestCache {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
member UpdateRequestCache : IEvent<EventHandler,
    EventArgs>

有关如何处理事件的更多信息，请参见使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplication 类
HttpApplication 成员
System.Web 命名空间
ResolveRequestCache


HttpApplicationState 类

HttpApplicationState 类
成员

启用 ASP.NET 应用程序中多个会话和请求之间的全局信息共享。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpApplicationState _
    Inherits NameObjectCollectionBase
public sealed class HttpApplicationState : NameObjectCollectionBase
public ref class HttpApplicationState sealed : public NameObjectCollectionBase
[<SealedAttribute>]
type HttpApplicationState =
    class
        inherit NameObjectCollectionBase
    end

ASP.NET 应用程序是单个 Web 服务器上的某个虚拟目录及其子目录范围内的所有文件、页、处理程序、模块和代码的总和。

HttpApplicationState 类的单个实例在客户端第一次从某个特定的 ASP.NET 应用程序虚拟目录中请求任何 URL 资源时创建。对于 Web 服务器上的每个 ASP.NET 应用程序都要创建一个单独的实例。然后通过内部 Application 对象公开对每个实例的引用。 HttpApplicationState 类的单个实例在客户端第一次从某个特定的 ASP.NET 应用程序虚拟目录中请求任何 URL 资源时创建。对于 Web 服务器上的每个 ASP.NET 应用程序都要创建一个单独的实例。然后通过内部 Application 对象公开对每个实例的引用。 HttpApplicationState 类的单个实例在客户端第一次从某个特定的 ASP.NET 应用程序虚拟目录中请求任何 URL 资源时创建。对于 Web 服务器上的每个 ASP.NET 应用程序都要创建一个单独的实例。然后通过内部 Application 对象公开对每个实例的引用。

应用程序状态不在网络场（应用程序被多台服务器承载）或网络园（应用程序被同一台计算机上的多个进程承载）中共享。

System.Web System.Web..::.HttpApplicationStateHttpApplicationState

此类型是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 成员
System.Web 命名空间
HttpContext
HttpApplication


HttpApplicationState 成员

HttpApplicationState 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

启用 ASP.NET 应用程序中多个会话和请求之间的全局信息共享。

HttpApplicationState 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpApplicationState 类
System.Web 命名空间


HttpApplicationState 方法

HttpApplicationState 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

HttpApplicationState 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplicationState 类
System.Web 命名空间


HttpApplicationState ..::.Add 方法

HttpApplicationState
.
.
::
.
Add 方法
HttpApplicationState 类

将新的对象添加到 HttpApplicationState 集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Add ( _
    name As String, _
    value As Object _
)
public void Add(
    string name,
    Object value
)
public:
void Add(
    String^ name,
    Object^ value
)
member Add :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要添加到集合中的对象名。
value
类型： System Object
对象的值。

下面的示例将两个分别名为 MyAppVar1 和 MyAppVar2 的应用程序变量添加到 Application 集合中。

Application.Add("MyAppVar1", MyObject1)
Application.Add("MyAppVar2", MyObject2)

Application.Add("MyAppVar1", MyObject1);
Application.Add("MyAppVar2", MyObject2);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.BaseGet 方法

HttpApplicationState
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.BaseGetAllValues 方法

HttpApplicationState
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.BaseSet 方法

HttpApplicationState
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Clear 方法

HttpApplicationState
.
.
::
.
Clear 方法
HttpApplicationState 类

从 HttpApplicationState 集合中移除所有对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Clear
public void Clear()
public:
void Clear()
member Clear : unit -> unit

下面的示例从集合中移除所有 HttpApplicationState 变量。

        Application.Clear()

Application.Clear();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Get 方法

HttpApplicationState
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

通过名称或索引获取 HttpApplicationState 对象。

名称 说明
页首

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Get 方法 (Int32)

HttpApplicationState
.
.
::
.
Get 方法 (Int32)
HttpApplicationState 类

通过数字索引获取 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    index As Integer _
) As Object
public Object Get(
    int index
)
public:
Object^ Get(
    int index
)
member Get :
        index:int -> Object

参数

index
类型： System Int32
应用程序状态对象的索引。

返回值

类型： System Object
index 所引用的对象。

下面的示例返回内部 Application 对象的 HttpApplicationState 集合中的第一个对象（索引为 0），并将该对象复制到新的对象变量。

        Dim MyObject As Object
        MyObject = Application.Get(0)

Object MyObject;
MyObject = Application.Get(0);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
Get 重载
System.Web 命名空间


HttpApplicationState ..::.Get 方法 (String)

HttpApplicationState
.
.
::
.
Get 方法 (String)
HttpApplicationState 类

通过名称获取 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    name As String _
) As Object
public Object Get(
    string name
)
public:
Object^ Get(
    String^ name
)
member Get :
        name:string -> Object

参数

name
类型： System String
对象的名称。

返回值

类型： System Object
name 所引用的对象。

下面的示例从内部 Application 对象的 HttpApplicationState 集合中返回一个名为 MyAppVar1 的对象，并将该对象复制到新的对象变量。

Dim MyObject As Object
MyObject = Application.Get("MyAppVar1")
Object MyObject;
MyObject = Application.Get("MyAppVar1");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
Get 重载
System.Web 命名空间


HttpApplicationState ..::.GetKey 方法

HttpApplicationState
.
.
::
.
GetKey 方法
HttpApplicationState 类

通过索引获取 HttpApplicationState 对象名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetKey ( _
    index As Integer _
) As String
public string GetKey(
    int index
)
public:
String^ GetKey(
    int index
)
member GetKey :
        index:int -> string

参数

index
类型： System Int32
应用程序状态对象的索引。

返回值

类型： System String
保存应用程序状态对象所使用的名称。

下面的示例返回应用程序状态集合中所有对象的名称，并将这些名称存储在字符串数组中。

Dim Loop1 As Integer
Dim StateVars(Application.Count) As String

For Loop1 = 0 To Application.Count -1
   StateVars(Loop1) = Application.GetKey(Loop1)
Next Loop1

int Loop1;
String[] StateVars = new String[Application.Count];

for (Loop1 = 0; Loop1 < Application.Count; Loop1++)
{
   StateVars[Loop1] = Application.GetKey(Loop1);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Lock 方法

HttpApplicationState
.
.
::
.
Lock 方法
HttpApplicationState 类

锁定对 HttpApplicationState 变量的访问以促进访问同步。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Lock
public void Lock()
public:
void Lock()
member Lock : unit -> unit

HttpApplicationState 类使用 AllKeys 和 Count 属性以及 Add、Clear、Get、GetKey、Remove、RemoveAt 和 Set 方法执行自动锁定和解锁。然而，当您有一系列操作时，显式地使用 Lock 和 UnLock 方法可能更加高效。 HttpApplicationState 类使用 AllKeys 和 Count 属性以及 Add、Clear、Get、GetKey、Remove、RemoveAt 和 Set 方法执行自动锁定和解锁。然而，当您有一系列操作时，显式地使用 Lock 和 UnLock 方法可能更加高效。

下面的示例使用 Lock 方法和 UnLock 方法以在本地会话更改两个应用程序变量值之前防止其他会话更改它们。

Application.Lock()
Application("MyCode") = 21
Application("MyCount") = Convert.ToInt32(Application("MyCount")) + 1
Application.UnLock()

Application.Lock();
Application["MyCode"] = 21;
Application["MyCount"] = Convert.ToInt32(Application["MyCount"]) + 1;
Application.UnLock();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间
UnLock


HttpApplicationState ..::.Remove 方法

HttpApplicationState
.
.
::
.
Remove 方法
HttpApplicationState 类

从 HttpApplicationState 集合中移除命名对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Remove ( _
    name As String _
)
public void Remove(
    string name
)
public:
void Remove(
    String^ name
)
member Remove :
        name:string -> unit

参数

name
类型： System String
要从集合中移除的对象名。

下面的示例从集合中移除一个应用程序状态变量。

        Application.Remove("MyAppVar1")

Application.Remove("MyAppVar1");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.RemoveAll 方法

HttpApplicationState
.
.
::
.
RemoveAll 方法
HttpApplicationState 类

从 HttpApplicationState 集合中移除所有对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RemoveAll
public void RemoveAll()
public:
void RemoveAll()
member RemoveAll : unit -> unit

RemoveAll 是对 Clear 的内部调用。

下面的示例从集合中移除所有 HttpApplicationState 变量。

        Application.RemoveAll()

Application.RemoveAll();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.RemoveAt 方法

HttpApplicationState
.
.
::
.
RemoveAt 方法
HttpApplicationState 类

按索引从集合中移除一个 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RemoveAt ( _
    index As Integer _
)
public void RemoveAt(
    int index
)
public:
void RemoveAt(
    int index
)
member RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要移除的项在集合中的位置。

下面的代码示例演示如何在集合中插入两个应用程序变量，然后使用 RemoveAt 方法移除自定义的 HttpApplicationState 对象中的第一个变量。

<%@ Page language="VB" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpApplicationState - RemoveAt - VB.NET Example</title>
    <script runat="server">
      Sub Page_Load(sender As Object, e As EventArgs)

          ' Add two new application state variables.
          Application.Add("City", "Redmond")
          Application.Add("State", "WA")

          ' Show the contents of both application state variables.
          Label1.Text = "Application.Keys(0) contains: " & Application.Keys(0).ToString()
          Label1.Text += "<br />Application.Keys(1) contains: " & Application.Keys(1).ToString()

          ' Remove the City application state variable, which is at
          ' the first index location.
          Application.RemoveAt(0)
          Label2.Text = "<br />Call:&nbsp; Application.RemoveAt(0)"

          ' Show the contents of the application state variable,
          ' in the first index location, which is now the State variable.
          Label3.Text = "<br />Application.Keys(0) contains: " & Application.Keys(0).ToString()
      End Sub
    </script>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
            <h3>HttpApplicationState - RemoveAt - VB.NET Example</h3>
      <asp:Label id="Label1" runat="server" /><br />
      <asp:Label id="Label2" runat="server" /><br />
      <asp:Label id="Label3" runat="server" />
    </form>
  </body>
</html>

<%@ Page language="c#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpApplicationState - RemoveAt - C# Example</title>
    <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
          // Add two new application state variables.
          Application.Add("City", "Redmond");
          Application.Add("State", "WA");

          // Show the contents of both application state variables.
          Label1.Text = "Application.Keys[0] contains: " + Application.Keys[0].ToString();
          Label1.Text += "<br />Application.Keys[1] contains: " + Application.Keys[1].ToString();

          // Remove the City application state variable, which is at
          // the first index location.
          Application.RemoveAt(0);
          Label2.Text = "<br />Call:&nbsp; Application.RemoveAt(0)";

          // Show the contents of the application state variable,
          // in the first index location, which is now the State variable.
          Label3.Text = "<br />Application.Keys[0] contains: " + Application.Keys[0].ToString();
      }
    </script>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
            <h3>HttpApplicationState - RemoveAt - C# Example</h3>
      <asp:Label id="Label1" runat="server" /><br />
      <asp:Label id="Label2" runat="server" /><br />
      <asp:Label id="Label3" runat="server" />
    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Set 方法

HttpApplicationState
.
.
::
.
Set 方法
HttpApplicationState 类

更新 HttpApplicationState 集合中的对象值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Set ( _
    name As String, _
    value As Object _
)
public void Set(
    string name,
    Object value
)
public:
void Set(
    String^ name,
    Object^ value
)
member Set :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要更新的对象名。
value
类型： System Object
对象更新之后的值。

下面的示例更新现有应用程序状态变量的值。

        Application.Set("MyAppVar1", MyNewObjectValue)

Application.Set("MyAppVar1", MyNewObjectValue);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.UnLock 方法

HttpApplicationState
.
.
::
.
UnLock 方法
HttpApplicationState 类

取消锁定对 HttpApplicationState 变量的访问以促进访问同步。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub UnLock
public void UnLock()
public:
void UnLock()
member UnLock : unit -> unit

HttpApplicationState 类使用 AllKeys 和 Count 属性以及 Add、Clear、Get、GetKey、Remove、RemoveAt 和 Set 方法执行自动锁定和解锁。然而，当您有一系列操作时，显式地使用 Lock 和 UnLock 方法可能更加高效。 HttpApplicationState 类使用 AllKeys 和 Count 属性以及 Add、Clear、Get、GetKey、Remove、RemoveAt 和 Set 方法执行自动锁定和解锁。然而，当您有一系列操作时，显式地使用 Lock 和 UnLock 方法可能更加高效。

下面的示例使用 Lock 方法和 UnLock 方法以在本地会话更改两个应用程序变量值之前防止其他会话更改它们。

Application.Lock()
Application("MyCode") = 21
Application("MyCount") = Convert.ToInt32(Application("MyCount")) + 1
Application.UnLock()

Application.Lock();
Application["MyCode"] = 21;
Application["MyCount"] = Convert.ToInt32(Application["MyCount"]) + 1;
Application.UnLock();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间
Lock


HttpApplicationState 属性

HttpApplicationState 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

HttpApplicationState 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplicationState 类
System.Web 命名空间


HttpApplicationState ..::.AllKeys 属性

HttpApplicationState
.
.
::
.
AllKeys 属性
HttpApplicationState 类

获取 HttpApplicationState 集合中的访问键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AllKeys As String()
    Get
public string[] AllKeys { get; }
public:
property array<String^>^ AllKeys {
    array<String^>^ get ();
}
member AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

HttpApplicationState 对象名的字符串数组。

下面的示例用应用程序状态集合中的所有对象名填充字符串数组。

Dim StateVars(Application.Count) As String
StateVars = Application.AllKeys

String[] StateVars = new String[Application.Count];
StateVars = Application.AllKeys;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Contents 属性

HttpApplicationState
.
.
::
.
Contents 属性
HttpApplicationState 类

获取对 HttpApplicationState 对象的引用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Contents As HttpApplicationState
    Get
public HttpApplicationState Contents { get; }
public:
property HttpApplicationState^ Contents {
    HttpApplicationState^ get ();
}
member Contents : HttpApplicationState

属性值

类型： System.Web HttpApplicationState
对 HttpApplicationState 对象的引用。

该属性提供与早期版本的 ASP 之间的兼容性。

下面的示例创建一个新的 HttpApplicationState 对象，此对象用于访问应用程序状态集合中的对象名。

Dim AppState2 As HttpApplicationState

AppState2 = Application.Contents

Dim StateVars(AppState2.Count) As String
StateVars = AppState2.AllKeys

HttpApplicationState AppState2;

AppState2 = Application.Contents;

String[] StateVars = new String[AppState2.Count];
StateVars = AppState2.AllKeys;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Count 属性

HttpApplicationState
.
.
::
.
Count 属性
HttpApplicationState 类

获取 HttpApplicationState 集合中的对象数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的 Item 对象数。默认值为 0。 集合中的 Item 对象数。默认值为 0。

实现

下面的示例仅在集合中的对象数超过 5 时执行。

If Application.Count > 5 Then
   ' ...
End If

if (Application.Count > 5)
{
    //...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Item 属性

HttpApplicationState
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationState 类

获取对 HttpApplicationState 集合中的对象的访问。重载该属性以允许通过名称或数字索引访问对象。 获取对 HttpApplicationState 集合中的对象的访问。重载该属性以允许通过名称或数字索引访问对象。

名称 说明
页首

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationState ..::.Item 属性 (Int32)

HttpApplicationState
.
.
::
.
Item 属性 (Int32)
HttpApplicationState 类

通过索引获取单个 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    index As Integer _
) As Object
    Get
public Object this[
    int index
] { get; }
public:
property Object^ Item[int index] {
    Object^ get (int index);
}
member Item : Object

参数

index
类型： System Int32
集合中对象的数字索引。

属性值

类型： System Object
index 所引用的对象。

下面的示例返回内部 Application 对象的 HttpApplicationState 集合中的第一个对象（索引为 0），并将该对象复制到新的对象变量。

Dim MyObject As Object
MyObject = Application(0)

Object MyObject;
MyObject = Application[0];

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
Item 重载
System.Web 命名空间


HttpApplicationState ..::.Item 属性 (String)

HttpApplicationState
.
.
::
.
Item 属性 (String)
HttpApplicationState 类

通过名称获取单个 HttpApplicationState 对象的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Item ( _
    name As String _
) As Object
    Get
    Set
public Object this[
    string name
] { get; set; }
public:
property Object^ Item[String^ name] {
    Object^ get (String^ name);
    void set (String^ name, Object^ value);
}
member Item : Object with get, set

参数

name
类型： System String
集合中的对象名。

属性值

类型： System Object
name 所引用的对象。

下面的示例从内部 Application 对象的 HttpApplicationState 集合中返回一个名为 MyAppVar1 的对象，并将该对象复制到新的对象变量。

        Dim MyObject As Object
        MyObject = Application("MyAppVar1")

Object MyObject;
MyObject = Application["MyAppVar1"];

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
Item 重载
System.Web 命名空间


HttpApplicationState ..::.StaticObjects 属性

HttpApplicationState
.
.
::
.
StaticObjects 属性
HttpApplicationState 类

获取由 <object> 标记声明的所有对象，其中范围设置为 ASP.NET 应用程序中的“Application”。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property StaticObjects As HttpStaticObjectsCollection
    Get
public HttpStaticObjectsCollection StaticObjects { get; }
public:
property HttpStaticObjectsCollection^ StaticObjects {
    HttpStaticObjectsCollection^ get ();
}
member StaticObjects : HttpStaticObjectsCollection

属性值

类型： System.Web HttpStaticObjectsCollection
页上的对象集合。

应用程序对象在 Global.asax 文件中的 <object runat="server" scope="Application"> </object> 标记内定义。

下面的示例获取所有应用程序对象并将其放入一个 HttpStaticObjectsCollection 变量，它仅在对象数大于 0 时才执行例程。

Dim PageObjects As HttpStaticObjectsCollection

PageObjects = Application.StaticObjects
If PageObjects.Count > 0 Then
   '...
End If

HttpStaticObjectsCollection PageObjects;

PageObjects = Application.StaticObjects;
if (PageObjects.Count > 0)
{
   //...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpApplicationState 类
HttpApplicationState 成员
System.Web 命名空间


HttpApplicationStateBase 类

HttpApplicationStateBase 类
成员

用作一些类的基类，通过这些类，可在 ASP.NET 应用程序内的多个会话和请求之间共享信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpApplicationStateBase _
    Inherits NameObjectCollectionBase _
    Implements ICollection, IEnumerable
public abstract class HttpApplicationStateBase : NameObjectCollectionBase,
    ICollection, IEnumerable
public ref class HttpApplicationStateBase abstract : public NameObjectCollectionBase,
    ICollection, IEnumerable
[<AbstractClassAttribute>]
type HttpApplicationStateBase =
    class
        inherit NameObjectCollectionBase
        interface ICollection
        interface IEnumerable
    end

HttpApplicationStateBase 类为抽象类，其中包含与 HttpApplicationState 类相同的成员。使用 HttpApplicationStateBase 类可以创建与 HttpApplicationState 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpApplicationStateBase 类为抽象类，其中包含与 HttpApplicationState 类相同的成员。使用 HttpApplicationStateBase 类可以创建与 HttpApplicationState 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpApplicationStateBase 类为抽象类，其中包含与 HttpApplicationState 类相同的成员。使用 HttpApplicationStateBase 类可以创建与 HttpApplicationState 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpApplicationStateWrapper 类是从 HttpApplicationStateBase 类派生的。HttpApplicationStateWrapper 类用作 HttpApplicationState 类的包装。在运行时，通常使用 HttpApplicationStateWrapper 类的实例调用 HttpApplicationState 对象的成员。 HttpApplicationStateWrapper 类是从 HttpApplicationStateBase 类派生的。HttpApplicationStateWrapper 类用作 HttpApplicationState 类的包装。在运行时，通常使用 HttpApplicationStateWrapper 类的实例调用 HttpApplicationState 对象的成员。 HttpApplicationStateWrapper 类是从 HttpApplicationStateBase 类派生的。HttpApplicationStateWrapper 类用作 HttpApplicationState 类的包装。在运行时，通常使用 HttpApplicationStateWrapper 类的实例调用 HttpApplicationState 对象的成员。

System.Web System.Web..::.HttpApplicationStateBaseHttpApplicationStateBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase 成员

HttpApplicationStateBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

用作一些类的基类，通过这些类，可在 ASP.NET 应用程序内的多个会话和请求之间共享信息。

HttpApplicationStateBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpApplicationStateBase 类
System.Web 命名空间


HttpApplicationStateBase 构造函数

HttpApplicationStateBase 构造函数
HttpApplicationStateBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpApplicationStateBase()
protected:
HttpApplicationStateBase()
new : unit -> HttpApplicationStateBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase 方法

HttpApplicationStateBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

HttpApplicationStateBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpApplicationStateBase 类
System.Web 命名空间


HttpApplicationStateBase ..::.Add 方法

HttpApplicationStateBase
.
.
::
.
Add 方法
HttpApplicationStateBase 类

当在派生类中重写时，向集合中添加一个新对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Add ( _
    name As String, _
    value As Object _
)
public virtual void Add(
    string name,
    Object value
)
public:
virtual void Add(
    String^ name,
    Object^ value
)
abstract Add :
        name:string *
        value:Object -> unit
override Add :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要添加到集合中的对象的名称。
value
类型： System Object
对象的值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.BaseGet 方法

HttpApplicationStateBase
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.BaseGetAllValues 方法

HttpApplicationStateBase
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.BaseSet 方法

HttpApplicationStateBase
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Clear 方法

HttpApplicationStateBase
.
.
::
.
Clear 方法
HttpApplicationStateBase 类

当在派生类中重写时，从集合中移除所有对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Clear
public virtual void Clear()
public:
virtual void Clear()
abstract Clear : unit -> unit
override Clear : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.CopyTo 方法

HttpApplicationStateBase
.
.
::
.
CopyTo 方法
HttpApplicationStateBase 类

当在派生类中重写时，从数组中的指定索引位置开始，将集合中的元素复制到该数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public virtual void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
)
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。 一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中从零开始的索引，从此处开始复制。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Get 方法

HttpApplicationStateBase
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

当在派生类中重写时，按名称或索引获取状态对象。

名称 说明
页首

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Get 方法 (Int32)

HttpApplicationStateBase
.
.
::
.
Get 方法 (Int32)
HttpApplicationStateBase 类

当在派生类中重写时，按索引获取状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Get ( _
    index As Integer _
) As Object
public virtual Object Get(
    int index
)
public:
virtual Object^ Get(
    int index
)
abstract Get :
        index:int -> Object
override Get :
        index:int -> Object

参数

index
类型： System Int32
要获取的应用程序状态对象的索引。

返回值

类型： System Object
index 所引用的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
Get 重载
System.Web 命名空间


HttpApplicationStateBase ..::.Get 方法 (String)

HttpApplicationStateBase
.
.
::
.
Get 方法 (String)
HttpApplicationStateBase 类

当在派生类中重写时，按名称获取状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Get ( _
    name As String _
) As Object
public virtual Object Get(
    string name
)
public:
virtual Object^ Get(
    String^ name
)
abstract Get :
        name:string -> Object
override Get :
        name:string -> Object

参数

name
类型： System String
要获取的对象的名称。

返回值

类型： System Object
name 所引用的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
Get 重载
System.Web 命名空间


HttpApplicationStateBase ..::.GetEnumerator 方法

HttpApplicationStateBase
.
.
::
.
GetEnumerator 方法
HttpApplicationStateBase 类

当在派生类中重写时，返回可用于循环访问集合的枚举数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个可用于循环访问集合的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.GetKey 方法

HttpApplicationStateBase
.
.
::
.
GetKey 方法
HttpApplicationStateBase 类

当在派生类中重写时，按索引获取状态对象的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetKey ( _
    index As Integer _
) As String
public virtual string GetKey(
    int index
)
public:
virtual String^ GetKey(
    int index
)
abstract GetKey :
        index:int -> string
override GetKey :
        index:int -> string

参数

index
类型： System Int32
要获取的应用程序状态对象的索引。

返回值

类型： System String
应用程序状态对象的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Lock 方法

HttpApplicationStateBase
.
.
::
.
Lock 方法
HttpApplicationStateBase 类

当在派生类中重写时，锁定对集合中对象的访问，以启用同步访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Lock
public virtual void Lock()
public:
virtual void Lock()
abstract Lock : unit -> unit
override Lock : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Remove 方法

HttpApplicationStateBase
.
.
::
.
Remove 方法
HttpApplicationStateBase 类

当在派生类中重写时，从集合中移除命名对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Remove ( _
    name As String _
)
public virtual void Remove(
    string name
)
public:
virtual void Remove(
    String^ name
)
abstract Remove :
        name:string -> unit
override Remove :
        name:string -> unit

参数

name
类型： System String
要从集合中移除的对象的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.RemoveAll 方法

HttpApplicationStateBase
.
.
::
.
RemoveAll 方法
HttpApplicationStateBase 类

当在派生类中重写时，从集合中移除所有对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveAll
public virtual void RemoveAll()
public:
virtual void RemoveAll()
abstract RemoveAll : unit -> unit
override RemoveAll : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.RemoveAt 方法

HttpApplicationStateBase
.
.
::
.
RemoveAt 方法
HttpApplicationStateBase 类

当在派生类中重写时，从集合中移除按索引指定的状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveAt ( _
    index As Integer _
)
public virtual void RemoveAt(
    int index
)
public:
virtual void RemoveAt(
    int index
)
abstract RemoveAt :
        index:int -> unit
override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要移除的项在集合中的位置。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Set 方法

HttpApplicationStateBase
.
.
::
.
Set 方法
HttpApplicationStateBase 类

当在派生类中重写时，更新集合中对象的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Set ( _
    name As String, _
    value As Object _
)
public virtual void Set(
    string name,
    Object value
)
public:
virtual void Set(
    String^ name,
    Object^ value
)
abstract Set :
        name:string *
        value:Object -> unit
override Set :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要更新的对象的名称。
value
类型： System Object
对象更新之后的值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.UnLock 方法

HttpApplicationStateBase
.
.
::
.
UnLock 方法
HttpApplicationStateBase 类

当在派生类中重写时，取消锁定对集合中对象的访问，以启用同步访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub UnLock
public virtual void UnLock()
public:
virtual void UnLock()
abstract UnLock : unit -> unit
override UnLock : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase 属性

HttpApplicationStateBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

HttpApplicationStateBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplicationStateBase 类
System.Web 命名空间


HttpApplicationStateBase ..::.AllKeys 属性

HttpApplicationStateBase
.
.
::
.
AllKeys 属性
HttpApplicationStateBase 类

当在派生类中重写时，获取集合中对象的访问键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AllKeys As String()
    Get
public virtual string[] AllKeys { get; }
public:
virtual property array<String^>^ AllKeys {
    array<String^>^ get ();
}
abstract AllKeys : string[]
override AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

状态对象键的数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Contents 属性

HttpApplicationStateBase
.
.
::
.
Contents 属性
HttpApplicationStateBase 类

当在派生类中重写时，获取对 HttpApplicationStateBase 对象的引用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Contents As HttpApplicationStateBase
    Get
public virtual HttpApplicationStateBase Contents { get; }
public:
virtual property HttpApplicationStateBase^ Contents {
    HttpApplicationStateBase^ get ();
}
abstract Contents : HttpApplicationStateBase
override Contents : HttpApplicationStateBase

属性值

类型： System.Web HttpApplicationStateBase
对 HttpApplicationState 对象的引用。
异常 | 条件
NotImplementedException | 始终为 。

该属性提供与早期版本的 ASP 之间的兼容性。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Count 属性

HttpApplicationStateBase
.
.
::
.
Count 属性
HttpApplicationStateBase 类

当在派生类中重写时，获取集合中对象的数目。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.IsSynchronized 属性

HttpApplicationStateBase
.
.
::
.
IsSynchronized 属性
HttpApplicationStateBase 类

当在派生类中重写时，获取一个值，该值指示对集合的访问是否是线程安全的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsSynchronized As Boolean
    Get
public virtual bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get ();
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果访问是同步的（线程安全），则为 true；否则为 false。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Item 属性

HttpApplicationStateBase
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateBase 类

当在派生类中重写时，按名称或索引获取 HttpApplicationState 集合中的对象。

名称 说明
页首

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.Item 属性 (Int32)

HttpApplicationStateBase
.
.
::
.
Item 属性 (Int32)
HttpApplicationStateBase 类

当在派生类中重写时，按索引获取状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Item ( _
    index As Integer _
) As Object
    Get
public virtual Object this[
    int index
] { get; }
public:
virtual property Object^ Item[int index] {
    Object^ get (int index);
}
abstract Item : Object
override Item : Object

参数

index
类型： System Int32
集合中对象的索引。

属性值

类型： System Object
index 所引用的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
Item 重载
System.Web 命名空间


HttpApplicationStateBase ..::.Item 属性 (String)

HttpApplicationStateBase
.
.
::
.
Item 属性 (String)
HttpApplicationStateBase 类

当在派生类中重写时，按名称获取状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Item ( _
    name As String _
) As Object
    Get
    Set
public virtual Object this[
    string name
] { get; set; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name);
    void set (String^ name, Object^ value);
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

name
类型： System String
集合中的对象名。

属性值

类型： System Object
name 所引用的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
Item 重载
System.Web 命名空间


HttpApplicationStateBase ..::.StaticObjects 属性

HttpApplicationStateBase
.
.
::
.
StaticObjects 属性
HttpApplicationStateBase 类

当在派生类中重写时，获取由 object 元素声明的所有对象，其中范围设置为 ASP.NET 应用程序中的“Application”。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property StaticObjects As HttpStaticObjectsCollectionBase
    Get
public virtual HttpStaticObjectsCollectionBase StaticObjects { get; }
public:
virtual property HttpStaticObjectsCollectionBase^ StaticObjects {
    HttpStaticObjectsCollectionBase^ get ();
}
abstract StaticObjects : HttpStaticObjectsCollectionBase
override StaticObjects : HttpStaticObjectsCollectionBase

属性值

类型： System.Web HttpStaticObjectsCollectionBase
应用程序中对象的集合。
异常 | 条件
NotImplementedException | 始终为 。

应用程序对象是在 Global.asax 文件中具有如下语法的元素内定义的：

<object runat="server" scope="Application">Object information</object>

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateBase ..::.SyncRoot 属性

HttpApplicationStateBase
.
.
::
.
SyncRoot 属性
HttpApplicationStateBase 类

当在派生类中重写时，获取一个对象，该对象可用于同步对集合的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SyncRoot As Object
    Get
public virtual Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get ();
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateBase 类
HttpApplicationStateBase 成员
System.Web 命名空间


HttpApplicationStateWrapper 类

HttpApplicationStateWrapper 类
成员

封装 HTTP 内部对象，通过该对象，可在 ASP.NET 应用程序内的多个请求和会话之间共享信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpApplicationStateWrapper _
    Inherits HttpApplicationStateBase
public class HttpApplicationStateWrapper : HttpApplicationStateBase
public ref class HttpApplicationStateWrapper : public HttpApplicationStateBase
type HttpApplicationStateWrapper =
    class
        inherit HttpApplicationStateBase
    end

HttpApplicationStateWrapper 类从 HttpApplicationStateBase 类派生，并用作 HttpApplicationState 类的包装。此类公开 HttpApplicationState 类的功能，同时还公开 HttpApplicationStateBase 类型。使用 HttpApplicationStateBase 类，可以将应用程序中 HttpApplicationState 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpApplicationStateWrapper 类从 HttpApplicationStateBase 类派生，并用作 HttpApplicationState 类的包装。此类公开 HttpApplicationState 类的功能，同时还公开 HttpApplicationStateBase 类型。使用 HttpApplicationStateBase 类，可以将应用程序中 HttpApplicationState 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpApplicationStateWrapper 类从 HttpApplicationStateBase 类派生，并用作 HttpApplicationState 类的包装。此类公开 HttpApplicationState 类的功能，同时还公开 HttpApplicationStateBase 类型。使用 HttpApplicationStateBase 类，可以将应用程序中 HttpApplicationState 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpApplicationStateWrapperHttpApplicationStateWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper 成员

HttpApplicationStateWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

封装 HTTP 内部对象，通过该对象，可在 ASP.NET 应用程序内的多个请求和会话之间共享信息。

HttpApplicationStateWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpApplicationStateWrapper 类
System.Web 命名空间


HttpApplicationStateWrapper 构造函数

HttpApplicationStateWrapper 构造函数
HttpApplicationStateWrapper 类

初始化 HttpApplicationStateWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpApplicationState As HttpApplicationState _
)
public HttpApplicationStateWrapper(
    HttpApplicationState httpApplicationState
)
public:
HttpApplicationStateWrapper(
    HttpApplicationState^ httpApplicationState
)
new :
        httpApplicationState:HttpApplicationState -> HttpApplicationStateWrapper

参数

httpApplicationState
类型： System.Web HttpApplicationState
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpApplicationState 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper 方法

HttpApplicationStateWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

HttpApplicationStateWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplicationStateWrapper 类
System.Web 命名空间


HttpApplicationStateWrapper ..::.Add 方法

HttpApplicationStateWrapper
.
.
::
.
Add 方法
HttpApplicationStateWrapper 类

将一个对象添加到集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Add ( _
    name As String, _
    value As Object _
)
public override void Add(
    string name,
    Object value
)
public:
virtual void Add(
    String^ name,
    Object^ value
) override
abstract Add :
        name:string *
        value:Object -> unit
override Add :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要添加到集合中的对象的名称。
value
类型： System Object
对象的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.BaseGet 方法

HttpApplicationStateWrapper
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.BaseGetAllValues 方法

HttpApplicationStateWrapper
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.BaseSet 方法

HttpApplicationStateWrapper
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Clear 方法

HttpApplicationStateWrapper
.
.
::
.
Clear 方法
HttpApplicationStateWrapper 类

从集合中移除所有对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Clear
public override void Clear()
public:
virtual void Clear() override
abstract Clear : unit -> unit
override Clear : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.CopyTo 方法

HttpApplicationStateWrapper
.
.
::
.
CopyTo 方法
HttpApplicationStateWrapper 类

从数组中指定的索引位置开始，将集合中的元素复制到该数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public override void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
) override
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。 一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中从零开始的索引，从此处开始复制。

实现

异常 | 条件
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零。
ArgumentException | array 是多维数组。 - 或 - 源 HttpApplicationStateWrapper 对象中的元素数目大于从 index 到目标数组末尾之间的可用空间。
InvalidCastException | 无法将源 HttpApplicationStateWrapper 对象的类型强制转换为目标数组的类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Get 方法

HttpApplicationStateWrapper
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

按名称或索引获取状态对象。

名称 说明
页首

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Get 方法 (Int32)

HttpApplicationStateWrapper
.
.
::
.
Get 方法 (Int32)
HttpApplicationStateWrapper 类

按索引返回状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function Get ( _
    index As Integer _
) As Object
public override Object Get(
    int index
)
public:
virtual Object^ Get(
    int index
) override
abstract Get :
        index:int -> Object
override Get :
        index:int -> Object

参数

index
类型： System Int32
要获取的应用程序状态对象的索引。

返回值

类型： System Object
index 所引用的对象。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
Get 重载
System.Web 命名空间


HttpApplicationStateWrapper ..::.Get 方法 (String)

HttpApplicationStateWrapper
.
.
::
.
Get 方法 (String)
HttpApplicationStateWrapper 类

按名称返回状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function Get ( _
    name As String _
) As Object
public override Object Get(
    string name
)
public:
virtual Object^ Get(
    String^ name
) override
abstract Get :
        name:string -> Object
override Get :
        name:string -> Object

参数

name
类型： System String
要获取的对象的名称。

返回值

类型： System Object
如果找到，则为 name 引用的对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
Get 重载
System.Web 命名空间


HttpApplicationStateWrapper ..::.GetEnumerator 方法

HttpApplicationStateWrapper
.
.
::
.
GetEnumerator 方法
HttpApplicationStateWrapper 类

返回一个可用于循环访问集合的枚举数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个可用于循环访问集合的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.GetKey 方法

HttpApplicationStateWrapper
.
.
::
.
GetKey 方法
HttpApplicationStateWrapper 类

按索引返回状态对象的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetKey ( _
    index As Integer _
) As String
public override string GetKey(
    int index
)
public:
virtual String^ GetKey(
    int index
) override
abstract GetKey :
        index:int -> string
override GetKey :
        index:int -> string

参数

index
类型： System Int32
要获取的应用程序状态对象的索引。

返回值

类型： System String
应用程序状态对象的名称。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.GetObjectData 方法

HttpApplicationStateWrapper
.
.
::
.
GetObjectData 方法
HttpApplicationStateWrapper 类

返回序列化 HttpApplicationStateWrapper 对象所需的数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter := True)> _
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
[SecurityPermissionAttribute(SecurityAction::Demand, SerializationFormatter = true)]
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
一个 SerializationInfo 对象，其中包含序列化 HttpApplicationStateWrapper 对象所需的信息。
context
类型： System.Runtime.Serialization StreamingContext
一个 StreamingContext 对象，其中包含与 HttpApplicationStateWrapper 对象关联的序列化流的源和目标。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Lock 方法

HttpApplicationStateWrapper
.
.
::
.
Lock 方法
HttpApplicationStateWrapper 类

锁定对集合中对象的访问，以启用同步访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Lock
public override void Lock()
public:
virtual void Lock() override
abstract Lock : unit -> unit
override Lock : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.OnDeserialization 方法

HttpApplicationStateWrapper
.
.
::
.
OnDeserialization 方法
HttpApplicationStateWrapper 类

反序列化完成时引发反序列化事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub OnDeserialization ( _
    sender As Object _
)
public override void OnDeserialization(
    Object sender
)
public:
virtual void OnDeserialization(
    Object^ sender
) override
abstract OnDeserialization :
        sender:Object -> unit
override OnDeserialization :
        sender:Object -> unit

参数

sender
类型： System Object
反序列化事件源。

实现

异常 | 条件
SerializationException | 与当前 HttpApplicationStateWrapper 实例关联的 System.Runtime.Serialization..::.SerializationInfo 对象无效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Remove 方法

HttpApplicationStateWrapper
.
.
::
.
Remove 方法
HttpApplicationStateWrapper 类

从集合中移除按名称指定的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Remove ( _
    name As String _
)
public override void Remove(
    string name
)
public:
virtual void Remove(
    String^ name
) override
abstract Remove :
        name:string -> unit
override Remove :
        name:string -> unit

参数

name
类型： System String
要从集合中移除的对象的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.RemoveAll 方法

HttpApplicationStateWrapper
.
.
::
.
RemoveAll 方法
HttpApplicationStateWrapper 类

从集合中移除所有对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemoveAll
public override void RemoveAll()
public:
virtual void RemoveAll() override
abstract RemoveAll : unit -> unit
override RemoveAll : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.RemoveAt 方法

HttpApplicationStateWrapper
.
.
::
.
RemoveAt 方法
HttpApplicationStateWrapper 类

从集合中移除按索引指定的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemoveAt ( _
    index As Integer _
)
public override void RemoveAt(
    int index
)
public:
virtual void RemoveAt(
    int index
) override
abstract RemoveAt :
        index:int -> unit
override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要移除的项在集合中的位置。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Set 方法

HttpApplicationStateWrapper
.
.
::
.
Set 方法
HttpApplicationStateWrapper 类

更新集合中对象的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Set ( _
    name As String, _
    value As Object _
)
public override void Set(
    string name,
    Object value
)
public:
virtual void Set(
    String^ name,
    Object^ value
) override
abstract Set :
        name:string *
        value:Object -> unit
override Set :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要更新的对象的名称。
value
类型： System Object
对象更新之后的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.UnLock 方法

HttpApplicationStateWrapper
.
.
::
.
UnLock 方法
HttpApplicationStateWrapper 类

取消锁定对集合中对象的访问，以启用同步访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub UnLock
public override void UnLock()
public:
virtual void UnLock() override
abstract UnLock : unit -> unit
override UnLock : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper 属性

HttpApplicationStateWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

HttpApplicationStateWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpApplicationStateWrapper 类
System.Web 命名空间


HttpApplicationStateWrapper ..::.AllKeys 属性

HttpApplicationStateWrapper
.
.
::
.
AllKeys 属性
HttpApplicationStateWrapper 类

获取集合中对象的键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AllKeys As String()
    Get
public override string[] AllKeys { get; }
public:
virtual property array<String^>^ AllKeys {
    array<String^>^ get () override;
}
abstract AllKeys : string[]
override AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

状态对象键的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Contents 属性

HttpApplicationStateWrapper
.
.
::
.
Contents 属性
HttpApplicationStateWrapper 类

获取对 HttpApplicationStateBase 对象的引用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Contents As HttpApplicationStateBase
    Get
public override HttpApplicationStateBase Contents { get; }
public:
virtual property HttpApplicationStateBase^ Contents {
    HttpApplicationStateBase^ get () override;
}
abstract Contents : HttpApplicationStateBase
override Contents : HttpApplicationStateBase

属性值

类型： System.Web HttpApplicationStateBase
对 HttpApplicationState 对象的引用。

该属性提供与早期版本的 ASP 之间的兼容性。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Count 属性

HttpApplicationStateWrapper
.
.
::
.
Count 属性
HttpApplicationStateWrapper 类

获取集合中的对象数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.IsSynchronized 属性

HttpApplicationStateWrapper
.
.
::
.
IsSynchronized 属性
HttpApplicationStateWrapper 类

获取一个值，该值指示对集合的访问是否是线程安全的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsSynchronized As Boolean
    Get
public override bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get () override;
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果访问是同步的（线程安全），则为 true；否则为 false。默认值为 false。 如果访问是同步的（线程安全），则为 true；否则为 false。默认值为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Item 属性

HttpApplicationStateWrapper
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpApplicationStateWrapper 类

按名称或索引，获取 HttpApplicationState 集合中的对象。

名称 说明
页首

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.Item 属性 (Int32)

HttpApplicationStateWrapper
.
.
::
.
Item 属性 (Int32)
HttpApplicationStateWrapper 类

按索引获取状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Item ( _
    index As Integer _
) As Object
    Get
public override Object this[
    int index
] { get; }
public:
virtual property Object^ Item[int index] {
    Object^ get (int index) override;
}
abstract Item : Object
override Item : Object

参数

index
类型： System Int32
集合中对象的索引。

属性值

类型： System Object
index 所引用的对象。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
Item 重载
System.Web 命名空间


HttpApplicationStateWrapper ..::.Item 属性 (String)

HttpApplicationStateWrapper
.
.
::
.
Item 属性 (String)
HttpApplicationStateWrapper 类

按名称获取状态对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Item ( _
    name As String _
) As Object
    Get
    Set
public override Object this[
    string name
] { get; set; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name) override;
    void set (String^ name, Object^ value) override;
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

name
类型： System String
集合中的对象名。

属性值

类型： System Object
如果找到，则为 name 引用的对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
Item 重载
System.Web 命名空间


HttpApplicationStateWrapper ..::.Keys 属性

HttpApplicationStateWrapper
.
.
::
.
Keys 属性
HttpApplicationStateWrapper 类

获取 NameObjectCollectionBase..::.KeysCollection 实例，该实例包含 HttpApplicationStateWrapper 实例中的所有键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Keys As NameObjectCollectionBase..::..KeysCollection
    Get
public override NameObjectCollectionBase..::..KeysCollection Keys { get; }
public:
virtual property NameObjectCollectionBase..::..KeysCollection^ Keys {
    NameObjectCollectionBase..::..KeysCollection^ get () override;
}
abstract Keys : NameObjectCollectionBase..::..KeysCollection
override Keys : NameObjectCollectionBase..::..KeysCollection

属性值

类型： System.Collections.Specialized NameObjectCollectionBase KeysCollection
集合中所有键的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.StaticObjects 属性

HttpApplicationStateWrapper
.
.
::
.
StaticObjects 属性
HttpApplicationStateWrapper 类

获取 object 元素声明的所有对象，其中范围设置为 ASP.NET 应用程序中的“Application”。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property StaticObjects As HttpStaticObjectsCollectionBase
    Get
public override HttpStaticObjectsCollectionBase StaticObjects { get; }
public:
virtual property HttpStaticObjectsCollectionBase^ StaticObjects {
    HttpStaticObjectsCollectionBase^ get () override;
}
abstract StaticObjects : HttpStaticObjectsCollectionBase
override StaticObjects : HttpStaticObjectsCollectionBase

属性值

类型： System.Web HttpStaticObjectsCollectionBase
应用程序中对象的集合。

应用程序对象是在 Global.asax 文件中具有如下语法的元素内定义的：

<object runat="server" scope="Application">Object information</object>

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpApplicationStateWrapper ..::.SyncRoot 属性

HttpApplicationStateWrapper
.
.
::
.
SyncRoot 属性
HttpApplicationStateWrapper 类

获取可用于同步对集合的访问的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SyncRoot As Object
    Get
public override Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () override;
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpApplicationStateWrapper 类
HttpApplicationStateWrapper 成员
System.Web 命名空间


HttpBrowserCapabilities 类

HttpBrowserCapabilities 类
成员

使服务器能够收集有关在客户端运行的浏览器功能的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpBrowserCapabilities _
    Inherits HttpCapabilitiesBase
public class HttpBrowserCapabilities : HttpCapabilitiesBase
public ref class HttpBrowserCapabilities : public HttpCapabilitiesBase
type HttpBrowserCapabilities =
    class
        inherit HttpCapabilitiesBase
    end

通过 ASP.NET 的内部 Request 对象的 Browser 属性可以访问 HttpBrowserCapabilities 属性。

System.Web System.Web..::.HttpBrowserCapabilitiesHttpBrowserCapabilities

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpBrowserCapabilities 成员
System.Web 命名空间
ClientTarget
Browser
UserAgent

其他资源

ASP.NET Web 服务器控件和浏览器功能
clientTarget 元素（ASP.NET 设置架构）


HttpBrowserCapabilities 成员

HttpBrowserCapabilities 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilities 类

使服务器能够收集有关在客户端运行的浏览器功能的信息。

HttpBrowserCapabilities 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpBrowserCapabilities 类
System.Web 命名空间


HttpBrowserCapabilities 构造函数

HttpBrowserCapabilities 构造函数
HttpBrowserCapabilities 类

创建 HttpBrowserCapabilities 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpBrowserCapabilities()
public:
HttpBrowserCapabilities()
new : unit -> HttpBrowserCapabilities

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpBrowserCapabilities 类
HttpBrowserCapabilities 成员
System.Web 命名空间


HttpBrowserCapabilities 方法

HttpBrowserCapabilities 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilities 类

HttpBrowserCapabilities 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpBrowserCapabilities 类
System.Web 命名空间


HttpBrowserCapabilities 属性

HttpBrowserCapabilities 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilities 类

HttpBrowserCapabilities 类型公开以下成员。

名称 说明
页首

参考

HttpBrowserCapabilities 类
System.Web 命名空间


HttpBrowserCapabilitiesBase 类

HttpBrowserCapabilitiesBase 类
成员

用作某些类的基类，这些类使服务器可以收集发出当前请求的浏览器的功能相关信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpBrowserCapabilitiesBase _
    Implements IFilterResolutionService
public abstract class HttpBrowserCapabilitiesBase : IFilterResolutionService
public ref class HttpBrowserCapabilitiesBase abstract : IFilterResolutionService
[<AbstractClassAttribute>]
type HttpBrowserCapabilitiesBase =
    class
        interface IFilterResolutionService
    end

HttpBrowserCapabilitiesBase 类为抽象类，该类包含的成员与 HttpBrowserCapabilities 类相同。使用 HttpBrowserCapabilitiesBase 类可以创建一些派生类，这些派生类与 HttpBrowserCapabilities 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpBrowserCapabilitiesBase 类为抽象类，该类包含的成员与 HttpBrowserCapabilities 类相同。使用 HttpBrowserCapabilitiesBase 类可以创建一些派生类，这些派生类与 HttpBrowserCapabilities 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpBrowserCapabilitiesBase 类为抽象类，该类包含的成员与 HttpBrowserCapabilities 类相同。使用 HttpBrowserCapabilitiesBase 类可以创建一些派生类，这些派生类与 HttpBrowserCapabilities 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpBrowserCapabilitiesWrapper 类是从 HttpBrowserCapabilitiesBase 类派生的。HttpBrowserCapabilitiesWrapper 类用作 HttpBrowserCapabilities 类的包装。在运行时，通常使用 HttpBrowserCapabilitiesWrapper 类的实例调用 HttpBrowserCapabilities 对象的成员。 HttpBrowserCapabilitiesWrapper 类是从 HttpBrowserCapabilitiesBase 类派生的。HttpBrowserCapabilitiesWrapper 类用作 HttpBrowserCapabilities 类的包装。在运行时，通常使用 HttpBrowserCapabilitiesWrapper 类的实例调用 HttpBrowserCapabilities 对象的成员。 HttpBrowserCapabilitiesWrapper 类是从 HttpBrowserCapabilitiesBase 类派生的。HttpBrowserCapabilitiesWrapper 类用作 HttpBrowserCapabilities 类的包装。在运行时，通常使用 HttpBrowserCapabilitiesWrapper 类的实例调用 HttpBrowserCapabilities 对象的成员。

System.Web System.Web..::.HttpBrowserCapabilitiesBaseHttpBrowserCapabilitiesBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase 成员

HttpBrowserCapabilitiesBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilitiesBase 类

用作某些类的基类，这些类使服务器可以收集发出当前请求的浏览器的功能相关信息。

HttpBrowserCapabilitiesBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpBrowserCapabilitiesBase 类
System.Web 命名空间


HttpBrowserCapabilitiesBase 构造函数

HttpBrowserCapabilitiesBase 构造函数
HttpBrowserCapabilitiesBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpBrowserCapabilitiesBase()
protected:
HttpBrowserCapabilitiesBase()
new : unit -> HttpBrowserCapabilitiesBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase 方法

HttpBrowserCapabilitiesBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilitiesBase 类

HttpBrowserCapabilitiesBase 类型公开以下成员。

名称 说明
页首

参考

HttpBrowserCapabilitiesBase 类
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.AddBrowser 方法

HttpBrowserCapabilitiesBase
.
.
::
.
AddBrowser 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于向浏览器的内部集合添加项，这些浏览器的功能已识别。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddBrowser ( _
    browserName As String _
)
public virtual void AddBrowser(
    string browserName
)
public:
virtual void AddBrowser(
    String^ browserName
)
abstract AddBrowser :
        browserName:string -> unit
override AddBrowser :
        browserName:string -> unit

参数

browserName
类型： System String
要添加的浏览器的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CompareFilters 方法

HttpBrowserCapabilitiesBase
.
.
::
.
CompareFilters 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于比较筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function CompareFilters ( _
    filter1 As String, _
    filter2 As String _
) As Integer
public virtual int CompareFilters(
    string filter1,
    string filter2
)
public:
virtual int CompareFilters(
    String^ filter1,
    String^ filter2
)
abstract CompareFilters :
        filter1:string *
        filter2:string -> int
override CompareFilters :
        filter1:string *
        filter2:string -> int

参数

filter1
类型： System String
要比较的第一个筛选器。
filter2
类型： System String
要比较的第二个筛选器。

返回值

类型： System Int32
如果 filter1 为 filter2 的父级，则为 1；如果 filter2 为 filter1 的父级，则为 -1；如果 filter1 与 filter2 之间不存在父/子关系，则为 0。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CreateHtmlTextWriter 方法

HttpBrowserCapabilitiesBase
.
.
::
.
CreateHtmlTextWriter 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，创建 HtmlTextWriter 对象的新实例用于将标记呈现到浏览器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function CreateHtmlTextWriter ( _
    w As TextWriter _
) As HtmlTextWriter
public virtual HtmlTextWriter CreateHtmlTextWriter(
    TextWriter w
)
public:
virtual HtmlTextWriter^ CreateHtmlTextWriter(
    TextWriter^ w
)
abstract CreateHtmlTextWriter :
        w:TextWriter -> HtmlTextWriter
override CreateHtmlTextWriter :
        w:TextWriter -> HtmlTextWriter

参数

w
类型： System.IO TextWriter
要创建的对象。

返回值

类型： System.Web.UI HtmlTextWriter
对象的新实例。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.DisableOptimizedCacheKey 方法

HttpBrowserCapabilitiesBase
.
.
::
.
DisableOptimizedCacheKey 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于禁用经过优化的缓存密钥。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub DisableOptimizedCacheKey
public virtual void DisableOptimizedCacheKey()
public:
virtual void DisableOptimizedCacheKey()
abstract DisableOptimizedCacheKey : unit -> unit
override DisableOptimizedCacheKey : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.EvaluateFilter 方法

HttpBrowserCapabilitiesBase
.
.
::
.
EvaluateFilter 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于计算筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function EvaluateFilter ( _
    filterName As String _
) As Boolean
public virtual bool EvaluateFilter(
    string filterName
)
public:
virtual bool EvaluateFilter(
    String^ filterName
)
abstract EvaluateFilter :
        filterName:string -> bool
override EvaluateFilter :
        filterName:string -> bool

参数

filterName
类型： System String
要计算的筛选器。

返回值

类型： System Boolean
如果成功计算筛选器，则为 true；否则为 false。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.GetClrVersions 方法

HttpBrowserCapabilitiesBase
.
.
::
.
GetClrVersions 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取客户端上安装的 .NET Framework 公共语言运行时 (CLR) 的所有版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClrVersions As Version()
public virtual Version[] GetClrVersions()
public:
virtual array<Version^>^ GetClrVersions()
abstract GetClrVersions : unit -> Version[]
override GetClrVersions : unit -> Version[]

返回值

类型：
array<
System Version
>
[]
()
[]

Version 对象的数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.IsBrowser 方法

HttpBrowserCapabilitiesBase
.
.
::
.
IsBrowser 方法
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示客户端浏览器是否与指定浏览器相同。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsBrowser ( _
    browserName As String _
) As Boolean
public virtual bool IsBrowser(
    string browserName
)
public:
virtual bool IsBrowser(
    String^ browserName
)
abstract IsBrowser :
        browserName:string -> bool
override IsBrowser :
        browserName:string -> bool

参数

browserName
类型： System String
指定的浏览器。

返回值

类型： System Boolean
如果客户端浏览器与指定的浏览器相同，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase 属性

HttpBrowserCapabilitiesBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilitiesBase 类

HttpBrowserCapabilitiesBase 类型公开以下成员。

名称 说明
页首

参考

HttpBrowserCapabilitiesBase 类
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ActiveXControls 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ActiveXControls 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否可以支持 ActiveX 控件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ActiveXControls As Boolean
    Get
public virtual bool ActiveXControls { get; }
public:
virtual property bool ActiveXControls {
    bool get ();
}
abstract ActiveXControls : bool
override ActiveXControls : bool

属性值

类型： System Boolean
如果浏览器可以支持 ActiveX 控件，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Adapters 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Adapters 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取可用控件适配器的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Adapters As IDictionary
    Get
public virtual IDictionary Adapters { get; }
public:
virtual property IDictionary^ Adapters {
    IDictionary^ get ();
}
abstract Adapters : IDictionary
override Adapters : IDictionary

属性值

类型： System.Collections IDictionary
浏览器的已注册控件适配器。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.AOL 属性

HttpBrowserCapabilitiesBase
.
.
::
.
AOL 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示客户端是否是 America Online (AOL) 浏览器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AOL As Boolean
    Get
public virtual bool AOL { get; }
public:
virtual property bool AOL {
    bool get ();
}
abstract AOL : bool
override AOL : bool

属性值

类型： System Boolean
如果浏览器是 AOL 浏览器，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.BackgroundSounds 属性

HttpBrowserCapabilitiesBase
.
.
::
.
BackgroundSounds 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持使用 bgsounds HTML 元素播放背景声音。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property BackgroundSounds As Boolean
    Get
public virtual bool BackgroundSounds { get; }
public:
virtual property bool BackgroundSounds {
    bool get ();
}
abstract BackgroundSounds : bool
override BackgroundSounds : bool

属性值

类型： System Boolean
如果浏览器支持播放背景声音，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Beta 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Beta 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否为 beta 版。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Beta As Boolean
    Get
public virtual bool Beta { get; }
public:
virtual property bool Beta {
    bool get ();
}
abstract Beta : bool
override Beta : bool

属性值

类型： System Boolean
如果浏览器为 beta 版，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Browser 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Browser 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器在 User-Agent 请求标头中发送的浏览器字符串（如果有）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Browser As String
    Get
public virtual string Browser { get; }
public:
virtual property String^ Browser {
    String^ get ();
}
abstract Browser : string
override Browser : string

属性值

类型： System String
浏览器发送的 User-Agent 请求标头的内容。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Browsers 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Browsers 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取为其识别功能的浏览器的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Browsers As ArrayList
    Get
public virtual ArrayList Browsers { get; }
public:
virtual property ArrayList^ Browsers {
    ArrayList^ get ();
}
abstract Browsers : ArrayList
override Browsers : ArrayList

属性值

类型： System.Collections ArrayList
为其识别功能的浏览器。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanCombineFormsInDeck 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanCombineFormsInDeck 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持包含多个窗体（如单独的卡片）的卡片组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanCombineFormsInDeck As Boolean
    Get
public virtual bool CanCombineFormsInDeck { get; }
public:
virtual property bool CanCombineFormsInDeck {
    bool get ();
}
abstract CanCombineFormsInDeck : bool
override CanCombineFormsInDeck : bool

属性值

类型： System Boolean
如果浏览器支持包含多个窗体的卡片组，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanInitiateVoiceCall 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanInitiateVoiceCall 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器设备是否能够启动语音呼叫。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanInitiateVoiceCall As Boolean
    Get
public virtual bool CanInitiateVoiceCall { get; }
public:
virtual property bool CanInitiateVoiceCall {
    bool get ();
}
abstract CanInitiateVoiceCall : bool
override CanInitiateVoiceCall : bool

属性值

类型： System Boolean
如果浏览器设备能够启动语音呼叫，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderAfterInputOrSelectElement 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderAfterInputOrSelectElement 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 WML select 或 input 元素后跟页面内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderAfterInputOrSelectElement As Boolean
    Get
public virtual bool CanRenderAfterInputOrSelectElement { get; }
public:
virtual property bool CanRenderAfterInputOrSelectElement {
    bool get ();
}
abstract CanRenderAfterInputOrSelectElement : bool
override CanRenderAfterInputOrSelectElement : bool

属性值

类型： System Boolean
如果浏览器支持 HTML select 或 input 元素后跟页面内容，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderEmptySelects 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderEmptySelects 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持空 HTML select 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderEmptySelects As Boolean
    Get
public virtual bool CanRenderEmptySelects { get; }
public:
virtual property bool CanRenderEmptySelects {
    bool get ();
}
abstract CanRenderEmptySelects : bool
override CanRenderEmptySelects : bool

属性值

类型： System Boolean
如果浏览器支持空 HTML select 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderInputAndSelectElementsTogether 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderInputAndSelectElementsTogether 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 WML input 和 select 元素存在于同一卡片中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderInputAndSelectElementsTogether As Boolean
    Get
public virtual bool CanRenderInputAndSelectElementsTogether { get; }
public:
virtual property bool CanRenderInputAndSelectElementsTogether {
    bool get ();
}
abstract CanRenderInputAndSelectElementsTogether : bool
override CanRenderInputAndSelectElementsTogether : bool

属性值

类型： System Boolean
如果浏览器同时支持 WML input 和 select 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderMixedSelects 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderMixedSelects 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持指定 onpick 和 value 两个特性的 WML option 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderMixedSelects As Boolean
    Get
public virtual bool CanRenderMixedSelects { get; }
public:
virtual property bool CanRenderMixedSelects {
    bool get ();
}
abstract CanRenderMixedSelects : bool
override CanRenderMixedSelects : bool

属性值

类型： System Boolean
如果浏览器支持指定 onpick 和 value 两个特性的 WML option 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderOneventAndPrevElementsTogether 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderOneventAndPrevElementsTogether 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在同一卡片中支持 WML onevent 和 prev 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderOneventAndPrevElementsTogether As Boolean
    Get
public virtual bool CanRenderOneventAndPrevElementsTogether { get; }
public:
virtual property bool CanRenderOneventAndPrevElementsTogether {
    bool get ();
}
abstract CanRenderOneventAndPrevElementsTogether : bool
override CanRenderOneventAndPrevElementsTogether : bool

属性值

类型： System Boolean
如果浏览器在同一 WML 卡片中支持 WML onevent 和 prev 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderPostBackCards 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderPostBackCards 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 WML 卡片用于回发。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderPostBackCards As Boolean
    Get
public virtual bool CanRenderPostBackCards { get; }
public:
virtual property bool CanRenderPostBackCards {
    bool get ();
}
abstract CanRenderPostBackCards : bool
override CanRenderPostBackCards : bool

属性值

类型： System Boolean
如果浏览器支持 WML 卡片用于回发，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanRenderSetvarZeroWithMultiSelectionList 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanRenderSetvarZeroWithMultiSelectionList 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 value 特性为 0 的 WML setvar 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanRenderSetvarZeroWithMultiSelectionList As Boolean
    Get
public virtual bool CanRenderSetvarZeroWithMultiSelectionList { get; }
public:
virtual property bool CanRenderSetvarZeroWithMultiSelectionList {
    bool get ();
}
abstract CanRenderSetvarZeroWithMultiSelectionList : bool
override CanRenderSetvarZeroWithMultiSelectionList : bool

属性值

类型： System Boolean
如果浏览器支持 value 特性为 0 的 WML setvar 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CanSendMail 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CanSendMail 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持使用 HTML mailto 方案发送电子邮件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CanSendMail As Boolean
    Get
public virtual bool CanSendMail { get; }
public:
virtual property bool CanSendMail {
    bool get ();
}
abstract CanSendMail : bool
override CanSendMail : bool

属性值

类型： System Boolean
如果浏览器支持使用 HTML mailto 方案发送电子邮件，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Capabilities 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Capabilities 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于获取浏览器的已定义功能。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Capabilities As IDictionary
    Get
    Set
public virtual IDictionary Capabilities { get; set; }
public:
virtual property IDictionary^ Capabilities {
    IDictionary^ get ();
    void set (IDictionary^ value);
}
abstract Capabilities : IDictionary with get, set
override Capabilities : IDictionary with get, set

属性值

类型： System.Collections IDictionary
浏览器的已定义功能。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.CDF 属性

HttpBrowserCapabilitiesBase
.
.
::
.
CDF 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持频道定义格式 (CDF) 用于网络广播。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CDF As Boolean
    Get
public virtual bool CDF { get; }
public:
virtual property bool CDF {
    bool get ();
}
abstract CDF : bool
override CDF : bool

属性值

类型： System Boolean
如果浏览器支持 CDF，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ClrVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ClrVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取客户端上安装的 .NET Framework 的版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ClrVersion As Version
    Get
public virtual Version ClrVersion { get; }
public:
virtual property Version^ ClrVersion {
    Version^ get ();
}
abstract ClrVersion : Version
override ClrVersion : Version

属性值

类型： System Version
公共语言运行时 (CLR) 版本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Cookies 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Cookies 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否可以支持 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Cookies As Boolean Get
public virtual bool Cookies { get; }
public:
virtual property bool Cookies {
    bool get ();
}
abstract Cookies : bool override Cookies : bool
属性值
类型： System Boolean
如果浏览器可以支持 Cookie，则为
true
；否则为
false
。
说明
此属性不指示浏览器中当前是否启用了 Cookie，仅指示浏览器是否可以支持 Cookie。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Crawler 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Crawler 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否为搜索引擎网络爬网程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Crawler As Boolean
    Get
public virtual bool Crawler { get; }
public:
virtual property bool Crawler {
    bool get ();
}
abstract Crawler : bool
override Crawler : bool

属性值

类型： System Boolean
如果浏览器为搜索引擎网络爬网程序，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.DefaultSubmitButtonLimit 属性

HttpBrowserCapabilitiesBase
.
.
::
.
DefaultSubmitButtonLimit 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取窗体上允许使用的提交按钮的最大数目。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property DefaultSubmitButtonLimit As Integer
    Get
public virtual int DefaultSubmitButtonLimit { get; }
public:
virtual property int DefaultSubmitButtonLimit {
    int get ();
}
abstract DefaultSubmitButtonLimit : int
override DefaultSubmitButtonLimit : int

属性值

类型： System Int32
窗体上允许使用的提交按钮的最大数目。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.EcmaScriptVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
EcmaScriptVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器所支持的 ECMAScript (JavaScript) 的版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property EcmaScriptVersion As Version
    Get
public virtual Version EcmaScriptVersion { get; }
public:
virtual property Version^ EcmaScriptVersion {
    Version^ get ();
}
abstract EcmaScriptVersion : Version
override EcmaScriptVersion : Version

属性值

类型： System Version
浏览器所支持的 ECMAScript (JavaScript) 的版本号。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Frames 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Frames 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML 框架。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Frames As Boolean
    Get
public virtual bool Frames { get; }
public:
virtual property bool Frames {
    bool get ();
}
abstract Frames : bool
override Frames : bool

属性值

类型： System Boolean
如果浏览器支持框架，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.GatewayMajorVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
GatewayMajorVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取用于访问服务器的无线网关的主版本号（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property GatewayMajorVersion As Integer
    Get
public virtual int GatewayMajorVersion { get; }
public:
virtual property int GatewayMajorVersion {
    int get ();
}
abstract GatewayMajorVersion : int
override GatewayMajorVersion : int

属性值

类型： System Int32
用于访问服务器的无线网关的主版本号（如果已知）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.GatewayMinorVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
GatewayMinorVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取用于访问服务器的无线网关的次版本号（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property GatewayMinorVersion As Double
    Get
public virtual double GatewayMinorVersion { get; }
public:
virtual property double GatewayMinorVersion {
    double get ();
}
abstract GatewayMinorVersion : float
override GatewayMinorVersion : float

属性值

类型： System Double
用于访问服务器的无线网关的次版本号（如果已知）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.GatewayVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
GatewayVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取用于访问服务器的无线网关的版本（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property GatewayVersion As String
    Get
public virtual string GatewayVersion { get; }
public:
virtual property String^ GatewayVersion {
    String^ get ();
}
abstract GatewayVersion : string
override GatewayVersion : string

属性值

类型： System String
用于访问服务器的无线网关的版本号（如果已知）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.HasBackButton 属性

HttpBrowserCapabilitiesBase
.
.
::
.
HasBackButton 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否具有专用“后退”按钮。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property HasBackButton As Boolean
    Get
public virtual bool HasBackButton { get; }
public:
virtual property bool HasBackButton {
    bool get ();
}
abstract HasBackButton : bool
override HasBackButton : bool

属性值

类型： System Boolean
如果浏览器具有专用“后退”按钮，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.HidesRightAlignedMultiselectScrollbars 属性

HttpBrowserCapabilitiesBase
.
.
::
.
HidesRightAlignedMultiselectScrollbars 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示 align 特性值为 right 的 HTML select multiple 元素的滚动条在呈现时是否被遮盖。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property HidesRightAlignedMultiselectScrollbars As Boolean
    Get
public virtual bool HidesRightAlignedMultiselectScrollbars { get; }
public:
virtual property bool HidesRightAlignedMultiselectScrollbars {
    bool get ();
}
abstract HidesRightAlignedMultiselectScrollbars : bool
override HidesRightAlignedMultiselectScrollbars : bool

属性值

类型： System Boolean
如果 align 特性值为 right 的 HTML select multiple 元素的滚动条在呈现时被遮盖，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.HtmlTextWriter 属性

HttpBrowserCapabilitiesBase
.
.
::
.
HtmlTextWriter 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取或设置用于编写标记字符和文本的 HtmlTextWriter 的完全限定类名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property HtmlTextWriter As String
    Get
    Set
public virtual string HtmlTextWriter { get; set; }
public:
virtual property String^ HtmlTextWriter {
    String^ get ();
    void set (String^ value);
}
abstract HtmlTextWriter : string with get, set
override HtmlTextWriter : string with get, set

属性值

类型： System String
用于编写标记字符和文本的 HtmlTextWriter 的完全限定类名。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Id 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Id 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取在浏览器定义文件中指定的浏览器内部标识符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Id As String
    Get
public virtual string Id { get; }
public:
virtual property String^ Id {
    String^ get ();
}
abstract Id : string
override Id : string

属性值

类型： System String
在浏览器定义文件中指定的浏览器内部标识符。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.InputType 属性

HttpBrowserCapabilitiesBase
.
.
::
.
InputType 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器所支持的输入类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property InputType As String
    Get
public virtual string InputType { get; }
public:
virtual property String^ InputType {
    String^ get ();
}
abstract InputType : string
override InputType : string

属性值

类型： System String
浏览器所支持的输入类型。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.IsColor 属性

HttpBrowserCapabilitiesBase
.
.
::
.
IsColor 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否具有颜色显示。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsColor As Boolean
    Get
public virtual bool IsColor { get; }
public:
virtual property bool IsColor {
    bool get ();
}
abstract IsColor : bool
override IsColor : bool

属性值

类型： System Boolean
如果浏览器具有颜色显示，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.IsMobileDevice 属性

HttpBrowserCapabilitiesBase
.
.
::
.
IsMobileDevice 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否为已识别移动设备。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsMobileDevice As Boolean
    Get
public virtual bool IsMobileDevice { get; }
public:
virtual property bool IsMobileDevice {
    bool get ();
}
abstract IsMobileDevice : bool
override IsMobileDevice : bool

属性值

类型： System Boolean
如果浏览器为已识别移动设备，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Item 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Item 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取指定浏览器功能的值。在 C# 中，此属性是类的索引器。 在派生类中重写时，获取指定浏览器功能的值。在 C# 中，此属性是类的索引器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Item ( _
    key As String _
) As String
    Get
public virtual string this[
    string key
] { get; }
public:
virtual property String^ Item[String^ key] {
    String^ get (String^ key);
}
abstract Item : string
override Item : string

参数

key
类型： System String

属性值

类型： System String
具有指定的 key 名称的浏览器功能。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.JavaApplets 属性

HttpBrowserCapabilitiesBase
.
.
::
.
JavaApplets 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 Java。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property JavaApplets As Boolean Get
public virtual bool JavaApplets { get; }
public:
virtual property bool JavaApplets {
    bool get ();
}
abstract JavaApplets : bool override JavaApplets : bool
属性值
类型： System Boolean
如果浏览器支持 Java，则为
true
；否则为
false
。
说明
此属性不指示浏览器中当前是否启用了 Java，仅指示浏览器是否可以支持 Java。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.JScriptVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
JScriptVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器所支持的 JScript 版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property JScriptVersion As Version
    Get
public virtual Version JScriptVersion { get; }
public:
virtual property Version^ JScriptVersion {
    Version^ get ();
}
abstract JScriptVersion : Version
override JScriptVersion : Version

属性值

类型： System Version
浏览器所支持的 JScript 版本。
异常 | 条件
NotImplementedException | 始终为 。

有关浏览器所支持的 ECMAScript 的版本号，请参见 EcmaScriptVersion。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MajorVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MajorVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器的主（整数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MajorVersion As Integer
    Get
public virtual int MajorVersion { get; }
public:
virtual property int MajorVersion {
    int get ();
}
abstract MajorVersion : int
override MajorVersion : int

属性值

类型： System Int32
浏览器的主版本号。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MaximumHrefLength 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MaximumHrefLength 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取 HTML a（定位点）元素的 href 特性的最大长度（以字符为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MaximumHrefLength As Integer
    Get
public virtual int MaximumHrefLength { get; }
public:
virtual property int MaximumHrefLength {
    int get ();
}
abstract MaximumHrefLength : int
override MaximumHrefLength : int

属性值

类型： System Int32
HTML a（定位点）元素的 href 特性的最大长度（以字符为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MaximumRenderedPageSize 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MaximumRenderedPageSize 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器可显示的页面的最大长度（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MaximumRenderedPageSize As Integer
    Get
public virtual int MaximumRenderedPageSize { get; }
public:
virtual property int MaximumRenderedPageSize {
    int get ();
}
abstract MaximumRenderedPageSize : int
override MaximumRenderedPageSize : int

属性值

类型： System Int32
浏览器可显示的页面的最大长度（以字节为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MaximumSoftkeyLabelLength 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MaximumSoftkeyLabelLength 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取软键标签可显示的文本的最大长度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MaximumSoftkeyLabelLength As Integer
    Get
public virtual int MaximumSoftkeyLabelLength { get; }
public:
virtual property int MaximumSoftkeyLabelLength {
    int get ();
}
abstract MaximumSoftkeyLabelLength : int
override MaximumSoftkeyLabelLength : int

属性值

类型： System Int32
软键标签可显示的文本的最大长度。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MinorVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MinorVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器的次（小数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MinorVersion As Double
    Get
public virtual double MinorVersion { get; }
public:
virtual property double MinorVersion {
    double get ();
}
abstract MinorVersion : float
override MinorVersion : float

属性值

类型： System Double
浏览器的次版本号。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MinorVersionString 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MinorVersionString 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，以字符串形式获取浏览器的次（小数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MinorVersionString As String
    Get
public virtual string MinorVersionString { get; }
public:
virtual property String^ MinorVersionString {
    String^ get ();
}
abstract MinorVersionString : string
override MinorVersionString : string

属性值

类型： System String
一个字符串，表示浏览器的次版本号。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MobileDeviceManufacturer 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MobileDeviceManufacturer 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取移动设备制造商的名称（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MobileDeviceManufacturer As String
    Get
public virtual string MobileDeviceManufacturer { get; }
public:
virtual property String^ MobileDeviceManufacturer {
    String^ get ();
}
abstract MobileDeviceManufacturer : string
override MobileDeviceManufacturer : string

属性值

类型： System String
移动设备制造商的名称（如果已知）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MobileDeviceModel 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MobileDeviceModel 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取移动设备的型号名（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MobileDeviceModel As String
    Get
public virtual string MobileDeviceModel { get; }
public:
virtual property String^ MobileDeviceModel {
    String^ get ();
}
abstract MobileDeviceModel : string
override MobileDeviceModel : string

属性值

类型： System String
移动设备的型号名（如果已知）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.MSDomVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
MSDomVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器所支持的 Microsoft HTML (MSHTML) 文档对象模型 (DOM) 的版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MSDomVersion As Version
    Get
public virtual Version MSDomVersion { get; }
public:
virtual property Version^ MSDomVersion {
    Version^ get ();
}
abstract MSDomVersion : Version
override MSDomVersion : Version

属性值

类型： System Version
浏览器所支持的 MSHTML DOM 版本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.NumberOfSoftkeys 属性

HttpBrowserCapabilitiesBase
.
.
::
.
NumberOfSoftkeys 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取移动设备上的软键数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property NumberOfSoftkeys As Integer
    Get
public virtual int NumberOfSoftkeys { get; }
public:
virtual property int NumberOfSoftkeys {
    int get ();
}
abstract NumberOfSoftkeys : int
override NumberOfSoftkeys : int

属性值

类型： System Int32
移动设备上所支持的软键数。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Platform 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Platform 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取客户端使用的操作系统的名称（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Platform As String
    Get
public virtual string Platform { get; }
public:
virtual property String^ Platform {
    String^ get ();
}
abstract Platform : string
override Platform : string

属性值

类型： System String
客户端使用的操作系统（如果已知）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.PreferredImageMime 属性

HttpBrowserCapabilitiesBase
.
.
::
.
PreferredImageMime 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器通常首选的图像内容类型的 MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreferredImageMime As String
    Get
public virtual string PreferredImageMime { get; }
public:
virtual property String^ PreferredImageMime {
    String^ get ();
}
abstract PreferredImageMime : string
override PreferredImageMime : string

属性值

类型： System String
浏览器通常首选的图像内容类型的 MIME 类型。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.PreferredRenderingMime 属性

HttpBrowserCapabilitiesBase
.
.
::
.
PreferredRenderingMime 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器通常首选的内容类型的 MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreferredRenderingMime As String
    Get
public virtual string PreferredRenderingMime { get; }
public:
virtual property String^ PreferredRenderingMime {
    String^ get ();
}
abstract PreferredRenderingMime : string
override PreferredRenderingMime : string

属性值

类型： System String
浏览器通常首选的内容类型的 MIME 类型。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.PreferredRenderingType 属性

HttpBrowserCapabilitiesBase
.
.
::
.
PreferredRenderingType 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器首选的内容类型的一般名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreferredRenderingType As String
    Get
public virtual string PreferredRenderingType { get; }
public:
virtual property String^ PreferredRenderingType {
    String^ get ();
}
abstract PreferredRenderingType : string
override PreferredRenderingType : string

属性值

类型： System String
值“html32”或“chtml10”。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.PreferredRequestEncoding 属性

HttpBrowserCapabilitiesBase
.
.
::
.
PreferredRequestEncoding 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器首选的请求编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreferredRequestEncoding As String
    Get
public virtual string PreferredRequestEncoding { get; }
public:
virtual property String^ PreferredRequestEncoding {
    String^ get ();
}
abstract PreferredRequestEncoding : string
override PreferredRequestEncoding : string

属性值

类型： System String
浏览器首选的请求编码。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.PreferredResponseEncoding 属性

HttpBrowserCapabilitiesBase
.
.
::
.
PreferredResponseEncoding 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器首选的响应编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreferredResponseEncoding As String
    Get
public virtual string PreferredResponseEncoding { get; }
public:
virtual property String^ PreferredResponseEncoding {
    String^ get ();
}
abstract PreferredResponseEncoding : string
override PreferredResponseEncoding : string

属性值

类型： System String
浏览器首选的响应编码。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RendersBreakBeforeWmlSelectAndInput 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RendersBreakBeforeWmlSelectAndInput 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在 WML select 或 input 元素之前呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RendersBreakBeforeWmlSelectAndInput As Boolean
    Get
public virtual bool RendersBreakBeforeWmlSelectAndInput { get; }
public:
virtual property bool RendersBreakBeforeWmlSelectAndInput {
    bool get ();
}
abstract RendersBreakBeforeWmlSelectAndInput : bool
override RendersBreakBeforeWmlSelectAndInput : bool

属性值

类型： System Boolean
如果浏览器在 select 或 input 元素之前呈现一个换行符，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RendersBreaksAfterHtmlLists 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RendersBreaksAfterHtmlLists 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在列表项元素之后呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RendersBreaksAfterHtmlLists As Boolean
    Get
public virtual bool RendersBreaksAfterHtmlLists { get; }
public:
virtual property bool RendersBreaksAfterHtmlLists {
    bool get ();
}
abstract RendersBreaksAfterHtmlLists : bool
override RendersBreaksAfterHtmlLists : bool

属性值

类型： System Boolean
如果浏览器在列表项元素之后呈现一个换行符，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RendersBreaksAfterWmlAnchor 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RendersBreaksAfterWmlAnchor 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在独立的 WML a（定位点）元素之后呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RendersBreaksAfterWmlAnchor As Boolean
    Get
public virtual bool RendersBreaksAfterWmlAnchor { get; }
public:
virtual property bool RendersBreaksAfterWmlAnchor {
    bool get ();
}
abstract RendersBreaksAfterWmlAnchor : bool
override RendersBreaksAfterWmlAnchor : bool

属性值

类型： System Boolean
如果浏览器在独立的 WML a（定位点）元素之后呈现一个换行符，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RendersBreaksAfterWmlInput 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RendersBreaksAfterWmlInput 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在 WML input 元素之后呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RendersBreaksAfterWmlInput As Boolean
    Get
public virtual bool RendersBreaksAfterWmlInput { get; }
public:
virtual property bool RendersBreaksAfterWmlInput {
    bool get ();
}
abstract RendersBreaksAfterWmlInput : bool
override RendersBreaksAfterWmlInput : bool

属性值

类型： System Boolean
如果浏览器在 WML input 元素之后呈现一个换行符，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RendersWmlDoAcceptsInline 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RendersWmlDoAcceptsInline 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示移动设备浏览器是否将 WML do 窗体接受构造呈现为内联按钮而不是软键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RendersWmlDoAcceptsInline As Boolean
    Get
public virtual bool RendersWmlDoAcceptsInline { get; }
public:
virtual property bool RendersWmlDoAcceptsInline {
    bool get ();
}
abstract RendersWmlDoAcceptsInline : bool
override RendersWmlDoAcceptsInline : bool

属性值

类型： System Boolean
如果移动设备浏览器将 WML do 窗体接受构造呈现为内联按钮，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RendersWmlSelectsAsMenuCards 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RendersWmlSelectsAsMenuCards 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否将 WML select 元素程序为菜单卡片而不是组合框。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RendersWmlSelectsAsMenuCards As Boolean
    Get
public virtual bool RendersWmlSelectsAsMenuCards { get; }
public:
virtual property bool RendersWmlSelectsAsMenuCards {
    bool get ();
}
abstract RendersWmlSelectsAsMenuCards : bool
override RendersWmlSelectsAsMenuCards : bool

属性值

类型： System Boolean
如果浏览器将 WML select 元素呈现为菜单卡片，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiredMetaTagNameValue 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiredMetaTagNameValue 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于生成某些浏览器所需的元标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiredMetaTagNameValue As String
    Get
public virtual string RequiredMetaTagNameValue { get; }
public:
virtual property String^ RequiredMetaTagNameValue {
    String^ get ();
}
abstract RequiredMetaTagNameValue : string
override RequiredMetaTagNameValue : string

属性值

类型： System String
某些浏览器所需的元标记。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresAttributeColonSubstitution 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresAttributeColonSubstitution 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求使用不同的字符替换元素特性值中的冒号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresAttributeColonSubstitution As Boolean
    Get
public virtual bool RequiresAttributeColonSubstitution { get; }
public:
virtual property bool RequiresAttributeColonSubstitution {
    bool get ();
}
abstract RequiresAttributeColonSubstitution : bool
override RequiresAttributeColonSubstitution : bool

属性值

类型： System Boolean
如果浏览器要求使用不同的字符替换元素特性值中的冒号，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresContentTypeMetaTag 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresContentTypeMetaTag 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否需要指定了 content-type 特性的 HTML meta 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresContentTypeMetaTag As Boolean
    Get
public virtual bool RequiresContentTypeMetaTag { get; }
public:
virtual property bool RequiresContentTypeMetaTag {
    bool get ();
}
abstract RequiresContentTypeMetaTag : bool
override RequiresContentTypeMetaTag : bool

属性值

类型： System Boolean
如果浏览器需要一个指定了 content-type 特性的 HTML meta 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresControlStateInSession 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresControlStateInSession 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求在会话中维护控件状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresControlStateInSession As Boolean
    Get
public virtual bool RequiresControlStateInSession { get; }
public:
virtual property bool RequiresControlStateInSession {
    bool get ();
}
abstract RequiresControlStateInSession : bool
override RequiresControlStateInSession : bool

属性值

类型： System Boolean
如果浏览器要求在会话中维护控件状态，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresDBCSCharacter 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresDBCSCharacter 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否需要双字节字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresDBCSCharacter As Boolean
    Get
public virtual bool RequiresDBCSCharacter { get; }
public:
virtual property bool RequiresDBCSCharacter {
    bool get ();
}
abstract RequiresDBCSCharacter : bool
override RequiresDBCSCharacter : bool

属性值

类型： System Boolean
如果浏览器需要双字节字符集，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresHtmlAdaptiveErrorReporting 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresHtmlAdaptiveErrorReporting 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否需要非标准错误消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresHtmlAdaptiveErrorReporting As Boolean
    Get
public virtual bool RequiresHtmlAdaptiveErrorReporting { get; }
public:
virtual property bool RequiresHtmlAdaptiveErrorReporting {
    bool get ();
}
abstract RequiresHtmlAdaptiveErrorReporting : bool
override RequiresHtmlAdaptiveErrorReporting : bool

属性值

类型： System Boolean
如果浏览器需要非标准错误消息，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresLeadingPageBreak 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresLeadingPageBreak 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求网页正文的第一个元素为 HTML br 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresLeadingPageBreak As Boolean
    Get
public virtual bool RequiresLeadingPageBreak { get; }
public:
virtual property bool RequiresLeadingPageBreak {
    bool get ();
}
abstract RequiresLeadingPageBreak : bool
override RequiresLeadingPageBreak : bool

属性值

类型： System Boolean
如果浏览器要求网页正文的第一个元素为 HTML br 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresNoBreakInFormatting 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresNoBreakInFormatting 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否不支持使用 WML HTML br 元素设置换行符格式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresNoBreakInFormatting As Boolean
    Get
public virtual bool RequiresNoBreakInFormatting { get; }
public:
virtual property bool RequiresNoBreakInFormatting {
    bool get ();
}
abstract RequiresNoBreakInFormatting : bool
override RequiresNoBreakInFormatting : bool

属性值

类型： System Boolean
如果浏览器不支持 HTML br 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresOutputOptimization 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresOutputOptimization 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求页面包含一个经过大小优化的标记语言标记的窗体。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresOutputOptimization As Boolean
    Get
public virtual bool RequiresOutputOptimization { get; }
public:
virtual property bool RequiresOutputOptimization {
    bool get ();
}
abstract RequiresOutputOptimization : bool
override RequiresOutputOptimization : bool

属性值

类型： System Boolean
如果浏览器要求页中包含一个经过大小优化的标记语言标记的窗体，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresPhoneNumbersAsPlainText 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresPhoneNumbersAsPlainText 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持基于纯文本的电话拨号，或者是否需要特殊标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresPhoneNumbersAsPlainText As Boolean
    Get
public virtual bool RequiresPhoneNumbersAsPlainText { get; }
public:
virtual property bool RequiresPhoneNumbersAsPlainText {
    bool get ();
}
abstract RequiresPhoneNumbersAsPlainText : bool
override RequiresPhoneNumbersAsPlainText : bool

属性值

类型： System Boolean
如果浏览器支持基于纯文本的电话拨号，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresSpecialViewStateEncoding 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresSpecialViewStateEncoding 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求对视图状态值进行特殊编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresSpecialViewStateEncoding As Boolean
    Get
public virtual bool RequiresSpecialViewStateEncoding { get; }
public:
virtual property bool RequiresSpecialViewStateEncoding {
    bool get ();
}
abstract RequiresSpecialViewStateEncoding : bool
override RequiresSpecialViewStateEncoding : bool

属性值

类型： System Boolean
如果浏览器要求对视图状态值进行特殊编码，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresUniqueFilePathSuffix 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresUniqueFilePathSuffix 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否需要唯一的窗体-操作 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresUniqueFilePathSuffix As Boolean
    Get
public virtual bool RequiresUniqueFilePathSuffix { get; }
public:
virtual property bool RequiresUniqueFilePathSuffix {
    bool get ();
}
abstract RequiresUniqueFilePathSuffix : bool
override RequiresUniqueFilePathSuffix : bool

属性值

类型： System Boolean
如果浏览器需要唯一的窗体-操作 URL，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresUniqueHtmlCheckboxNames 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresUniqueHtmlCheckboxNames 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求为多个 HTML input type="checkbox" 元素使用不同的 name 特性值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresUniqueHtmlCheckboxNames As Boolean
    Get
public virtual bool RequiresUniqueHtmlCheckboxNames { get; }
public:
virtual property bool RequiresUniqueHtmlCheckboxNames {
    bool get ();
}
abstract RequiresUniqueHtmlCheckboxNames : bool
override RequiresUniqueHtmlCheckboxNames : bool

属性值

类型： System Boolean
如果浏览器要求为多个 HTML input type="checkbox" 元素使用不同的 name 特性值，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresUniqueHtmlInputNames 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresUniqueHtmlInputNames 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否求为多个 HTML input 元素使用不同的 name 特性值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresUniqueHtmlInputNames As Boolean
    Get
public virtual bool RequiresUniqueHtmlInputNames { get; }
public:
virtual property bool RequiresUniqueHtmlInputNames {
    bool get ();
}
abstract RequiresUniqueHtmlInputNames : bool
override RequiresUniqueHtmlInputNames : bool

属性值

类型： System Boolean
如果浏览器要求为多个 HTML input 元素使用不同的 name 特性值，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.RequiresUrlEncodedPostfieldValues 属性

HttpBrowserCapabilitiesBase
.
.
::
.
RequiresUrlEncodedPostfieldValues 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器发送的回发数据是否进行 URL 编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequiresUrlEncodedPostfieldValues As Boolean
    Get
public virtual bool RequiresUrlEncodedPostfieldValues { get; }
public:
virtual property bool RequiresUrlEncodedPostfieldValues {
    bool get ();
}
abstract RequiresUrlEncodedPostfieldValues : bool
override RequiresUrlEncodedPostfieldValues : bool

属性值

类型： System Boolean
如果浏览器发送的回发数据进行 URL 编码，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ScreenBitDepth 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ScreenBitDepth 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取显示的深度（以每像素位数为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ScreenBitDepth As Integer
    Get
public virtual int ScreenBitDepth { get; }
public:
virtual property int ScreenBitDepth {
    int get ();
}
abstract ScreenBitDepth : int
override ScreenBitDepth : int

属性值

类型： System Int32
显示的深度（以每像素位数为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ScreenCharactersHeight 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ScreenCharactersHeight 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取显示的近似高度（以字符行为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ScreenCharactersHeight As Integer
    Get
public virtual int ScreenCharactersHeight { get; }
public:
virtual property int ScreenCharactersHeight {
    int get ();
}
abstract ScreenCharactersHeight : int
override ScreenCharactersHeight : int

属性值

类型： System Int32
显示的近似高度（以字符行为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ScreenCharactersWidth 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ScreenCharactersWidth 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取显示的近似宽度（以字符为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ScreenCharactersWidth As Integer
    Get
public virtual int ScreenCharactersWidth { get; }
public:
virtual property int ScreenCharactersWidth {
    int get ();
}
abstract ScreenCharactersWidth : int
override ScreenCharactersWidth : int

属性值

类型： System Int32
显示的近似宽度（以字符为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ScreenPixelsHeight 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ScreenPixelsHeight 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取显示的近似高度（以像素为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ScreenPixelsHeight As Integer
    Get
public virtual int ScreenPixelsHeight { get; }
public:
virtual property int ScreenPixelsHeight {
    int get ();
}
abstract ScreenPixelsHeight : int
override ScreenPixelsHeight : int

属性值

类型： System Int32
显示的近似高度（以像素为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.ScreenPixelsWidth 属性

HttpBrowserCapabilitiesBase
.
.
::
.
ScreenPixelsWidth 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取显示的近似宽度（以像素为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ScreenPixelsWidth As Integer
    Get
public virtual int ScreenPixelsWidth { get; }
public:
virtual property int ScreenPixelsWidth {
    int get ();
}
abstract ScreenPixelsWidth : int
override ScreenPixelsWidth : int

属性值

类型： System Int32
显示的近似宽度（以像素为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsAccesskeyAttribute 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsAccesskeyAttribute 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML a（定位点）和 input 元素的 accesskey 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsAccesskeyAttribute As Boolean
    Get
public virtual bool SupportsAccesskeyAttribute { get; }
public:
virtual property bool SupportsAccesskeyAttribute {
    bool get ();
}
abstract SupportsAccesskeyAttribute : bool
override SupportsAccesskeyAttribute : bool

属性值

类型： System Boolean
如果浏览器支持 HTML a（定位点）和 input 元素的 accesskey 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsBodyColor 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsBodyColor 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML body 元素的 bgcolor 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsBodyColor As Boolean
    Get
public virtual bool SupportsBodyColor { get; }
public:
virtual property bool SupportsBodyColor {
    bool get ();
}
abstract SupportsBodyColor : bool
override SupportsBodyColor : bool

属性值

类型： System Boolean
如果浏览器支持 HTML body 元素的 bgcolor 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsBold 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsBold 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML b 元素进行粗体文本设置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsBold As Boolean
    Get
public virtual bool SupportsBold { get; }
public:
virtual property bool SupportsBold {
    bool get ();
}
abstract SupportsBold : bool
override SupportsBold : bool

属性值

类型： System Boolean
如果浏览器支持 HTML b 元素进行粗体文本设置，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsCacheControlMetaTag 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsCacheControlMetaTag 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML meta 元素的 http-equiv 特性的 cache-control 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsCacheControlMetaTag As Boolean
    Get
public virtual bool SupportsCacheControlMetaTag { get; }
public:
virtual property bool SupportsCacheControlMetaTag {
    bool get ();
}
abstract SupportsCacheControlMetaTag : bool
override SupportsCacheControlMetaTag : bool

属性值

类型： System Boolean
如果浏览器支持 HTML meta 元素的 http-equiv 特性的 cache-control 值，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsCallback 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsCallback 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持回调脚本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsCallback As Boolean
    Get
public virtual bool SupportsCallback { get; }
public:
virtual property bool SupportsCallback {
    bool get ();
}
abstract SupportsCallback : bool
override SupportsCallback : bool

属性值

类型： System Boolean
如果浏览器支持回调脚本，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsCss 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsCss 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持级联样式表 (CSS)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsCss As Boolean
    Get
public virtual bool SupportsCss { get; }
public:
virtual property bool SupportsCss {
    bool get ();
}
abstract SupportsCss : bool
override SupportsCss : bool

属性值

类型： System Boolean
如果浏览器支持 CSS，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsDivAlign 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsDivAlign 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML div 元素的 align 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsDivAlign As Boolean
    Get
public virtual bool SupportsDivAlign { get; }
public:
virtual property bool SupportsDivAlign {
    bool get ();
}
abstract SupportsDivAlign : bool
override SupportsDivAlign : bool

属性值

类型： System Boolean
如果浏览器支持 HTML div 元素的 align 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsDivNoWrap 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsDivNoWrap 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML div 元素的 nowrap 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsDivNoWrap As Boolean
    Get
public virtual bool SupportsDivNoWrap { get; }
public:
virtual property bool SupportsDivNoWrap {
    bool get ();
}
abstract SupportsDivNoWrap : bool
override SupportsDivNoWrap : bool

属性值

类型： System Boolean
如果浏览器支持 HTML div 元素的 nowrap 属性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsEmptyStringInCookieValue 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsEmptyStringInCookieValue 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在 Cookie 值中支持空字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsEmptyStringInCookieValue As Boolean
    Get
public virtual bool SupportsEmptyStringInCookieValue { get; }
public:
virtual property bool SupportsEmptyStringInCookieValue {
    bool get ();
}
abstract SupportsEmptyStringInCookieValue : bool
override SupportsEmptyStringInCookieValue : bool

属性值

类型： System Boolean
如果浏览器在 Cookie 值中支持空字符串，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsFontColor 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsFontColor 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML font 元素的 color 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsFontColor As Boolean
    Get
public virtual bool SupportsFontColor { get; }
public:
virtual property bool SupportsFontColor {
    bool get ();
}
abstract SupportsFontColor : bool
override SupportsFontColor : bool

属性值

类型： System Boolean
如果浏览器支持 HTML font 元素的 color 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsFontName 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsFontName 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML font 元素的 name 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsFontName As Boolean
    Get
public virtual bool SupportsFontName { get; }
public:
virtual property bool SupportsFontName {
    bool get ();
}
abstract SupportsFontName : bool
override SupportsFontName : bool

属性值

类型： System Boolean
如果浏览器支持 HTML font 元素的 name 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsFontSize 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsFontSize 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML font 元素的 size 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsFontSize As Boolean
    Get
public virtual bool SupportsFontSize { get; }
public:
virtual property bool SupportsFontSize {
    bool get ();
}
abstract SupportsFontSize : bool
override SupportsFontSize : bool

属性值

类型： System Boolean
如果浏览器支持 HTML font 元素的 size 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsImageSubmit 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsImageSubmit 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持使用自定义图像替换标准窗体提交按钮。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsImageSubmit As Boolean
    Get
public virtual bool SupportsImageSubmit { get; }
public:
virtual property bool SupportsImageSubmit {
    bool get ();
}
abstract SupportsImageSubmit : bool
override SupportsImageSubmit : bool

属性值

类型： System Boolean
如果浏览器支持使用自定义图像替换标准窗体提交按钮，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsIModeSymbols 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsIModeSymbols 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 i-mode 符号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsIModeSymbols As Boolean
    Get
public virtual bool SupportsIModeSymbols { get; }
public:
virtual property bool SupportsIModeSymbols {
    bool get ();
}
abstract SupportsIModeSymbols : bool
override SupportsIModeSymbols : bool

属性值

类型： System Boolean
如果浏览器支持 i-mode 符号，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsInputIStyle 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsInputIStyle 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML input 元素的 istyle 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsInputIStyle As Boolean
    Get
public virtual bool SupportsInputIStyle { get; }
public:
virtual property bool SupportsInputIStyle {
    bool get ();
}
abstract SupportsInputIStyle : bool
override SupportsInputIStyle : bool

属性值

类型： System Boolean
如果浏览器支持 HTML input 元素的 istyle 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsInputMode 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsInputMode 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML input 元素的 mode 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsInputMode As Boolean
    Get
public virtual bool SupportsInputMode { get; }
public:
virtual property bool SupportsInputMode {
    bool get ();
}
abstract SupportsInputMode : bool
override SupportsInputMode : bool

属性值

类型： System Boolean
如果浏览器支持 HTML input 元素的 mode 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsItalic 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsItalic 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML i 元素进行斜体文本设置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsItalic As Boolean
    Get
public virtual bool SupportsItalic { get; }
public:
virtual property bool SupportsItalic {
    bool get ();
}
abstract SupportsItalic : bool
override SupportsItalic : bool

属性值

类型： System Boolean
如果浏览器支持 HTML i 元素进行斜体文本设置，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsJPhoneMultiMediaAttributes 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsJPhoneMultiMediaAttributes 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 J-Phone 多媒体特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsJPhoneMultiMediaAttributes As Boolean
    Get
public virtual bool SupportsJPhoneMultiMediaAttributes { get; }
public:
virtual property bool SupportsJPhoneMultiMediaAttributes {
    bool get ();
}
abstract SupportsJPhoneMultiMediaAttributes : bool
override SupportsJPhoneMultiMediaAttributes : bool

属性值

类型： System Boolean
如果浏览器支持 J-Phone 多媒体特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsJPhoneSymbols 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsJPhoneSymbols 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 J-Phone 特定的图片符号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsJPhoneSymbols As Boolean
    Get
public virtual bool SupportsJPhoneSymbols { get; }
public:
virtual property bool SupportsJPhoneSymbols {
    bool get ();
}
abstract SupportsJPhoneSymbols : bool
override SupportsJPhoneSymbols : bool

属性值

类型： System Boolean
如果浏览器支持 J-Phone 特定的图片符号，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsQueryStringInFormAction 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsQueryStringInFormAction 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在 HTML form 元素的 action 特性值中支持查询字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsQueryStringInFormAction As Boolean
    Get
public virtual bool SupportsQueryStringInFormAction { get; }
public:
virtual property bool SupportsQueryStringInFormAction {
    bool get ();
}
abstract SupportsQueryStringInFormAction : bool
override SupportsQueryStringInFormAction : bool

属性值

类型： System Boolean
如果浏览器在 HTML form 元素的 action 特性值中支持查询字符串，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsRedirectWithCookie 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsRedirectWithCookie 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否在重定向时支持 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsRedirectWithCookie As Boolean
    Get
public virtual bool SupportsRedirectWithCookie { get; }
public:
virtual property bool SupportsRedirectWithCookie {
    bool get ();
}
abstract SupportsRedirectWithCookie : bool
override SupportsRedirectWithCookie : bool

属性值

类型： System Boolean
如果浏览器在重定向时支持 Cookie，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsSelectMultiple 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsSelectMultiple 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML select 元素的 multiple 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsSelectMultiple As Boolean
    Get
public virtual bool SupportsSelectMultiple { get; }
public:
virtual property bool SupportsSelectMultiple {
    bool get ();
}
abstract SupportsSelectMultiple : bool
override SupportsSelectMultiple : bool

属性值

类型： System Boolean
如果浏览器支持 HTML select 元素的 multiple 特性，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsUncheck 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsUncheck 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示回发数据中是否反映对已选中的 HTML input type="checkbox" 元素的清除。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsUncheck As Boolean
    Get
public virtual bool SupportsUncheck { get; }
public:
virtual property bool SupportsUncheck {
    bool get ();
}
abstract SupportsUncheck : bool
override SupportsUncheck : bool

属性值

类型： System Boolean
如果在回发数据中反映对已选中的 HTML input type="checkbox" 元素的清除，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.SupportsXmlHttp 属性

HttpBrowserCapabilitiesBase
.
.
::
.
SupportsXmlHttp 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持通过 HTTP 接收 XML。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SupportsXmlHttp As Boolean
    Get
public virtual bool SupportsXmlHttp { get; }
public:
virtual property bool SupportsXmlHttp {
    bool get ();
}
abstract SupportsXmlHttp : bool
override SupportsXmlHttp : bool

属性值

类型： System Boolean
如果浏览器支持通过 HTTP 接收 XML，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Tables 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Tables 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 HTML table 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Tables As Boolean
    Get
public virtual bool Tables { get; }
public:
virtual property bool Tables {
    bool get ();
}
abstract Tables : bool
override Tables : bool

属性值

类型： System Boolean
如果浏览器支持 HTML table 元素，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.TagWriter 属性

HttpBrowserCapabilitiesBase
.
.
::
.
TagWriter 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于获取用于为浏览器编写标记的对象的类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property TagWriter As Type
    Get
public virtual Type TagWriter { get; }
public:
virtual property Type^ TagWriter {
    Type^ get ();
}
abstract TagWriter : Type
override TagWriter : Type

属性值

类型： System Type
用于为浏览器编写标记的对象的类型。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Type 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Type 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器的名称和主（整数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Type As String
    Get
public virtual string Type { get; }
public:
virtual property String^ Type {
    String^ get ();
}
abstract Type : string
override Type : string

属性值

类型： System String
浏览器的名称和主版本号。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.UseOptimizedCacheKey 属性

HttpBrowserCapabilitiesBase
.
.
::
.
UseOptimizedCacheKey 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，在内部用于获取一个值，该值指示是否使用经过优化的缓存密钥。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property UseOptimizedCacheKey As Boolean
    Get
public virtual bool UseOptimizedCacheKey { get; }
public:
virtual property bool UseOptimizedCacheKey {
    bool get ();
}
abstract UseOptimizedCacheKey : bool
override UseOptimizedCacheKey : bool

属性值

类型： System Boolean
如果使用经过优化的缓存密钥，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.VBScript 属性

HttpBrowserCapabilitiesBase
.
.
::
.
VBScript 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示浏览器是否支持 Visual Basic Scripting edition (VBScript)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property VBScript As Boolean Get
public virtual bool VBScript { get; }
public:
virtual property bool VBScript {
    bool get ();
}
abstract VBScript : bool override VBScript : bool
属性值
类型： System Boolean
如果浏览器支持 VBScript，则为
true
；否则为
false
。
说明
此属性不指示浏览器中当前是否启用了 VBScript，仅指示浏览器是否可以支持 VBScript。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Version 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Version 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，以字符串形式获取浏览器的完整版本号（整数和小数）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Version As String
    Get
public virtual string Version { get; }
public:
virtual property String^ Version {
    String^ get ();
}
abstract Version : string
override Version : string

属性值

类型： System String
浏览器的完整版本号（字符串形式）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.W3CDomVersion 属性

HttpBrowserCapabilitiesBase
.
.
::
.
W3CDomVersion 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取浏览器所支持的万维网联合会 (W3C) XML 文档对象模型 (DOM) 的版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property W3CDomVersion As Version
    Get
public virtual Version W3CDomVersion { get; }
public:
virtual property Version^ W3CDomVersion {
    Version^ get ();
}
abstract W3CDomVersion : Version
override W3CDomVersion : Version

属性值

类型： System Version
浏览器支持的 W3C XML DOM 的版本号。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Win16 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Win16 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示客户端是否为基于 Win16 的计算机。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Win16 As Boolean
    Get
public virtual bool Win16 { get; }
public:
virtual property bool Win16 {
    bool get ();
}
abstract Win16 : bool
override Win16 : bool

属性值

类型： System Boolean
如果浏览器运行于基于 Win16 的计算机上，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesBase ..::.Win32 属性

HttpBrowserCapabilitiesBase
.
.
::
.
Win32 属性
HttpBrowserCapabilitiesBase 类

在派生类中重写时，获取一个值，该值指示客户端是否为基于 Win32 的计算机。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Win32 As Boolean
    Get
public virtual bool Win32 { get; }
public:
virtual property bool Win32 {
    bool get ();
}
abstract Win32 : bool
override Win32 : bool

属性值

类型： System Boolean
如果客户端为基于 Win32 的计算机，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesBase 类
HttpBrowserCapabilitiesBase 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper 类

HttpBrowserCapabilitiesWrapper 类
成员

封装 HTTP 内部对象，该对象使服务器可以收集发出当前请求的浏览器的功能相关信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpBrowserCapabilitiesWrapper _
    Inherits HttpBrowserCapabilitiesBase
public class HttpBrowserCapabilitiesWrapper : HttpBrowserCapabilitiesBase
public ref class HttpBrowserCapabilitiesWrapper : public HttpBrowserCapabilitiesBase
type HttpBrowserCapabilitiesWrapper =
    class
        inherit HttpBrowserCapabilitiesBase
    end

HttpBrowserCapabilitiesWrapper 类从 HttpBrowserCapabilitiesBase 类派生，并用作 HttpBrowserCapabilities 类的包装。此类公开 HttpBrowserCapabilities 类的功能并公开 HttpBrowserCapabilitiesBase 类型。使用 HttpBrowserCapabilitiesBase 类可以将应用程序中 HttpBrowserCapabilities 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpBrowserCapabilitiesWrapper 类从 HttpBrowserCapabilitiesBase 类派生，并用作 HttpBrowserCapabilities 类的包装。此类公开 HttpBrowserCapabilities 类的功能并公开 HttpBrowserCapabilitiesBase 类型。使用 HttpBrowserCapabilitiesBase 类可以将应用程序中 HttpBrowserCapabilities 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpBrowserCapabilitiesWrapper 类从 HttpBrowserCapabilitiesBase 类派生，并用作 HttpBrowserCapabilities 类的包装。此类公开 HttpBrowserCapabilities 类的功能并公开 HttpBrowserCapabilitiesBase 类型。使用 HttpBrowserCapabilitiesBase 类可以将应用程序中 HttpBrowserCapabilities 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpBrowserCapabilitiesWrapperHttpBrowserCapabilitiesWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper 成员

HttpBrowserCapabilitiesWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilitiesWrapper 类

封装 HTTP 内部对象，该对象使服务器可以收集发出当前请求的浏览器的功能相关信息。

HttpBrowserCapabilitiesWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpBrowserCapabilitiesWrapper 类
System.Web 命名空间


HttpBrowserCapabilitiesWrapper 构造函数

HttpBrowserCapabilitiesWrapper 构造函数
HttpBrowserCapabilitiesWrapper 类

初始化 HttpBrowserCapabilitiesWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpBrowserCapabilities As HttpBrowserCapabilities _
)
public HttpBrowserCapabilitiesWrapper(
    HttpBrowserCapabilities httpBrowserCapabilities
)
public:
HttpBrowserCapabilitiesWrapper(
    HttpBrowserCapabilities^ httpBrowserCapabilities
)
new :
        httpBrowserCapabilities:HttpBrowserCapabilities -> HttpBrowserCapabilitiesWrapper

参数

httpBrowserCapabilities
类型： System.Web HttpBrowserCapabilities
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpBrowserCapabilities 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper 方法

HttpBrowserCapabilitiesWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilitiesWrapper 类

HttpBrowserCapabilitiesWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpBrowserCapabilitiesWrapper 类
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.AddBrowser 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
AddBrowser 方法
HttpBrowserCapabilitiesWrapper 类

在内部用于向浏览器的内部集合添加项，这些浏览器的功能已识别。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddBrowser ( _
    browserName As String _
)
public override void AddBrowser(
    string browserName
)
public:
virtual void AddBrowser(
    String^ browserName
) override
abstract AddBrowser :
        browserName:string -> unit
override AddBrowser :
        browserName:string -> unit

参数

browserName
类型： System String
要添加的浏览器的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CompareFilters 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
CompareFilters 方法
HttpBrowserCapabilitiesWrapper 类

在内部用于比较筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function CompareFilters ( _
    filter1 As String, _
    filter2 As String _
) As Integer
public override int CompareFilters(
    string filter1,
    string filter2
)
public:
virtual int CompareFilters(
    String^ filter1,
    String^ filter2
) override
abstract CompareFilters :
        filter1:string *
        filter2:string -> int
override CompareFilters :
        filter1:string *
        filter2:string -> int

参数

filter1
类型： System String
要比较的第一个筛选器。
filter2
类型： System String
要比较的第二个筛选器。

返回值

类型： System Int32
如果 filter1 为 filter2 的父级，则为 1；如果 filter2 为 filter1 的父级，则为 -1；如果 filter1 与 filter2 之间不存在父/子关系，则为 0。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CreateHtmlTextWriter 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
CreateHtmlTextWriter 方法
HttpBrowserCapabilitiesWrapper 类

创建 HtmlTextWriter 对象的新实例，用于将标记呈现到浏览器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function CreateHtmlTextWriter ( _
    w As TextWriter _
) As HtmlTextWriter
public override HtmlTextWriter CreateHtmlTextWriter(
    TextWriter w
)
public:
virtual HtmlTextWriter^ CreateHtmlTextWriter(
    TextWriter^ w
) override
abstract CreateHtmlTextWriter :
        w:TextWriter -> HtmlTextWriter
override CreateHtmlTextWriter :
        w:TextWriter -> HtmlTextWriter

参数

w
类型： System.IO TextWriter
要创建的对象。

返回值

类型： System.Web.UI HtmlTextWriter
对象的新实例。
异常 | 条件
Exception | 在创建 HtmlTextWriter 对象时发生错误。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.DisableOptimizedCacheKey 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
DisableOptimizedCacheKey 方法
HttpBrowserCapabilitiesWrapper 类

在内部用于禁用经过优化的缓存密钥。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub DisableOptimizedCacheKey
public override void DisableOptimizedCacheKey()
public:
virtual void DisableOptimizedCacheKey() override
abstract DisableOptimizedCacheKey : unit -> unit
override DisableOptimizedCacheKey : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.EvaluateFilter 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
EvaluateFilter 方法
HttpBrowserCapabilitiesWrapper 类

在内部用于计算筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function EvaluateFilter ( _
    filterName As String _
) As Boolean
public override bool EvaluateFilter(
    string filterName
)
public:
virtual bool EvaluateFilter(
    String^ filterName
) override
abstract EvaluateFilter :
        filterName:string -> bool
override EvaluateFilter :
        filterName:string -> bool

参数

filterName
类型： System String
要计算的筛选器。

返回值

类型： System Boolean
如果成功计算筛选器，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.GetClrVersions 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
GetClrVersions 方法
HttpBrowserCapabilitiesWrapper 类

获取安装在客户端上的 .NET Framework 公共语言运行时 (CLR) 的所有版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetClrVersions As Version()
public override Version[] GetClrVersions()
public:
virtual array<Version^>^ GetClrVersions() override
abstract GetClrVersions : unit -> Version[]
override GetClrVersions : unit -> Version[]

返回值

类型：
array<
System Version
>
[]
()
[]

Version 对象的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.IsBrowser 方法

HttpBrowserCapabilitiesWrapper
.
.
::
.
IsBrowser 方法
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示客户端浏览器是否与指定浏览器相同。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function IsBrowser ( _
    browserName As String _
) As Boolean
public override bool IsBrowser(
    string browserName
)
public:
virtual bool IsBrowser(
    String^ browserName
) override
abstract IsBrowser :
        browserName:string -> bool
override IsBrowser :
        browserName:string -> bool

参数

browserName
类型： System String
指定的浏览器。

返回值

类型： System Boolean
如果客户端浏览器与指定的浏览器相同，则为 true；否则为 false。默认值为 false。 如果客户端浏览器与指定的浏览器相同，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper 属性

HttpBrowserCapabilitiesWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpBrowserCapabilitiesWrapper 类

HttpBrowserCapabilitiesWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpBrowserCapabilitiesWrapper 类
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ActiveXControls 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ActiveXControls 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否可以支持 ActiveX 控件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ActiveXControls As Boolean
    Get
public override bool ActiveXControls { get; }
public:
virtual property bool ActiveXControls {
    bool get () override;
}
abstract ActiveXControls : bool
override ActiveXControls : bool

属性值

类型： System Boolean
如果浏览器可以支持 ActiveX 控件，则为 true；否则为 false。默认值为 false。 如果浏览器可以支持 ActiveX 控件，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Adapters 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Adapters 属性
HttpBrowserCapabilitiesWrapper 类

获取可用控件适配器的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Adapters As IDictionary
    Get
public override IDictionary Adapters { get; }
public:
virtual property IDictionary^ Adapters {
    IDictionary^ get () override;
}
abstract Adapters : IDictionary
override Adapters : IDictionary

属性值

类型： System.Collections IDictionary
浏览器的已注册控件适配器的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.AOL 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
AOL 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示客户端是否为 America Online (AOL) 浏览器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AOL As Boolean
    Get
public override bool AOL { get; }
public:
virtual property bool AOL {
    bool get () override;
}
abstract AOL : bool
override AOL : bool

属性值

类型： System Boolean
如果浏览器是 AOL 浏览器，则为 true；否则为 false。默认值为 false。 如果浏览器是 AOL 浏览器，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.BackgroundSounds 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
BackgroundSounds 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持使用 bgsounds HTML 元素播放背景声音。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property BackgroundSounds As Boolean
    Get
public override bool BackgroundSounds { get; }
public:
virtual property bool BackgroundSounds {
    bool get () override;
}
abstract BackgroundSounds : bool
override BackgroundSounds : bool

属性值

类型： System Boolean
如果浏览器支持播放背景声音，则为 true；否则为 false。默认值为 false。 如果浏览器支持播放背景声音，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Beta 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Beta 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否为 beta 版。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Beta As Boolean
    Get
public override bool Beta { get; }
public:
virtual property bool Beta {
    bool get () override;
}
abstract Beta : bool
override Beta : bool

属性值

类型： System Boolean
如果浏览器为 beta 版，则为 true；否则为 false。默认值为 false。 如果浏览器为 beta 版，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Browser 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Browser 属性
HttpBrowserCapabilitiesWrapper 类

获取由浏览器在 User-Agent 请求标头中发送的浏览器字符串（如果有）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Browser As String
    Get
public override string Browser { get; }
public:
virtual property String^ Browser {
    String^ get () override;
}
abstract Browser : string
override Browser : string

属性值

类型： System String
浏览器发送的 User-Agent 请求标头的内容。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Browsers 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Browsers 属性
HttpBrowserCapabilitiesWrapper 类

获取为其识别功能的浏览器的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Browsers As ArrayList
    Get
public override ArrayList Browsers { get; }
public:
virtual property ArrayList^ Browsers {
    ArrayList^ get () override;
}
abstract Browsers : ArrayList
override Browsers : ArrayList

属性值

类型： System.Collections ArrayList
为其识别功能的浏览器。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanCombineFormsInDeck 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanCombineFormsInDeck 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持包含多个窗体（如单独的卡片）的卡片组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanCombineFormsInDeck As Boolean
    Get
public override bool CanCombineFormsInDeck { get; }
public:
virtual property bool CanCombineFormsInDeck {
    bool get () override;
}
abstract CanCombineFormsInDeck : bool
override CanCombineFormsInDeck : bool

属性值

类型： System Boolean
如果浏览器支持包含多个窗体的卡片组，则为 true；否则为 false。默认值为 true。 如果浏览器支持包含多个窗体的卡片组，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanInitiateVoiceCall 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanInitiateVoiceCall 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器设备是否可以启动语音呼叫。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanInitiateVoiceCall As Boolean
    Get
public override bool CanInitiateVoiceCall { get; }
public:
virtual property bool CanInitiateVoiceCall {
    bool get () override;
}
abstract CanInitiateVoiceCall : bool
override CanInitiateVoiceCall : bool

属性值

类型： System Boolean
如果浏览器设备能够启动语音呼叫，则为 true；否则为 false。默认值为 false。 如果浏览器设备能够启动语音呼叫，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderAfterInputOrSelectElement 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderAfterInputOrSelectElement 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 WML select 或 input 元素后跟页面内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderAfterInputOrSelectElement As Boolean
    Get
public override bool CanRenderAfterInputOrSelectElement { get; }
public:
virtual property bool CanRenderAfterInputOrSelectElement {
    bool get () override;
}
abstract CanRenderAfterInputOrSelectElement : bool
override CanRenderAfterInputOrSelectElement : bool

属性值

类型： System Boolean
如果浏览器支持 WML select 或 input 元素后跟页面内容，则为 true；否则为 false。默认值为 true。 如果浏览器支持 WML select 或 input 元素后跟页面内容，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderEmptySelects 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderEmptySelects 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持空 HTML select 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderEmptySelects As Boolean
    Get
public override bool CanRenderEmptySelects { get; }
public:
virtual property bool CanRenderEmptySelects {
    bool get () override;
}
abstract CanRenderEmptySelects : bool
override CanRenderEmptySelects : bool

属性值

类型： System Boolean
如果浏览器支持空 HTML select 元素，则为 true；否则为 false。默认值为 true。 如果浏览器支持空 HTML select 元素，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderInputAndSelectElementsTogether 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderInputAndSelectElementsTogether 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 WML input 和 select 元素同时存在于同一卡片中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderInputAndSelectElementsTogether As Boolean
    Get
public override bool CanRenderInputAndSelectElementsTogether { get; }
public:
virtual property bool CanRenderInputAndSelectElementsTogether {
    bool get () override;
}
abstract CanRenderInputAndSelectElementsTogether : bool
override CanRenderInputAndSelectElementsTogether : bool

属性值

类型： System Boolean
如果浏览器同时支持 WML input 和 select 元素，则为 true；否则为 false。默认值为 false。 如果浏览器同时支持 WML input 和 select 元素，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderMixedSelects 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderMixedSelects 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持指定 onpick 和 value 两个特性的 WML option 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderMixedSelects As Boolean
    Get
public override bool CanRenderMixedSelects { get; }
public:
virtual property bool CanRenderMixedSelects {
    bool get () override;
}
abstract CanRenderMixedSelects : bool
override CanRenderMixedSelects : bool

属性值

类型： System Boolean
如果浏览器支持指定 onpick 和 value 两个特性的 WML true 元素，则为 option；否则为 false。默认值为 true。 如果浏览器支持指定 onpick 和 value 两个特性的 WML true 元素，则为 option；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderOneventAndPrevElementsTogether 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderOneventAndPrevElementsTogether 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 WML onevent 和 prev 元素存在于同一卡片中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderOneventAndPrevElementsTogether As Boolean
    Get
public override bool CanRenderOneventAndPrevElementsTogether { get; }
public:
virtual property bool CanRenderOneventAndPrevElementsTogether {
    bool get () override;
}
abstract CanRenderOneventAndPrevElementsTogether : bool
override CanRenderOneventAndPrevElementsTogether : bool

属性值

类型： System Boolean
如果浏览器支持 WML onevent 和 prev 元素存在于同一卡片中，则为 true；否则为 false。默认值为 true。 如果浏览器支持 WML onevent 和 prev 元素存在于同一卡片中，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderPostBackCards 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderPostBackCards 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 WML 卡片用于回发。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderPostBackCards As Boolean
    Get
public override bool CanRenderPostBackCards { get; }
public:
virtual property bool CanRenderPostBackCards {
    bool get () override;
}
abstract CanRenderPostBackCards : bool
override CanRenderPostBackCards : bool

属性值

类型： System Boolean
如果浏览器支持 WML 卡片用于回发，则为 true；否则为 false。默认值为 true。 如果浏览器支持 WML 卡片用于回发，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanRenderSetvarZeroWithMultiSelectionList 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanRenderSetvarZeroWithMultiSelectionList 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 value 特性为 0 的 WML setvar 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanRenderSetvarZeroWithMultiSelectionList As Boolean
    Get
public override bool CanRenderSetvarZeroWithMultiSelectionList { get; }
public:
virtual property bool CanRenderSetvarZeroWithMultiSelectionList {
    bool get () override;
}
abstract CanRenderSetvarZeroWithMultiSelectionList : bool
override CanRenderSetvarZeroWithMultiSelectionList : bool

属性值

类型： System Boolean
如果浏览器支持 value 特性为 0 的 WML setvar 元素，则为 true；否则为 false。默认值为 true。 如果浏览器支持 value 特性为 0 的 WML setvar 元素，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CanSendMail 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CanSendMail 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持使用 HTML mailto 方案发送电子邮件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CanSendMail As Boolean
    Get
public override bool CanSendMail { get; }
public:
virtual property bool CanSendMail {
    bool get () override;
}
abstract CanSendMail : bool
override CanSendMail : bool

属性值

类型： System Boolean
如果浏览器支持使用 HTML mailto 方案发送电子邮件，则为 true；否则为 false。默认值为 true。 如果浏览器支持使用 HTML mailto 方案发送电子邮件，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Capabilities 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Capabilities 属性
HttpBrowserCapabilitiesWrapper 类

在内部用于获得浏览器的已定义功能。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Capabilities As IDictionary
    Get
    Set
public override IDictionary Capabilities { get; set; }
public:
virtual property IDictionary^ Capabilities {
    IDictionary^ get () override;
    void set (IDictionary^ value) override;
}
abstract Capabilities : IDictionary with get, set
override Capabilities : IDictionary with get, set

属性值

类型： System.Collections IDictionary
浏览器的已定义功能。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.CDF 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
CDF 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持频道定义格式 (CDF) 用于网络广播。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CDF As Boolean
    Get
public override bool CDF { get; }
public:
virtual property bool CDF {
    bool get () override;
}
abstract CDF : bool
override CDF : bool

属性值

类型： System Boolean
如果浏览器支持 CDF，则为 true；否则为 false。默认值为 false。 如果浏览器支持 CDF，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ClrVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ClrVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取安装在客户端上的 .NET Framework 的版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ClrVersion As Version
    Get
public override Version ClrVersion { get; }
public:
virtual property Version^ ClrVersion {
    Version^ get () override;
}
abstract ClrVersion : Version
override ClrVersion : Version

属性值

类型： System Version
公共语言运行时 (CLRS) 版本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Cookies 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Cookies 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否可以支持 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Cookies As Boolean Get
public override bool Cookies { get; }
public:
virtual property bool Cookies {
    bool get () override;
}
abstract Cookies : bool override Cookies : bool
属性值
类型： System Boolean
如果浏览器可以支持 Cookie，则为
true
；否则为
false
。
默认值为
false
。
如果浏览器可以支持 Cookie，则为
true
；否则为
false
。
默认值为
false
。
说明
此属性不指示浏览器中当前是否启用了 Cookie，仅指示浏览器是否可以支持 Cookie。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Crawler 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Crawler 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否为搜索引擎网络爬网程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Crawler As Boolean
    Get
public override bool Crawler { get; }
public:
virtual property bool Crawler {
    bool get () override;
}
abstract Crawler : bool
override Crawler : bool

属性值

类型： System Boolean
如果浏览器为搜索引擎网络爬网程序，则为 true；否则为 false。默认值为 false。 如果浏览器为搜索引擎网络爬网程序，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.DefaultSubmitButtonLimit 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
DefaultSubmitButtonLimit 属性
HttpBrowserCapabilitiesWrapper 类

获取窗体上允许使用的提交按钮的最大数目。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property DefaultSubmitButtonLimit As Integer
    Get
public override int DefaultSubmitButtonLimit { get; }
public:
virtual property int DefaultSubmitButtonLimit {
    int get () override;
}
abstract DefaultSubmitButtonLimit : int
override DefaultSubmitButtonLimit : int

属性值

类型： System Int32
窗体上允许使用的提交按钮的最大数目。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.EcmaScriptVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
EcmaScriptVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器所支持的 ECMAScript (JavaScript) 的版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property EcmaScriptVersion As Version
    Get
public override Version EcmaScriptVersion { get; }
public:
virtual property Version^ EcmaScriptVersion {
    Version^ get () override;
}
abstract EcmaScriptVersion : Version
override EcmaScriptVersion : Version

属性值

类型： System Version
浏览器所支持的 ECMAScript (JavaScript) 的版本号。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Frames 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Frames 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML 框架。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Frames As Boolean
    Get
public override bool Frames { get; }
public:
virtual property bool Frames {
    bool get () override;
}
abstract Frames : bool
override Frames : bool

属性值

类型： System Boolean
如果浏览器支持框架，则为 true；否则为 false。默认值为 false。 如果浏览器支持框架，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.GatewayMajorVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
GatewayMajorVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取用于访问服务器的无线网关的主版本号（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property GatewayMajorVersion As Integer
    Get
public override int GatewayMajorVersion { get; }
public:
virtual property int GatewayMajorVersion {
    int get () override;
}
abstract GatewayMajorVersion : int
override GatewayMajorVersion : int

属性值

类型： System Int32
用于访问服务器的无线网关的主版本号（如果已知）。默认值为 0。 用于访问服务器的无线网关的主版本号（如果已知）。默认值为 0。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.GatewayMinorVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
GatewayMinorVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取用于访问服务器的无线网关的次版本号（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property GatewayMinorVersion As Double
    Get
public override double GatewayMinorVersion { get; }
public:
virtual property double GatewayMinorVersion {
    double get () override;
}
abstract GatewayMinorVersion : float
override GatewayMinorVersion : float

属性值

类型： System Double
用于访问服务器的无线网关的次版本号（如果已知）。默认值为 0。 用于访问服务器的无线网关的次版本号（如果已知）。默认值为 0。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.GatewayVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
GatewayVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取用于访问服务器的无线网关的版本（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property GatewayVersion As String
    Get
public override string GatewayVersion { get; }
public:
virtual property String^ GatewayVersion {
    String^ get () override;
}
abstract GatewayVersion : string
override GatewayVersion : string

属性值

类型： System String
用于访问服务器的无线网关的版本号（如果已知）。默认值为“None”。 用于访问服务器的无线网关的版本号（如果已知）。默认值为“None”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.HasBackButton 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
HasBackButton 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否具有专用“后退”按钮。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property HasBackButton As Boolean
    Get
public override bool HasBackButton { get; }
public:
virtual property bool HasBackButton {
    bool get () override;
}
abstract HasBackButton : bool
override HasBackButton : bool

属性值

类型： System Boolean
如果浏览器具有专用“后退”按钮，则为 true；否则为 false。默认值为 true。 如果浏览器具有专用“后退”按钮，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.HidesRightAlignedMultiselectScrollbars 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
HidesRightAlignedMultiselectScrollbars 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示 align 特性值为 right 的 HTML select multiple 元素的滚动条在呈现时是否被遮盖。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property HidesRightAlignedMultiselectScrollbars As Boolean
    Get
public override bool HidesRightAlignedMultiselectScrollbars { get; }
public:
virtual property bool HidesRightAlignedMultiselectScrollbars {
    bool get () override;
}
abstract HidesRightAlignedMultiselectScrollbars : bool
override HidesRightAlignedMultiselectScrollbars : bool

属性值

类型： System Boolean
如果 align 特性值为 right 的 HTML select multiple 元素的滚动条在呈现时被遮盖，则为 true；否则为 false。默认值为 false。 如果 align 特性值为 right 的 HTML select multiple 元素的滚动条在呈现时被遮盖，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.HtmlTextWriter 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
HtmlTextWriter 属性
HttpBrowserCapabilitiesWrapper 类

获取或设置用于编写标记字符和文本的 HtmlTextWriter 的完全限定类名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property HtmlTextWriter As String
    Get
    Set
public override string HtmlTextWriter { get; set; }
public:
virtual property String^ HtmlTextWriter {
    String^ get () override;
    void set (String^ value) override;
}
abstract HtmlTextWriter : string with get, set
override HtmlTextWriter : string with get, set

属性值

类型： System String
用于编写标记字符和文本的 HtmlTextWriter 的完全限定类名。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Id 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Id 属性
HttpBrowserCapabilitiesWrapper 类

获取在浏览器定义文件中指定的浏览器内部标识符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Id As String
    Get
public override string Id { get; }
public:
virtual property String^ Id {
    String^ get () override;
}
abstract Id : string
override Id : string

属性值

类型： System String
在浏览器定义文件中指定的浏览器内部标识符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.InputType 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
InputType 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器所支持的输入类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property InputType As String
    Get
public override string InputType { get; }
public:
virtual property String^ InputType {
    String^ get () override;
}
abstract InputType : string
override InputType : string

属性值

类型： System String
浏览器所支持的输入类型。默认值为“telephoneKeypad”。 浏览器所支持的输入类型。默认值为“telephoneKeypad”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.IsColor 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
IsColor 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否具有颜色显示。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsColor As Boolean
    Get
public override bool IsColor { get; }
public:
virtual property bool IsColor {
    bool get () override;
}
abstract IsColor : bool
override IsColor : bool

属性值

类型： System Boolean
如果浏览器具有颜色显示，则为 true；否则为 false。默认值为 false。 如果浏览器具有颜色显示，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.IsMobileDevice 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
IsMobileDevice 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否为已识别移动设备。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsMobileDevice As Boolean
    Get
public override bool IsMobileDevice { get; }
public:
virtual property bool IsMobileDevice {
    bool get () override;
}
abstract IsMobileDevice : bool
override IsMobileDevice : bool

属性值

类型： System Boolean
如果浏览器为已识别移动设备，则为 true；否则为 false。默认值为 true。 如果浏览器为已识别移动设备，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Item 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Item 属性
HttpBrowserCapabilitiesWrapper 类

获取指定的浏览器功能的值。在 C# 中，此属性是类的索引器。 获取指定的浏览器功能的值。在 C# 中，此属性是类的索引器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Item ( _
    key As String _
) As String
    Get
public override string this[
    string key
] { get; }
public:
virtual property String^ Item[String^ key] {
    String^ get (String^ key) override;
}
abstract Item : string
override Item : string

参数

key
类型： System String
要检索的浏览器功能的名称。

属性值

类型： System String
具有指定的 key 名称的浏览器功能。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.JavaApplets 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
JavaApplets 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 Java。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property JavaApplets As Boolean Get
public override bool JavaApplets { get; }
public:
virtual property bool JavaApplets {
    bool get () override;
}
abstract JavaApplets : bool override JavaApplets : bool
属性值
类型： System Boolean
如果浏览器支持 Java，则为
true
；否则为
false
。
默认值为
false
。
如果浏览器支持 Java，则为
true
；否则为
false
。
默认值为
false
。
说明
此属性不指示浏览器中当前是否启用了 Java，仅指示浏览器是否可以支持 Java。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.JScriptVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
JScriptVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器所支持的 JScript 版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property JScriptVersion As Version
    Get
public override Version JScriptVersion { get; }
public:
virtual property Version^ JScriptVersion {
    Version^ get () override;
}
abstract JScriptVersion : Version
override JScriptVersion : Version

属性值

类型： System Version
浏览器所支持的 JScript 版本。

有关浏览器所支持的 ECMAScript 的版本号，请参见 EcmaScriptVersion。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MajorVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MajorVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器的主（整数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MajorVersion As Integer
    Get
public override int MajorVersion { get; }
public:
virtual property int MajorVersion {
    int get () override;
}
abstract MajorVersion : int
override MajorVersion : int

属性值

类型： System Int32
浏览器的主版本号。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MaximumHrefLength 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MaximumHrefLength 属性
HttpBrowserCapabilitiesWrapper 类

获取 HTML a（定位点）元素的 href 特性的最大长度（以字符为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MaximumHrefLength As Integer
    Get
public override int MaximumHrefLength { get; }
public:
virtual property int MaximumHrefLength {
    int get () override;
}
abstract MaximumHrefLength : int
override MaximumHrefLength : int

属性值

类型： System Int32
HTML a（定位点）元素的 href 特性的最大长度（以字符为单位）。默认值为 Item 属性中具有键名称“maximumHrefLength”的值。 HTML a（定位点）元素的 href 特性的最大长度（以字符为单位）。默认值为 Item 属性中具有键名称“maximumHrefLength”的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MaximumRenderedPageSize 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MaximumRenderedPageSize 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器可显示的页面的最大长度（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MaximumRenderedPageSize As Integer
    Get
public override int MaximumRenderedPageSize { get; }
public:
virtual property int MaximumRenderedPageSize {
    int get () override;
}
abstract MaximumRenderedPageSize : int
override MaximumRenderedPageSize : int

属性值

类型： System Int32
浏览器可显示的页面的最大长度（以字节为单位）。默认值为 2000。 浏览器可显示的页面的最大长度（以字节为单位）。默认值为 2000。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MaximumSoftkeyLabelLength 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MaximumSoftkeyLabelLength 属性
HttpBrowserCapabilitiesWrapper 类

获取软键标签可显示的文本的最大长度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MaximumSoftkeyLabelLength As Integer
    Get
public override int MaximumSoftkeyLabelLength { get; }
public:
virtual property int MaximumSoftkeyLabelLength {
    int get () override;
}
abstract MaximumSoftkeyLabelLength : int
override MaximumSoftkeyLabelLength : int

属性值

类型： System Int32
软键标签可显示的文本的最大长度。默认值为 5。 软键标签可显示的文本的最大长度。默认值为 5。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MinorVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MinorVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器的次版本号（小数部分）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MinorVersion As Double
    Get
public override double MinorVersion { get; }
public:
virtual property double MinorVersion {
    double get () override;
}
abstract MinorVersion : float
override MinorVersion : float

属性值

类型： System Double
浏览器的次版本号。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MinorVersionString 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MinorVersionString 属性
HttpBrowserCapabilitiesWrapper 类

以字符串形式获取浏览器的次（小数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MinorVersionString As String
    Get
public override string MinorVersionString { get; }
public:
virtual property String^ MinorVersionString {
    String^ get () override;
}
abstract MinorVersionString : string
override MinorVersionString : string

属性值

类型： System String
一个字符串，表示浏览器的次版本号。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MobileDeviceManufacturer 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MobileDeviceManufacturer 属性
HttpBrowserCapabilitiesWrapper 类

获取移动设备制造商的名称（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MobileDeviceManufacturer As String
    Get
public override string MobileDeviceManufacturer { get; }
public:
virtual property String^ MobileDeviceManufacturer {
    String^ get () override;
}
abstract MobileDeviceManufacturer : string
override MobileDeviceManufacturer : string

属性值

类型： System String
移动设备制造商的名称（如果已知）。默认值为“Unknown”。 移动设备制造商的名称（如果已知）。默认值为“Unknown”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MobileDeviceModel 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MobileDeviceModel 属性
HttpBrowserCapabilitiesWrapper 类

获取移动设备的型号名（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MobileDeviceModel As String
    Get
public override string MobileDeviceModel { get; }
public:
virtual property String^ MobileDeviceModel {
    String^ get () override;
}
abstract MobileDeviceModel : string
override MobileDeviceModel : string

属性值

类型： System String
移动设备的型号名（如果已知）。默认值为“Unknown”。 移动设备的型号名（如果已知）。默认值为“Unknown”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.MSDomVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
MSDomVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器所支持的 Microsoft HTML (MSHTML) 文档对象模型 (DOM) 的版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MSDomVersion As Version
    Get
public override Version MSDomVersion { get; }
public:
virtual property Version^ MSDomVersion {
    Version^ get () override;
}
abstract MSDomVersion : Version
override MSDomVersion : Version

属性值

类型： System Version
浏览器所支持的 MSHTML DOM 版本。默认值为 0.0。 浏览器所支持的 MSHTML DOM 版本。默认值为 0.0。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.NumberOfSoftkeys 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
NumberOfSoftkeys 属性
HttpBrowserCapabilitiesWrapper 类

获取移动设备上的软键数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property NumberOfSoftkeys As Integer
    Get
public override int NumberOfSoftkeys { get; }
public:
virtual property int NumberOfSoftkeys {
    int get () override;
}
abstract NumberOfSoftkeys : int
override NumberOfSoftkeys : int

属性值

类型： System Int32
移动设备上所支持的软键数。默认值为 0。 移动设备上所支持的软键数。默认值为 0。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Platform 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Platform 属性
HttpBrowserCapabilitiesWrapper 类

获取客户端使用的操作系统的名称（如果已知）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Platform As String
    Get
public override string Platform { get; }
public:
virtual property String^ Platform {
    String^ get () override;
}
abstract Platform : string
override Platform : string

属性值

类型： System String
如果已知，则为客户端使用的操作系统，否则该值设置为“Unknown”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.PreferredImageMime 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
PreferredImageMime 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器通常首选的图像内容类型的 MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PreferredImageMime As String
    Get
public override string PreferredImageMime { get; }
public:
virtual property String^ PreferredImageMime {
    String^ get () override;
}
abstract PreferredImageMime : string
override PreferredImageMime : string

属性值

类型： System String
浏览器通常首选的图像内容类型的 MIME 类型。默认值为“image/gif”。 浏览器通常首选的图像内容类型的 MIME 类型。默认值为“image/gif”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.PreferredRenderingMime 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
PreferredRenderingMime 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器通常首选的内容类型的 MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PreferredRenderingMime As String
    Get
public override string PreferredRenderingMime { get; }
public:
virtual property String^ PreferredRenderingMime {
    String^ get () override;
}
abstract PreferredRenderingMime : string
override PreferredRenderingMime : string

属性值

类型： System String
浏览器通常首选的内容类型的 MIME 类型。默认值为“text/html”。 浏览器通常首选的内容类型的 MIME 类型。默认值为“text/html”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.PreferredRenderingType 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
PreferredRenderingType 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器首选的内容类型的常规名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PreferredRenderingType As String
    Get
public override string PreferredRenderingType { get; }
public:
virtual property String^ PreferredRenderingType {
    String^ get () override;
}
abstract PreferredRenderingType : string
override PreferredRenderingType : string

属性值

类型： System String
值“html32”或“chtml10”。默认值为“html32”。 值“html32”或“chtml10”。默认值为“html32”。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.PreferredRequestEncoding 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
PreferredRequestEncoding 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器首选的请求编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PreferredRequestEncoding As String
    Get
public override string PreferredRequestEncoding { get; }
public:
virtual property String^ PreferredRequestEncoding {
    String^ get () override;
}
abstract PreferredRequestEncoding : string
override PreferredRequestEncoding : string

属性值

类型： System String
浏览器首选的请求编码。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.PreferredResponseEncoding 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
PreferredResponseEncoding 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器首选的响应编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PreferredResponseEncoding As String
    Get
public override string PreferredResponseEncoding { get; }
public:
virtual property String^ PreferredResponseEncoding {
    String^ get () override;
}
abstract PreferredResponseEncoding : string
override PreferredResponseEncoding : string

属性值

类型： System String
浏览器首选的响应编码。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RendersBreakBeforeWmlSelectAndInput 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RendersBreakBeforeWmlSelectAndInput 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在 select 或 input 元素之前呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RendersBreakBeforeWmlSelectAndInput As Boolean
    Get
public override bool RendersBreakBeforeWmlSelectAndInput { get; }
public:
virtual property bool RendersBreakBeforeWmlSelectAndInput {
    bool get () override;
}
abstract RendersBreakBeforeWmlSelectAndInput : bool
override RendersBreakBeforeWmlSelectAndInput : bool

属性值

类型： System Boolean
如果浏览器在 select 或 input 元素之前呈现一个换行符，则为 true；否则为 false。默认值为 false。 如果浏览器在 select 或 input 元素之前呈现一个换行符，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RendersBreaksAfterHtmlLists 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RendersBreaksAfterHtmlLists 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在列表项元素之后呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RendersBreaksAfterHtmlLists As Boolean
    Get
public override bool RendersBreaksAfterHtmlLists { get; }
public:
virtual property bool RendersBreaksAfterHtmlLists {
    bool get () override;
}
abstract RendersBreaksAfterHtmlLists : bool
override RendersBreaksAfterHtmlLists : bool

属性值

类型： System Boolean
如果浏览器在列表项元素之后呈现一个换行符，则为 true；否则为 false。默认值为 true。 如果浏览器在列表项元素之后呈现一个换行符，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RendersBreaksAfterWmlAnchor 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RendersBreaksAfterWmlAnchor 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在独立的 WML a（定位点）元素之后呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RendersBreaksAfterWmlAnchor As Boolean
    Get
public override bool RendersBreaksAfterWmlAnchor { get; }
public:
virtual property bool RendersBreaksAfterWmlAnchor {
    bool get () override;
}
abstract RendersBreaksAfterWmlAnchor : bool
override RendersBreaksAfterWmlAnchor : bool

属性值

类型： System Boolean
如果浏览器在独立的 WML a（定位点）元素之后呈现一个换行符，则为 true；否则为 false。默认值为 false。 如果浏览器在独立的 WML a（定位点）元素之后呈现一个换行符，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RendersBreaksAfterWmlInput 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RendersBreaksAfterWmlInput 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在 WML input 元素之后呈现一个换行符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RendersBreaksAfterWmlInput As Boolean
    Get
public override bool RendersBreaksAfterWmlInput { get; }
public:
virtual property bool RendersBreaksAfterWmlInput {
    bool get () override;
}
abstract RendersBreaksAfterWmlInput : bool
override RendersBreaksAfterWmlInput : bool

属性值

类型： System Boolean
如果浏览器在 WML input 元素之后呈现一个换行符，则为 true；否则为 false。默认值为 false。 如果浏览器在 WML input 元素之后呈现一个换行符，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RendersWmlDoAcceptsInline 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RendersWmlDoAcceptsInline 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示移动设备浏览器是否将 WML do 窗体接受构造呈现为内联按钮而不是软键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RendersWmlDoAcceptsInline As Boolean
    Get
public override bool RendersWmlDoAcceptsInline { get; }
public:
virtual property bool RendersWmlDoAcceptsInline {
    bool get () override;
}
abstract RendersWmlDoAcceptsInline : bool
override RendersWmlDoAcceptsInline : bool

属性值

类型： System Boolean
如果移动设备浏览器将 WML do 窗体接受构造呈现为内联按钮，则为 true；否则为 false。默认值为 true。 如果移动设备浏览器将 WML do 窗体接受构造呈现为内联按钮，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RendersWmlSelectsAsMenuCards 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RendersWmlSelectsAsMenuCards 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否将 WML select 元素呈现为菜单卡片而不是组合框。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RendersWmlSelectsAsMenuCards As Boolean
    Get
public override bool RendersWmlSelectsAsMenuCards { get; }
public:
virtual property bool RendersWmlSelectsAsMenuCards {
    bool get () override;
}
abstract RendersWmlSelectsAsMenuCards : bool
override RendersWmlSelectsAsMenuCards : bool

属性值

类型： System Boolean
如果浏览器将 WML select 元素呈现为菜单卡片，则为 true；否则为 false。默认值为 false。 如果浏览器将 WML select 元素呈现为菜单卡片，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiredMetaTagNameValue 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiredMetaTagNameValue 属性
HttpBrowserCapabilitiesWrapper 类

在内部用于生成某些浏览器所需的元标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiredMetaTagNameValue As String
    Get
public override string RequiredMetaTagNameValue { get; }
public:
virtual property String^ RequiredMetaTagNameValue {
    String^ get () override;
}
abstract RequiredMetaTagNameValue : string
override RequiredMetaTagNameValue : string

属性值

类型： System String
某些浏览器所需的元标记。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresAttributeColonSubstitution 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresAttributeColonSubstitution 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求使用不同的字符替换元素特性值中的冒号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresAttributeColonSubstitution As Boolean
    Get
public override bool RequiresAttributeColonSubstitution { get; }
public:
virtual property bool RequiresAttributeColonSubstitution {
    bool get () override;
}
abstract RequiresAttributeColonSubstitution : bool
override RequiresAttributeColonSubstitution : bool

属性值

类型： System Boolean
如果浏览器要求使用不同的字符替换元素特性值中的冒号，则为 true；否则为 false。默认值为 false。 如果浏览器要求使用不同的字符替换元素特性值中的冒号，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresContentTypeMetaTag 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresContentTypeMetaTag 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否需要指定了 content-type 特性的 HTML meta 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresContentTypeMetaTag As Boolean
    Get
public override bool RequiresContentTypeMetaTag { get; }
public:
virtual property bool RequiresContentTypeMetaTag {
    bool get () override;
}
abstract RequiresContentTypeMetaTag : bool
override RequiresContentTypeMetaTag : bool

属性值

类型： System Boolean
如果浏览器需要一个指定了 true 特性的 HTML meta 元素，则为 content-type；否则为 false。默认值为 false。 如果浏览器需要一个指定了 true 特性的 HTML meta 元素，则为 content-type；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresControlStateInSession 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresControlStateInSession 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求在会话中维护控件状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresControlStateInSession As Boolean
    Get
public override bool RequiresControlStateInSession { get; }
public:
virtual property bool RequiresControlStateInSession {
    bool get () override;
}
abstract RequiresControlStateInSession : bool
override RequiresControlStateInSession : bool

属性值

类型： System Boolean
如果浏览器要求在会话中维护控件状态，则为 true；否则为 false。默认值为 false。 如果浏览器要求在会话中维护控件状态，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresDBCSCharacter 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresDBCSCharacter 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否需要双字节字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresDBCSCharacter As Boolean
    Get
public override bool RequiresDBCSCharacter { get; }
public:
virtual property bool RequiresDBCSCharacter {
    bool get () override;
}
abstract RequiresDBCSCharacter : bool
override RequiresDBCSCharacter : bool

属性值

类型： System Boolean
如果浏览器需要双字节字符集，则为 true；否则为 false。默认值为 false。 如果浏览器需要双字节字符集，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresHtmlAdaptiveErrorReporting 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresHtmlAdaptiveErrorReporting 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否需要非标准错误消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresHtmlAdaptiveErrorReporting As Boolean
    Get
public override bool RequiresHtmlAdaptiveErrorReporting { get; }
public:
virtual property bool RequiresHtmlAdaptiveErrorReporting {
    bool get () override;
}
abstract RequiresHtmlAdaptiveErrorReporting : bool
override RequiresHtmlAdaptiveErrorReporting : bool

属性值

类型： System Boolean
如果浏览器需要非标准错误消息，则为 true；否则为 false。默认值为 false。 如果浏览器需要非标准错误消息，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresLeadingPageBreak 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresLeadingPageBreak 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求网页正文的第一个元素为 HTML br 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresLeadingPageBreak As Boolean
    Get
public override bool RequiresLeadingPageBreak { get; }
public:
virtual property bool RequiresLeadingPageBreak {
    bool get () override;
}
abstract RequiresLeadingPageBreak : bool
override RequiresLeadingPageBreak : bool

属性值

类型： System Boolean
如果浏览器要求网页正文的第一个元素为 HTML br 元素，则为 true；否则为 false。默认值为 false。 如果浏览器要求网页正文的第一个元素为 HTML br 元素，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresNoBreakInFormatting 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresNoBreakInFormatting 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否不支持 HTML br 元素用于设置换行符格式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresNoBreakInFormatting As Boolean
    Get
public override bool RequiresNoBreakInFormatting { get; }
public:
virtual property bool RequiresNoBreakInFormatting {
    bool get () override;
}
abstract RequiresNoBreakInFormatting : bool
override RequiresNoBreakInFormatting : bool

属性值

类型： System Boolean
如果浏览器不支持 HTML br 元素，则为 true；否则为 false。默认值为 false。 如果浏览器不支持 HTML br 元素，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresOutputOptimization 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresOutputOptimization 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求页中包含一个经过大小优化的标记语言标记的窗体。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresOutputOptimization As Boolean
    Get
public override bool RequiresOutputOptimization { get; }
public:
virtual property bool RequiresOutputOptimization {
    bool get () override;
}
abstract RequiresOutputOptimization : bool
override RequiresOutputOptimization : bool

属性值

类型： System Boolean
如果浏览器要求页中包含一个经过大小优化的标记语言标记的窗体，则为 true；否则为 false。默认值为 false。 如果浏览器要求页中包含一个经过大小优化的标记语言标记的窗体，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresPhoneNumbersAsPlainText 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresPhoneNumbersAsPlainText 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持基于纯文本的电话拨号，或者是否需要特殊标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresPhoneNumbersAsPlainText As Boolean
    Get
public override bool RequiresPhoneNumbersAsPlainText { get; }
public:
virtual property bool RequiresPhoneNumbersAsPlainText {
    bool get () override;
}
abstract RequiresPhoneNumbersAsPlainText : bool
override RequiresPhoneNumbersAsPlainText : bool

属性值

类型： System Boolean
如果浏览器支持基于纯文本的电话拨号，则为 true；否则为 false。默认值为 false。 如果浏览器支持基于纯文本的电话拨号，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresSpecialViewStateEncoding 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresSpecialViewStateEncoding 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求对视图状态值进行特殊编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresSpecialViewStateEncoding As Boolean
    Get
public override bool RequiresSpecialViewStateEncoding { get; }
public:
virtual property bool RequiresSpecialViewStateEncoding {
    bool get () override;
}
abstract RequiresSpecialViewStateEncoding : bool
override RequiresSpecialViewStateEncoding : bool

属性值

类型： System Boolean
如果浏览器要求对视图状态值进行特殊编码，则为 true；否则为 false。默认值为 false。 如果浏览器要求对视图状态值进行特殊编码，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresUniqueFilePathSuffix 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresUniqueFilePathSuffix 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否需要唯一的窗体操作 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresUniqueFilePathSuffix As Boolean
    Get
public override bool RequiresUniqueFilePathSuffix { get; }
public:
virtual property bool RequiresUniqueFilePathSuffix {
    bool get () override;
}
abstract RequiresUniqueFilePathSuffix : bool
override RequiresUniqueFilePathSuffix : bool

属性值

类型： System Boolean
如果浏览器需要唯一的窗体-操作 URL，则为 true；否则为 false。默认值为 false。 如果浏览器需要唯一的窗体-操作 URL，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresUniqueHtmlCheckboxNames 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresUniqueHtmlCheckboxNames 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求为多个 HTML input type="checkbox" 元素使用不同的 name 特性值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresUniqueHtmlCheckboxNames As Boolean
    Get
public override bool RequiresUniqueHtmlCheckboxNames { get; }
public:
virtual property bool RequiresUniqueHtmlCheckboxNames {
    bool get () override;
}
abstract RequiresUniqueHtmlCheckboxNames : bool
override RequiresUniqueHtmlCheckboxNames : bool

属性值

类型： System Boolean
如果浏览器要求为多个 HTML input type="checkbox" 元素使用不同的 name 特性值，则为 true；否则为 false。默认值为 false。 如果浏览器要求为多个 HTML input type="checkbox" 元素使用不同的 name 特性值，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresUniqueHtmlInputNames 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresUniqueHtmlInputNames 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否求为多个 HTML input 元素使用不同的 name 特性值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresUniqueHtmlInputNames As Boolean
    Get
public override bool RequiresUniqueHtmlInputNames { get; }
public:
virtual property bool RequiresUniqueHtmlInputNames {
    bool get () override;
}
abstract RequiresUniqueHtmlInputNames : bool
override RequiresUniqueHtmlInputNames : bool

属性值

类型： System Boolean
如果浏览器要求为多个 HTML input 元素使用不同的 name 特性值，则为 true；否则为 false。默认值为 false。 如果浏览器要求为多个 HTML input 元素使用不同的 name 特性值，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.RequiresUrlEncodedPostfieldValues 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
RequiresUrlEncodedPostfieldValues 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器发送的回发数据是否进行 URL 编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RequiresUrlEncodedPostfieldValues As Boolean
    Get
public override bool RequiresUrlEncodedPostfieldValues { get; }
public:
virtual property bool RequiresUrlEncodedPostfieldValues {
    bool get () override;
}
abstract RequiresUrlEncodedPostfieldValues : bool
override RequiresUrlEncodedPostfieldValues : bool

属性值

类型： System Boolean
如果浏览器发送的回发数据进行 URL 编码，则为 true；否则为 false。默认值为 false。 如果浏览器发送的回发数据进行 URL 编码，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ScreenBitDepth 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ScreenBitDepth 属性
HttpBrowserCapabilitiesWrapper 类

获取显示的深度（以每像素位数为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ScreenBitDepth As Integer
    Get
public override int ScreenBitDepth { get; }
public:
virtual property int ScreenBitDepth {
    int get () override;
}
abstract ScreenBitDepth : int
override ScreenBitDepth : int

属性值

类型： System Int32
显示的深度（以每像素位数为单位）。默认值为 1。 显示的深度（以每像素位数为单位）。默认值为 1。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ScreenCharactersHeight 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ScreenCharactersHeight 属性
HttpBrowserCapabilitiesWrapper 类

获取显示的近似高度（以字符行为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ScreenCharactersHeight As Integer
    Get
public override int ScreenCharactersHeight { get; }
public:
virtual property int ScreenCharactersHeight {
    int get () override;
}
abstract ScreenCharactersHeight : int
override ScreenCharactersHeight : int

属性值

类型： System Int32
显示的近似高度（以字符行为单位）。默认值为 6。 显示的近似高度（以字符行为单位）。默认值为 6。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ScreenCharactersWidth 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ScreenCharactersWidth 属性
HttpBrowserCapabilitiesWrapper 类

获取显示的近似宽度（以字符为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ScreenCharactersWidth As Integer
    Get
public override int ScreenCharactersWidth { get; }
public:
virtual property int ScreenCharactersWidth {
    int get () override;
}
abstract ScreenCharactersWidth : int
override ScreenCharactersWidth : int

属性值

类型： System Int32
显示的近似宽度（以字符为单位）。默认值为 12。 显示的近似宽度（以字符为单位）。默认值为 12。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ScreenPixelsHeight 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ScreenPixelsHeight 属性
HttpBrowserCapabilitiesWrapper 类

获取显示的近似高度（以像素为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ScreenPixelsHeight As Integer
    Get
public override int ScreenPixelsHeight { get; }
public:
virtual property int ScreenPixelsHeight {
    int get () override;
}
abstract ScreenPixelsHeight : int
override ScreenPixelsHeight : int

属性值

类型： System Int32
显示的近似高度（以像素为单位）。默认值为 72。 显示的近似高度（以像素为单位）。默认值为 72。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.ScreenPixelsWidth 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
ScreenPixelsWidth 属性
HttpBrowserCapabilitiesWrapper 类

获取显示的近似宽度（以像素为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ScreenPixelsWidth As Integer
    Get
public override int ScreenPixelsWidth { get; }
public:
virtual property int ScreenPixelsWidth {
    int get () override;
}
abstract ScreenPixelsWidth : int
override ScreenPixelsWidth : int

属性值

类型： System Int32
显示的近似宽度（以像素为单位）。默认值为 96。 显示的近似宽度（以像素为单位）。默认值为 96。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsAccesskeyAttribute 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsAccesskeyAttribute 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML a（定位点）和 input 元素的 accesskey 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsAccesskeyAttribute As Boolean
    Get
public override bool SupportsAccesskeyAttribute { get; }
public:
virtual property bool SupportsAccesskeyAttribute {
    bool get () override;
}
abstract SupportsAccesskeyAttribute : bool
override SupportsAccesskeyAttribute : bool

属性值

类型： System Boolean
如果浏览器支持 HTML a（定位点）和 input 元素的 accesskey 特性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML a（定位点）和 input 元素的 accesskey 特性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsBodyColor 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsBodyColor 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML body 元素的 bgcolor 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsBodyColor As Boolean
    Get
public override bool SupportsBodyColor { get; }
public:
virtual property bool SupportsBodyColor {
    bool get () override;
}
abstract SupportsBodyColor : bool
override SupportsBodyColor : bool

属性值

类型： System Boolean
如果浏览器支持 HTML body 元素的 bgcolor 特性，则为 true；否则为 false。默认值为 true。 如果浏览器支持 HTML body 元素的 bgcolor 特性，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsBold 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsBold 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML b 元素进行粗体文本设置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsBold As Boolean
    Get
public override bool SupportsBold { get; }
public:
virtual property bool SupportsBold {
    bool get () override;
}
abstract SupportsBold : bool
override SupportsBold : bool

属性值

类型： System Boolean
如果浏览器支持 HTML b 元素进行粗体文本设置，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML b 元素进行粗体文本设置，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsCacheControlMetaTag 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsCacheControlMetaTag 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML meta 元素的 http-equiv 特性的 cache-control 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsCacheControlMetaTag As Boolean
    Get
public override bool SupportsCacheControlMetaTag { get; }
public:
virtual property bool SupportsCacheControlMetaTag {
    bool get () override;
}
abstract SupportsCacheControlMetaTag : bool
override SupportsCacheControlMetaTag : bool

属性值

类型： System Boolean
如果浏览器支持 HTML meta 元素的 http-equiv 特性的 cache-control 值，则为 true；否则为 false。默认值为 true。 如果浏览器支持 HTML meta 元素的 http-equiv 特性的 cache-control 值，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsCallback 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsCallback 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持回调脚本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsCallback As Boolean
    Get
public override bool SupportsCallback { get; }
public:
virtual property bool SupportsCallback {
    bool get () override;
}
abstract SupportsCallback : bool
override SupportsCallback : bool

属性值

类型： System Boolean
如果浏览器支持回调脚本，则为 true；否则为 false。默认值为 false。 如果浏览器支持回调脚本，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsCss 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsCss 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持级联样式表 (CSS)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsCss As Boolean
    Get
public override bool SupportsCss { get; }
public:
virtual property bool SupportsCss {
    bool get () override;
}
abstract SupportsCss : bool
override SupportsCss : bool

属性值

类型： System Boolean
如果浏览器支持 CSS，则为 true；否则为 false。默认值为 false。 如果浏览器支持 CSS，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsDivAlign 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsDivAlign 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML div 元素的 align 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsDivAlign As Boolean
    Get
public override bool SupportsDivAlign { get; }
public:
virtual property bool SupportsDivAlign {
    bool get () override;
}
abstract SupportsDivAlign : bool
override SupportsDivAlign : bool

属性值

类型： System Boolean
如果浏览器支持 HTML div 元素的 align 特性，则为 true；否则为 false。默认值为 true。 如果浏览器支持 HTML div 元素的 align 特性，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsDivNoWrap 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsDivNoWrap 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML div 元素的 nowrap 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsDivNoWrap As Boolean
    Get
public override bool SupportsDivNoWrap { get; }
public:
virtual property bool SupportsDivNoWrap {
    bool get () override;
}
abstract SupportsDivNoWrap : bool
override SupportsDivNoWrap : bool

属性值

类型： System Boolean
如果浏览器支持 HTML div 元素的 nowrap 属性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML div 元素的 nowrap 属性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsEmptyStringInCookieValue 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsEmptyStringInCookieValue 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在 Cookie 值中支持空字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsEmptyStringInCookieValue As Boolean
    Get
public override bool SupportsEmptyStringInCookieValue { get; }
public:
virtual property bool SupportsEmptyStringInCookieValue {
    bool get () override;
}
abstract SupportsEmptyStringInCookieValue : bool
override SupportsEmptyStringInCookieValue : bool

属性值

类型： System Boolean
如果浏览器在 Cookie 值中支持空字符串，则为 true；否则为 false。默认值为 false。 如果浏览器在 Cookie 值中支持空字符串，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsFontColor 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsFontColor 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML font 元素的 color 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsFontColor As Boolean
    Get
public override bool SupportsFontColor { get; }
public:
virtual property bool SupportsFontColor {
    bool get () override;
}
abstract SupportsFontColor : bool
override SupportsFontColor : bool

属性值

类型： System Boolean
如果浏览器支持 HTML font 元素的 color 特性，则为 true；否则为 false。默认值为 true。 如果浏览器支持 HTML font 元素的 color 特性，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsFontName 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsFontName 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML font 元素的 name 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsFontName As Boolean
    Get
public override bool SupportsFontName { get; }
public:
virtual property bool SupportsFontName {
    bool get () override;
}
abstract SupportsFontName : bool
override SupportsFontName : bool

属性值

类型： System Boolean
如果浏览器支持 HTML font 元素的 name 特性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML font 元素的 name 特性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsFontSize 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsFontSize 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML font 元素的 size 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsFontSize As Boolean
    Get
public override bool SupportsFontSize { get; }
public:
virtual property bool SupportsFontSize {
    bool get () override;
}
abstract SupportsFontSize : bool
override SupportsFontSize : bool

属性值

类型： System Boolean
如果浏览器支持 HTML font 元素的 size 特性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML font 元素的 size 特性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsImageSubmit 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsImageSubmit 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持使用自定义图像替换标准窗体提交按钮。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsImageSubmit As Boolean
    Get
public override bool SupportsImageSubmit { get; }
public:
virtual property bool SupportsImageSubmit {
    bool get () override;
}
abstract SupportsImageSubmit : bool
override SupportsImageSubmit : bool

属性值

类型： System Boolean
如果浏览器支持使用自定义图像替换标准窗体提交按钮，则为 true；否则为 false。默认值为 false。 如果浏览器支持使用自定义图像替换标准窗体提交按钮，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsIModeSymbols 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsIModeSymbols 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 i-mode 符号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsIModeSymbols As Boolean
    Get
public override bool SupportsIModeSymbols { get; }
public:
virtual property bool SupportsIModeSymbols {
    bool get () override;
}
abstract SupportsIModeSymbols : bool
override SupportsIModeSymbols : bool

属性值

类型： System Boolean
如果浏览器支持 i-mode 符号，则为 true；否则为 false。默认值为 false。 如果浏览器支持 i-mode 符号，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsInputIStyle 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsInputIStyle 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML input 元素的 istyle 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsInputIStyle As Boolean
    Get
public override bool SupportsInputIStyle { get; }
public:
virtual property bool SupportsInputIStyle {
    bool get () override;
}
abstract SupportsInputIStyle : bool
override SupportsInputIStyle : bool

属性值

类型： System Boolean
如果浏览器支持 HTML input 元素支持 istyle 特性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML input 元素支持 istyle 特性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsInputMode 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsInputMode 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML input 元素的 mode 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsInputMode As Boolean
    Get
public override bool SupportsInputMode { get; }
public:
virtual property bool SupportsInputMode {
    bool get () override;
}
abstract SupportsInputMode : bool
override SupportsInputMode : bool

属性值

类型： System Boolean
如果浏览器支持 HTML input 元素的 mode 特性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML input 元素的 mode 特性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsItalic 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsItalic 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML i 元素进行斜体文本设置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsItalic As Boolean
    Get
public override bool SupportsItalic { get; }
public:
virtual property bool SupportsItalic {
    bool get () override;
}
abstract SupportsItalic : bool
override SupportsItalic : bool

属性值

类型： System Boolean
如果浏览器支持 HTML i 元素进行斜体文本设置，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML i 元素进行斜体文本设置，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsJPhoneMultiMediaAttributes 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsJPhoneMultiMediaAttributes 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 J-Phone 多媒体特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsJPhoneMultiMediaAttributes As Boolean
    Get
public override bool SupportsJPhoneMultiMediaAttributes { get; }
public:
virtual property bool SupportsJPhoneMultiMediaAttributes {
    bool get () override;
}
abstract SupportsJPhoneMultiMediaAttributes : bool
override SupportsJPhoneMultiMediaAttributes : bool

属性值

类型： System Boolean
如果浏览器支持 J-Phone 多媒体特性，则为 true；否则为 false。默认值为 false。 如果浏览器支持 J-Phone 多媒体特性，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsJPhoneSymbols 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsJPhoneSymbols 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 J-Phone 特定的图片符号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsJPhoneSymbols As Boolean
    Get
public override bool SupportsJPhoneSymbols { get; }
public:
virtual property bool SupportsJPhoneSymbols {
    bool get () override;
}
abstract SupportsJPhoneSymbols : bool
override SupportsJPhoneSymbols : bool

属性值

类型： System Boolean
如果浏览器支持 J-Phone 特定的图片符号，则为 true；否则为 false。默认值为 false。 如果浏览器支持 J-Phone 特定的图片符号，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsQueryStringInFormAction 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsQueryStringInFormAction 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在 HTML form 元素的 action 特性值中支持查询字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsQueryStringInFormAction As Boolean
    Get
public override bool SupportsQueryStringInFormAction { get; }
public:
virtual property bool SupportsQueryStringInFormAction {
    bool get () override;
}
abstract SupportsQueryStringInFormAction : bool
override SupportsQueryStringInFormAction : bool

属性值

类型： System Boolean
如果浏览器在 HTML form 元素的 action 特性值中支持查询字符串，则为 true；否则为 false。默认值为 true。 如果浏览器在 HTML form 元素的 action 特性值中支持查询字符串，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsRedirectWithCookie 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsRedirectWithCookie 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否在重定向时支持 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsRedirectWithCookie As Boolean
    Get
public override bool SupportsRedirectWithCookie { get; }
public:
virtual property bool SupportsRedirectWithCookie {
    bool get () override;
}
abstract SupportsRedirectWithCookie : bool
override SupportsRedirectWithCookie : bool

属性值

类型： System Boolean
如果浏览器在重定向时支持 Cookie，则为 true；否则为 false。默认值为 true。 如果浏览器在重定向时支持 Cookie，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsSelectMultiple 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsSelectMultiple 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML select 元素的 multiple 特性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsSelectMultiple As Boolean
    Get
public override bool SupportsSelectMultiple { get; }
public:
virtual property bool SupportsSelectMultiple {
    bool get () override;
}
abstract SupportsSelectMultiple : bool
override SupportsSelectMultiple : bool

属性值

类型： System Boolean
如果浏览器支持 HTML select 元素的 multiple 特性，则为 true；否则为 false。默认值为 true。 如果浏览器支持 HTML select 元素的 multiple 特性，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsUncheck 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsUncheck 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示回发数据中是否反映对已选中的 HTML input type="checkbox" 元素的清除。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsUncheck As Boolean
    Get
public override bool SupportsUncheck { get; }
public:
virtual property bool SupportsUncheck {
    bool get () override;
}
abstract SupportsUncheck : bool
override SupportsUncheck : bool

属性值

类型： System Boolean
如果在回发数据中反映对已选中的 HTML input type="checkbox" 元素的清除，则为 true；否则为 false。默认值为 true。 如果在回发数据中反映对已选中的 HTML input type="checkbox" 元素的清除，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.SupportsXmlHttp 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
SupportsXmlHttp 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持通过 HTTP 接收 XML。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SupportsXmlHttp As Boolean
    Get
public override bool SupportsXmlHttp { get; }
public:
virtual property bool SupportsXmlHttp {
    bool get () override;
}
abstract SupportsXmlHttp : bool
override SupportsXmlHttp : bool

属性值

类型： System Boolean
如果浏览器支持通过 HTTP 接收 XML，则为 true；否则为 false。默认值为 false。 如果浏览器支持通过 HTTP 接收 XML，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Tables 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Tables 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 HTML table 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Tables As Boolean
    Get
public override bool Tables { get; }
public:
virtual property bool Tables {
    bool get () override;
}
abstract Tables : bool
override Tables : bool

属性值

类型： System Boolean
如果浏览器支持 HTML table 元素，则为 true；否则为 false。默认值为 false。 如果浏览器支持 HTML table 元素，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.TagWriter 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
TagWriter 属性
HttpBrowserCapabilitiesWrapper 类

在内部用于获取对象的类型，使用该对象为浏览器编写标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property TagWriter As Type
    Get
public override Type TagWriter { get; }
public:
virtual property Type^ TagWriter {
    Type^ get () override;
}
abstract TagWriter : Type
override TagWriter : Type

属性值

类型： System Type
用于为浏览器编写标记的对象的类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Type 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Type 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器的名称和主（整数）版本号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Type As String
    Get
public override string Type { get; }
public:
virtual property String^ Type {
    String^ get () override;
}
abstract Type : string
override Type : string

属性值

类型： System String
浏览器的名称和主版本号。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.UseOptimizedCacheKey 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
UseOptimizedCacheKey 属性
HttpBrowserCapabilitiesWrapper 类

在内部用于获取一个值，该值指示是否使用经过优化的缓存密钥。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property UseOptimizedCacheKey As Boolean
    Get
public override bool UseOptimizedCacheKey { get; }
public:
virtual property bool UseOptimizedCacheKey {
    bool get () override;
}
abstract UseOptimizedCacheKey : bool
override UseOptimizedCacheKey : bool

属性值

类型： System Boolean
如果使用经过优化的缓存密钥，则为 true；否则为 false。默认值为 false。 如果使用经过优化的缓存密钥，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.VBScript 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
VBScript 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示浏览器是否支持 Visual Basic Scripting edition (VBScript)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property VBScript As Boolean Get
public override bool VBScript { get; }
public:
virtual property bool VBScript {
    bool get () override;
}
abstract VBScript : bool override VBScript : bool
属性值
类型： System Boolean
如果浏览器支持 VBScript，则为
true
；否则为
false
。
默认值为
false
。
如果浏览器支持 VBScript，则为
true
；否则为
false
。
默认值为
false
。
说明
此属性不指示浏览器中当前是否启用了 VBScript，仅指示浏览器是否可以支持 VBScript。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Version 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Version 属性
HttpBrowserCapabilitiesWrapper 类

以字符串形式获取浏览器的完整版本号（整数和小数）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Version As String
    Get
public override string Version { get; }
public:
virtual property String^ Version {
    String^ get () override;
}
abstract Version : string
override Version : string

属性值

类型： System String
浏览器的完整版本号（字符串形式）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.W3CDomVersion 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
W3CDomVersion 属性
HttpBrowserCapabilitiesWrapper 类

获取浏览器支持的万维网联合会 (W3C) XML 文档对象模型 (DOM) 的版本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property W3CDomVersion As Version
    Get
public override Version W3CDomVersion { get; }
public:
virtual property Version^ W3CDomVersion {
    Version^ get () override;
}
abstract W3CDomVersion : Version
override W3CDomVersion : Version

属性值

类型： System Version
浏览器支持的 W3C XML DOM 的版本号。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Win16 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Win16 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示客户端是否为基于 Win16 的计算机。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Win16 As Boolean
    Get
public override bool Win16 { get; }
public:
virtual property bool Win16 {
    bool get () override;
}
abstract Win16 : bool
override Win16 : bool

属性值

类型： System Boolean
如果浏览器运行于基于 Win16 的计算机上，则为 true；否则为 false。默认值为 false。 如果浏览器运行于基于 Win16 的计算机上，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpBrowserCapabilitiesWrapper ..::.Win32 属性

HttpBrowserCapabilitiesWrapper
.
.
::
.
Win32 属性
HttpBrowserCapabilitiesWrapper 类

获取一个值，该值指示客户端是否为基于 Win32 的计算机。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Win32 As Boolean
    Get
public override bool Win32 { get; }
public:
virtual property bool Win32 {
    bool get () override;
}
abstract Win32 : bool
override Win32 : bool

属性值

类型： System Boolean
如果客户端为基于 Win32 的计算机，则为 true；否则为 false。默认值为 false。 如果客户端为基于 Win32 的计算机，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpBrowserCapabilitiesWrapper 类
HttpBrowserCapabilitiesWrapper 成员
System.Web 命名空间


HttpCacheability 枚举

HttpCacheability 枚举

提供用于设置 Cache-Control HTTP 标头的枚举值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration HttpCacheability
public enum HttpCacheability
public enum class HttpCacheability
type HttpCacheability
成员名称 | 说明
NoCache | 设置 Cache-Control: no-cache 标头。如果没有字段名，则指令应用于整个请求，且在满足请求前，共享（代理服务器）缓存必须对原始 Web 服务器强制执行成功的重新验证。如果有字段名，则指令仅应用于命名字段；响应的其余部分可能由共享缓存提供。 设置 Cache-Control: no-cache 标头。如果没有字段名，则指令应用于整个请求，且在满足请求前，共享（代理服务器）缓存必须对原始 Web 服务器强制执行成功的重新验证。如果有字段名，则指令仅应用于命名字段；响应的其余部分可能由共享缓存提供。 设置 Cache-Control: no-cache 标头。如果没有字段名，则指令应用于整个请求，且在满足请求前，共享（代理服务器）缓存必须对原始 Web 服务器强制执行成功的重新验证。如果有字段名，则指令仅应用于命名字段；响应的其余部分可能由共享缓存提供。
Private | 默认值。设置 Cache-Control: private 以指定响应只能缓存在客户端，而不能由共享（代理服务器）缓存进行缓存。 默认值。设置 Cache-Control: private 以指定响应只能缓存在客户端，而不能由共享（代理服务器）缓存进行缓存。
Server | 指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令，但文档是在原始服务器上缓存的。等效于 ServerAndNoCache。 指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令，但文档是在原始服务器上缓存的。等效于 ServerAndNoCache。 指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令，但文档是在原始服务器上缓存的。等效于 ServerAndNoCache。 指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令，但文档是在原始服务器上缓存的。等效于 ServerAndNoCache。
ServerAndNoCache | 应用 Server 和 NoCache 的设置指示在服务器上缓存内容，而对服务器以外的其他对象都显式否定其缓存响应的能力。
Public | 设置 Cache-Control: public 以指定响应能由客户端和共享（代理）缓存进行缓存。
ServerAndPrivate | 指示响应只能在服务器和客户端缓存。代理服务器不能缓存响应。 指示响应只能在服务器和客户端缓存。代理服务器不能缓存响应。

有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关完整的详细信息，请具体参见第 14.9 节“缓存控制”和第 13 节“HTTP 中的缓存”。 有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关完整的详细信息，请具体参见第 14.9 节“缓存控制”和第 13 节“HTTP 中的缓存”。

说明 说明

NoCache 不发送公共 HTTP 1.0 请求指令 Pragma: no-cache。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpCachePolicy
HttpResponse


HttpCachePolicy 类

HttpCachePolicy 类
成员

包含用于设置缓存特定的 HTTP 标头的方法和用于控制 ASP.NET 页输出缓存的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpCachePolicy
public sealed class HttpCachePolicy
public ref class HttpCachePolicy sealed
[<SealedAttribute>]
type HttpCachePolicy =  class end

有关 HTTP 标头和控制缓存的背景信息，请参见 RFC 2616：超文本传输协议 -- HTTP/1.1，位于 WWW 联合会 (W3C) 网站。

HttpCachePolicy 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 HttpCachePolicy 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

System.Web System.Web..::.HttpCachePolicyHttpCachePolicy
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy 成员

HttpCachePolicy 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicy 类

包含用于设置缓存特定的 HTTP 标头的方法和用于控制 ASP.NET 页输出缓存的方法。

HttpCachePolicy 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpCachePolicy 类
System.Web 命名空间


HttpCachePolicy 方法

HttpCachePolicy 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicy 类

HttpCachePolicy 类型公开以下成员。

名称 说明
页首

参考

HttpCachePolicy 类
System.Web 命名空间


HttpCachePolicy ..::.AddValidationCallback 方法

HttpCachePolicy
.
.
::
.
AddValidationCallback 方法
HttpCachePolicy 类

注册当前响应的验证回调。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddValidationCallback ( _
    handler As HttpCacheValidateHandler, _
    data As Object _
)
public void AddValidationCallback(
    HttpCacheValidateHandler handler,
    Object data
)
public:
void AddValidationCallback(
    HttpCacheValidateHandler^ handler,
    Object^ data
)
member AddValidationCallback :
        handler:HttpCacheValidateHandler *
        data:Object -> unit

参数

handler
类型： System.Web HttpCacheValidateHandler
HttpCacheValidateHandler 值。
data
类型： System Object
传递回 AddValidationCallback 委托的用户提供的任意数据。
异常 | 条件
ArgumentNullException | 指定的 handler 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

AddValidationCallback 方法提供一种在输出缓存将响应返回客户端之前以编程方式检查缓存中的响应的机制。

在从 Web 服务器缓存提供响应之前，系统会查询所有已注册的处理程序以确保资源的有效性。如果任何处理程序设置了指示缓存的响应无效的标志，则该项将被标记为无效，并从缓存中排除。在此情况下，以及在任何处理程序指示应该对此请求忽略缓存的响应时，对请求的处理将像缓存未命中一样进行。 在从 Web 服务器缓存提供响应之前，系统会查询所有已注册的处理程序以确保资源的有效性。如果任何处理程序设置了指示缓存的响应无效的标志，则该项将被标记为无效，并从缓存中排除。在此情况下，以及在任何处理程序指示应该对此请求忽略缓存的响应时，对请求的处理将像缓存未命中一样进行。 在从 Web 服务器缓存提供响应之前，系统会查询所有已注册的处理程序以确保资源的有效性。如果任何处理程序设置了指示缓存的响应无效的标志，则该项将被标记为无效，并从缓存中排除。在此情况下，以及在任何处理程序指示应该对此请求忽略缓存的响应时，对请求的处理将像缓存未命中一样进行。

AddValidationCallback 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 AddValidationCallback 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何添加委托，以根据查询字符串值验证请求。

<%@ Page Language="VB" %>
<%@ OutputCache VaryByParam="none" Duration="600" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
   shared validationstate As String

   Public Sub Page_Load(sender As Object, e As EventArgs)
      Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(AddressOf Me.ValidateCache), nothing)
      stamp.InnerHtml = DateTime.Now.ToString("r")
   End Sub

   Public Shared Sub ValidateCache(context As HttpContext, data As Object, ByRef status as HttpValidationStatus)
      If (context.Request.QueryString("Valid") = "false") Then
         status = HttpValidationStatus.Invalid
      Elseif (context.Request.QueryString("Valid") = "ignore") Then
         status = HttpValidationStatus.IgnoreThisRequest
      Else
         status = HttpValidationStatus.Valid
      End If
   End Sub

</script>

<%@ Page Language="C#" %>
<%@ OutputCache VaryByParam="none" Duration="600" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script language="c#" runat="server">

   static string validationstate;

   public void Page_Load()
   {
      Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(ValidateCache), null);
      stamp.InnerHtml = DateTime.Now.ToString("r");
   }

   public static void ValidateCache(HttpContext context, Object data, ref HttpValidationStatus status)
   {
      if (context.Request.QueryString["Valid"] == "false")
      {
         status = HttpValidationStatus.Invalid;
      }
      else if (context.Request.QueryString["Valid"] == "ignore")
      {
         status = HttpValidationStatus.IgnoreThisRequest;
      }
      else
      {
         status = HttpValidationStatus.Valid;
      }
   }

</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.AppendCacheExtension 方法

HttpCachePolicy
.
.
::
.
AppendCacheExtension 方法
HttpCachePolicy 类

将指定的文本追加到 Cache-Control HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AppendCacheExtension ( _
    extension As String _
)
public void AppendCacheExtension(
    string extension
)
public:
void AppendCacheExtension(
    String^ extension
)
member AppendCacheExtension :
        extension:string -> unit

参数

extension
类型： System String
要追加到 Cache-Control 标头的文本。
异常 | 条件
ArgumentNullException | extension 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果浏览器不识别缓存控制指令或扩展，则浏览器必须忽略无法识别的项。有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。 如果浏览器不识别缓存控制指令或扩展，则浏览器必须忽略无法识别的项。有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。

AppendCacheExtension 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 AppendCacheExtension 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示受 Internet Explorer 支持的缓存控制扩展的使用。服务器向浏览器指示内容在一小时 (pre-check=3600) 内不会变化，并指示浏览器直接从本地缓存检索内容。但是，如果服务器修改了内容，且用户在 15 分钟 (post-check= 900) 到 1 小时内请求了页面，则浏览器显示在本地缓存中找到的信息，同时在服务器上执行后台检查和可选的新内容获取操作。 下面的代码示例演示受 Internet Explorer 支持的缓存控制扩展的使用。服务器向浏览器指示内容在一小时 (pre-check=3600) 内不会变化，并指示浏览器直接从本地缓存检索内容。但是，如果服务器修改了内容，且用户在 15 分钟 (post-check= 900) 到 1 小时内请求了页面，则浏览器显示在本地缓存中找到的信息，同时在服务器上执行后台检查和可选的新内容获取操作。 下面的代码示例演示受 Internet Explorer 支持的缓存控制扩展的使用。服务器向浏览器指示内容在一小时 (pre-check=3600) 内不会变化，并指示浏览器直接从本地缓存检索内容。但是，如果服务器修改了内容，且用户在 15 分钟 (post-check= 900) 到 1 小时内请求了页面，则浏览器显示在本地缓存中找到的信息，同时在服务器上执行后台检查和可选的新内容获取操作。

Response.Cache.AppendCacheExtension("post-check=900,pre-check=3600")

Response.Cache.AppendCacheExtension("post-check=900,pre-check=3600");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetAllowResponseInBrowserHistory 方法

HttpCachePolicy
.
.
::
.
SetAllowResponseInBrowserHistory 方法
HttpCachePolicy 类

当 allow 参数为 true 时，将使响应在客户端浏览器“历史记录”缓存中可用，而不论服务器上所做的 HttpCacheability 设置是什么。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetAllowResponseInBrowserHistory ( _
    allow As Boolean _
)
public void SetAllowResponseInBrowserHistory(
    bool allow
)
public:
void SetAllowResponseInBrowserHistory(
    bool allow
)
member SetAllowResponseInBrowserHistory :
        allow:bool -> unit

参数

allow
类型： System Boolean
true 指示客户端浏览器将响应存储在“历史记录”文件夹中，否则为 false。默认值为 false。 true 指示客户端浏览器将响应存储在“历史记录”文件夹中，否则为 false。默认值为 false。

当 HttpCacheability 设置为 NoCache 或 ServerAndNoCache 时，Expires HTTP 标头默认设置为 -1，这样就会告知客户端不要将响应缓存在“历史记录”文件夹中，这样，使用后退/前进按钮时，客户端每次都请求一个新的响应版本。通过在将 allow 参数设置为 true 的情况下调用 SetAllowResponseInBrowserHistory 方法，您可以重写此行为。 当 HttpCacheability 设置为 NoCache 或 ServerAndNoCache 时，Expires HTTP 标头默认设置为 -1，这样就会告知客户端不要将响应缓存在“历史记录”文件夹中，这样，使用后退/前进按钮时，客户端每次都请求一个新的响应版本。通过在将 allow 参数设置为 true 的情况下调用 SetAllowResponseInBrowserHistory 方法，您可以重写此行为。

如果将 HttpCacheability 设置为除 NoCache 或 ServerAndNoCache 以外的值，则使用 allow 的任一个值调用 SetAllowResponseInBrowserHistory 方法都将无效。

SetAllowResponseInBrowserHistory 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetAllowResponseInBrowserHistory 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何重写 SetAllowResponseInBrowserHistory 方法，以便在自定义的 HttpCachePolicy 中指示客户端将响应存储在它的历史记录中。

<%@ Page language="VB" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpCachePolicy - SetAllowResponseInBrowserHistory - Visual Basic .NET Example</title>
    <script runat="server">
      Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

          ' When HttpCacheability is set to NoCache or ServerAndNoCache
          ' the Expires HTTP header is set to -1 by default. This instructs
          ' the client to not cache responses in the History folder. Thus,
          ' each time you use the back/forward buttons, the client requests
          ' a new version of the response.
          HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache)

          ' Override the ServerAndNoCache behavior by setting the SetAllowInBrowserHistory
          ' method to true. This directs the client browser to store responses in
          ' its History folder.
          HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(True)

          ' Display the DateTime value.
          Label1.Text = DateTime.Now.ToLongTimeString()
      End Sub
    </script>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <h3>HttpCachePolicy - SetAllowResponseInBrowserHistory - Visual Basic .NET</h3>

      <p>Click the Submit button a few times, and then click the Browser's Back button.<br />
        The page should be stored in the Browser's History folder</p>

      <p>Time: <asp:Label id="Label1" runat="server" Font-Bold="True" ForeColor="Red" /></p>

      <asp:Button id="Button1" runat="server" Text="Submit" />
    </form>
  </body>
</html>

<%@ Page language="c#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpCachePolicy - SetAllowResponseInBrowserHistory - C# Example</title>
    <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
        // When HttpCacheability is set to NoCache or ServerAndNoCache
        // the Expires HTTP header is set to -1 by default. This instructs
        // the client to not cache responses in the History folder. Thus,
        // each time you use the back/forward buttons, the client requests
        // a new version of the response.
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);

        // Override the ServerAndNoCache behavior by setting the SetAllowInBrowserHistory
        // method to true. This directs the client browser to store responses in
        // its History folder.
        HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(true);

        // Display the DateTime value.
        Label1.Text = DateTime.Now.ToLongTimeString();
      }
    </script>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <h3>HttpCachePolicy - SetAllowResponseInBrowserHistory - C# Example</h3>

      <p>Click the Submit button a few times, and then click the Browser's Back button.<br />
        The page should be stored in the Browser's History folder</p>

      <p>Time: <asp:Label id="Label1" runat="server" Font-Bold="True" ForeColor="Red" /></p>

      <asp:Button id="Button1" runat="server" Text="Submit" />
    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetCacheability 方法

HttpCachePolicy
.
.
::
.
SetCacheability 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicy 类

设置 Cache-Control HTTP 标头。Cache-Control HTTP 标头控制在网络上缓存文档的方式。 设置 Cache-Control HTTP 标头。Cache-Control HTTP 标头控制在网络上缓存文档的方式。

名称 说明
页首

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetCacheability 方法 (HttpCacheability)

HttpCachePolicy
.
.
::
.
SetCacheability 方法 (HttpCacheability)
HttpCachePolicy 类

将 Cache-Control 标头设置为 HttpCacheability 值之一。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetCacheability ( _
    cacheability As HttpCacheability _
)
public void SetCacheability(
    HttpCacheability cacheability
)
public:
void SetCacheability(
    HttpCacheability cacheability
)
member SetCacheability :
        cacheability:HttpCacheability -> unit

参数

cacheability
类型： System.Web HttpCacheability
HttpCacheability 枚举值。
异常 | 条件
ArgumentOutOfRangeException | cacheability 不是枚举值之一。

SetCacheability 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetCacheability 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将 Cache-Control 标头设置为 no-cache 的枚举值。

Response.Cache.SetCacheability(HttpCacheability.NoCache)

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
SetCacheability 重载
System.Web 命名空间


HttpCachePolicy ..::.SetCacheability 方法 (HttpCacheability, String)

HttpCachePolicy
.
.
::
.
SetCacheability 方法 (HttpCacheability, String)
HttpCachePolicy 类

将 Cache-Control 标头设置为 HttpCacheability 值之一，并将扩展追加到指令。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetCacheability ( _
    cacheability As HttpCacheability, _
    field As String _
)
public void SetCacheability(
    HttpCacheability cacheability,
    string field
)
public:
void SetCacheability(
    HttpCacheability cacheability,
    String^ field
)
member SetCacheability :
        cacheability:HttpCacheability *
        field:string -> unit

参数

cacheability
类型： System.Web HttpCacheability
要将标头设置为的 HttpCacheability 枚举值。
field
类型： System String
添加到标头的缓存控制扩展。
异常 | 条件
ArgumentNullException | field 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | cacheability 不是 Private 或 NoCache。

仅当与 private 或 no-cache 指令一起使用时，字段扩展名才有效。有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。 仅当与 private 或 no-cache 指令一起使用时，字段扩展名才有效。有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。

如果组合不兼容的指令和扩展，则此方法将引发无效参数异常。

SetCacheability 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetCacheability 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将 Cache-Control 标头设置为枚举值 private，并添加一个缓存控制扩展。已修改的指令表示除所有非共享缓存外，只有“DEV”团体的成员所共享的任何缓存才可以缓存响应。 下面的代码示例演示如何将 Cache-Control 标头设置为枚举值 private，并添加一个缓存控制扩展。已修改的指令表示除所有非共享缓存外，只有“DEV”团体的成员所共享的任何缓存才可以缓存响应。

Response.Cache.SetCacheability(HttpCacheability.Private, "Community=DEV")

Response.Cache.SetCacheability(HttpCacheability.Private, "Community=DEV");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
SetCacheability 重载
System.Web 命名空间


HttpCachePolicy ..::.SetETag 方法

HttpCachePolicy
.
.
::
.
SetETag 方法
HttpCachePolicy 类

将 ETag HTTP 标头设置为指定字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetETag ( _
    etag As String _
)
public void SetETag(
    string etag
)
public:
void SetETag(
    String^ etag
)
member SetETag :
        etag:string -> unit

参数

etag
类型： System String
将用于 ETag 标头的文本。
异常 | 条件
ArgumentNullException | etag 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 已设置 ETag 标头。 - 或 - 已调用 SetETagFromFileDependencies。

ETag 标头是特定文档版本的唯一标识符。它由客户端用来验证客户端缓存的内容，以避免再次请求该内容。设置了 ETag 标头后，随后对它进行设置的尝试将失败，并会引发异常。 ETag 标头是特定文档版本的唯一标识符。它由客户端用来验证客户端缓存的内容，以避免再次请求该内容。设置了 ETag 标头后，随后对它进行设置的尝试将失败，并会引发异常。 ETag 标头是特定文档版本的唯一标识符。它由客户端用来验证客户端缓存的内容，以避免再次请求该内容。设置了 ETag 标头后，随后对它进行设置的尝试将失败，并会引发异常。

SetETag 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetETag 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将 ETag 标头设置为自定义的值。

       Response.Cache.SetETag("""50f59e42f4d8bc1:cd7""")

Response.Cache.SetETag("\"50f59e42f4d8bc1:cd7\"");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetETagFromFileDependencies 方法

HttpCachePolicy
.
.
::
.
SetETagFromFileDependencies 方法
HttpCachePolicy 类

基于处理程序文件依赖项的时间戳设置 ETag HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetETagFromFileDependencies
public void SetETagFromFileDependencies()
public:
void SetETagFromFileDependencies()
member SetETagFromFileDependencies : unit -> unit

异常 | 条件
InvalidOperationException | 已设置 ETag 标头。

SetETagFromFileDependencies 方法设置 ETag 标头，方法是检索处理程序的所有依赖文件的上次修改时间戳，将所有文件名和时间戳组合成一个字符串，然后将该字符串散列成一个用作 ETag 的简要。

SetETagFromFileDependencies 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetETagFromFileDependencies 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何设置 ETag 标头。

Response.Cache.SetETagFromFileDependencies()

Response.Cache.SetETagFromFileDependencies();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetExpires 方法

HttpCachePolicy
.
.
::
.
SetExpires 方法
HttpCachePolicy 类

将 Expires HTTP 标头设置为绝对日期和时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetExpires ( _
    date As DateTime _
)
public void SetExpires(
    DateTime date
)
public:
void SetExpires(
    DateTime date
)
member SetExpires :
        date:DateTime -> unit

参数

date
类型： System DateTime
将 Expires 标头设置为的绝对 DateTime 值。

如果过期日期违反限制原则，此方法将失败。

SetExpires 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetExpires 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将过期时间设置为下午 6: 00。当前到期日期的当地时间。 下面的代码示例演示如何将过期时间设置为下午 6: 00。当前到期日期的当地时间。

Response.Cache.SetExpires(DateTime.Parse("6:00:00PM"))

Response.Cache.SetExpires(DateTime.Parse("6:00:00PM"));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetLastModified 方法

HttpCachePolicy
.
.
::
.
SetLastModified 方法
HttpCachePolicy 类

将 Last-Modified HTTP 标头设置为提供的 DateTime 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetLastModified ( _
    date As DateTime _
)
public void SetLastModified(
    DateTime date
)
public:
void SetLastModified(
    DateTime date
)
member SetLastModified :
        date:DateTime -> unit

参数

date
类型： System DateTime
Last-Modified 标头的新 DateTime 值。
异常 | 条件
ArgumentOutOfRangeException | date 比当前 DateTime 晚。

Last-Modified HTTP 标头时间用指示文档上次修改时间的 DateTime 值给文档加上时间戳。

如果违反了缓存限制层次结构，此方法将失败。

SetLastModified 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetLastModified 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将 Last-Modified 标头设置为新的日期。

Response.Cache.SetLastModified(DateTime.Parse("1/1/2001 00:00:01AM"))

Response.Cache.SetLastModified(DateTime.Parse("1/1/2001 00:00:01AM"));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetLastModifiedFromFileDependencies 方法

HttpCachePolicy
.
.
::
.
SetLastModifiedFromFileDependencies 方法
HttpCachePolicy 类

基于处理程序文件依赖项的时间戳设置 Last-Modified HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetLastModifiedFromFileDependencies
public void SetLastModifiedFromFileDependencies()
public:
void SetLastModifiedFromFileDependencies()
member SetLastModifiedFromFileDependencies : unit -> unit

SetLastModifiedFromFileDependencies 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetLastModifiedFromFileDependencies 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何使用 SetLastModifiedFromFileDependencies 方法设置 Last-Modified 标头。

Response.Cache.SetLastModifiedFromFileDependencies()

Response.Cache.SetLastModifiedFromFileDependencies();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetMaxAge 方法

HttpCachePolicy
.
.
::
.
SetMaxAge 方法
HttpCachePolicy 类

基于指定的时间跨度设置 Cache-Control: max-age HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetMaxAge ( _
    delta As TimeSpan _
)
public void SetMaxAge(
    TimeSpan delta
)
public:
void SetMaxAge(
    TimeSpan delta
)
member SetMaxAge :
        delta:TimeSpan -> unit

参数

delta
类型： System TimeSpan
用于设置 Cache 的时间跨度 -Control: max-age 标头。 - 用于设置 Cache 的时间跨度 -Control: max-age 标头。
异常 | 条件
ArgumentOutOfRangeException | delta 小于 0 或大于 1 年。

Max-age 是允许文档在被视为陈旧之前存在的最长绝对时间。

SetMaxAge 不使用可调过期模式，如果过期日期违反限制原则，该方法将失败。

SetMaxAge 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetMaxAge 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

说明 说明

如果重复调用 SetMaxAge 方法，则在第二个和后续调用上，只能减小最大生存期的值。

下面的代码示例演示如何将 Cache-Control: max-age 标头设置为 0 小时、30 分、0 秒。

Dim ts As New TimeSpan(0,30,0)
 Response.Cache.SetMaxAge(ts)

TimeSpan ts = new TimeSpan(0,30,0);
 Response.Cache.SetMaxAge(ts);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetNoServerCaching 方法

HttpCachePolicy
.
.
::
.
SetNoServerCaching 方法
HttpCachePolicy 类

停止当前响应的所有源服务器缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetNoServerCaching
public void SetNoServerCaching()
public:
void SetNoServerCaching()
member SetNoServerCaching : unit -> unit

显式拒绝在源服务器上缓存文档。设置后，将完全处理对文档的所有请求。当此方法被调用时，不能对当前响应重新启用缓存。 显式拒绝在源服务器上缓存文档。设置后，将完全处理对文档的所有请求。当此方法被调用时，不能对当前响应重新启用缓存。 显式拒绝在源服务器上缓存文档。设置后，将完全处理对文档的所有请求。当此方法被调用时，不能对当前响应重新启用缓存。

SetNoServerCaching 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetNoServerCaching 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何对响应的剩余部分禁用输出缓存。

Response.Cache.SetNoServerCaching()

Response.Cache.SetNoServerCaching();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetNoStore 方法

HttpCachePolicy
.
.
::
.
SetNoStore 方法
HttpCachePolicy 类

设置 Cache-Control: no-store HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetNoStore
public void SetNoStore()
public:
void SetNoStore()
member SetNoStore : unit -> unit

下面的代码示例演示如何使用 HttpCachePolicy 类的 SetNoStore 方法指示客户端不要在历史记录中存储响应。

<%@ Page language="VB" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpCachePolicy - SetNoStore - Visual Basic .NET Example</title>
    <script runat="server">
      Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

          ' Prevent the browser from caching the ASPX page.
          Response.Cache.SetNoStore()

          ' Display the DateTime value.
          Label1.Text = DateTime.Now.ToLongTimeString()
      End Sub
  </script>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <h3>HttpCachePolicy - SetNoStore - Visual Basic .NET Example</h3>

      <p>Click the Submit button a few times, and then click the Browser's Back button.<br />
      You should get a "Warning: Page has Expired" error message.</p>

      <p>Time:  <asp:Label id="Label1" runat="server" Font-Bold="True" ForeColor="Red" /></p>

      <asp:Button id="Button1" runat="server" Text="Submit" />
    </form>
  </body>
</html>

<%@ Page language="c#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpCachePolicy - SetNoStore - C# Example</title>
    <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
        // Prevent the browser from caching the ASPX page
        Response.Cache.SetNoStore();

        // Display the DateTime value.
        Label1.Text = DateTime.Now.ToLongTimeString();
      }
    </script>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <h3>HttpCachePolicy - SetNoStore - C# Example</h3>

      <p>Click the Submit button a few times, and then click the Browser's Back button.<br />
      You should get a "Warning: Page has Expired" error message.</p>

      <p>Time:  <asp:Label id="Label1" runat="server" Font-Bold="True" ForeColor="Red" /></p>

      <asp:Button id="Button1" runat="server" Text="Submit" />
    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetNoTransforms 方法

HttpCachePolicy
.
.
::
.
SetNoTransforms 方法
HttpCachePolicy 类

设置 Cache-Control: no-transform HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetNoTransforms
public void SetNoTransforms()
public:
void SetNoTransforms()
member SetNoTransforms : unit -> unit

Cache-Control: no-transform HTTP 标头指示网络缓存应用程序不要修改文档。

Cache-Control: no-transform HTTP 标头禁止下游代理服务器更改 Content-Encoding、Content-Range 或 Content-Type 标头（这包括实体主体）指定的任何标头值。例如，该指令防止代理将 GIF 图像转换为 PNG。 Cache-Control: no-transform HTTP 标头禁止下游代理服务器更改 Content-Encoding、Content-Range 或 Content-Type 标头（这包括实体主体）指定的任何标头值。例如，该指令防止代理将 GIF 图像转换为 PNG。

与对缓存的其他限制一样，一旦调用了 SetNoTransforms，就不能通过 HttpCachePolicy 接口禁用 Cache-Control: no-transform HTTP 标头。

SetNoTransforms 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetNoTransforms 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何随当前响应一起发送 Cache-Control: no-transform 指令。

Response.Cache.SetNoTransforms()

Response.Cache.SetNoTransforms();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetOmitVaryStar 方法

HttpCachePolicy
.
.
::
.
SetOmitVaryStar 方法
HttpCachePolicy 类

指定在按参数进行区分时，响应是否应该包含 vary:* 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetOmitVaryStar ( _
    omit As Boolean _
)
public void SetOmitVaryStar(
    bool omit
)
public:
void SetOmitVaryStar(
    bool omit
)
member SetOmitVaryStar :
        omit:bool -> unit

参数

omit
类型： System Boolean
若要指示 HttpCachePolicy 不对其 VaryByHeaders 属性使用 * 值，则为 true；否则为 false。

当缓存的响应按参数进行区分时，此方法允许您禁止缓存的输出向输出响应添加 vary:* 标头。这对于按查询字符串区分缓存的客户端很有用，因为大多数客户端都会自动按查询字符串进行区分，而不需要 vary:* 标头。 当缓存的响应按参数进行区分时，此方法允许您禁止缓存的输出向输出响应添加 vary:* 标头。这对于按查询字符串区分缓存的客户端很有用，因为大多数客户端都会自动按查询字符串进行区分，而不需要 vary:* 标头。

说明 说明

使用 vary:* 标头可以禁用所有客户端缓存。

这是影响 VaryByHeaders 属性的一种便利方法。将 true 传递给该方法将指示 HttpCachePolicy 忽略 VaryByHeaders 属性的 * 值。 这是影响 VaryByHeaders 属性的一种便利方法。将 true 传递给该方法将指示 HttpCachePolicy 忽略 VaryByHeaders 属性的 * 值。

SetOmitVaryStar 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetOmitVaryStar 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetProxyMaxAge 方法

HttpCachePolicy
.
.
::
.
SetProxyMaxAge 方法
HttpCachePolicy 类

基于指定的时间跨度设置 Cache-Control: s-maxage HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetProxyMaxAge ( _
    delta As TimeSpan _
)
public void SetProxyMaxAge(
    TimeSpan delta
)
public:
void SetProxyMaxAge(
    TimeSpan delta
)
member SetProxyMaxAge :
        delta:TimeSpan -> unit

参数

delta
类型： System TimeSpan
用于设置 Cache-Control: s-maxage 标头的时间跨度。
异常 | 条件
ArgumentOutOfRangeException | delta 小于 0。

SetProxyMaxAge 不使用可调过期模式，如果过期日期违反限制原则，该方法将失败。

SetProxyMaxAge 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetProxyMaxAge 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将 Cache-Control: s-maxage 标头设置为 0 小时、30 分、0 秒。

Dim ts As New TimeSpan(0,30,0)
 Response.Cache.SetProxyMaxAge(ts)

TimeSpan ts = new TimeSpan(0,30,0);
 Response.Cache.SetProxyMaxAge(ts);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetRevalidation 方法

HttpCachePolicy
.
.
::
.
SetRevalidation 方法
HttpCachePolicy 类

基于提供的枚举值，将 Cache-Control HTTP 标头设置为 must-revalidate 或 proxy-revalidate 指令。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetRevalidation ( _
    revalidation As HttpCacheRevalidation _
)
public void SetRevalidation(
    HttpCacheRevalidation revalidation
)
public:
void SetRevalidation(
    HttpCacheRevalidation revalidation
)
member SetRevalidation :
        revalidation:HttpCacheRevalidation -> unit

参数

revalidation
类型： System.Web HttpCacheRevalidation
将 Cache-Control 标头设置为的 HttpCacheRevalidation 枚举值。
异常 | 条件
ArgumentOutOfRangeException | revalidation 不是枚举值之一。

默认值等效于 None，表示除非由此方法显式指定，否则不在标头中发送这两个指令。

SetRevalidation 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetRevalidation 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将缓存重新验证设置为 AllCaches。

Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)

Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间
HttpCacheRevalidation


HttpCachePolicy ..::.SetSlidingExpiration 方法

HttpCachePolicy
.
.
::
.
SetSlidingExpiration 方法
HttpCachePolicy 类

将缓存过期从绝对时间设置为可调时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetSlidingExpiration ( _
    slide As Boolean _
)
public void SetSlidingExpiration(
    bool slide
)
public:
void SetSlidingExpiration(
    bool slide
)
member SetSlidingExpiration :
        slide:bool -> unit

参数

slide
类型： System Boolean
true 或 false。

在将缓存过期设置为可调整时，Cache-Control HTTP 标头将随每个响应而更新。此过期模式与相对于当前时间将过期标头添加到所有输出集的 IIS 配置选项相同。 在将缓存过期设置为可调整时，Cache-Control HTTP 标头将随每个响应而更新。此过期模式与相对于当前时间将过期标头添加到所有输出集的 IIS 配置选项相同。

如果将可调整过期显式设置为关 (false )，则将保留该设置，且任何启用可调整过期的尝试都将静态失败。此方法不直接映射到 HTTP 标头。它由后续模块或辅助请求用来设置源服务器缓存策略。 如果将可调整过期显式设置为关 (false )，则将保留该设置，且任何启用可调整过期的尝试都将静态失败。此方法不直接映射到 HTTP 标头。它由后续模块或辅助请求用来设置源服务器缓存策略。 如果将可调整过期显式设置为关 (false )，则将保留该设置，且任何启用可调整过期的尝试都将静态失败。此方法不直接映射到 HTTP 标头。它由后续模块或辅助请求用来设置源服务器缓存策略。

SetSlidingExpiration 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetSlidingExpiration 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将可调过期设置为 true。

Response.Cache.SetSlidingExpiration(True)

Response.Cache.SetSlidingExpiration(true);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetValidUntilExpires 方法

HttpCachePolicy
.
.
::
.
SetValidUntilExpires 方法
HttpCachePolicy 类

指定 ASP.NET 缓存是否应忽略由使缓存无效的客户端发送的 HTTP Cache-Control 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetValidUntilExpires ( _
    validUntilExpires As Boolean _
)
public void SetValidUntilExpires(
    bool validUntilExpires
)
public:
void SetValidUntilExpires(
    bool validUntilExpires
)
member SetValidUntilExpires :
        validUntilExpires:bool -> unit

参数

validUntilExpires
类型： System Boolean
如果缓存忽略 Cache-Control 无效标头，则为 true；否则为 false。

当使用了高级 <%@ OutputCache … %> 页指令时，SetValidUntilExpires 方法将被自动设置为 true。

之所以提供此方法，是因为某些浏览器在刷新页视图时会将 HTTP 缓存无效标头发送到 Web 服务器并从缓存中收回该页。当 validUntilExpires 参数为 true 时，ASP.NET 会忽略缓存无效标头，而该页将保留在缓存中直到过期为止。 之所以提供此方法，是因为某些浏览器在刷新页视图时会将 HTTP 缓存无效标头发送到 Web 服务器并从缓存中收回该页。当 validUntilExpires 参数为 true 时，ASP.NET 会忽略缓存无效标头，而该页将保留在缓存中直到过期为止。

SetValidUntilExpires 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetValidUntilExpires 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何使用 SetValidUntilExpires 方法指示忽略客户端发送的任何缓存无效标头。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
<script language="VB" runat="server">

' The following example demonstrates the SetValidUntilExpires method of the
' HttpCachePolicy class. The SetValidUntilExpires method is set to true so that
' the ASP.NET cache ignores the HTTP Cache-Control headers and the page remains
' in the cache until it expires.

Sub Page_Load(Sender As Object, e As EventArgs)
   ' Set the expiration time for the page.
   Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
   ' Set the VaryByHeaders attribute with the value Accept-Language to true.
   Response.Cache.VaryByHeaders("Accept-Language") = True
   ' ASP.NET ignores cache invalidation headers and the page remains in
   ' the cache until it expires.
   Response.Cache.SetValidUntilExpires(True)
   Response.Write("The SetValidUntilExpires method is set to true and the ASP.NET cache will " _
      & " ignore the Cache-Control headers sent by the client that invalidate the cache.")
End Sub 'Page_Load

</script>
</head>
<body></body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
<script language="C#" runat="server">

// The following example demonstrates the SetValidUntilExpires method of the
// HttpCachePolicy class. The SetValidUntilExpires method is set to true so
// that the ASP.NET cache ignores the HTTP Cache-Control headers and the page
// remains in the cache until it expires.

void Page_Load(object Sender, EventArgs e)
{
   // Set the expiration time for the page.
   Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
   // Set the VaryByHeaders attribute with the value Accept-Language to true.
   Response.Cache.VaryByHeaders["Accept-Language"] = true;
   // ASP.NET ignores cache invalidation headers and the page remains in
   // the cache until it expires.
   Response.Cache.SetValidUntilExpires(true);
   Response.Write("The SetValidUntilExpires method is set to true and ASP.NET cache should " +
      "ignore the Cache-Control headers sent by the client that invalidate the cache.");
}

</script>
</head>
<body></body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy ..::.SetVaryByCustom 方法

HttpCachePolicy
.
.
::
.
SetVaryByCustom 方法
HttpCachePolicy 类

指定一个自定义文本字符串，以此区别缓存的输出响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetVaryByCustom ( _
    custom As String _
)
public void SetVaryByCustom(
    string custom
)
public:
void SetVaryByCustom(
    String^ custom
)
member SetVaryByCustom :
        custom:string -> unit

参数

custom
类型： System String
文本字符串，将用它来区别缓存的输出。
异常 | 条件
ArgumentNullException | custom 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 已调用 SetVaryByCustom 方法。

SetVaryByCustom 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 SetVaryByCustom 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

下面的代码示例演示如何将自定义区别字符串设置成“Accept-Charset”，这将使原始服务器的缓存根据浏览器的 Accept-Charset 标头从多个缓存响应中选择一个。

Response.Cache.SetVaryByCustom("Accept-Charset")

Response.Cache.SetVaryByCustom("Accept-Charset");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间


HttpCachePolicy 属性

HttpCachePolicy 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicy 类

HttpCachePolicy 类型公开以下成员。

名称 说明
页首

参考

HttpCachePolicy 类
System.Web 命名空间


HttpCachePolicy ..::.VaryByContentEncodings 属性

HttpCachePolicy
.
.
::
.
VaryByContentEncodings 属性
HttpCachePolicy 类

获取将用于改变输出缓存的 Content-Encoding 标头的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property VaryByContentEncodings As HttpCacheVaryByContentEncodings
    Get
public HttpCacheVaryByContentEncodings VaryByContentEncodings { get; }
public:
property HttpCacheVaryByContentEncodings^ VaryByContentEncodings {
    HttpCacheVaryByContentEncodings^ get ();
}
member VaryByContentEncodings : HttpCacheVaryByContentEncodings

属性值

类型： System.Web HttpCacheVaryByContentEncodings
指定使用哪些 Content-Encoding 标头来选择缓存响应的对象。

VaryByContentEncodings 属性返回 Content-Encoding 标头的列表，这些标头表示改变输出缓存所用的压缩方案。缓存动态压缩的响应意味着在首次请求资源的过程中只产生一次压缩成本。 VaryByContentEncodings 属性返回 Content-Encoding 标头的列表，这些标头表示改变输出缓存所用的压缩方案。缓存动态压缩的响应意味着在首次请求资源的过程中只产生一次压缩成本。

VaryByContentEncodings 属性与请求的 Accept-Encoding 标头结合使用，以确定如何为动态压缩的不同内容编码提供缓存响应。Accept-Encoding 标头列出了客户端可以解压缩的编码。 VaryByContentEncodings 属性与请求的 Accept-Encoding 标头结合使用，以确定如何为动态压缩的不同内容编码提供缓存响应。Accept-Encoding 标头列出了客户端可以解压缩的编码。

将缓存设置为根据内容编码进行改变时，响应将间接地根据 Accept-Encoding 标头中的值进行改变。处理请求之后，将检查 Accept-Encoding 标头，识别第一个可接受的编码并使用该编码进行以下操作之一： 将缓存设置为根据内容编码进行改变时，响应将间接地根据 Accept-Encoding 标头中的值进行改变。处理请求之后，将检查 Accept-Encoding 标头，识别第一个可接受的编码并使用该编码进行以下操作之一：

  • 如果在 VaryByContentEncodings 列表中找到相匹配的编码并且存在缓存响应，则发送缓存响应。

  • 如果在 VaryByContentEncodings 列表中找到相匹配的编码但不存在缓存响应，则会生成响应并将其插入到缓存中。

  • 如果在 VaryByContentEncodings 列表中找不到相匹配的编码，则会在缓存中搜索非编码响应（又称标识响应）。如果找到非编码响应，则发送它。否则，将生成新的非编码响应，发送该响应，并将其存储在缓存中。 如果在 VaryByContentEncodings 列表中找不到相匹配的编码，则会在缓存中搜索非编码响应（又称标识响应）。如果找到非编码响应，则发送它。否则，将生成新的非编码响应，发送该响应，并将其存储在缓存中。 如果在 VaryByContentEncodings 列表中找不到相匹配的编码，则会在缓存中搜索非编码响应（又称标识响应）。如果找到非编码响应，则发送它。否则，将生成新的非编码响应，发送该响应，并将其存储在缓存中。

有关 VaryByContentEncodings 属性的更多信息，请参见位于万维网联合会 (W3C) 网站上的“RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1”（RFC 2616：超文本传输协议 -- HTTP/1.1）。有关内容编码的信息位于第 14 节“Header Field Definitions”（标头字段定义）中。 有关 VaryByContentEncodings 属性的更多信息，请参见位于万维网联合会 (W3C) 网站上的“RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1”（RFC 2616：超文本传输协议 -- HTTP/1.1）。有关内容编码的信息位于第 14 节“Header Field Definitions”（标头字段定义）中。

您可以使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置 VaryByContentEncodings 属性。还可以向 Web.config 文件中的 outputCacheProfile 元素添加缓存配置文件。 您可以使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置 VaryByContentEncodings 属性。还可以向 Web.config 文件中的 outputCacheProfile 元素添加缓存配置文件。

VaryByContentEncodings 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 VaryByContentEncodings 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

以下示例演示如何为将由输出缓存提供的页启用动态压缩响应。可接受的编码是“gzip”，并使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置该编码。如果承载该页面的 Web 服务器未启用动态压缩功能，则输出缓存将不包含基于指定内容编码的缓存响应。 以下示例演示如何为将由输出缓存提供的页启用动态压缩响应。可接受的编码是“gzip”，并使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置该编码。如果承载该页面的 Web 服务器未启用动态压缩功能，则输出缓存将不包含基于指定内容编码的缓存响应。 以下示例演示如何为将由输出缓存提供的页启用动态压缩响应。可接受的编码是“gzip”，并使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置该编码。如果承载该页面的 Web 服务器未启用动态压缩功能，则输出缓存将不包含基于指定内容编码的缓存响应。

<%@ Page Language="VB" %>
<%@ OutputCache VaryByParam="none" Duration="10" VaryByContentEncodings="gzip" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Varying Output Cache By Content Encoding</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <%= DateTime.Now.ToString() %>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ OutputCache VaryByParam="none" Duration="10" VaryByContentEncodings="gzip" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Varying Output Cache By Content Encoding</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <%= DateTime.Now.ToString() %>
    </div>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间
ContentEncoding
HttpCacheVaryByContentEncodings


HttpCachePolicy ..::.VaryByHeaders 属性

HttpCachePolicy
.
.
::
.
VaryByHeaders 属性
HttpCachePolicy 类

获取将用于改变缓存输出的所有 HTTP 标头的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property VaryByHeaders As HttpCacheVaryByHeaders
    Get
public HttpCacheVaryByHeaders VaryByHeaders { get; }
public:
property HttpCacheVaryByHeaders^ VaryByHeaders {
    HttpCacheVaryByHeaders^ get ();
}
member VaryByHeaders : HttpCacheVaryByHeaders

属性值

类型： System.Web HttpCacheVaryByHeaders
一个 HttpCacheVaryByHeaders，它指定用于选择缓存响应的 HTTP 标头。

如果缓存项有若干不同的标头，则对于每种 HTTP 标头类型，缓存中都有一个单独的请求文档版本。

VaryByHeaders 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 VaryByHeaders 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间
SetOmitVaryStar
HttpCacheVaryByHeaders


HttpCachePolicy ..::.VaryByParams 属性

HttpCachePolicy
.
.
::
.
VaryByParams 属性
HttpCachePolicy 类

获取影响缓存的参数的列表，这些参数由 HTTP GET 或 HTTP POST 接收。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property VaryByParams As HttpCacheVaryByParams
    Get
public HttpCacheVaryByParams VaryByParams { get; }
public:
property HttpCacheVaryByParams^ VaryByParams {
    HttpCacheVaryByParams^ get ();
}
member VaryByParams : HttpCacheVaryByParams

属性值

类型： System.Web HttpCacheVaryByParams
一个 HttpCacheVaryByParams，它指定用于选择缓存响应的缓存控制标头。

对于 VaryByParams 集合中的每个命名的参数，都可以从缓存获得所请求文档的一个单独的版本。

VaryByParams 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 VaryByParams 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCachePolicy 类
HttpCachePolicy 成员
System.Web 命名空间
HttpCacheVaryByParams


HttpCachePolicyBase 类

HttpCachePolicyBase 类
成员

用作某些类的基类，这些类包含的方法可用于设置特定于缓存的 HTTP 标头以及用于控制 ASP.NET 页输出缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpCachePolicyBase
public abstract class HttpCachePolicyBase
public ref class HttpCachePolicyBase abstract
[<AbstractClassAttribute>]
type HttpCachePolicyBase =  class end

HttpCachePolicyBase 类为抽象类，该类包含的成员与 HttpCachePolicy 类相同。使用 HttpCachePolicyBase 类可以创建一些派生类，这些派生类与 HttpCachePolicy 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpCachePolicyBase 类为抽象类，该类包含的成员与 HttpCachePolicy 类相同。使用 HttpCachePolicyBase 类可以创建一些派生类，这些派生类与 HttpCachePolicy 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpCachePolicyBase 类为抽象类，该类包含的成员与 HttpCachePolicy 类相同。使用 HttpCachePolicyBase 类可以创建一些派生类，这些派生类与 HttpCachePolicy 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpCachePolicyWrapper 类是从 HttpCachePolicyBase 类派生的。HttpCachePolicyWrapper 类用作 HttpCachePolicy 类的包装。在运行时，通常使用 HttpCachePolicyWrapper 类的实例调用 HttpCachePolicy 对象的成员。 HttpCachePolicyWrapper 类是从 HttpCachePolicyBase 类派生的。HttpCachePolicyWrapper 类用作 HttpCachePolicy 类的包装。在运行时，通常使用 HttpCachePolicyWrapper 类的实例调用 HttpCachePolicy 对象的成员。 HttpCachePolicyWrapper 类是从 HttpCachePolicyBase 类派生的。HttpCachePolicyWrapper 类用作 HttpCachePolicy 类的包装。在运行时，通常使用 HttpCachePolicyWrapper 类的实例调用 HttpCachePolicy 对象的成员。

System.Web System.Web..::.HttpCachePolicyBaseHttpCachePolicyBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase 成员

HttpCachePolicyBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyBase 类

用作某些类的基类，这些类包含的方法可用于设置特定于缓存的 HTTP 标头以及用于控制 ASP.NET 页输出缓存。

HttpCachePolicyBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCachePolicyBase 类
System.Web 命名空间


HttpCachePolicyBase 构造函数

HttpCachePolicyBase 构造函数
HttpCachePolicyBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpCachePolicyBase()
protected:
HttpCachePolicyBase()
new : unit -> HttpCachePolicyBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase 方法

HttpCachePolicyBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyBase 类

HttpCachePolicyBase 类型公开以下成员。

名称 说明
页首

参考

HttpCachePolicyBase 类
System.Web 命名空间


HttpCachePolicyBase ..::.AddValidationCallback 方法

HttpCachePolicyBase
.
.
::
.
AddValidationCallback 方法
HttpCachePolicyBase 类

在派生类中重写时，为当前响应注册验证回调。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddValidationCallback ( _
    handler As HttpCacheValidateHandler, _
    data As Object _
)
public virtual void AddValidationCallback(
    HttpCacheValidateHandler handler,
    Object data
)
public:
virtual void AddValidationCallback(
    HttpCacheValidateHandler^ handler,
    Object^ data
)
abstract AddValidationCallback :
        handler:HttpCacheValidateHandler *
        data:Object -> unit
override AddValidationCallback :
        handler:HttpCacheValidateHandler *
        data:Object -> unit

参数

handler
类型： System.Web HttpCacheValidateHandler
将处理请求的对象。
data
类型： System Object
传递给 HttpCachePolicyWrapper..::.AddValidationCallback 委托的由用户提供的数据。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.AppendCacheExtension 方法

HttpCachePolicyBase
.
.
::
.
AppendCacheExtension 方法
HttpCachePolicyBase 类

在派生类中重写时，将指定的文本追加到 Cache-Control HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AppendCacheExtension ( _
    extension As String _
)
public virtual void AppendCacheExtension(
    string extension
)
public:
virtual void AppendCacheExtension(
    String^ extension
)
abstract AppendCacheExtension :
        extension:string -> unit
override AppendCacheExtension :
        extension:string -> unit

参数

extension
类型： System String
要追加到 Cache-Control 标头的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetAllowResponseInBrowserHistory 方法

HttpCachePolicyBase
.
.
::
.
SetAllowResponseInBrowserHistory 方法
HttpCachePolicyBase 类

在派生类中重写时，使响应在浏览器历史记录缓存中可用，而不考虑服务器上进行的 HttpCacheability 设置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetAllowResponseInBrowserHistory ( _
    allow As Boolean _
)
public virtual void SetAllowResponseInBrowserHistory(
    bool allow
)
public:
virtual void SetAllowResponseInBrowserHistory(
    bool allow
)
abstract SetAllowResponseInBrowserHistory :
        allow:bool -> unit
override SetAllowResponseInBrowserHistory :
        allow:bool -> unit

参数

allow
类型： System Boolean
如果为 true，则指示客户端浏览器在浏览器历史记录缓存中存储响应；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetCacheability 方法

HttpCachePolicyBase
.
.
::
.
SetCacheability 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyBase 类

在派生类中重写时，将 Cache-Control 标头设置为 HttpCacheability 值之一。

名称 说明
页首

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetCacheability 方法 (HttpCacheability)

HttpCachePolicyBase
.
.
::
.
SetCacheability 方法 (HttpCacheability)
HttpCachePolicyBase 类

在派生类中重写时，将 Cache-Control 标头设置为指定的 HttpCacheability 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetCacheability ( _
    cacheability As HttpCacheability _
)
public virtual void SetCacheability(
    HttpCacheability cacheability
)
public:
virtual void SetCacheability(
    HttpCacheability cacheability
)
abstract SetCacheability :
        cacheability:HttpCacheability -> unit
override SetCacheability :
        cacheability:HttpCacheability -> unit

参数

cacheability
类型： System.Web HttpCacheability
要将标头设置为的 HttpCacheability 枚举值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
SetCacheability 重载
System.Web 命名空间


HttpCachePolicyBase ..::.SetCacheability 方法 (HttpCacheability, String)

HttpCachePolicyBase
.
.
::
.
SetCacheability 方法 (HttpCacheability, String)
HttpCachePolicyBase 类

在派生类中重写时，将 Cache-Control 标头设置为指定的 HttpCacheability 值，并将扩展名追加到指令。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetCacheability ( _
    cacheability As HttpCacheability, _
    field As String _
)
public virtual void SetCacheability(
    HttpCacheability cacheability,
    string field
)
public:
virtual void SetCacheability(
    HttpCacheability cacheability,
    String^ field
)
abstract SetCacheability :
        cacheability:HttpCacheability *
        field:string -> unit
override SetCacheability :
        cacheability:HttpCacheability *
        field:string -> unit

参数

cacheability
类型： System.Web HttpCacheability
要将标头设置为的 HttpCacheability 枚举值。
field
类型： System String
要添加到标头的缓存控制扩展名。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
SetCacheability 重载
System.Web 命名空间


HttpCachePolicyBase ..::.SetETag 方法

HttpCachePolicyBase
.
.
::
.
SetETag 方法
HttpCachePolicyBase 类

在派生类中重写时，将 ETag HTTP 标头设置为指定的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetETag ( _
    etag As String _
)
public virtual void SetETag(
    string etag
)
public:
virtual void SetETag(
    String^ etag
)
abstract SetETag :
        etag:string -> unit
override SetETag :
        etag:string -> unit

参数

etag
类型： System String
将用于 ETag 标头的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetETagFromFileDependencies 方法

HttpCachePolicyBase
.
.
::
.
SetETagFromFileDependencies 方法
HttpCachePolicyBase 类

在派生类中重写时，基于处理程序的文件依赖项的时间戳设置 ETag HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetETagFromFileDependencies
public virtual void SetETagFromFileDependencies()
public:
virtual void SetETagFromFileDependencies()
abstract SetETagFromFileDependencies : unit -> unit
override SetETagFromFileDependencies : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetExpires 方法

HttpCachePolicyBase
.
.
::
.
SetExpires 方法
HttpCachePolicyBase 类

在派生类中重写时，将 Expires HTTP 标头设置为绝对日期和时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetExpires ( _
    date As DateTime _
)
public virtual void SetExpires(
    DateTime date
)
public:
virtual void SetExpires(
    DateTime date
)
abstract SetExpires :
        date:DateTime -> unit
override SetExpires :
        date:DateTime -> unit

参数

date
类型： System DateTime
绝对过期时间。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetLastModified 方法

HttpCachePolicyBase
.
.
::
.
SetLastModified 方法
HttpCachePolicyBase 类

在派生类中重写时，将 Last-Modified HTTP 标头设置为指定的日期和时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetLastModified ( _
    date As DateTime _
)
public virtual void SetLastModified(
    DateTime date
)
public:
virtual void SetLastModified(
    DateTime date
)
abstract SetLastModified :
        date:DateTime -> unit
override SetLastModified :
        date:DateTime -> unit

参数

date
类型： System DateTime
要将 Last-Modified 标头设置为的日期-时间值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetLastModifiedFromFileDependencies 方法

HttpCachePolicyBase
.
.
::
.
SetLastModifiedFromFileDependencies 方法
HttpCachePolicyBase 类

在派生类中重写时，基于处理程序的文件依赖项的时间戳设置 Last-Modified HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetLastModifiedFromFileDependencies
public virtual void SetLastModifiedFromFileDependencies()
public:
virtual void SetLastModifiedFromFileDependencies()
abstract SetLastModifiedFromFileDependencies : unit -> unit
override SetLastModifiedFromFileDependencies : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetMaxAge 方法

HttpCachePolicyBase
.
.
::
.
SetMaxAge 方法
HttpCachePolicyBase 类

在派生类中重写时，将 Cache-Control: max-age HTTP 标头设置为指定的时间跨度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetMaxAge ( _
    delta As TimeSpan _
)
public virtual void SetMaxAge(
    TimeSpan delta
)
public:
virtual void SetMaxAge(
    TimeSpan delta
)
abstract SetMaxAge :
        delta:TimeSpan -> unit
override SetMaxAge :
        delta:TimeSpan -> unit

参数

delta
类型： System TimeSpan
要将 Cache-Control: max-age 标头设置为的时间跨度。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetNoServerCaching 方法

HttpCachePolicyBase
.
.
::
.
SetNoServerCaching 方法
HttpCachePolicyBase 类

在派生类中重写时，停止当前响应的所有源服务器缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetNoServerCaching
public virtual void SetNoServerCaching()
public:
virtual void SetNoServerCaching()
abstract SetNoServerCaching : unit -> unit
override SetNoServerCaching : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetNoStore 方法

HttpCachePolicyBase
.
.
::
.
SetNoStore 方法
HttpCachePolicyBase 类

在派生类中重写时，设置 Cache-Control: no-store HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetNoStore
public virtual void SetNoStore()
public:
virtual void SetNoStore()
abstract SetNoStore : unit -> unit
override SetNoStore : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetNoTransforms 方法

HttpCachePolicyBase
.
.
::
.
SetNoTransforms 方法
HttpCachePolicyBase 类

在派生类中重写时，设置 Cache-Control: no-transform HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetNoTransforms
public virtual void SetNoTransforms()
public:
virtual void SetNoTransforms()
abstract SetNoTransforms : unit -> unit
override SetNoTransforms : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetOmitVaryStar 方法

HttpCachePolicyBase
.
.
::
.
SetOmitVaryStar 方法
HttpCachePolicyBase 类

在派生类中重写时，指定响应在缓存随参数而变化时是否包含 vary:* 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetOmitVaryStar ( _
    omit As Boolean _
)
public virtual void SetOmitVaryStar(
    bool omit
)
public:
virtual void SetOmitVaryStar(
    bool omit
)
abstract SetOmitVaryStar :
        omit:bool -> unit
override SetOmitVaryStar :
        omit:bool -> unit

参数

omit
类型： System Boolean
如果为 true，则指示 HttpCachePolicy 对象不为其 VaryByHeaders 属性使用 * 值；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetProxyMaxAge 方法

HttpCachePolicyBase
.
.
::
.
SetProxyMaxAge 方法
HttpCachePolicyBase 类

在派生类中重写时，将 Cache-Control: s-maxage HTTP 标头设置为指定的时间跨度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetProxyMaxAge ( _
    delta As TimeSpan _
)
public virtual void SetProxyMaxAge(
    TimeSpan delta
)
public:
virtual void SetProxyMaxAge(
    TimeSpan delta
)
abstract SetProxyMaxAge :
        delta:TimeSpan -> unit
override SetProxyMaxAge :
        delta:TimeSpan -> unit

参数

delta
类型： System TimeSpan
要将 Cache-Control: s-maxage 标头设置为的时间跨度。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetRevalidation 方法

HttpCachePolicyBase
.
.
::
.
SetRevalidation 方法
HttpCachePolicyBase 类

在派生类中重写时，基于指定的枚举值将 Cache-Control HTTP 标头设置为 must-revalidate 或 proxy-revalidate 指令。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetRevalidation ( _
    revalidation As HttpCacheRevalidation _
)
public virtual void SetRevalidation(
    HttpCacheRevalidation revalidation
)
public:
virtual void SetRevalidation(
    HttpCacheRevalidation revalidation
)
abstract SetRevalidation :
        revalidation:HttpCacheRevalidation -> unit
override SetRevalidation :
        revalidation:HttpCacheRevalidation -> unit

参数

revalidation
类型： System.Web HttpCacheRevalidation
将 Cache-Control 标头设置为的 HttpCacheRevalidation 枚举值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetSlidingExpiration 方法

HttpCachePolicyBase
.
.
::
.
SetSlidingExpiration 方法
HttpCachePolicyBase 类

在派生类中重写时，将缓存过期时间设置为绝对或可调时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetSlidingExpiration ( _
    slide As Boolean _
)
public virtual void SetSlidingExpiration(
    bool slide
)
public:
virtual void SetSlidingExpiration(
    bool slide
)
abstract SetSlidingExpiration :
        slide:bool -> unit
override SetSlidingExpiration :
        slide:bool -> unit

参数

slide
类型： System Boolean
如果为 true，则设置为可调缓存过期，如果为 false，则设置为绝对缓存过期。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetValidUntilExpires 方法

HttpCachePolicyBase
.
.
::
.
SetValidUntilExpires 方法
HttpCachePolicyBase 类

在派生类中重写时，指定 ASP.NET 缓存是否应忽略客户端发送的使缓存无效的 HTTP Cache-Control 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetValidUntilExpires ( _
    validUntilExpires As Boolean _
)
public virtual void SetValidUntilExpires(
    bool validUntilExpires
)
public:
virtual void SetValidUntilExpires(
    bool validUntilExpires
)
abstract SetValidUntilExpires :
        validUntilExpires:bool -> unit
override SetValidUntilExpires :
        validUntilExpires:bool -> unit

参数

validUntilExpires
类型： System Boolean
如果为 true，则指定 ASP.NET 应忽略使缓存无效的 Cache-Control 标头；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.SetVaryByCustom 方法

HttpCachePolicyBase
.
.
::
.
SetVaryByCustom 方法
HttpCachePolicyBase 类

在派生类中重写时，指定用于区别缓存的输出响应的文本字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetVaryByCustom ( _
    custom As String _
)
public virtual void SetVaryByCustom(
    string custom
)
public:
virtual void SetVaryByCustom(
    String^ custom
)
abstract SetVaryByCustom :
        custom:string -> unit
override SetVaryByCustom :
        custom:string -> unit

参数

custom
类型： System String
文本字符串，将用它来区别缓存的输出。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase 属性

HttpCachePolicyBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyBase 类

HttpCachePolicyBase 类型公开以下成员。

名称 说明
页首

参考

HttpCachePolicyBase 类
System.Web 命名空间


HttpCachePolicyBase ..::.VaryByContentEncodings 属性

HttpCachePolicyBase
.
.
::
.
VaryByContentEncodings 属性
HttpCachePolicyBase 类

在派生类中重写时，获取用于区别输出缓存的 Content-Encoding 标头的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property VaryByContentEncodings As HttpCacheVaryByContentEncodings
    Get
public virtual HttpCacheVaryByContentEncodings VaryByContentEncodings { get; }
public:
virtual property HttpCacheVaryByContentEncodings^ VaryByContentEncodings {
    HttpCacheVaryByContentEncodings^ get ();
}
abstract VaryByContentEncodings : HttpCacheVaryByContentEncodings
override VaryByContentEncodings : HttpCacheVaryByContentEncodings

属性值

类型： System.Web HttpCacheVaryByContentEncodings
用于选择缓存的响应的 Content-Encoding 标头。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.VaryByHeaders 属性

HttpCachePolicyBase
.
.
::
.
VaryByHeaders 属性
HttpCachePolicyBase 类

在派生类中重写时，获取用于区别缓存输出的所有 HTTP 标头的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property VaryByHeaders As HttpCacheVaryByHeaders
    Get
public virtual HttpCacheVaryByHeaders VaryByHeaders { get; }
public:
virtual property HttpCacheVaryByHeaders^ VaryByHeaders {
    HttpCacheVaryByHeaders^ get ();
}
abstract VaryByHeaders : HttpCacheVaryByHeaders
override VaryByHeaders : HttpCacheVaryByHeaders

属性值

类型： System.Web HttpCacheVaryByHeaders
用于选择缓存的响应的 HTTP 标头。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyBase ..::.VaryByParams 属性

HttpCachePolicyBase
.
.
::
.
VaryByParams 属性
HttpCachePolicyBase 类

在派生类中重写时，获取通过影响缓存的 HTTP GET 或 POST 谓词接收的参数的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property VaryByParams As HttpCacheVaryByParams
    Get
public virtual HttpCacheVaryByParams VaryByParams { get; }
public:
virtual property HttpCacheVaryByParams^ VaryByParams {
    HttpCacheVaryByParams^ get ();
}
abstract VaryByParams : HttpCacheVaryByParams
override VaryByParams : HttpCacheVaryByParams

属性值

类型： System.Web HttpCacheVaryByParams
用于选择缓存的响应的缓存控制参数。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyBase 类
HttpCachePolicyBase 成员
System.Web 命名空间


HttpCachePolicyWrapper 类

HttpCachePolicyWrapper 类
成员

封装 HTTP 内部对象，该对象包含的方法可用于设置特定于缓存的 HTTP 标头以及用于控制 ASP.NET 页输出缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpCachePolicyWrapper _
    Inherits HttpCachePolicyBase
public class HttpCachePolicyWrapper : HttpCachePolicyBase
public ref class HttpCachePolicyWrapper : public HttpCachePolicyBase
type HttpCachePolicyWrapper =
    class
        inherit HttpCachePolicyBase
    end

HttpCachePolicyWrapper 类从 HttpCachePolicyBase 类派生，并用作 HttpCachePolicy 类的包装。此类公开 HttpCachePolicy 类的功能，同时还公开 HttpCachePolicyBase 类型。使用 HttpCachePolicyBase 类可以将应用程序中 HttpCachePolicy 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpCachePolicyWrapper 类从 HttpCachePolicyBase 类派生，并用作 HttpCachePolicy 类的包装。此类公开 HttpCachePolicy 类的功能，同时还公开 HttpCachePolicyBase 类型。使用 HttpCachePolicyBase 类可以将应用程序中 HttpCachePolicy 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpCachePolicyWrapper 类从 HttpCachePolicyBase 类派生，并用作 HttpCachePolicy 类的包装。此类公开 HttpCachePolicy 类的功能，同时还公开 HttpCachePolicyBase 类型。使用 HttpCachePolicyBase 类可以将应用程序中 HttpCachePolicy 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpCachePolicyWrapperHttpCachePolicyWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper 成员

HttpCachePolicyWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyWrapper 类

封装 HTTP 内部对象，该对象包含的方法可用于设置特定于缓存的 HTTP 标头以及用于控制 ASP.NET 页输出缓存。

HttpCachePolicyWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCachePolicyWrapper 类
System.Web 命名空间


HttpCachePolicyWrapper 构造函数

HttpCachePolicyWrapper 构造函数
HttpCachePolicyWrapper 类

初始化 HttpCachePolicyWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpCachePolicy As HttpCachePolicy _
)
public HttpCachePolicyWrapper(
    HttpCachePolicy httpCachePolicy
)
public:
HttpCachePolicyWrapper(
    HttpCachePolicy^ httpCachePolicy
)
new :
        httpCachePolicy:HttpCachePolicy -> HttpCachePolicyWrapper

参数

httpCachePolicy
类型： System.Web HttpCachePolicy
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpCachePolicy 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper 方法

HttpCachePolicyWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyWrapper 类

HttpCachePolicyWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpCachePolicyWrapper 类
System.Web 命名空间


HttpCachePolicyWrapper ..::.AddValidationCallback 方法

HttpCachePolicyWrapper
.
.
::
.
AddValidationCallback 方法
HttpCachePolicyWrapper 类

注册当前响应的验证回调。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddValidationCallback ( _
    handler As HttpCacheValidateHandler, _
    data As Object _
)
public override void AddValidationCallback(
    HttpCacheValidateHandler handler,
    Object data
)
public:
virtual void AddValidationCallback(
    HttpCacheValidateHandler^ handler,
    Object^ data
) override
abstract AddValidationCallback :
        handler:HttpCacheValidateHandler *
        data:Object -> unit
override AddValidationCallback :
        handler:HttpCacheValidateHandler *
        data:Object -> unit

参数

handler
类型： System.Web HttpCacheValidateHandler
将处理请求的对象。
data
类型： System Object
传递给 AddValidationCallback 委托的由用户提供的数据。
异常 | 条件
ArgumentNullException | 指定的 handler 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.AppendCacheExtension 方法

HttpCachePolicyWrapper
.
.
::
.
AppendCacheExtension 方法
HttpCachePolicyWrapper 类

将指定的文本追加到 Cache-Control HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AppendCacheExtension ( _
    extension As String _
)
public override void AppendCacheExtension(
    string extension
)
public:
virtual void AppendCacheExtension(
    String^ extension
) override
abstract AppendCacheExtension :
        extension:string -> unit
override AppendCacheExtension :
        extension:string -> unit

参数

extension
类型： System String
要追加到 Cache-Control 标头的文本。
异常 | 条件
ArgumentNullException | extension 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetAllowResponseInBrowserHistory 方法

HttpCachePolicyWrapper
.
.
::
.
SetAllowResponseInBrowserHistory 方法
HttpCachePolicyWrapper 类

使响应在浏览器历史记录缓存中可用，而不考虑服务器上进行的 HttpCacheability 设置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetAllowResponseInBrowserHistory ( _
    allow As Boolean _
)
public override void SetAllowResponseInBrowserHistory(
    bool allow
)
public:
virtual void SetAllowResponseInBrowserHistory(
    bool allow
) override
abstract SetAllowResponseInBrowserHistory :
        allow:bool -> unit
override SetAllowResponseInBrowserHistory :
        allow:bool -> unit

参数

allow
类型： System Boolean
如果为 true，则指示客户端浏览器在浏览器历史记录缓存中存储响应；否则为 false。默认值为 false。 如果为 true，则指示客户端浏览器在浏览器历史记录缓存中存储响应；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetCacheability 方法

HttpCachePolicyWrapper
.
.
::
.
SetCacheability 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyWrapper 类

将 Cache-Control 标头设置为 HttpCacheability 值之一。

名称 说明
页首

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetCacheability 方法 (HttpCacheability)

HttpCachePolicyWrapper
.
.
::
.
SetCacheability 方法 (HttpCacheability)
HttpCachePolicyWrapper 类

将 Cache-Control 标头设置为指定的 HttpCacheability 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetCacheability ( _
    cacheability As HttpCacheability _
)
public override void SetCacheability(
    HttpCacheability cacheability
)
public:
virtual void SetCacheability(
    HttpCacheability cacheability
) override
abstract SetCacheability :
        cacheability:HttpCacheability -> unit
override SetCacheability :
        cacheability:HttpCacheability -> unit

参数

cacheability
类型： System.Web HttpCacheability
要将标头设置为的 HttpCacheability 枚举值。
异常 | 条件
ArgumentOutOfRangeException | cacheability 不是枚举值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
SetCacheability 重载
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetCacheability 方法 (HttpCacheability, String)

HttpCachePolicyWrapper
.
.
::
.
SetCacheability 方法 (HttpCacheability, String)
HttpCachePolicyWrapper 类

将 Cache-Control 标头设置为指定的 HttpCacheability 值，并将扩展名追加到指令。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetCacheability ( _
    cacheability As HttpCacheability, _
    field As String _
)
public override void SetCacheability(
    HttpCacheability cacheability,
    string field
)
public:
virtual void SetCacheability(
    HttpCacheability cacheability,
    String^ field
) override
abstract SetCacheability :
        cacheability:HttpCacheability *
        field:string -> unit
override SetCacheability :
        cacheability:HttpCacheability *
        field:string -> unit

参数

cacheability
类型： System.Web HttpCacheability
要将标头设置为的 HttpCacheability 枚举值。
field
类型： System String
要添加到标头的缓存控制扩展名。
异常 | 条件
ArgumentNullException | field 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | cacheability 不是 Private 或 NoCache。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
SetCacheability 重载
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetETag 方法

HttpCachePolicyWrapper
.
.
::
.
SetETag 方法
HttpCachePolicyWrapper 类

将 ETag HTTP 标头设置为指定字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetETag ( _
    etag As String _
)
public override void SetETag(
    string etag
)
public:
virtual void SetETag(
    String^ etag
) override
abstract SetETag :
        etag:string -> unit
override SetETag :
        etag:string -> unit

参数

etag
类型： System String
将用于 ETag 标头的文本。
异常 | 条件
ArgumentNullException | etag 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 已设置 ETag 标头。 - 或 - 已调用 SetETagFromFileDependencies 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetETagFromFileDependencies 方法

HttpCachePolicyWrapper
.
.
::
.
SetETagFromFileDependencies 方法
HttpCachePolicyWrapper 类

基于处理程序文件依赖项的时间戳设置 ETag HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetETagFromFileDependencies
public override void SetETagFromFileDependencies()
public:
virtual void SetETagFromFileDependencies() override
abstract SetETagFromFileDependencies : unit -> unit
override SetETagFromFileDependencies : unit -> unit
异常 | 条件
InvalidOperationException | 已设置 ETag 标头。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetExpires 方法

HttpCachePolicyWrapper
.
.
::
.
SetExpires 方法
HttpCachePolicyWrapper 类

将 Expires HTTP 标头设置为绝对日期和时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetExpires ( _
    date As DateTime _
)
public override void SetExpires(
    DateTime date
)
public:
virtual void SetExpires(
    DateTime date
) override
abstract SetExpires :
        date:DateTime -> unit
override SetExpires :
        date:DateTime -> unit

参数

date
类型： System DateTime
绝对过期时间。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetLastModified 方法

HttpCachePolicyWrapper
.
.
::
.
SetLastModified 方法
HttpCachePolicyWrapper 类

将 Last-Modified HTTP 标头设置为指定日期和时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetLastModified ( _
    date As DateTime _
)
public override void SetLastModified(
    DateTime date
)
public:
virtual void SetLastModified(
    DateTime date
) override
abstract SetLastModified :
        date:DateTime -> unit
override SetLastModified :
        date:DateTime -> unit

参数

date
类型： System DateTime
要将 Last-Modified 标头设置为的日期-时间值。
异常 | 条件
ArgumentOutOfRangeException | date 比当前 DateTime 晚。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetLastModifiedFromFileDependencies 方法

HttpCachePolicyWrapper
.
.
::
.
SetLastModifiedFromFileDependencies 方法
HttpCachePolicyWrapper 类

基于处理程序文件依赖项的时间戳设置 Last-Modified HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetLastModifiedFromFileDependencies
public override void SetLastModifiedFromFileDependencies()
public:
virtual void SetLastModifiedFromFileDependencies() override
abstract SetLastModifiedFromFileDependencies : unit -> unit
override SetLastModifiedFromFileDependencies : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetMaxAge 方法

HttpCachePolicyWrapper
.
.
::
.
SetMaxAge 方法
HttpCachePolicyWrapper 类

将 Cache-Control: max-age HTTP 标头设置为指定的时间跨度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetMaxAge ( _
    delta As TimeSpan _
)
public override void SetMaxAge(
    TimeSpan delta
)
public:
virtual void SetMaxAge(
    TimeSpan delta
) override
abstract SetMaxAge :
        delta:TimeSpan -> unit
override SetMaxAge :
        delta:TimeSpan -> unit

参数

delta
类型： System TimeSpan
要将 Cache-Control: max-age 标头设置为的时间跨度。
异常 | 条件
ArgumentOutOfRangeException | delta 小于 0 或大于 1 年。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetNoServerCaching 方法

HttpCachePolicyWrapper
.
.
::
.
SetNoServerCaching 方法
HttpCachePolicyWrapper 类

停止当前响应的所有源服务器缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetNoServerCaching
public override void SetNoServerCaching()
public:
virtual void SetNoServerCaching() override
abstract SetNoServerCaching : unit -> unit
override SetNoServerCaching : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetNoStore 方法

HttpCachePolicyWrapper
.
.
::
.
SetNoStore 方法
HttpCachePolicyWrapper 类

设置 Cache-Control: no-store HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetNoStore
public override void SetNoStore()
public:
virtual void SetNoStore() override
abstract SetNoStore : unit -> unit
override SetNoStore : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetNoTransforms 方法

HttpCachePolicyWrapper
.
.
::
.
SetNoTransforms 方法
HttpCachePolicyWrapper 类

设置 Cache-Control: no-transform HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetNoTransforms
public override void SetNoTransforms()
public:
virtual void SetNoTransforms() override
abstract SetNoTransforms : unit -> unit
override SetNoTransforms : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetOmitVaryStar 方法

HttpCachePolicyWrapper
.
.
::
.
SetOmitVaryStar 方法
HttpCachePolicyWrapper 类

指定响应在随参数而改变时是否包含 vary:* 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetOmitVaryStar ( _
    omit As Boolean _
)
public override void SetOmitVaryStar(
    bool omit
)
public:
virtual void SetOmitVaryStar(
    bool omit
) override
abstract SetOmitVaryStar :
        omit:bool -> unit
override SetOmitVaryStar :
        omit:bool -> unit

参数

omit
类型： System Boolean
如果为 true，则指示 HttpCachePolicy 对象不为其 VaryByHeaders 属性使用 * 值；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetProxyMaxAge 方法

HttpCachePolicyWrapper
.
.
::
.
SetProxyMaxAge 方法
HttpCachePolicyWrapper 类

将 Cache-Control: s-maxage HTTP 标头设置为指定的时间跨度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetProxyMaxAge ( _
    delta As TimeSpan _
)
public override void SetProxyMaxAge(
    TimeSpan delta
)
public:
virtual void SetProxyMaxAge(
    TimeSpan delta
) override
abstract SetProxyMaxAge :
        delta:TimeSpan -> unit
override SetProxyMaxAge :
        delta:TimeSpan -> unit

参数

delta
类型： System TimeSpan
要将 Cache-Control: s-maxage 标头设置为的时间跨度。
异常 | 条件
ArgumentOutOfRangeException | delta 小于 0。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetRevalidation 方法

HttpCachePolicyWrapper
.
.
::
.
SetRevalidation 方法
HttpCachePolicyWrapper 类

基于指定枚举值将 Cache-Control HTTP 标头设置为 must-revalidate 或 proxy-revalidate 指令。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetRevalidation ( _
    revalidation As HttpCacheRevalidation _
)
public override void SetRevalidation(
    HttpCacheRevalidation revalidation
)
public:
virtual void SetRevalidation(
    HttpCacheRevalidation revalidation
) override
abstract SetRevalidation :
        revalidation:HttpCacheRevalidation -> unit
override SetRevalidation :
        revalidation:HttpCacheRevalidation -> unit

参数

revalidation
类型： System.Web HttpCacheRevalidation
将 Cache-Control 标头设置为的 HttpCacheRevalidation 枚举值。
异常 | 条件
ArgumentOutOfRangeException | revalidation 不是枚举值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetSlidingExpiration 方法

HttpCachePolicyWrapper
.
.
::
.
SetSlidingExpiration 方法
HttpCachePolicyWrapper 类

将缓存过期时间设置为绝对或可调时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetSlidingExpiration ( _
    slide As Boolean _
)
public override void SetSlidingExpiration(
    bool slide
)
public:
virtual void SetSlidingExpiration(
    bool slide
) override
abstract SetSlidingExpiration :
        slide:bool -> unit
override SetSlidingExpiration :
        slide:bool -> unit

参数

slide
类型： System Boolean
如果为 true，则设置为可调缓存过期，如果为 false，则设置为绝对缓存过期。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetValidUntilExpires 方法

HttpCachePolicyWrapper
.
.
::
.
SetValidUntilExpires 方法
HttpCachePolicyWrapper 类

指定 ASP.NET 缓存是否应忽略由使缓存无效的客户端发送的 HTTP Cache-Control 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetValidUntilExpires ( _
    validUntilExpires As Boolean _
)
public override void SetValidUntilExpires(
    bool validUntilExpires
)
public:
virtual void SetValidUntilExpires(
    bool validUntilExpires
) override
abstract SetValidUntilExpires :
        validUntilExpires:bool -> unit
override SetValidUntilExpires :
        validUntilExpires:bool -> unit

参数

validUntilExpires
类型： System Boolean
如果为 true，则指定 ASP.NET 应忽略使缓存无效的 Cache-Control 标头；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.SetVaryByCustom 方法

HttpCachePolicyWrapper
.
.
::
.
SetVaryByCustom 方法
HttpCachePolicyWrapper 类

指定用于区别缓存的输出响应的文本字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetVaryByCustom ( _
    custom As String _
)
public override void SetVaryByCustom(
    string custom
)
public:
virtual void SetVaryByCustom(
    String^ custom
) override
abstract SetVaryByCustom :
        custom:string -> unit
override SetVaryByCustom :
        custom:string -> unit

参数

custom
类型： System String
文本字符串，将用它来区别缓存的输出。
异常 | 条件
ArgumentNullException | custom 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 已调用 SetVaryByCustom 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper 属性

HttpCachePolicyWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCachePolicyWrapper 类

HttpCachePolicyWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpCachePolicyWrapper 类
System.Web 命名空间


HttpCachePolicyWrapper ..::.VaryByContentEncodings 属性

HttpCachePolicyWrapper
.
.
::
.
VaryByContentEncodings 属性
HttpCachePolicyWrapper 类

获取将用于改变输出缓存的 Content-Encoding 标头的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property VaryByContentEncodings As HttpCacheVaryByContentEncodings
    Get
public override HttpCacheVaryByContentEncodings VaryByContentEncodings { get; }
public:
virtual property HttpCacheVaryByContentEncodings^ VaryByContentEncodings {
    HttpCacheVaryByContentEncodings^ get () override;
}
abstract VaryByContentEncodings : HttpCacheVaryByContentEncodings
override VaryByContentEncodings : HttpCacheVaryByContentEncodings

属性值

类型： System.Web HttpCacheVaryByContentEncodings
指定使用哪些 Content-Encoding 标头来选择缓存响应的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.VaryByHeaders 属性

HttpCachePolicyWrapper
.
.
::
.
VaryByHeaders 属性
HttpCachePolicyWrapper 类

获取将用于改变缓存输出的所有 HTTP 标头的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property VaryByHeaders As HttpCacheVaryByHeaders
    Get
public override HttpCacheVaryByHeaders VaryByHeaders { get; }
public:
virtual property HttpCacheVaryByHeaders^ VaryByHeaders {
    HttpCacheVaryByHeaders^ get () override;
}
abstract VaryByHeaders : HttpCacheVaryByHeaders
override VaryByHeaders : HttpCacheVaryByHeaders

属性值

类型： System.Web HttpCacheVaryByHeaders
一个对象，指定用于选择缓存的响应的 HTTP 标头。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCachePolicyWrapper ..::.VaryByParams 属性

HttpCachePolicyWrapper
.
.
::
.
VaryByParams 属性
HttpCachePolicyWrapper 类

获取影响缓存的参数的列表，这些参数由 HTTP GET 或 HTTP POST 接收。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property VaryByParams As HttpCacheVaryByParams
    Get
public override HttpCacheVaryByParams VaryByParams { get; }
public:
virtual property HttpCacheVaryByParams^ VaryByParams {
    HttpCacheVaryByParams^ get () override;
}
abstract VaryByParams : HttpCacheVaryByParams
override VaryByParams : HttpCacheVaryByParams

属性值

类型： System.Web HttpCacheVaryByParams
一个对象，指定用于选择缓存的响应的缓存控制参数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpCachePolicyWrapper 类
HttpCachePolicyWrapper 成员
System.Web 命名空间


HttpCacheRevalidation 枚举

HttpCacheRevalidation 枚举

提供用于设置重新验证特定的 Cache-Control HTTP 标头的枚举值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration HttpCacheRevalidation
public enum HttpCacheRevalidation
public enum class HttpCacheRevalidation
type HttpCacheRevalidation
成员名称 | 说明
AllCaches | 将 HTTP 标头设置为 Cache-Control: must-revalidate。
ProxyCaches | 将 HTTP 标头设置为 Cache-Control: proxy-revalidate。
None | 如果已设置该值，则不发送任何缓存重新验证指令。默认值。 如果已设置该值，则不发送任何缓存重新验证指令。默认值。

HttpCacheRevalidation 枚举用于设置特定于重新验证的 HTTP 标头，并使用 SetRevalidation 方法来设置。如果未调用 SetRevalidation 方法，则不会设置任何 Cache-Control HTTP 标头。 HttpCacheRevalidation 枚举用于设置特定于重新验证的 HTTP 标头，并使用 SetRevalidation 方法来设置。如果未调用 SetRevalidation 方法，则不会设置任何 Cache-Control HTTP 标头。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpCachePolicy
SetRevalidation


HttpCacheValidateHandler 委托

HttpCacheValidateHandler 委托

表示一个方法，在从缓存提供某个缓存项之前将调用该方法来验证该项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Sub HttpCacheValidateHandler ( _
    context As HttpContext, _
    data As Object, _
    ByRef validationStatus As HttpValidationStatus _
)
public delegate void HttpCacheValidateHandler(
    HttpContext context,
    Object data,
    ref HttpValidationStatus validationStatus
)
public delegate void HttpCacheValidateHandler(
    HttpContext^ context,
    Object^ data,
    HttpValidationStatus% validationStatus
)
type HttpCacheValidateHandler =
    delegate of
        context:HttpContext *
        data:Object *
        validationStatus:HttpValidationStatus byref -> unit

参数

context
类型： System.Web HttpContext
包含有关当前请求的信息的 HttpContext 对象。
data
类型： System Object
用于验证缓存项的用户提供的数据。
validationStatus
类型： System.Web HttpValidationStatus %
HttpValidationStatus 枚举值。您的委托应设置该值来指示验证的结果。 HttpValidationStatus 枚举值。您的委托应设置该值来指示验证的结果。

如果缓存项在 HttpCacheValidateHandler 方法的范围内被验证为无效，则从缓存中剔除该缓存项，针对该缓存项的请求被视为缓存未命中。

下面的代码示例演示如何向应用程序添加新的缓存验证委托。

Private Sub Page_Load(sender As Object, e As EventArgs)
   Response.Cache.AddValidationCallback(New HttpCacheValidateHandler(AddressOf CacheValidate1), Nothing)
End Sub

Public Sub CacheValidate1(context As HttpContext, data As Object, ByRef status As HttpValidationStatus)
   If context.Request.QueryString("Valid") = "false" Then
      status = HttpValidationStatus.Invalid
   Else
      status = HttpValidationStatus.Valid
   End If
End Sub

private void Page_Load(Object sender, EventArgs e)
{
   Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(CacheValidate1), null);
}

public void CacheValidate1(HttpContext context, Object data, ref HttpValidationStatus status)
{
   if (context.Request.QueryString["Valid"] == "false")
   {
      status = HttpValidationStatus.Invalid;
   }
   else
   {
      status = HttpValidationStatus.Valid;
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpCachePolicy


HttpCacheVaryByContentEncodings 类

HttpCacheVaryByContentEncodings 类
成员

提供一种类型安全的方式来设置 HttpCachePolicy 类的 VaryByContentEncodings 属性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpCacheVaryByContentEncodings
public sealed class HttpCacheVaryByContentEncodings
public ref class HttpCacheVaryByContentEncodings sealed
[<SealedAttribute>]
type HttpCacheVaryByContentEncodings =  class end

VaryByContentEncodings 属性用来指定是否缓存动态压缩的响应。缓存动态压缩的响应意味着压缩的成本只发生一次，即在对资源的第一次请求期间（或应用程序重新启动之后）以及缓存项过期时。 VaryByContentEncodings 属性用来指定是否缓存动态压缩的响应。缓存动态压缩的响应意味着压缩的成本只发生一次，即在对资源的第一次请求期间（或应用程序重新启动之后）以及缓存项过期时。

HttpCachePolicy 类的 VaryByContentEncodings 属性标识在对于某个资源存在多个缓存响应的情况下，ASP.NET 使用哪些请求标头参数来唯一标识该响应的某个变体。当响应依赖于一组客户端输入（如标头、参数或内容编码）时，此属性很有用。 HttpCachePolicy 类的 VaryByContentEncodings 属性标识在对于某个资源存在多个缓存响应的情况下，ASP.NET 使用哪些请求标头参数来唯一标识该响应的某个变体。当响应依赖于一组客户端输入（如标头、参数或内容编码）时，此属性很有用。

HttpCacheVaryByContentEncodings 类不与 HTTP 缓存控制标头直接相关。但是，它有助于确保对客户端或对代理的响应随指定的内容编码而变化。将缓存设置为随内容编码而变化将使 ASP.NET 能根据 Accept-Encoding 标头变换响应。处理请求之后，将检查 Accept-Encoding 标头，识别第一个可接受的编码并使用该编码进行以下操作之一： HttpCacheVaryByContentEncodings 类不与 HTTP 缓存控制标头直接相关。但是，它有助于确保对客户端或对代理的响应随指定的内容编码而变化。将缓存设置为随内容编码而变化将使 ASP.NET 能根据 Accept-Encoding 标头变换响应。处理请求之后，将检查 Accept-Encoding 标头，识别第一个可接受的编码并使用该编码进行以下操作之一： HttpCacheVaryByContentEncodings 类不与 HTTP 缓存控制标头直接相关。但是，它有助于确保对客户端或对代理的响应随指定的内容编码而变化。将缓存设置为随内容编码而变化将使 ASP.NET 能根据 Accept-Encoding 标头变换响应。处理请求之后，将检查 Accept-Encoding 标头，识别第一个可接受的编码并使用该编码进行以下操作之一： HttpCacheVaryByContentEncodings 类不与 HTTP 缓存控制标头直接相关。但是，它有助于确保对客户端或对代理的响应随指定的内容编码而变化。将缓存设置为随内容编码而变化将使 ASP.NET 能根据 Accept-Encoding 标头变换响应。处理请求之后，将检查 Accept-Encoding 标头，识别第一个可接受的编码并使用该编码进行以下操作之一：

  • 如果在 VaryByContentEncodings 列表中还找到相匹配的编码并且存在缓存响应，则发送缓存的响应。

  • 如果在 VaryByContentEncodings 列表中还找到相匹配的编码但不存在缓存响应，则会生成响应并将其插入到缓存中。

  • 如果在 VaryByContentEncodings 列表中找不到相匹配的编码，则会在缓存中搜索非编码响应（又称标识响应）。如果找到标识响应，则发送该响应。否则，将生成新的非编码响应，并将其存储在缓存中。 如果在 VaryByContentEncodings 列表中找不到相匹配的编码，则会在缓存中搜索非编码响应（又称标识响应）。如果找到标识响应，则发送该响应。否则，将生成新的非编码响应，并将其存储在缓存中。 如果在 VaryByContentEncodings 列表中找不到相匹配的编码，则会在缓存中搜索非编码响应（又称标识响应）。如果找到标识响应，则发送该响应。否则，将生成新的非编码响应，并将其存储在缓存中。

有关 VaryByContentEncodings 属性的更多信息，请参见“RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1”（RFC 2616：超文本传输协议 -- HTTP/1.1），此文档位于 World Wide Web Consortium (W3C) Web site（万维网联合会 (W3C) 网站）。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关 VaryByContentEncodings 属性的更多信息，请参见“RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1”（RFC 2616：超文本传输协议 -- HTTP/1.1），此文档位于 World Wide Web Consortium (W3C) Web site（万维网联合会 (W3C) 网站）。有关全部详细信息，请参见第 14 节“标头字段定义”。

可以使用 @ OutputCache 指令或向 Web.config 文件中的 outputCacheProfile 元素添加一个配置文件来设置 VaryByContentEncodings 属性。

下面的示例演示如何启用可从输出缓存提供的动态压缩响应。可接受的编码是“gzip”，并使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置该编码。如果承载该页面的 Web 服务器未启用动态压缩功能，则输出缓存将不包含针对指定内容编码的缓存响应。 下面的示例演示如何启用可从输出缓存提供的动态压缩响应。可接受的编码是“gzip”，并使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置该编码。如果承载该页面的 Web 服务器未启用动态压缩功能，则输出缓存将不包含针对指定内容编码的缓存响应。 下面的示例演示如何启用可从输出缓存提供的动态压缩响应。可接受的编码是“gzip”，并使用 @ OutputCache 指令的 VaryByContentEncodings 特性来设置该编码。如果承载该页面的 Web 服务器未启用动态压缩功能，则输出缓存将不包含针对指定内容编码的缓存响应。

<%@ Page Language="VB" %>
<%@ OutputCache VaryByParam="none" Duration="10" VaryByContentEncodings="gzip" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Varying Output Cache By Content Encoding</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <%= DateTime.Now.ToString() %>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ OutputCache VaryByParam="none" Duration="10" VaryByContentEncodings="gzip" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Varying Output Cache By Content Encoding</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <%= DateTime.Now.ToString() %>
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpCacheVaryByContentEncodingsHttpCacheVaryByContentEncodings
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpCacheVaryByContentEncodings 成员
System.Web 命名空间
HttpCachePolicy VaryByContentEncodings


HttpCacheVaryByContentEncodings 成员

HttpCacheVaryByContentEncodings 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByContentEncodings 类

提供一种类型安全的方式来设置 HttpCachePolicy 类的 VaryByContentEncodings 属性。

HttpCacheVaryByContentEncodings 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCacheVaryByContentEncodings 类
System.Web 命名空间


HttpCacheVaryByContentEncodings 构造函数

HttpCacheVaryByContentEncodings 构造函数
HttpCacheVaryByContentEncodings 类

初始化 HttpCacheVaryByContentEncodings 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpCacheVaryByContentEncodings()
public:
HttpCacheVaryByContentEncodings()
new : unit -> HttpCacheVaryByContentEncodings

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpCacheVaryByContentEncodings 类
HttpCacheVaryByContentEncodings 成员
System.Web 命名空间


HttpCacheVaryByContentEncodings 方法

HttpCacheVaryByContentEncodings 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByContentEncodings 类

HttpCacheVaryByContentEncodings 类型公开以下成员。

名称 说明
页首

参考

HttpCacheVaryByContentEncodings 类
System.Web 命名空间


HttpCacheVaryByContentEncodings 属性

HttpCacheVaryByContentEncodings 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByContentEncodings 类

HttpCacheVaryByContentEncodings 类型公开以下成员。

名称 说明
页首

参考

HttpCacheVaryByContentEncodings 类
System.Web 命名空间


HttpCacheVaryByContentEncodings ..::.Item 属性

HttpCacheVaryByContentEncodings
.
.
::
.
Item 属性
HttpCacheVaryByContentEncodings 类

获取或设置一个值，该值指示缓存是否随指定的内容编码而变化。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Item ( _
    contentEncoding As String _
) As Boolean
    Get
    Set
public bool this[
    string contentEncoding
] { get; set; }
public:
property bool Item[String^ contentEncoding] {
    bool get (String^ contentEncoding);
    void set (String^ contentEncoding, bool value);
}
member Item : bool with get, set

参数

contentEncoding
类型： System String
内容编码的名称。

属性值

类型： System Boolean
如果缓存应该随指定的内容编码而变化，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | 内容编码为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpCacheVaryByContentEncodings 类
HttpCacheVaryByContentEncodings 成员
System.Web 命名空间


HttpCacheVaryByHeaders 类

HttpCacheVaryByHeaders 类
成员

提供一种设置 VaryByHeaders 属性的类型安全的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpCacheVaryByHeaders
public sealed class HttpCacheVaryByHeaders
public ref class HttpCacheVaryByHeaders sealed
[<SealedAttribute>]
type HttpCacheVaryByHeaders =  class end

当存在针对某个资源的多个缓存的响应时，VaryByHeaders 属性确定 ASP.NET 将使用哪个请求标头参数来唯一标识响应的变体。当响应依赖于一组客户端输入（如标头或参数）而有所不同时，此属性很有用。 当存在针对某个资源的多个缓存的响应时，VaryByHeaders 属性确定 ASP.NET 将使用哪个请求标头参数来唯一标识响应的变体。当响应依赖于一组客户端输入（如标头或参数）而有所不同时，此属性很有用。

HttpCacheVaryByHeaders 并不直接与 HTTP 缓存控制标头相关，但是有助于确保客户端或代理随指定的标头而变化。有关 VaryByHeaders 的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 HttpCacheVaryByHeaders 并不直接与 HTTP 缓存控制标头相关，但是有助于确保客户端或代理随指定的标头而变化。有关 VaryByHeaders 的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 HttpCacheVaryByHeaders 并不直接与 HTTP 缓存控制标头相关，但是有助于确保客户端或代理随指定的标头而变化。有关 VaryByHeaders 的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

System.Web System.Web..::.HttpCacheVaryByHeadersHttpCacheVaryByHeaders
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 成员
System.Web 命名空间
HttpCacheVaryByParams

其他资源

缓存页的多个版本
如何：使用 HTTP 标头对某页的各个版本进行缓存


HttpCacheVaryByHeaders 成员

HttpCacheVaryByHeaders 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByHeaders 类

提供一种设置 VaryByHeaders 属性的类型安全的方法。

HttpCacheVaryByHeaders 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCacheVaryByHeaders 类
System.Web 命名空间


HttpCacheVaryByHeaders 构造函数

HttpCacheVaryByHeaders 构造函数
HttpCacheVaryByHeaders 类

初始化 HttpCacheVaryByHeaders 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpCacheVaryByHeaders()
public:
HttpCacheVaryByHeaders()
new : unit -> HttpCacheVaryByHeaders

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间


HttpCacheVaryByHeaders 方法

HttpCacheVaryByHeaders 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByHeaders 类

HttpCacheVaryByHeaders 类型公开以下成员。

名称 说明
页首

参考

HttpCacheVaryByHeaders 类
System.Web 命名空间


HttpCacheVaryByHeaders ..::.VaryByUnspecifiedParameters 方法

HttpCacheVaryByHeaders
.
.
::
.
VaryByUnspecifiedParameters 方法
HttpCacheVaryByHeaders 类

导致 ASP.NET 随所有标头值而变化，并将 Vary HTTP 标头设置为值 *（星号）。所有其他 Vary 标头信息将被丢弃。 导致 ASP.NET 随所有标头值而变化，并将 Vary HTTP 标头设置为值 *（星号）。所有其他 Vary 标头信息将被丢弃。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub VaryByUnspecifiedParameters
public void VaryByUnspecifiedParameters()
public:
void VaryByUnspecifiedParameters()
member VaryByUnspecifiedParameters : unit -> unit

Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。* 值指定服务器基于不是在请求标头中指定的参数（例如，客户端的网络地址）来选择响应。 Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。* 值指定服务器基于不是在请求标头中指定的参数（例如，客户端的网络地址）来选择响应。

有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间


HttpCacheVaryByHeaders 属性

HttpCacheVaryByHeaders 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByHeaders 类

HttpCacheVaryByHeaders 类型公开以下成员。

名称 说明
页首

参考

HttpCacheVaryByHeaders 类
System.Web 命名空间


HttpCacheVaryByHeaders ..::.AcceptTypes 属性

HttpCacheVaryByHeaders
.
.
::
.
AcceptTypes 属性
HttpCacheVaryByHeaders 类

获取或设置一个值，该值指示 ASP.NET 输出缓存是否随 Accept HTTP 标头而改变缓存的响应并将该标头追加到传出的 Vary HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property AcceptTypes As Boolean
    Get
    Set
public bool AcceptTypes { get; set; }
public:
property bool AcceptTypes {
    bool get ();
    void set (bool value);
}
member AcceptTypes : bool with get, set

属性值

类型： System Boolean
当 ASP.NET 输出缓存随 Accept 标头而改变时，则为 true；否则为 false。默认值为 false。 当 ASP.NET 输出缓存随 Accept 标头而改变时，则为 true；否则为 false。默认值为 false。

Vary 标头指示服务器的响应将随 Accept 字段而变化，并指定服务器将根据客户端可接受的媒体类型选择响应。

有关 HTTP 标头的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关 HTTP 标头的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

下面的代码示例演示了仅当 AcceptTypes 属性为 true 时执行某个操作。

Response.Cache.VaryByHeaders.AcceptTypes = True

Response.Cache.VaryByHeaders.AcceptTypes = true;

[Visual Basic]
<%
'This example performs some action only if the AcceptTypes
property
'is True.
If Response.Cache.VaryByHeaders.AcceptTypes = True Then
   ...
End If
%>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间


HttpCacheVaryByHeaders ..::.Item 属性

HttpCacheVaryByHeaders
.
.
::
.
Item 属性
HttpCacheVaryByHeaders 类

获取或设置一个自定义标头字段，ASP.NET 输出缓存将随该字段改变缓存的响应，并将其追加到传出的 Vary HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Item ( _
    header As String _
) As Boolean
    Get
    Set
public bool this[
    string header
] { get; set; }
public:
property bool Item[String^ header] {
    bool get (String^ header);
    void set (String^ header, bool value);
}
member Item : bool with get, set

参数

header
类型： System String
自定义标头的名称。

属性值

类型： System Boolean
当 ASP.NET 输出缓存随指定的自定义字段而变化时，则为 true ；否则为 false。默认值为 false。 当 ASP.NET 输出缓存随指定的自定义字段而变化时，则为 true ；否则为 false。默认值为 false。
异常 | 条件
ArgumentNullException | header 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Vary 标头指示一些请求标头字段，服务器的响应将随这些字段而改变响应。

有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

如果指定的 header 具有值 *（星号），则在内部调用 VaryByUnspecifiedParameters 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间

其他资源

缓存页的多个版本
如何：使用 HTTP 标头对某页的各个版本进行缓存


HttpCacheVaryByHeaders ..::.UserAgent 属性

HttpCacheVaryByHeaders
.
.
::
.
UserAgent 属性
HttpCacheVaryByHeaders 类

获取或设置一个值，该值指示 ASP.NET 输出缓存是否随 User-Agent 标头改变缓存的响应并将该标头追加到传出的 Vary HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property UserAgent As Boolean
    Get
    Set
public bool UserAgent { get; set; }
public:
property bool UserAgent {
    bool get ();
    void set (bool value);
}
member UserAgent : bool with get, set

属性值

类型： System Boolean
当 ASP.NET 输出缓存随 User-Agent 标头而变化并将该标头添加到被发送到客户端的 Vary HTTP 标头时，则为 true；否则为 false。默认值为 false。 当 ASP.NET 输出缓存随 User-Agent 标头而变化并将该标头添加到被发送到客户端的 Vary HTTP 标头时，则为 true；否则为 false。默认值为 false。

Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。User-Agent 字段指定服务器基于客户端的用户代理类型选择响应。 Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。User-Agent 字段指定服务器基于客户端的用户代理类型选择响应。

有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

下面的代码示例演示了仅当 UserAgent 属性为 true 时执行某个操作。

Response.Cache.VaryByHeaders.UserAgent = True

Response.Cache.VaryByHeaders.UserAgent = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间


HttpCacheVaryByHeaders ..::.UserCharSet 属性

HttpCacheVaryByHeaders
.
.
::
.
UserCharSet 属性
HttpCacheVaryByHeaders 类

获取或设置一个值，该值指示 ASP.NET 输出缓存是否随 Accept-Charset 标头改变缓存的响应并将该标头追加到传出的 Vary HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property UserCharSet As Boolean
    Get
    Set
public bool UserCharSet { get; set; }
public:
property bool UserCharSet {
    bool get ();
    void set (bool value);
}
member UserCharSet : bool with get, set

属性值

类型： System Boolean
当 ASP.NET 输出缓存随 Accept-Charset 标头而变化并将该标头添加到被发送到客户端的 Vary HTTP 标头时，则为 true；否则为 false。默认值为 false。 当 ASP.NET 输出缓存随 Accept-Charset 标头而变化并将该标头添加到被发送到客户端的 Vary HTTP 标头时，则为 true；否则为 false。默认值为 false。

Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。Accept-CharSet 字段指定服务器基于客户端的字符集选择响应。 Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。Accept-CharSet 字段指定服务器基于客户端的字符集选择响应。

有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

下面的代码示例演示了仅当 UserCharSet 属性为 true 时执行某个操作。

Response.Cache.VaryByHeaders.UserCharSet = True

Response.Cache.VaryByHeaders.UserCharSet = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间


HttpCacheVaryByHeaders ..::.UserLanguage 属性

HttpCacheVaryByHeaders
.
.
::
.
UserLanguage 属性
HttpCacheVaryByHeaders 类

获取或设置一个值，该值指示 ASP.NET 输出缓存是否随 Accept-Language 标头改变缓存的响应并将该标头追加到传出的 Vary HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property UserLanguage As Boolean
    Get
    Set
public bool UserLanguage { get; set; }
public:
property bool UserLanguage {
    bool get ();
    void set (bool value);
}
member UserLanguage : bool with get, set

属性值

类型： System Boolean
当 ASP.NET 输出缓存随 Accept-Language 标头而变化并将该标头添加到被发送到客户端的 Vary HTTP 标头时，则为 true；否则为 false。默认值为 false。 当 ASP.NET 输出缓存随 Accept-Language 标头而变化并将该标头添加到被发送到客户端的 Vary HTTP 标头时，则为 true；否则为 false。默认值为 false。

Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。Accept-Language 字段指定服务器基于客户端可接受的语言选择响应。 Vary 标头指示一些请求标头字段，服务器使用这些字段确定需要发送缓存的多个响应中的哪个响应来响应客户端请求。Accept-Language 字段指定服务器基于客户端可接受的语言选择响应。

有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 有关更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

下面的代码示例演示了仅当 UserLanguage 属性为 true 时执行某个操作。

Response.Cache.VaryByHeaders.UserLanguage = True

Response.Cache.VaryByHeaders.UserLanguage = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByHeaders 类
HttpCacheVaryByHeaders 成员
System.Web 命名空间


HttpCacheVaryByParams 类

HttpCacheVaryByParams 类
成员

提供一种设置 VaryByParams 属性的类型安全的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpCacheVaryByParams
public sealed class HttpCacheVaryByParams
public ref class HttpCacheVaryByParams sealed
[<SealedAttribute>]
type HttpCacheVaryByParams =  class end

当存在针对某个资源的多个缓存的响应时，VaryByParams 属性确定 ASP.NET 将使用哪个 HTTP Get 或 Post 参数来唯一标识响应的变体。当响应依赖于一组客户端输入（如标头或参数）而有所不同时，此属性很有用。 当存在针对某个资源的多个缓存的响应时，VaryByParams 属性确定 ASP.NET 将使用哪个 HTTP Get 或 Post 参数来唯一标识响应的变体。当响应依赖于一组客户端输入（如标头或参数）而有所不同时，此属性很有用。

HttpCacheVaryByParams 并不直接与 HTTP 缓存控制标头相关，但是有助于确保客户端或代理随指定的参数而变化。有关 VaryByParams 的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 HttpCacheVaryByParams 并不直接与 HTTP 缓存控制标头相关，但是有助于确保客户端或代理随指定的参数而变化。有关 VaryByParams 的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。 HttpCacheVaryByParams 并不直接与 HTTP 缓存控制标头相关，但是有助于确保客户端或代理随指定的参数而变化。有关 VaryByParams 的更多信息，请参见 RFC 2616：超文本传送协议 -- HTTP/1.1，此文档位于 WWW 联合会 (W3C) 网站。有关全部详细信息，请参见第 14 节“标头字段定义”。

下面的代码示例演示如何从与某个 HttpResponse 关联的 HttpCachePolicy 对象访问 HttpCacheVaryByParams 对象。

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Public)
Response.Cache.SetValidUntilExpires(False)
Response.Cache.VaryByParams("Category") = True

If Response.Cache.VaryByParams("Category") Then
   '...
End If

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;

if (Response.Cache.VaryByParams["Category"])
{
   //...
}

System.Web System.Web..::.HttpCacheVaryByParamsHttpCacheVaryByParams
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByParams 成员
System.Web 命名空间
VaryByParams
BasePartialCachingControl
StaticPartialCachingControl
HttpCacheVaryByHeaders

其他资源

缓存页的多个版本


HttpCacheVaryByParams 成员

HttpCacheVaryByParams 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByParams 类

提供一种设置 VaryByParams 属性的类型安全的方法。

HttpCacheVaryByParams 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCacheVaryByParams 类
System.Web 命名空间


HttpCacheVaryByParams 构造函数

HttpCacheVaryByParams 构造函数
HttpCacheVaryByParams 类

初始化 HttpCacheVaryByParams 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpCacheVaryByParams()
public:
HttpCacheVaryByParams()
new : unit -> HttpCacheVaryByParams

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpCacheVaryByParams 类
HttpCacheVaryByParams 成员
System.Web 命名空间


HttpCacheVaryByParams 方法

HttpCacheVaryByParams 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByParams 类

HttpCacheVaryByParams 类型公开以下成员。

名称 说明
页首

参考

HttpCacheVaryByParams 类
System.Web 命名空间


HttpCacheVaryByParams 属性

HttpCacheVaryByParams 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCacheVaryByParams 类

HttpCacheVaryByParams 类型公开以下成员。

名称 说明
页首

参考

HttpCacheVaryByParams 类
System.Web 命名空间


HttpCacheVaryByParams ..::.IgnoreParams 属性

HttpCacheVaryByParams
.
.
::
.
IgnoreParams 属性
HttpCacheVaryByParams 类

获取或设置一个值，该值指示某个 HTTP 响应是否随 Get 或 Post 参数而变化。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property IgnoreParams As Boolean
    Get
    Set
public bool IgnoreParams { get; set; }
public:
property bool IgnoreParams {
    bool get ();
    void set (bool value);
}
member IgnoreParams : bool with get, set

属性值

类型： System Boolean
如果忽略 HTTP 请求参数，则为 true；否则，为 false。

将 IgnoreParams 属性设置为 true 等效于针对该资源将 @ OutputCache 指令 VaryByParams 特性设置为“none”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByParams 类
HttpCacheVaryByParams 成员
System.Web 命名空间


HttpCacheVaryByParams ..::.Item 属性

HttpCacheVaryByParams
.
.
::
.
Item 属性
HttpCacheVaryByParams 类

获取或设置一个值，该值指示缓存是否随指定的 HTTP 请求参数而变化。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Item ( _
    header As String _
) As Boolean
    Get
    Set
public bool this[
    string header
] { get; set; }
public:
property bool Item[String^ header] {
    bool get (String^ header);
    void set (String^ header, bool value);
}
member Item : bool with get, set

参数

header
类型： System String
自定义参数的名称。

属性值

类型： System Boolean
如果缓存应该随指定的参数值而变化，则为 true。
异常 | 条件
ArgumentNullException | header 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当用作访问器 (getter) 时，如果在当前参数集合中找到指定的参数的值，或者如果该集合被设置为随 *（星号，表示所有参数）而变化，则 Item 索引器返回 true。

当用作转变器 (setter) 时，Item 索引器将参数集合中对应于指定标头的参数的值设置为 true。可以指定值 *，它指示所有参数。 当用作转变器 (setter) 时，Item 索引器将参数集合中对应于指定标头的参数的值设置为 true。可以指定值 *，它指示所有参数。

下面的代码示例演示如何从与某个 HttpResponse 关联的 HttpCachePolicy 对象访问 Item 索引器。

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Public)
Response.Cache.SetValidUntilExpires(False)
Response.Cache.VaryByParams("Category") = True

If Response.Cache.VaryByParams("Category") Then
   '...
End If

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;

if (Response.Cache.VaryByParams["Category"])
{
   //...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCacheVaryByParams 类
HttpCacheVaryByParams 成员
System.Web 命名空间

其他资源

如何：使用参数对页的各个版本进行缓存
缓存页的多个版本


HttpClientCertificate 类

HttpClientCertificate 类
成员

提供由客户端为响应服务器对客户端标识的请求而发出的客户证书字段。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpClientCertificate _
    Inherits NameValueCollection
public class HttpClientCertificate : NameValueCollection
public ref class HttpClientCertificate : public NameValueCollection
type HttpClientCertificate =
    class
        inherit NameValueCollection
    end

如果 Web 浏览器使用 SSL3.0/PCT1 协议（URL 以 https:// 开头而不是以 http:// 开头）连接到服务器，并且服务器要求客户证书，则该浏览器将发送包含在其数字证书中的客户证书字段。

有关数字证书的更多信息，请参见位于 http://www.itu.int 的国际电信联盟 (ITU) 站点的文档“X.509: Public-key and attribute certificate frameworks”（X.509：公钥和特性证书框架）。

System.Web System.Web..::.HttpClientCertificateHttpClientCertificate
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate 成员

HttpClientCertificate 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

提供由客户端为响应服务器对客户端标识的请求而发出的客户证书字段。

HttpClientCertificate 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpClientCertificate 类
System.Web 命名空间


HttpClientCertificate 方法

HttpClientCertificate 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

HttpClientCertificate 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpClientCertificate 类
System.Web 命名空间


HttpClientCertificate ..::.Add 方法

HttpClientCertificate
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

将项添加到当前 NameValueCollection。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.BaseGet 方法

HttpClientCertificate
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.BaseGetAllValues 方法

HttpClientCertificate
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.BaseSet 方法

HttpClientCertificate
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Get 方法

HttpClientCertificate
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

当在派生类中被重写时，则返回一个已归档的客户端证书。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Get 方法 (String)

HttpClientCertificate
.
.
::
.
Get 方法 (String)
HttpClientCertificate 类

按名称返回各客户证书字段。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function Get ( _
    field As String _
) As String
public override string Get(
    string field
)
public:
virtual String^ Get(
    String^ field
) override
abstract Get :
        field:string -> string
override Get :
        field:string -> string

参数

field
类型： System String
要检索的集合中的项。

返回值

类型： System String
由 field 指定的项的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
Get 重载
System.Web 命名空间


HttpClientCertificate ..::.GetValues 方法

HttpClientCertificate
.
.
::
.
GetValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

获取 NameValueCollection 中指定项的值。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate 属性

HttpClientCertificate 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

HttpClientCertificate 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpClientCertificate 类
System.Web 命名空间


HttpClientCertificate ..::.BinaryIssuer 属性

HttpClientCertificate
.
.
::
.
BinaryIssuer 属性
HttpClientCertificate 类

获取或设置证书颁发者（以二进制格式表示）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property BinaryIssuer As Byte()
    Get
public byte[] BinaryIssuer { get; }
public:
property array<unsigned char>^ BinaryIssuer {
    array<unsigned char>^ get ();
}
member BinaryIssuer : byte[]

属性值

类型：
array<
System Byte
>
[]
()
[]

证书颁发者（以二进制格式表示）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.CertEncoding 属性

HttpClientCertificate
.
.
::
.
CertEncoding 属性
HttpClientCertificate 类

获取证书的编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property CertEncoding As Integer
    Get
public int CertEncoding { get; }
public:
property int CertEncoding {
    int get ();
}
member CertEncoding : int

属性值

类型： System Int32
CERT_CONTEXT.dwCertEncodingType 值之一。

如想了解 CERT_CONTEXT 结构的更多信息，请到 http://www.microsoft.com/china/msdn 网站上搜索 CERT_CONTEXT。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Certificate 属性

HttpClientCertificate
.
.
::
.
Certificate 属性
HttpClientCertificate 类

获取一个字符串，该字符串包含整个证书内容的二进制流（以 ASN.1 格式表示）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Certificate As Byte()
    Get
public byte[] Certificate { get; }
public:
property array<unsigned char>^ Certificate {
    array<unsigned char>^ get ();
}
member Certificate : byte[]

属性值

类型：
array<
System Byte
>
[]
()
[]

客户证书。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Cookie 属性

HttpClientCertificate
.
.
::
.
Cookie 属性
HttpClientCertificate 类

获取客户证书的唯一 ID（如果提供了的话）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Cookie As String
    Get
public string Cookie { get; }
public:
property String^ Cookie {
    String^ get ();
}
member Cookie : string

属性值

类型： System String
客户证书 ID。

Cookie 可用作整个客户端证书的签名。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Flags 属性

HttpClientCertificate
.
.
::
.
Flags 属性
HttpClientCertificate 类

一组标志，提供附加的客户证书信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Flags As Integer
    Get
public int Flags { get; }
public:
property int Flags {
    int get ();
}
member Flags : int

属性值

类型： System Int32
一组布尔标志。

如果客户证书存在，则 Bit0 设置为 1。如果客户证书的证书颁发机构 (CA) 不在服务器上已识别的 CA 列表中，则 Bit1 设置为 1。 如果客户证书存在，则 Bit0 设置为 1。如果客户证书的证书颁发机构 (CA) 不在服务器上已识别的 CA 列表中，则 Bit1 设置为 1。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.IsPresent 属性

HttpClientCertificate
.
.
::
.
IsPresent 属性
HttpClientCertificate 类

获取一个值，该值指示客户证书是否存在。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsPresent As Boolean
    Get
public bool IsPresent { get; }
public:
property bool IsPresent {
    bool get ();
}
member IsPresent : bool

属性值

类型： System Boolean
如果客户证书存在，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Issuer 属性

HttpClientCertificate
.
.
::
.
Issuer 属性
HttpClientCertificate 类

一个字符串，该字符串包含含有有关证书颁发者信息的子字段值的列表。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Issuer As String
    Get
public string Issuer { get; }
public:
property String^ Issuer {
    String^ get ();
}
member Issuer : string

属性值

类型： System String
证书颁发者的信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.IsValid 属性

HttpClientCertificate
.
.
::
.
IsValid 属性
HttpClientCertificate 类

获取一个值，该值指示客户证书是否有效。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsValid As Boolean
    Get
public bool IsValid { get; }
public:
property bool IsValid {
    bool get ();
}
member IsValid : bool

属性值

类型： System Boolean
如果客户证书有效，则为 true；否则为 false。

如果证书颁发机构 (CA) 不在服务器上已识别的 CA 列表中，则客户证书无效。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Item 属性

HttpClientCertificate
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpClientCertificate 类

获取或设置 NameValueCollection 中的指定项。

名称 说明
页首

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.KeySize 属性

HttpClientCertificate
.
.
::
.
KeySize 属性
HttpClientCertificate 类

获取数字证书密钥大小的位数。例如 128。 获取数字证书密钥大小的位数。例如 128。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property KeySize As Integer
    Get
public int KeySize { get; }
public:
property int KeySize {
    int get ();
}
member KeySize : int

属性值

类型： System Int32
密钥大小的位数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.PublicKey 属性

HttpClientCertificate
.
.
::
.
PublicKey 属性
HttpClientCertificate 类

获取证书中的公钥二进制值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property PublicKey As Byte()
    Get
public byte[] PublicKey { get; }
public:
property array<unsigned char>^ PublicKey {
    array<unsigned char>^ get ();
}
member PublicKey : byte[]

属性值

类型：
array<
System Byte
>
[]
()
[]

包含公钥值的字节数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.SecretKeySize 属性

HttpClientCertificate
.
.
::
.
SecretKeySize 属性
HttpClientCertificate 类

获取服务器证书私钥中的位数。例如 1024。 获取服务器证书私钥中的位数。例如 1024。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property SecretKeySize As Integer
    Get
public int SecretKeySize { get; }
public:
property int SecretKeySize {
    int get ();
}
member SecretKeySize : int

属性值

类型： System Int32
服务器证书私钥中的位数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.SerialNumber 属性

HttpClientCertificate
.
.
::
.
SerialNumber 属性
HttpClientCertificate 类

将证书序列号用以连字号分隔的十六进制字节的 ASCII 表示形式提供。例如，04-67-F3-02。 将证书序列号用以连字号分隔的十六进制字节的 ASCII 表示形式提供。例如，04-67-F3-02。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property SerialNumber As String
    Get
public string SerialNumber { get; }
public:
property String^ SerialNumber {
    String^ get ();
}
member SerialNumber : string

属性值

类型： System String
证书序列号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.ServerIssuer 属性

HttpClientCertificate
.
.
::
.
ServerIssuer 属性
HttpClientCertificate 类

获取服务器证书的颁发者字段。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ServerIssuer As String
    Get
public string ServerIssuer { get; }
public:
property String^ ServerIssuer {
    String^ get ();
}
member ServerIssuer : string

属性值

类型： System String
服务器证书的颁发者字段。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.ServerSubject 属性

HttpClientCertificate
.
.
::
.
ServerSubject 属性
HttpClientCertificate 类

获取服务器证书的接受方字段。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ServerSubject As String
    Get
public string ServerSubject { get; }
public:
property String^ ServerSubject {
    String^ get ();
}
member ServerSubject : string

属性值

类型： System String
服务器证书的接受方字段。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.Subject 属性

HttpClientCertificate
.
.
::
.
Subject 属性
HttpClientCertificate 类

获取客户证书的接受方字段。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Subject As String
    Get
public string Subject { get; }
public:
property String^ Subject {
    String^ get ();
}
member Subject : string

属性值

类型： System String
客户证书的接受方字段。

如果指定的 String 没有子字段，则 HttpClientCertificate 集合将返回以逗号分隔的子字段列表。例如，C=US, O= Msft。 如果指定的 String 没有子字段，则 HttpClientCertificate 集合将返回以逗号分隔的子字段列表。例如，C=US, O= Msft。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.ValidFrom 属性

HttpClientCertificate
.
.
::
.
ValidFrom 属性
HttpClientCertificate 类

获取证书生效的日期。此日期随区域设置的不同而不同。 获取证书生效的日期。此日期随区域设置的不同而不同。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ValidFrom As DateTime
    Get
public DateTime ValidFrom { get; }
public:
property DateTime ValidFrom {
    DateTime get ();
}
member ValidFrom : DateTime

属性值

类型： System DateTime
证书生效的日期。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpClientCertificate ..::.ValidUntil 属性

HttpClientCertificate
.
.
::
.
ValidUntil 属性
HttpClientCertificate 类

获取证书到期日期。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ValidUntil As DateTime
    Get
public DateTime ValidUntil { get; }
public:
property DateTime ValidUntil {
    DateTime get ();
}
member ValidUntil : DateTime

属性值

类型： System DateTime
证书到期日期。

年份值显示为四位数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpClientCertificate 类
HttpClientCertificate 成员
System.Web 命名空间


HttpCompileException 类

HttpCompileException 类
成员

发生编译器错误时引发的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public NotInheritable Class HttpCompileException _
    Inherits HttpException
[SerializableAttribute]
public sealed class HttpCompileException : HttpException
[SerializableAttribute]
public ref class HttpCompileException sealed : public HttpException
[<SealedAttribute>]
[<SerializableAttribute>]
type HttpCompileException =
    class
        inherit HttpException
    end

System.Web System.Web..::.HttpCompileExceptionHttpCompileException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCompileException 成员
System.Web 命名空间


HttpCompileException 成员

HttpCompileException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCompileException 类

发生编译器错误时引发的异常。

HttpCompileException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCompileException 类
System.Web 命名空间


HttpCompileException 构造函数

HttpCompileException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCompileException 类

初始化 HttpCompileException 类的新实例。

名称 说明
页首

参考

HttpCompileException 类
HttpCompileException 成员
System.Web 命名空间


HttpCompileException 构造函数

HttpCompileException 构造函数
HttpCompileException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 HttpCompileException 类的一个新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpCompileException()
public:
HttpCompileException()
new : unit -> HttpCompileException

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCompileException 类
HttpCompileException 成员
HttpCompileException 重载
System.Web 命名空间


HttpCompileException 构造函数 (String)

HttpCompileException 构造函数 (String)
HttpCompileException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 HttpCompileException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String _
)
public HttpCompileException(
    string message
)
public:
HttpCompileException(
    String^ message
)
new :
        message:string -> HttpCompileException

参数

message
类型： System String
发生错误时要指定的异常消息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCompileException 类
HttpCompileException 成员
HttpCompileException 重载
System.Web 命名空间


HttpCompileException 构造函数 (CompilerResults, String)

HttpCompileException 构造函数 (CompilerResults, String)
HttpCompileException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 HttpCompileException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    results As CompilerResults, _
    sourceCode As String _
)
public HttpCompileException(
    CompilerResults results,
    string sourceCode
)
public:
HttpCompileException(
    CompilerResults^ results,
    String^ sourceCode
)
new :
        results:CompilerResults *
        sourceCode:string -> HttpCompileException

参数

results
类型： System.CodeDom.Compiler CompilerResults
包含编译器输出和错误消息的 CompilerResults。
sourceCode
类型： System String
发生错误时正在编译的源代码所属的文件的路径。

对于 sourceCode 参数，您可以传递任何描述错误情形的字符串信息；不检查文件或路径。SourceCode 属性返回作为参数值传递的字符串。如果使用不要求 sourceCode 参数的构造函数，则 SourceCode 属性为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 对于 sourceCode 参数，您可以传递任何描述错误情形的字符串信息；不检查文件或路径。SourceCode 属性返回作为参数值传递的字符串。如果使用不要求 sourceCode 参数的构造函数，则 SourceCode 属性为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 对于 sourceCode 参数，您可以传递任何描述错误情形的字符串信息；不检查文件或路径。SourceCode 属性返回作为参数值传递的字符串。如果使用不要求 sourceCode 参数的构造函数，则 SourceCode 属性为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCompileException 类
HttpCompileException 成员
HttpCompileException 重载
System.Web 命名空间


HttpCompileException 构造函数 (String, Exception)

HttpCompileException 构造函数 (String, Exception)
HttpCompileException 类

使用指定错误消息和对作为此异常原因的内部异常的引用来初始化 HttpCompileException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public HttpCompileException(
    string message,
    Exception innerException
)
public:
HttpCompileException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> HttpCompileException

参数

message
类型： System String
解释异常原因的错误信息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在处理内部异常的 catch 块中引发当前异常。 导致当前异常的异常。如果 innerException 不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在处理内部异常的 catch 块中引发当前异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCompileException 类
HttpCompileException 成员
HttpCompileException 重载
System.Web 命名空间


HttpCompileException 方法

HttpCompileException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCompileException 类

HttpCompileException 类型公开以下成员。

名称 说明
页首

参考

HttpCompileException 类
System.Web 命名空间


HttpCompileException ..::.GetObjectData 方法

HttpCompileException
.
.
::
.
GetObjectData 方法
HttpCompileException 类

使用有关异常的信息设置 SerializationInfo 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter := True)> _
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
[SecurityPermissionAttribute(SecurityAction::Demand, SerializationFormatter = true)]
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCompileException 类
HttpCompileException 成员
System.Web 命名空间


HttpCompileException 属性

HttpCompileException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCompileException 类

HttpCompileException 类型公开以下成员。

名称 说明
页首

参考

HttpCompileException 类
System.Web 命名空间


HttpCompileException ..::.Message 属性

HttpCompileException
.
.
::
.
Message 属性
HttpCompileException 类

获取描述当前异常原因的消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Message As String
    Get
public override string Message { get; }
public:
virtual property String^ Message {
    String^ get () override;
}
abstract Message : string
override Message : string

属性值

类型： System String
用于描述编译器结果中列出的第一个编译错误的字符串。如果未提供编译器结果，则该属性返回为此异常提供的错误消息，如果也未提供错误消息，则返回一个空字符串 ("")。 用于描述编译器结果中列出的第一个编译错误的字符串。如果未提供编译器结果，则该属性返回为此异常提供的错误消息，如果也未提供错误消息，则返回一个空字符串 ("")。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCompileException 类
HttpCompileException 成员
System.Web 命名空间


HttpCompileException ..::.Results 属性

HttpCompileException
.
.
::
.
Results 属性
HttpCompileException 类

获取异常的编译器输出和错误消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Results As CompilerResults
    Get
public CompilerResults Results { get; }
public:
property CompilerResults^ Results {
    CompilerResults^ get ();
}
member Results : CompilerResults

属性值

类型： System.CodeDom.Compiler CompilerResults
包含编译器输出和错误消息的 CompilerResults。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCompileException 类
HttpCompileException 成员
System.Web 命名空间


HttpCompileException ..::.SourceCode 属性

HttpCompileException
.
.
::
.
SourceCode 属性
HttpCompileException 类

获取一个包含文件路径的字符串，该路径指向发生错误时正在编译的源代码所属的文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property SourceCode As String
    Get
public string SourceCode { get; }
public:
property String^ SourceCode {
    String^ get ();
}
member SourceCode : string

属性值

类型： System String
发生错误时正在编译的源文件的路径。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 发生错误时正在编译的源文件的路径。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCompileException 类
HttpCompileException 成员
System.Web 命名空间


HttpCompileException 事件

HttpCompileException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCompileException 类

HttpCompileException 类型公开以下成员。

名称 说明
页首

参考

HttpCompileException 类
System.Web 命名空间


HttpContext 类

HttpContext 类
成员

封装有关个别 HTTP 请求的所有 HTTP 特定的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpContext _
    Implements IServiceProvider
public sealed class HttpContext : IServiceProvider
public ref class HttpContext sealed : IServiceProvider
[<SealedAttribute>]
type HttpContext =
    class
        interface IServiceProvider
    end

为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。该对象提供对请求的内部 Request、Response 和 Server 属性的访问。 为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。该对象提供对请求的内部 Request、Response 和 Server 属性的访问。

下面的代码示例演示如何访问和显示 HttpContext 对象的属性。使用 Page 对象的 Context 属性来访问当前 HTTP 请求的上下文。 下面的代码示例演示如何访问和显示 HttpContext 对象的属性。使用 Page 对象的 Context 属性来访问当前 HTTP 请求的上下文。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        ' The HttpContext associated with the page can be accessed by the Context property.
        Dim sb As New System.Text.StringBuilder()

        ' Use the current HttpContext object to determine if custom errors are enabled.
        sb.Append("Is custom errors enabled: " & _
            Context.IsCustomErrorEnabled.ToString() & "<br/>")

        ' Use the current HttpContext object to determine if debugging is enabled.
        sb.Append("Is debugging enabled: " & _
            Context.IsDebuggingEnabled.ToString() & "<br/>")

        ' Use the current HttpContext object to access the current TraceContext object.
        sb.Append("Trace Enabled: " & _
            Context.Trace.IsEnabled.ToString() & "<br/>")

        ' Use the current HttpContext object to access the current HttpApplicationState object.
        sb.Append("Number of items in Application state: " & _
            Context.Application.Count.ToString() & "<br/>")

        ' Use the current HttpContext object to access the current HttpSessionState object.
        ' Session state may not be configured.
        Try
            sb.Append("Number of items in Session state: " & _
                Context.Session.Count.ToString() & "<br/>")
        Catch ex As Exception
            sb.Append("Session state not enabled. <br/>")
        End Try

        ' Use the current HttpContext object to access the current Cache object.
        sb.Append("Number of items in the cache: " & _
            Context.Cache.Count.ToString() & "<br/>")

        ' Use the current HttpContext object to determine the timestamp for the current HTTP Request.
        sb.Append("Timestamp for the HTTP request: " & _
            Context.Timestamp.ToString() & "<br/>")

        ' Assign StringBuilder object to output label.
        OutputLabel.Text = sb.ToString()
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpContext Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       Using the current HttpContext to get information about the current page.
       <br />
       <asp:Label id="OutputLabel" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        // The HttpContext associated with the page can be accessed by the Context property.
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        // Use the current HttpContext object to determine if custom errors are enabled.
        sb.Append("Is custom errors enabled: " +
            Context.IsCustomErrorEnabled.ToString() + "<br/>");

        // Use the current HttpContext object to determine if debugging is enabled.
        sb.Append("Is debugging enabled: " +
            Context.IsDebuggingEnabled.ToString() + "<br/>");

        // Use the current HttpContext object to access the current TraceContext object.
        sb.Append("Trace Enabled: " +
            Context.Trace.IsEnabled.ToString() + "<br/>");

        // Use the current HttpContext object to access the current HttpApplicationState object.
        sb.Append("Number of items in Application state: " +
            Context.Application.Count.ToString() + "<br/>");

        // Use the current HttpContext object to access the current HttpSessionState object.
        // Session state may not be configured.
        try
        {
            sb.Append("Number of items in Session state: " +
                Context.Session.Count.ToString() + "<br/>");
        }
        catch
        {
            sb.Append("Session state not enabled. <br/>");
        }

        // Use the current HttpContext object to access the current Cache object.
        sb.Append("Number of items in the cache: " +
            Context.Cache.Count.ToString() + "<br/>");

        // Use the current HttpContext object to determine the timestamp for the current HTTP Request.
        sb.Append("Timestamp for the HTTP request: " +
            Context.Timestamp.ToString() + "<br/>");

        // Assign StringBuilder object to output label.
        OutputLabel.Text = sb.ToString();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpContext Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       Using the current HttpContext to get information about the current page.
       <br />
       <asp:Label id="OutputLabel" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpContextHttpContext
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 成员
System.Web 命名空间
IHttpModule
IHttpHandler


HttpContext 成员

HttpContext 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

封装有关个别 HTTP 请求的所有 HTTP 特定的信息。

HttpContext 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpContext 类
System.Web 命名空间


HttpContext 构造函数

HttpContext 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

初始化 HttpContext 类的新实例。

名称 说明
页首

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext 构造函数 (HttpWorkerRequest)

HttpContext 构造函数 (HttpWorkerRequest)
HttpContext 类

使用指定的辅助请求对象初始化 HttpContext 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    wr As HttpWorkerRequest _
)
public HttpContext(
    HttpWorkerRequest wr
)
public:
HttpContext(
    HttpWorkerRequest^ wr
)
new :
        wr:HttpWorkerRequest -> HttpContext

参数

wr
类型： System.Web HttpWorkerRequest
当前 HTTP 请求的 HttpWorkerRequest 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
HttpContext 重载
System.Web 命名空间


HttpContext 构造函数 (HttpRequest, HttpResponse)

HttpContext 构造函数 (HttpRequest, HttpResponse)
HttpContext 类

使用指定的请求和响应对象初始化 HttpContext 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    request As HttpRequest, _
    response As HttpResponse _
)
public HttpContext(
    HttpRequest request,
    HttpResponse response
)
public:
HttpContext(
    HttpRequest^ request,
    HttpResponse^ response
)
new :
        request:HttpRequest *
        response:HttpResponse -> HttpContext

参数

request
类型： System.Web HttpRequest
当前 HTTP 请求的 HttpRequest 对象。
response
类型： System.Web HttpResponse
当前 HTTP 请求的 HttpResponse 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
HttpContext 重载
System.Web 命名空间


HttpContext 方法

HttpContext 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

HttpContext 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpContext 类
System.Web 命名空间


HttpContext ..::.AddError 方法

HttpContext
.
.
::
.
AddError 方法
HttpContext 类

将异常添加到当前 HTTP 请求的异常集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddError ( _
    errorInfo As Exception _
)
public void AddError(
    Exception errorInfo
)
public:
void AddError(
    Exception^ errorInfo
)
member AddError :
        errorInfo:Exception -> unit

参数

errorInfo
类型： System Exception
要添加到异常集合中的 Exception。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.ClearError 方法

HttpContext
.
.
::
.
ClearError 方法
HttpContext 类

清除当前 HTTP 请求的所有错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub ClearError
public void ClearError()
public:
void ClearError()
member ClearError : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
Error


HttpContext ..::.GetAppConfig 方法

HttpContext
.
.
::
.
GetAppConfig 方法
HttpContext 类

注意：此 API 现在已过时。

为当前应用程序返回请求的配置信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<ObsoleteAttribute("The recommended alternative is System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Shared Function GetAppConfig ( _
    name As String _
) As Object
[ObsoleteAttribute("The recommended alternative is System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")]
public static Object GetAppConfig(
    string name
)
[ObsoleteAttribute(L"The recommended alternative is System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")]
public:
static Object^ GetAppConfig(
    String^ name
)
[<ObsoleteAttribute("The recommended alternative is System.Web.Configuration.WebConfigurationManager.GetWebApplicationSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")>]
static member GetAppConfig :
        name:string -> Object

参数

name
类型： System String
为其请求信息的应用程序配置标记。

返回值

类型： System Object
包含配置信息的对象。（在使用之前，将返回的配置节强制转换为适当的配置类型。） 包含配置信息的对象。（在使用之前，将返回的配置节强制转换为适当的配置类型。）

GetAppConfig 方法已被否决。请使用 WebConfigurationManager 类的 GetWebApplicationSection 方法获取当前应用程序的配置信息。 GetAppConfig 方法已被否决。请使用 WebConfigurationManager 类的 GetWebApplicationSection 方法获取当前应用程序的配置信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
WebConfigurationManager


HttpContext ..::.GetConfig 方法

HttpContext
.
.
::
.
GetConfig 方法
HttpContext 类

注意：此 API 现在已过时。

为当前 HTTP 请求返回所请求的配置信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<ObsoleteAttribute("The recommended alternative is System.Web.HttpContext.GetSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")> _
Public Function GetConfig ( _
    name As String _
) As Object
[ObsoleteAttribute("The recommended alternative is System.Web.HttpContext.GetSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")]
public Object GetConfig(
    string name
)
[ObsoleteAttribute(L"The recommended alternative is System.Web.HttpContext.GetSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")]
public:
Object^ GetConfig(
    String^ name
)
[<ObsoleteAttribute("The recommended alternative is System.Web.HttpContext.GetSection in System.Web.dll. http://go.microsoft.com/fwlink/?linkid=14202")>]
member GetConfig :
        name:string -> Object

参数

name
类型： System String
为其请求信息的配置标记。

返回值

类型： System Object
如果该节不存在，则为指定的 ConfigurationSectionnullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），如果该节不能在运行时访问，则为一个内部对象。（在使用之前，将返回的对象强制转换为适当的配置类型。） 如果该节不存在，则为指定的 ConfigurationSectionnullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），如果该节不能在运行时访问，则为一个内部对象。（在使用之前，将返回的对象强制转换为适当的配置类型。）

GetConfig 方法已被否决。请使用 GetSection 方法获取当前 HTTP 请求的配置信息。 GetConfig 方法已被否决。请使用 GetSection 方法获取当前 HTTP 请求的配置信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：1.1、1.0
在 4 中过时（编译器警告）
在 3.5 中过时（编译器警告）
在 3.5 SP1 中过时（编译器警告）
在 3.0 中过时（编译器警告）
在 3.0 SP1 中过时（编译器警告）
在 3.0 SP2 中过时（编译器警告）
在 2.0 中过时（编译器警告）
在 2.0 SP1 中过时（编译器警告）
在 2.0 SP2 中过时（编译器警告）

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
GetSection


HttpContext ..::.GetGlobalResourceObject 方法

HttpContext
.
.
::
.
GetGlobalResourceObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

获取应用程序级别的资源。

名称 说明
页首

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间

其他资源

应用程序中的资源
ASP.NET 网站布局


HttpContext ..::.GetGlobalResourceObject 方法 (String, String)

HttpContext
.
.
::
.
GetGlobalResourceObject 方法 (String, String)
HttpContext 类

根据指定的 ClassKey 和 ResourceKey 属性，获取应用程序级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetGlobalResourceObject ( _
    classKey As String, _
    resourceKey As String _
) As Object
public static Object GetGlobalResourceObject(
    string classKey,
    string resourceKey
)
public:
static Object^ GetGlobalResourceObject(
    String^ classKey,
    String^ resourceKey
)
static member GetGlobalResourceObject :
        classKey:string *
        resourceKey:string -> Object

参数

classKey
类型： System String
一个字符串，表示所请求资源对象的 ClassKey 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。

返回值

类型： System Object
一个 Object，表示请求的应用程序级别资源对象；否则，如果未找到资源对象，或找到了资源对象但其没有请求的属性，则为 null。
异常 | 条件
MissingManifestResourceException | 未找到具有指定 classKey 参数的资源对象。 - 或 - 主程序集不包含非特定区域性的资源，而由于缺少相应的附属程序集，这些资源又是必需的。

GetGlobalResourceObject 方法使用 CurrentUICulture 属性中指定的区域性返回一个全局资源。

说明 说明

在某些编辑环境中（例如 Visual Web Developer），如果使用句点 (.)，编辑器可能会引发一个设计时 MissingManifestResourceException 异常。在全局资源键名称中。但是，该错误不会影响您编辑或保存文件，可以忽略它。 在某些编辑环境中（例如 Visual Web Developer），如果使用句点 (.)，编辑器可能会引发一个设计时 MissingManifestResourceException 异常。在全局资源键名称中。但是，该错误不会影响您编辑或保存文件，可以忽略它。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
GetGlobalResourceObject 重载
System.Web 命名空间
ResourceExpressionBuilder

其他资源

应用程序中的资源
ASP.NET 网站布局
打包和部署资源


HttpContext ..::.GetGlobalResourceObject 方法 (String, String, CultureInfo)

HttpContext
.
.
::
.
GetGlobalResourceObject 方法 (String, String, CultureInfo)
HttpContext 类

根据指定的 ClassKey 和 ResourceKey 属性以及 CultureInfo 对象，获取一个应用程序级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetGlobalResourceObject ( _
    classKey As String, _
    resourceKey As String, _
    culture As CultureInfo _
) As Object
public static Object GetGlobalResourceObject(
    string classKey,
    string resourceKey,
    CultureInfo culture
)
public:
static Object^ GetGlobalResourceObject(
    String^ classKey,
    String^ resourceKey,
    CultureInfo^ culture
)
static member GetGlobalResourceObject :
        classKey:string *
        resourceKey:string *
        culture:CultureInfo -> Object

参数

classKey
类型： System String
一个字符串，表示所请求资源对象的 ClassKey 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。
culture
类型： System.Globalization CultureInfo
一个字符串，表示请求的资源的 CultureInfo 对象。

返回值

类型： System Object
一个 Object，表示请求的应用程序级别资源对象（对指定区域性对其进行了本地化）；否则，如果未找到资源对象，或找到了资源对象但其没有请求的属性，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
MissingManifestResourceException | 未找到具有指定 classKey 参数的资源对象。 - 或 - 主程序集不包含非特定区域性的资源，而由于缺少相应的附属程序集，这些资源又是必需的。

CultureInfo 对象，表示资源本地化后的区域性。如果资源未本地化为此区域性，则查找操作将按照回退过程找到适当的资源。有关更多信息，请参见 打包和部署资源。 CultureInfo 对象，表示资源本地化后的区域性。如果资源未本地化为此区域性，则查找操作将按照回退过程找到适当的资源。有关更多信息，请参见 打包和部署资源。 CultureInfo 对象，表示资源本地化后的区域性。如果资源未本地化为此区域性，则查找操作将按照回退过程找到适当的资源。有关更多信息，请参见 打包和部署资源。

说明 说明

在某些编辑环境中（例如 Visual Web Developer），如果使用句点 (.)，编辑器可能会引发一个设计时间 MissingManifestResourceException 异常。在全局资源键名称中。但是，该错误不会影响您编辑或保存文件，可以忽略它。 在某些编辑环境中（例如 Visual Web Developer），如果使用句点 (.)，编辑器可能会引发一个设计时间 MissingManifestResourceException 异常。在全局资源键名称中。但是，该错误不会影响您编辑或保存文件，可以忽略它。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
GetGlobalResourceObject 重载
System.Web 命名空间
ResourceExpressionBuilder

其他资源

应用程序中的资源
打包和部署资源


HttpContext ..::.GetLocalResourceObject 方法

HttpContext
.
.
::
.
GetLocalResourceObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

获取页级别的资源。

名称 说明
页首

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
ResourceExpressionBuilder

其他资源

应用程序中的资源
ASP.NET 网站布局
打包和部署资源


HttpContext ..::.GetLocalResourceObject 方法 (String, String)

HttpContext
.
.
::
.
GetLocalResourceObject 方法 (String, String)
HttpContext 类

根据指定的 VirtualPath 和 ResourceKey 属性，获取页级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetLocalResourceObject ( _
    virtualPath As String, _
    resourceKey As String _
) As Object
public static Object GetLocalResourceObject(
    string virtualPath,
    string resourceKey
)
public:
static Object^ GetLocalResourceObject(
    String^ virtualPath,
    String^ resourceKey
)
static member GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string -> Object

参数

virtualPath
类型： System String
本地资源对象的 VirtualPath 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。

返回值

类型： System Object
Object，表示请求的页级别资源对象；否则，如果找到了匹配的资源对象但不是 resourceKey 参数，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
MissingManifestResourceException | 未找到具有指定 virtualPath 参数的资源对象。
ArgumentException | 指定的 virtualPath 参数不在当前应用程序的根目录中。
InvalidOperationException | 未能找到页的资源类。

GetLocalResourceObject 方法使用 CurrentUICulture 属性中指定的区域性返回一个本地资源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
GetLocalResourceObject 重载
System.Web 命名空间
ResourceExpressionBuilder

其他资源

应用程序中的资源
ASP.NET 网站布局
打包和部署资源


HttpContext ..::.GetLocalResourceObject 方法 (String, String, CultureInfo)

HttpContext
.
.
::
.
GetLocalResourceObject 方法 (String, String, CultureInfo)
HttpContext 类

根据指定的 VirtualPath 和 ResourceKey 属性以及 CultureInfo 对象，获取一个页级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetLocalResourceObject ( _
    virtualPath As String, _
    resourceKey As String, _
    culture As CultureInfo _
) As Object
public static Object GetLocalResourceObject(
    string virtualPath,
    string resourceKey,
    CultureInfo culture
)
public:
static Object^ GetLocalResourceObject(
    String^ virtualPath,
    String^ resourceKey,
    CultureInfo^ culture
)
static member GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string *
        culture:CultureInfo -> Object

参数

virtualPath
类型： System String
本地资源对象的 VirtualPath 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。
culture
类型： System.Globalization CultureInfo
一个字符串，表示所请求资源对象的 CultureInfo 对象。

返回值

类型： System Object
Object，表示请求的本地资源对象（针对指定区域性进行了本地化的对象）；否则，如果找到了匹配的资源对象但不是 resourceKey 参数，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
MissingManifestResourceException | 未找到具有指定 virtualPath 参数的资源对象。
ArgumentException | 指定的 virtualPath 参数不在当前应用程序的根目录中。
InvalidOperationException | 未能找到页的资源类。

如果资源未本地化为此区域性，则查找操作将按照回退过程找到适当的资源。有关更多信息，请参见 打包和部署资源。 如果资源未本地化为此区域性，则查找操作将按照回退过程找到适当的资源。有关更多信息，请参见 打包和部署资源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
GetLocalResourceObject 重载
System.Web 命名空间
ResourceExpressionBuilder

其他资源

应用程序中的资源
ASP.NET 网站布局
打包和部署资源


HttpContext ..::.GetSection 方法

HttpContext
.
.
::
.
GetSection 方法
HttpContext 类

获取当前应用程序的默认配置的指定配置节。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetSection ( _
    sectionName As String _
) As Object
public Object GetSection(
    string sectionName
)
public:
Object^ GetSection(
    String^ sectionName
)
member GetSection :
        sectionName:string -> Object

参数

sectionName
类型： System String
配置节路径（使用 XPath 格式）和配置元素名称。

返回值

类型： System Object
如果该节不存在，则为指定的 ConfigurationSectionnullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），如果该节不能在运行时访问，则为一个内部对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
GetSection


HttpContext ..::.IServiceProvider ..::.GetService 方法

HttpContext
.
.
::
.
IServiceProvider
.
.
::
.
GetService 方法
HttpContext 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回当前服务类型的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function GetService ( _
    service As Type _
) As Object Implements IServiceProvider.GetService
Object IServiceProvider.GetService(
    Type service
)
private:
virtual Object^ GetService(
    Type^ service
) sealed = IServiceProvider::GetService
private abstract GetService :
        service:Type -> Object
private override GetService :
        service:Type -> Object

参数

service
类型： System Type
要将服务提供商设置为的 HttpContext 服务类型。

返回值

类型： System Object
如果找到服务，则为 HttpContext；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

实现

此方法有助于获取对基础 HttpWorkerRequest 对象的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.RemapHandler 方法

HttpContext
.
.
::
.
RemapHandler 方法
HttpContext 类

用于为请求指定处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RemapHandler ( _
    handler As IHttpHandler _
)
public void RemapHandler(
    IHttpHandler handler
)
public:
void RemapHandler(
    IHttpHandler^ handler
)
member RemapHandler :
        handler:IHttpHandler -> unit

参数

handler
类型： System.Web IHttpHandler
应处理请求的对象。
异常 | 条件
InvalidOperationException | RemapHandler 方法是在发生 MapRequestHandler 事件之后调用的。

如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。 如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。 如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP2、2.0 SP2

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.RewritePath 方法

HttpContext
.
.
::
.
RewritePath 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

将对资源的请求重定向到另一路径，使其不同于所请求 URL 指示的路径。RewritePath 用于无 Cookie 会话状态中，作用是从 URL 中剥离会话 ID。 将对资源的请求重定向到另一路径，使其不同于所请求 URL 指示的路径。RewritePath 用于无 Cookie 会话状态中，作用是从 URL 中剥离会话 ID。

名称 说明
页首

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.RewritePath 方法 (String)

HttpContext
.
.
::
.
RewritePath 方法 (String)
HttpContext 类

使用给定路径重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RewritePath ( _
    path As String _
)
public void RewritePath(
    string path
)
public:
void RewritePath(
    String^ path
)
member RewritePath :
        path:string -> unit

参数

path
类型： System String
内部重写路径。
异常 | 条件
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | path 参数不在当前应用程序的根目录中。

RewritePath(String) 方法将对资源的请求重定向到与请求的 RUL 中指示所不同的路径。如果您需要重置虚拟路径以便正确解析来自客户端的对服务器资源的请求，请使用带有 rebaseClientPath 参数的此方法的重载，并将该参数设置为 false。 RewritePath(String) 方法将对资源的请求重定向到与请求的 RUL 中指示所不同的路径。如果您需要重置虚拟路径以便正确解析来自客户端的对服务器资源的请求，请使用带有 rebaseClientPath 参数的此方法的重载，并将该参数设置为 false。

当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。 当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。

如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。 如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。

下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。 下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。 下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。 下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。 下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。 下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。 下面的示例演示如何使用 RewritePath 方法使网站能够响应未反映网站中文件结构的 URL。第一个代码块是名为 RewritePath.aspx 的 ASP.NET 网页。它需要查询字符串。如果您的站点名为 WebSite1，则 URL http://localhost/WebSite1/RewritePath.aspx?page=1 在浏览器中显示“Page 1”。网页后的代码块在 Global.asax 文件中是 Application_BeginRequest 事件处理程序。此代码截获对 http://localhost/WebSite1/page1 形式的 URL 的请求，并在处理之前，将它们转换为 RewritePath.aspx 所需的形式。因此，URL http://localhost/WebSite1/page1 通过在浏览器中显示 "Page 1" 的查询字符串参数调用 RewritePath.aspx。

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim originalPath As String = HttpContext.Current.Request.Path.ToLower()
    If originalPath.Contains("/page") Then
        Context.RewritePath(originalPath.Replace("/page", "/RewritePath.aspx?page="))
    End If
End Sub

void Application_BeginRequest(Object sender, EventArgs e)
{
    string originalPath = HttpContext.Current.Request.Path.ToLower();
    if (originalPath.Contains("/page"))
    {
        Context.RewritePath(originalPath.Replace("/page","/RewritePath.aspx?page="));
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
RewritePath 重载
System.Web 命名空间

其他资源

ASP.NET 路由
演练：在 Web 窗体应用程序中使用 ASP.NET 路由


HttpContext ..::.RewritePath 方法 (String, Boolean)

HttpContext
.
.
::
.
RewritePath 方法 (String, Boolean)
HttpContext 类

使用给定路径和一个布尔值重写 URL，该布尔值用于指定是否修改服务器资源的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RewritePath ( _
    path As String, _
    rebaseClientPath As Boolean _
)
public void RewritePath(
    string path,
    bool rebaseClientPath
)
public:
void RewritePath(
    String^ path,
    bool rebaseClientPath
)
member RewritePath :
        path:string *
        rebaseClientPath:bool -> unit

参数

path
类型： System String
内部重写路径。
rebaseClientPath
类型： System Boolean
如果重置虚拟路径，则为 true；如果保持虚拟路径不变，则为 false。
异常 | 条件
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | path 参数不在当前应用程序的根目录中。

HttpContext..::.RewritePath(String, Boolean) 方法由 HttpContext..::.RewritePath(String) 方法调用，rebaseClientPath 参数设置为 true。若要确保不会修改用于构造资源路径的虚拟路径，请将 rebaseClientPath 参数设置为 false。最好将 rebaseClientPath 设置为 false 的一种常见情况是：您需要重写 URL，而且您正在使用主题，并将 URL 重定向到与请求的资源所在文件夹不同的其他文件夹中的资源。 HttpContext..::.RewritePath(String, Boolean) 方法由 HttpContext..::.RewritePath(String) 方法调用，rebaseClientPath 参数设置为 true。若要确保不会修改用于构造资源路径的虚拟路径，请将 rebaseClientPath 参数设置为 false。最好将 rebaseClientPath 设置为 false 的一种常见情况是：您需要重写 URL，而且您正在使用主题，并将 URL 重定向到与请求的资源所在文件夹不同的其他文件夹中的资源。 HttpContext..::.RewritePath(String, Boolean) 方法由 HttpContext..::.RewritePath(String) 方法调用，rebaseClientPath 参数设置为 true。若要确保不会修改用于构造资源路径的虚拟路径，请将 rebaseClientPath 参数设置为 false。最好将 rebaseClientPath 设置为 false 的一种常见情况是：您需要重写 URL，而且您正在使用主题，并将 URL 重定向到与请求的资源所在文件夹不同的其他文件夹中的资源。

当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。 当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。

如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。 如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。

有关代码示例，请参见 RewritePath(String) 方法重载。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
RewritePath 重载
System.Web 命名空间

其他资源

ASP.NET 路由
演练：在 Web 窗体应用程序中使用 ASP.NET 路由


HttpContext ..::.RewritePath 方法 (String, String, String)

HttpContext
.
.
::
.
RewritePath 方法 (String, String, String)
HttpContext 类

使用给定的路径、路径信息和查询字符串信息重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RewritePath ( _
    filePath As String, _
    pathInfo As String, _
    queryString As String _
)
public void RewritePath(
    string filePath,
    string pathInfo,
    string queryString
)
public:
void RewritePath(
    String^ filePath,
    String^ pathInfo,
    String^ queryString
)
member RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string -> unit

参数

filePath
类型： System String
内部重写路径。
pathInfo
类型： System String
资源的附加路径信息。
queryString
类型： System String
请求查询字符串。
异常 | 条件
ArgumentNullException | path 参数不在当前应用程序的根目录中。
HttpException | filePath 参数不在当前应用程序的根目录中。

RewritePath 方法会将对资源的请求重新定向到其他资源，同时不会更改 URL。

filePath 参数不包含 pathInfo 参数内容。对于 URL http://www.microsoft.com/virdir/page.html/tail，filePath 参数为 http://www.microsoft.com/virdir/page.html，pathInfo 参数为尾部。 filePath 参数不包含 pathInfo 参数内容。对于 URL http://www.microsoft.com/virdir/page.html/tail，filePath 参数为 http://www.microsoft.com/virdir/page.html，pathInfo 参数为尾部。

当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。 当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。

如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。 如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。

有关代码示例，请参见 RewritePath(String) 方法重载。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpContext 类
HttpContext 成员
RewritePath 重载
System.Web 命名空间

其他资源

ASP.NET 路由
演练：在 Web 窗体应用程序中使用 ASP.NET 路由


HttpContext ..::.RewritePath 方法 (String, String, String, Boolean)

HttpContext
.
.
::
.
RewritePath 方法 (String, String, String, Boolean)
HttpContext 类

使用给定虚拟路径、路径信息、查询字符串信息和一个布尔值重写 URL，该布尔值用于指定是否将客户端文件路径设置为重写路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RewritePath ( _
    filePath As String, _
    pathInfo As String, _
    queryString As String, _
    setClientFilePath As Boolean _
)
public void RewritePath(
    string filePath,
    string pathInfo,
    string queryString,
    bool setClientFilePath
)
public:
void RewritePath(
    String^ filePath,
    String^ pathInfo,
    String^ queryString,
    bool setClientFilePath
)
member RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string *
        setClientFilePath:bool -> unit

参数

filePath
类型： System String
服务请求的资源的虚拟路径。
pathInfo
类型： System String
用于 URL 重定向的附加路径信息。
queryString
类型： System String
用于 URL 重定向的请求查询字符串。
setClientFilePath
类型： System Boolean
若要将用于客户端资源的文件路径设置为 filePath 参数的值，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | path 参数不在当前应用程序的根目录中。
HttpException | filePath 参数不在当前应用程序的根目录中。

filePath 参数不包含 pathInfo 参数的内容。对于 URL http://www.microsoft.com/virdir/page.html/tail，filePath 参数为 http://www.microsoft.com/virdir/page.html，pathInfo 参数为尾部。 filePath 参数不包含 pathInfo 参数的内容。对于 URL http://www.microsoft.com/virdir/page.html/tail，filePath 参数为 http://www.microsoft.com/virdir/page.html，pathInfo 参数为尾部。

若要确保不会修改用于构造资源路径的虚拟路径，请将 setClientFilePath 参数设置为 false。最好将 setClientFilePath 设置为 false 的一种常见情况是：您需要重写 URL，而且您正在使用主题，并将 URL 重定向到与请求的资源所在文件夹不同的其他文件夹中的资源。 若要确保不会修改用于构造资源路径的虚拟路径，请将 setClientFilePath 参数设置为 false。最好将 setClientFilePath 设置为 false 的一种常见情况是：您需要重写 URL，而且您正在使用主题，并将 URL 重定向到与请求的资源所在文件夹不同的其他文件夹中的资源。

当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。 当您要调整 Web 应用程序中的页面结构并希望确保已将旧 URL 加入书签的用户在您移动页面之后仍可以使用它们，URL 重写就很有用。通过 URL 重写，可以将请求透明地转发到新网页的位置。

如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。 如果要使某个站点使用对用户更友好且经过搜索引擎优化的 URL，更可靠的替代方法是使用 ASP.NET 路由。有关更多信息，请参见ASP.NET 路由。

有关代码示例，请参见 RewritePath(String) 方法重载。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
RewritePath 重载
System.Web 命名空间

其他资源

ASP.NET 路由
演练：在 Web 窗体应用程序中使用 ASP.NET 路由


HttpContext ..::.SetSessionStateBehavior 方法

HttpContext
.
.
::
.
SetSessionStateBehavior 方法
HttpContext 类

设置支持 HTTP 请求所需的会话状态行为的类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetSessionStateBehavior ( _
    sessionStateBehavior As SessionStateBehavior _
)
public void SetSessionStateBehavior(
    SessionStateBehavior sessionStateBehavior
)
public:
void SetSessionStateBehavior(
    SessionStateBehavior sessionStateBehavior
)
member SetSessionStateBehavior :
        sessionStateBehavior:SessionStateBehavior -> unit

参数

sessionStateBehavior
类型： System.Web.SessionState SessionStateBehavior
枚举值之一，该值指定需要什么类型的会话状态行为。
异常 | 条件
InvalidOperationException | 该方法在引发 AcquireRequestState 事件之后调用。

在 ASP.NET 的默认实现中，HTTP 请求处理程序通过实现 IRequiresSessionState 接口或 IReadOnlySessionState 接口来指示是否它需要会话状态。SetSessionStateBehavior 方法和使用 SessionStateBehavior 枚举使您可以提供处理请求时所需会话状态支持类型的更多详情。有关更多信息，请参见 SessionStateBehavior 枚举。 在 ASP.NET 的默认实现中，HTTP 请求处理程序通过实现 IRequiresSessionState 接口或 IReadOnlySessionState 接口来指示是否它需要会话状态。SetSessionStateBehavior 方法和使用 SessionStateBehavior 枚举使您可以提供处理请求时所需会话状态支持类型的更多详情。有关更多信息，请参见 SessionStateBehavior 枚举。 在 ASP.NET 的默认实现中，HTTP 请求处理程序通过实现 IRequiresSessionState 接口或 IReadOnlySessionState 接口来指示是否它需要会话状态。SetSessionStateBehavior 方法和使用 SessionStateBehavior 枚举使您可以提供处理请求时所需会话状态支持类型的更多详情。有关更多信息，请参见 SessionStateBehavior 枚举。

SetSessionStateBehavior 方法必须在 AcquireRequestState 管道事件之前调用。此事件引发期间或之后发生的调用将导致 InvalidOperationException 异常。 SetSessionStateBehavior 方法必须在 AcquireRequestState 管道事件之前调用。此事件引发期间或之后发生的调用将导致 InvalidOperationException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
SessionStateBehavior


HttpContext 属性

HttpContext 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContext 类

HttpContext 类型公开以下成员。

名称 说明
页首

参考

HttpContext 类
System.Web 命名空间


HttpContext ..::.AllErrors 属性

HttpContext
.
.
::
.
AllErrors 属性
HttpContext 类

获取在处理 HTTP 请求的过程中累积的错误数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AllErrors As Exception()
    Get
public Exception[] AllErrors { get; }
public:
property array<Exception^>^ AllErrors {
    array<Exception^>^ get ();
}
member AllErrors : Exception[]

属性值

类型：
array<
System Exception
>
[]
()
[]

当前 HTTP 请求的 Exception 对象数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Application 属性

HttpContext
.
.
::
.
Application 属性
HttpContext 类

获取当前 HTTP 请求的 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Application As HttpApplicationState
    Get
public HttpApplicationState Application { get; }
public:
property HttpApplicationState^ Application {
    HttpApplicationState^ get ();
}
member Application : HttpApplicationState

属性值

类型： System.Web HttpApplicationState
当前 HTTP 请求的 HttpApplicationState。
若要获取当前 HTTP 请求的 HttpApplication 对象，请使用 ApplicationInstance。（ASP.NET 使用 ApplicationInstance 代替 Application 作为属性名来指代当前的 HttpApplication 实例，以避免 ASP.NET 与经典 ASP 之间产生混淆。在经典 ASP 中，Application 指代全局应用程序状态字典。) 若要获取当前 HTTP 请求的 HttpApplication 对象，请使用 ApplicationInstance。（ASP.NET 使用 ApplicationInstance 代替 Application 作为属性名来指代当前的 HttpApplication 实例，以避免 ASP.NET 与经典 ASP 之间产生混淆。在经典 ASP 中，Application 指代全局应用程序状态字典。) 若要获取当前 HTTP 请求的 HttpApplication 对象，请使用 ApplicationInstance。（ASP.NET 使用 ApplicationInstance 代替 Application 作为属性名来指代当前的 HttpApplication 实例，以避免 ASP.NET 与经典 ASP 之间产生混淆。在经典 ASP 中，Application 指代全局应用程序状态字典。)

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
ApplicationInstance


HttpContext ..::.ApplicationInstance 属性

HttpContext
.
.
::
.
ApplicationInstance 属性
HttpContext 类

获取或设置当前 HTTP 请求的 HttpApplication 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ApplicationInstance As HttpApplication
    Get
    Set
public HttpApplication ApplicationInstance { get; set; }
public:
property HttpApplication^ ApplicationInstance {
    HttpApplication^ get ();
    void set (HttpApplication^ value);
}
member ApplicationInstance : HttpApplication with get, set

属性值

类型： System.Web HttpApplication
当前 HTTP 请求的 HttpApplication。
ASP.NET 使用 ApplicationInstance 代替 Application 作为属性名来指代当前的 HttpApplication 实例，以避免 ASP.NET 与经典 ASP 之间产生混淆。在经典 ASP 中，Application 指代全局应用程序状态字典。 ASP.NET 使用 ApplicationInstance 代替 Application 作为属性名来指代当前的 HttpApplication 实例，以避免 ASP.NET 与经典 ASP 之间产生混淆。在经典 ASP 中，Application 指代全局应用程序状态字典。
异常 | 条件
InvalidOperationException | Web 应用程序正在 IIS 7.0 集成模式下运行，并且已尝试将属性值从非 NULL 值更改为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
Application


HttpContext ..::.Cache 属性

HttpContext
.
.
::
.
Cache 属性
HttpContext 类

获取当前应用程序域的 Cache 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Cache As Cache
    Get
public Cache Cache { get; }
public:
property Cache^ Cache {
    Cache^ get ();
}
member Cache : Cache

属性值

类型： System.Web.Caching Cache
当前应用程序域的 Cache。

每个应用程序域都有 Cache 类的一个实例。因此，Cache 属性返回的 Cache 对象是用于应用程序域中所有请求的 Cache 对象。 每个应用程序域都有 Cache 类的一个实例。因此，Cache 属性返回的 Cache 对象是用于应用程序域中所有请求的 Cache 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Current 属性

HttpContext
.
.
::
.
Current 属性
HttpContext 类

为当前 HTTP 请求获取或设置 HttpContext 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Property Current As HttpContext
    Get
    Set
public static HttpContext Current { get; set; }
public:
static property HttpContext^ Current {
    HttpContext^ get ();
    void set (HttpContext^ value);
}
static member Current : HttpContext with get, set

属性值

类型： System.Web HttpContext
当前 HTTP 请求的 HttpContext。

有关在代码中使用 Current 属性的示例，请参见如何：从缓存中移除项时通知应用程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
Response
Request


HttpContext ..::.CurrentHandler 属性

HttpContext
.
.
::
.
CurrentHandler 属性
HttpContext 类

获取表示当前正在执行的处理程序的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property CurrentHandler As IHttpHandler
    Get
public IHttpHandler CurrentHandler { get; }
public:
property IHttpHandler^ CurrentHandler {
    IHttpHandler^ get ();
}
member CurrentHandler : IHttpHandler

属性值

类型： System.Web IHttpHandler
一个 IHttpHandler，表示当前正在执行的处理程序。

CurrentHandler 属性所引用的当前正在执行的处理程序可能与 Handler 属性引用的处理程序不同。如果使用 Execute 方法或 Transfer 方法请求了另一个处理程序，则会发生此情况。当前正在执行的处理程序完成处理过程时，会还原以前确定的处理程序。 CurrentHandler 属性所引用的当前正在执行的处理程序可能与 Handler 属性引用的处理程序不同。如果使用 Execute 方法或 Transfer 方法请求了另一个处理程序，则会发生此情况。当前正在执行的处理程序完成处理过程时，会还原以前确定的处理程序。 CurrentHandler 属性所引用的当前正在执行的处理程序可能与 Handler 属性引用的处理程序不同。如果使用 Execute 方法或 Transfer 方法请求了另一个处理程序，则会发生此情况。当前正在执行的处理程序完成处理过程时，会还原以前确定的处理程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
Handler
PreviousHandler

其他资源

HTTP 处理程序和 HTTP 模块概述


HttpContext ..::.CurrentNotification 属性

HttpContext
.
.
::
.
CurrentNotification 属性
HttpContext 类

获取一个 RequestNotification 值，该值指示当前正在处理的 HttpApplication 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property CurrentNotification As RequestNotification
    Get
    Friend Set
public RequestNotification CurrentNotification { get; internal set; }
public:
property RequestNotification CurrentNotification {
    RequestNotification get ();
    internal: void set (RequestNotification value);
}
member CurrentNotification : RequestNotification with get, internal set

属性值

类型： System.Web RequestNotification
RequestNotification 值之一。
异常 | 条件
PlatformNotSupportedException | 操作要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。

CurrentNotification 属性要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。如果可用，属性返回 RequestNotification 值。CurrentNotification 属性的值指出 HttpApplication 实例中的哪一个事件当前正在处理该请求。 CurrentNotification 属性要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。如果可用，属性返回 RequestNotification 值。CurrentNotification 属性的值指出 HttpApplication 实例中的哪一个事件当前正在处理该请求。 CurrentNotification 属性要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。如果可用，属性返回 RequestNotification 值。CurrentNotification 属性的值指出 HttpApplication 实例中的哪一个事件当前正在处理该请求。

CurrentNotification 属性并非是有意设置的。相反，它是在对 ASP.NET 管线中的请求进行处理的过程中由 IIS 7.0 设置的。设置 CurrentNotification 属性会导致一个编译错误。 CurrentNotification 属性并非是有意设置的。相反，它是在对 ASP.NET 管线中的请求进行处理的过程中由 IIS 7.0 设置的。设置 CurrentNotification 属性会导致一个编译错误。 CurrentNotification 属性并非是有意设置的。相反，它是在对 ASP.NET 管线中的请求进行处理的过程中由 IIS 7.0 设置的。设置 CurrentNotification 属性会导致一个编译错误。

CurrentNotification 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 CurrentNotification 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

下面的示例演示如何使用 CurrentNotification 属性确定将对正在处理当前请求的 HttpApplication 对象的哪一个事件进行处理。在示例中，事件处理程序处理 HttpApplication 对象的多个事件，CurrentNotification 属性决定了为要处理的每个事件调用的代码。 下面的示例演示如何使用 CurrentNotification 属性确定将对正在处理当前请求的 HttpApplication 对象的哪一个事件进行处理。在示例中，事件处理程序处理 HttpApplication 对象的多个事件，CurrentNotification 属性决定了为要处理的每个事件调用的代码。

Imports System
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports Microsoft.VisualBasic

' Module that demonstrates one event handler for several events.
Namespace Samples

    Public Class ModuleExampleTestVB
        Implements IHttpModule

        Public Sub New()
            ' Constructor
        End Sub

        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.AuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.PostAuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.LogRequest, AddressOf Me.App_Handler
            AddHandler app.PostLogRequest, AddressOf Me.App_Handler
        End Sub

        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub

        ' One handler for AuthenticationRequest, PostAuthenticateRequest,
    ' LogRequest, and PostLogRequest events
        Public Sub App_Handler(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim context As HttpContext = app.Context

            If (context.CurrentNotification = RequestNotification.AuthenticateRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the AuthenticateRequest event is raised.
                Else

                    ' PostAuthenticateRequest
                    ' Put code here that runs after the AuthenticateRequest event completes.

                End If
            End If

            If (context.CurrentNotification = RequestNotification.LogRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the LogRequest event is raised.

                Else
                    ' PostLogRequest
                    ' Put code here that runs after the LogRequest event completes.

                End If
            End If
        End Sub
    End Class

End Namespace

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;

// Module that demonstrates one event handler for several events.
namespace Samples
{
    public class ModuleExampleTestCS : IHttpModule
    {
        public ModuleExampleTestCS()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.AuthenticateRequest += new EventHandler(App_Handler);
            app.PostAuthenticateRequest += new EventHandler(App_Handler);
            app.LogRequest += new EventHandler(App_Handler);
            app.PostLogRequest += new EventHandler(App_Handler);
        }
        public void Dispose()
        {
        }
        // One handler for AuthenticationRequest, PostAuthenticateRequest,
    // LogRequest, and PostLogRequest events
        public void App_Handler(object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpContext context = app.Context;

            if (context.CurrentNotification == RequestNotification.AuthenticateRequest)
            {

                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the AuthenticateRequest event is raised.
                }
                else
                {
                    // PostAuthenticateRequest
                    // Put code here that runs after the AuthenticateRequest event completes.
                }
            }
            if (context.CurrentNotification == RequestNotification.LogRequest)
            {
                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the LogRequest event is raised.
                }
                else
                {
                    // PostLogRequest
                    // Put code here that runs after the LogRequest event completes.
                }
            }

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
IsPostNotification
RequestNotification


HttpContext ..::.Error 属性

HttpContext
.
.
::
.
Error 属性
HttpContext 类

获取在处理 HTTP 请求的过程中累积的第一个错误（如果有）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Error As Exception
    Get
public Exception Error { get; }
public:
property Exception^ Error {
    Exception^ get ();
}
member Error : Exception

属性值

类型： System Exception
当前 HTTP 请求/响应过程的第一个 Exception；如果在处理 HTTP 请求期间没有发生任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 当前 HTTP 请求/响应过程的第一个 Exception；如果在处理 HTTP 请求期间没有发生任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
ClearError


HttpContext ..::.Handler 属性

HttpContext
.
.
::
.
Handler 属性
HttpContext 类

获取或设置负责处理 HTTP 请求的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Handler As IHttpHandler
    Get
    Set
public IHttpHandler Handler { get; set; }
public:
property IHttpHandler^ Handler {
    IHttpHandler^ get ();
    void set (IHttpHandler^ value);
}
member Handler : IHttpHandler with get, set

属性值

类型： System.Web IHttpHandler
负责处理 HTTP 请求的 IHttpHandler。

Handler 属性包含对处理 HTTP 请求的处理程序的引用。处理程序可以使用 httpHandlers 元素或使用用户代码中定义的自定义处理程序来指定。有关处理程序的更多信息，请参见 HTTP 处理程序和 HTTP 模块概述。 Handler 属性包含对处理 HTTP 请求的处理程序的引用。处理程序可以使用 httpHandlers 元素或使用用户代码中定义的自定义处理程序来指定。有关处理程序的更多信息，请参见 HTTP 处理程序和 HTTP 模块概述。 Handler 属性包含对处理 HTTP 请求的处理程序的引用。处理程序可以使用 httpHandlers 元素或使用用户代码中定义的自定义处理程序来指定。有关处理程序的更多信息，请参见 HTTP 处理程序和 HTTP 模块概述。

即使在服务器端方法（如 Execute 方法或 Transfer 方法）更改了当前页之后，对 Handler 属性的引用也保持不变。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
CurrentHandler
PreviousHandler

其他资源

HTTP 处理程序和 HTTP 模块概述


HttpContext ..::.IsCustomErrorEnabled 属性

HttpContext
.
.
::
.
IsCustomErrorEnabled 属性
HttpContext 类

获取一个值，该值指示是否已为当前 HTTP 请求启用自定义错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsCustomErrorEnabled As Boolean
    Get
public bool IsCustomErrorEnabled { get; }
public:
property bool IsCustomErrorEnabled {
    bool get ();
}
member IsCustomErrorEnabled : bool

属性值

类型： System Boolean
如果启用了自定义错误，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.IsDebuggingEnabled 属性

HttpContext
.
.
::
.
IsDebuggingEnabled 属性
HttpContext 类

获取一个值，该值指示当前 HTTP 请求是否处于调试模式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsDebuggingEnabled As Boolean
    Get
public bool IsDebuggingEnabled { get; }
public:
property bool IsDebuggingEnabled {
    bool get ();
}
member IsDebuggingEnabled : bool

属性值

类型： System Boolean
如果请求处于调试模式，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.IsPostNotification 属性

HttpContext
.
.
::
.
IsPostNotification 属性
HttpContext 类

获取一个值，该值是 HttpApplication 事件完成处理后 ASP.NET 管线中紧接着的当前处理点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property IsPostNotification As Boolean
    Get
    Friend Set
public bool IsPostNotification { get; internal set; }
public:
property bool IsPostNotification {
    bool get ();
    internal: void set (bool value);
}
member IsPostNotification : bool with get, internal set

属性值

类型： System Boolean
如果启用了自定义错误，则为 true；否则，为 false。
异常 | 条件
PlatformNotSupportedException | 操作要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。

只有在 IIS 7.0 处于集成模式而且 .NET Framework 至少为 3.0 版本时，才支持 IsPostNotification 属性。如果可用，此属性会返回一个布尔值，该值指示 HttpApplication 对象中事件是否已完成处理。 只有在 IIS 7.0 处于集成模式而且 .NET Framework 至少为 3.0 版本时，才支持 IsPostNotification 属性。如果可用，此属性会返回一个布尔值，该值指示 HttpApplication 对象中事件是否已完成处理。

IsPostNotification 属性并非是有意设置的。相反，它是由 IIS 7.0 为每个通知提供给 ASP.NET 运行时的。设置 IsPostNotification 属性会导致一个编译错误。 IsPostNotification 属性并非是有意设置的。相反，它是由 IIS 7.0 为每个通知提供给 ASP.NET 运行时的。设置 IsPostNotification 属性会导致一个编译错误。 IsPostNotification 属性并非是有意设置的。相反，它是由 IIS 7.0 为每个通知提供给 ASP.NET 运行时的。设置 IsPostNotification 属性会导致一个编译错误。

在 HttpApplication 对象的多个事件都由一个事件处理程序进行处理的情况下，可以将 IsPostNotification 属性与 RequestNotification 枚举结合使用，准确确定当前请求所处的应用程序生存期。

IsPostNotification 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 IsPostNotification 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

下面的示例演示如何使用 IsPostNotification 属性确定 HttpApplication 对象的事件处理完所有关联事件处理程序的时间。示例中的自定义事件处理程序处理 HttpApplication 对象的多个事件，并且使用 IsPostNotification 属性确定处理某个特定事件后调用的代码。 下面的示例演示如何使用 IsPostNotification 属性确定 HttpApplication 对象的事件处理完所有关联事件处理程序的时间。示例中的自定义事件处理程序处理 HttpApplication 对象的多个事件，并且使用 IsPostNotification 属性确定处理某个特定事件后调用的代码。

Imports System
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports Microsoft.VisualBasic

' Module that demonstrates one event handler for several events.
Namespace Samples

    Public Class ModuleExampleTestVB
        Implements IHttpModule

        Public Sub New()
            ' Constructor
        End Sub

        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.AuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.PostAuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.LogRequest, AddressOf Me.App_Handler
            AddHandler app.PostLogRequest, AddressOf Me.App_Handler
        End Sub

        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub

        ' One handler for AuthenticationRequest, PostAuthenticateRequest,
    ' LogRequest, and PostLogRequest events
        Public Sub App_Handler(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim context As HttpContext = app.Context

            If (context.CurrentNotification = RequestNotification.AuthenticateRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the AuthenticateRequest event is raised.
                Else

                    ' PostAuthenticateRequest
                    ' Put code here that runs after the AuthenticateRequest event completes.

                End If
            End If

            If (context.CurrentNotification = RequestNotification.LogRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the LogRequest event is raised.

                Else
                    ' PostLogRequest
                    ' Put code here that runs after the LogRequest event completes.

                End If
            End If
        End Sub
    End Class

End Namespace

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;

// Module that demonstrates one event handler for several events.
namespace Samples
{
    public class ModuleExampleTestCS : IHttpModule
    {
        public ModuleExampleTestCS()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.AuthenticateRequest += new EventHandler(App_Handler);
            app.PostAuthenticateRequest += new EventHandler(App_Handler);
            app.LogRequest += new EventHandler(App_Handler);
            app.PostLogRequest += new EventHandler(App_Handler);
        }
        public void Dispose()
        {
        }
        // One handler for AuthenticationRequest, PostAuthenticateRequest,
    // LogRequest, and PostLogRequest events
        public void App_Handler(object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpContext context = app.Context;

            if (context.CurrentNotification == RequestNotification.AuthenticateRequest)
            {

                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the AuthenticateRequest event is raised.
                }
                else
                {
                    // PostAuthenticateRequest
                    // Put code here that runs after the AuthenticateRequest event completes.
                }
            }
            if (context.CurrentNotification == RequestNotification.LogRequest)
            {
                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the LogRequest event is raised.
                }
                else
                {
                    // PostLogRequest
                    // Put code here that runs after the LogRequest event completes.
                }
            }

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
CurrentNotification
RequestNotification


HttpContext ..::.Items 属性

HttpContext
.
.
::
.
Items 属性
HttpContext 类

获取可用于在 HTTP 请求过程中在 IHttpModule 接口和 IHttpHandler 接口之间组织和共享数据的键/值集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Items As IDictionary
    Get
public IDictionary Items { get; }
public:
property IDictionary^ Items {
    IDictionary^ get ();
}
member Items : IDictionary

属性值

类型： System.Collections IDictionary
IDictionary 键/值集合，按指定的键提供对集合中个别值的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.PreviousHandler 属性

HttpContext
.
.
::
.
PreviousHandler 属性
HttpContext 类

获取父处理程序的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property PreviousHandler As IHttpHandler
    Get
public IHttpHandler PreviousHandler { get; }
public:
property IHttpHandler^ PreviousHandler {
    IHttpHandler^ get ();
}
member PreviousHandler : IHttpHandler

属性值

类型： System.Web IHttpHandler
IHttpHandler 实例，如果未找到上一个处理程序，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

PreviousHandler 属性对应于执行当前请求之前的上一个处理程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
Handler
CurrentHandler

其他资源

HTTP 处理程序和 HTTP 模块概述


HttpContext ..::.Profile 属性

HttpContext
.
.
::
.
Profile 属性
HttpContext 类

获取当前用户配置文件的 ProfileBase 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Profile As ProfileBase
    Get
public ProfileBase Profile { get; }
public:
property ProfileBase^ Profile {
    ProfileBase^ get ();
}
member Profile : ProfileBase

属性值

类型： System.Web.Profile ProfileBase
如果应用程序配置文件包含配置文件的属性的定义，则为 ProfileBase；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

通过类型安全 API，Profile 属性用于结构化数据的持久性存储。如果访问 Profile 属性时不存在任何值，则返回一个空实例；不返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 通过类型安全 API，Profile 属性用于结构化数据的持久性存储。如果访问 Profile 属性时不存在任何值，则返回一个空实例；不返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间
System.Web.Profile


HttpContext ..::.Request 属性

HttpContext
.
.
::
.
Request 属性
HttpContext 类

获取当前 HTTP 请求的 HttpRequest 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Request As HttpRequest
    Get
public HttpRequest Request { get; }
public:
property HttpRequest^ Request {
    HttpRequest^ get ();
}
member Request : HttpRequest

属性值

类型： System.Web HttpRequest
当前 HTTP 请求的 HttpRequest。
异常 | 条件
HttpException | Web 应用程序正在 IIS 7 集成模式下运行。

Request 属性提供对 HttpRequest 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpRequest 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Request.Browser 获取客户端浏览器的功能。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpRequest 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Request.Browser。 Request 属性提供对 HttpRequest 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpRequest 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Request.Browser 获取客户端浏览器的功能。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpRequest 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Request.Browser。 Request 属性提供对 HttpRequest 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpRequest 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Request.Browser 获取客户端浏览器的功能。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpRequest 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Request.Browser。 Request 属性提供对 HttpRequest 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpRequest 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Request.Browser 获取客户端浏览器的功能。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpRequest 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Request.Browser。 Request 属性提供对 HttpRequest 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpRequest 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Request.Browser 获取客户端浏览器的功能。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpRequest 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Request.Browser。

说明 说明

如果尝试在 HttpRequest 对象不可用时使用此属性，ASP.NET 将引发异常。例如，在 global.asax 文件的 Application_Start 方法中或从 Application_Start 方法调用的方法中，该属性值为 true。在这种情况下，尚未创建 HTTP 请求。 如果尝试在 HttpRequest 对象不可用时使用此属性，ASP.NET 将引发异常。例如，在 global.asax 文件的 Application_Start 方法中或从 Application_Start 方法调用的方法中，该属性值为 true。在这种情况下，尚未创建 HTTP 请求。 如果尝试在 HttpRequest 对象不可用时使用此属性，ASP.NET 将引发异常。例如，在 global.asax 文件的 Application_Start 方法中或从 Application_Start 方法调用的方法中，该属性值为 true。在这种情况下，尚未创建 HTTP 请求。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Response 属性

HttpContext
.
.
::
.
Response 属性
HttpContext 类

获取当前 HTTP 响应的 HttpResponse 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Response As HttpResponse
    Get
public HttpResponse Response { get; }
public:
property HttpResponse^ Response {
    HttpResponse^ get ();
}
member Response : HttpResponse

属性值

类型： System.Web HttpResponse
当前 HTTP 响应的 HttpResponse。
异常 | 条件
HttpException | Web 应用程序正在 IIS 7 的“集成”模式下运行。

Response 属性提供对 HttpResponse 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Response.Write("some output") 将输出写入 HTTP 输出流。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Response.Write("some output")。 Response 属性提供对 HttpResponse 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Response.Write("some output") 将输出写入 HTTP 输出流。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Response.Write("some output")。 Response 属性提供对 HttpResponse 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Response.Write("some output") 将输出写入 HTTP 输出流。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Response.Write("some output")。 Response 属性提供对 HttpResponse 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Response.Write("some output") 将输出写入 HTTP 输出流。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Response.Write("some output")。 Response 属性提供对 HttpResponse 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Response.Write("some output") 将输出写入 HTTP 输出流。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Response.Write("some output")。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Server 属性

HttpContext
.
.
::
.
Server 属性
HttpContext 类

获取提供用于处理 Web 请求的方法的 HttpServerUtility 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Server As HttpServerUtility
    Get
public HttpServerUtility Server { get; }
public:
property HttpServerUtility^ Server {
    HttpServerUtility^ get ();
}
member Server : HttpServerUtility

属性值

类型： System.Web HttpServerUtility
当前 HTTP 请求的 HttpServerUtility。

Server 属性提供对 HttpServerUtility 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Server.CreateObject("MyCOMComponent") 在服务器上创建 COM 对象的实例。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpServerUtility 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Server.CreateObject("MyCOMComponent")。 Server 属性提供对 HttpServerUtility 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Server.CreateObject("MyCOMComponent") 在服务器上创建 COM 对象的实例。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpServerUtility 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Server.CreateObject("MyCOMComponent")。 Server 属性提供对 HttpServerUtility 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Server.CreateObject("MyCOMComponent") 在服务器上创建 COM 对象的实例。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpServerUtility 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Server.CreateObject("MyCOMComponent")。 Server 属性提供对 HttpServerUtility 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Server.CreateObject("MyCOMComponent") 在服务器上创建 COM 对象的实例。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpServerUtility 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Server.CreateObject("MyCOMComponent")。 Server 属性提供对 HttpServerUtility 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Server.CreateObject("MyCOMComponent") 在服务器上创建 COM 对象的实例。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpServerUtility 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Server.CreateObject("MyCOMComponent")。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Session 属性

HttpContext
.
.
::
.
Session 属性
HttpContext 类

为当前 HTTP 请求获取 HttpSessionState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Session As HttpSessionState
    Get
public HttpSessionState Session { get; }
public:
property HttpSessionState^ Session {
    HttpSessionState^ get ();
}
member Session : HttpSessionState

属性值

类型： System.Web.SessionState HttpSessionState
当前 HTTP 请求的 HttpSessionState 对象。

Session 属性提供对 HttpSessionState 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Session("SessionVariable1") 获取或设置会话状态变量 SessionVariable1 的值。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Session("SessionVariable1")。 Session 属性提供对 HttpSessionState 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Session("SessionVariable1") 获取或设置会话状态变量 SessionVariable1 的值。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Session("SessionVariable1")。 Session 属性提供对 HttpSessionState 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Session("SessionVariable1") 获取或设置会话状态变量 SessionVariable1 的值。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Session("SessionVariable1")。 Session 属性提供对 HttpSessionState 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Session("SessionVariable1") 获取或设置会话状态变量 SessionVariable1 的值。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Session("SessionVariable1")。 Session 属性提供对 HttpSessionState 类的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 Session("SessionVariable1") 获取或设置会话状态变量 SessionVariable1 的值。但是，如果要从 ASP.NET 代码隐藏模块中使用 HttpResponse 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.Session("SessionVariable1")。

如果未启用会话状态，则无法设置或获取会话状态值。若要为应用程序配置会话状态设置，请在 Web.config 文件中设置 sessionState 元素的 mode 特性。启用会话状态后，如果请求一个会话状态变量中不存在的值，则会返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 如果未启用会话状态，则无法设置或获取会话状态值。若要为应用程序配置会话状态设置，请在 Web.config 文件中设置 sessionState 元素的 mode 特性。启用会话状态后，如果请求一个会话状态变量中不存在的值，则会返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 如果未启用会话状态，则无法设置或获取会话状态值。若要为应用程序配置会话状态设置，请在 Web.config 文件中设置 sessionState 元素的 mode 特性。启用会话状态后，如果请求一个会话状态变量中不存在的值，则会返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.SkipAuthorization 属性

HttpContext
.
.
::
.
SkipAuthorization 属性
HttpContext 类

获取或设置一个值，该值指定 UrlAuthorizationModule 对象是否应跳过对当前请求的授权检查。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property SkipAuthorization As Boolean
    Get
    Set
public bool SkipAuthorization { get; set; }
public:
property bool SkipAuthorization {
    bool get ();
    void set (bool value);
}
member SkipAuthorization : bool with get, set

属性值

类型： System Boolean
如果 UrlAuthorizationModule 应跳过授权检查，则为 true；否则为 false。默认值为 false。 如果 UrlAuthorizationModule 应跳过授权检查，则为 true；否则为 false。默认值为 false。

SkipAuthorization 属性是一个高级属性，供需要重定向到允许匿名连接的页的身份验证模块使用。Forms 身份验证模块和 Passport 身份验证模块在重定向到已配置的登录页时都设置 SkipAuthorization。设置 SkipAuthorization 要求设置 ControlPrincipal 标志。 SkipAuthorization 属性是一个高级属性，供需要重定向到允许匿名连接的页的身份验证模块使用。Forms 身份验证模块和 Passport 身份验证模块在重定向到已配置的登录页时都设置 SkipAuthorization。设置 SkipAuthorization 要求设置 ControlPrincipal 标志。 SkipAuthorization 属性是一个高级属性，供需要重定向到允许匿名连接的页的身份验证模块使用。Forms 身份验证模块和 Passport 身份验证模块在重定向到已配置的登录页时都设置 SkipAuthorization。设置 SkipAuthorization 要求设置 ControlPrincipal 标志。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Timestamp 属性

HttpContext
.
.
::
.
Timestamp 属性
HttpContext 类

获取当前 HTTP 请求的初始时间戳。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Timestamp As DateTime
    Get
public DateTime Timestamp { get; }
public:
property DateTime Timestamp {
    DateTime get ();
}
member Timestamp : DateTime

属性值

类型： System DateTime
当前 HTTP 请求的时间戳。

从 Timestamp 属性返回的时间戳是服务器的本地时间，此时间是在 HttpContext 对象的实例化过程中设置的。本地时间等于 UTC 时间加上 UTC 偏移量。 从 Timestamp 属性返回的时间戳是服务器的本地时间，此时间是在 HttpContext 对象的实例化过程中设置的。本地时间等于 UTC 时间加上 UTC 偏移量。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.Trace 属性

HttpContext
.
.
::
.
Trace 属性
HttpContext 类

为当前 HTTP 响应获取 TraceContext 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Trace As TraceContext
    Get
public TraceContext Trace { get; }
public:
property TraceContext^ Trace {
    TraceContext^ get ();
}
member Trace : TraceContext

属性值

类型： System.Web TraceContext
当前 HTTP 响应的 TraceContext。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContext ..::.User 属性

HttpContext
.
.
::
.
User 属性
HttpContext 类

为当前 HTTP 请求获取或设置安全信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property User As IPrincipal
    Get
    Set
public IPrincipal User { get; set; }
public:
property IPrincipal^ User {
    IPrincipal^ get ();
    void set (IPrincipal^ value);
}
member User : IPrincipal with get, set

属性值

类型： System.Security.Principal IPrincipal
当前 HTTP 请求的安全信息。

设置 User 属性要求设置 ControlPrincipal 标志。

User 属性提供对 IPrincipal 接口的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 User.Identity.Name 获取用户（用于运行当前进程的用户）的名称。但是，如果要从 ASP.NET 代码隐藏模块中使用 IPrincipal 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.User.Identity.Name。 User 属性提供对 IPrincipal 接口的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 User.Identity.Name 获取用户（用于运行当前进程的用户）的名称。但是，如果要从 ASP.NET 代码隐藏模块中使用 IPrincipal 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.User.Identity.Name。 User 属性提供对 IPrincipal 接口的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 User.Identity.Name 获取用户（用于运行当前进程的用户）的名称。但是，如果要从 ASP.NET 代码隐藏模块中使用 IPrincipal 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.User.Identity.Name。 User 属性提供对 IPrincipal 接口的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 User.Identity.Name 获取用户（用于运行当前进程的用户）的名称。但是，如果要从 ASP.NET 代码隐藏模块中使用 IPrincipal 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.User.Identity.Name。 User 属性提供对 IPrincipal 接口的属性和方法的编程访问。由于 ASP.NET 页包含对 System.Web 命名空间（含有 HttpContext 类）的默认引用，因此在 .aspx 页上可以引用 HttpContext 的成员，而不需要使用对 HttpContext 的完全限定类引用。例如，可使用 User.Identity.Name 获取用户（用于运行当前进程的用户）的名称。但是，如果要从 ASP.NET 代码隐藏模块中使用 IPrincipal 的成员，则必须在模块中包括对 System.Web 命名空间的引用，同时还要包括对当前活动的请求/响应上下文以及要使用的 System.Web 中的类的完全限定引用。例如，在代码隐藏页中，必须指定完全限定名称 HttpContext.Current.User.Identity.Name。

下面的示例演示如何通过 User 属性访问有关当前用户的属性。这些属性用于设置网页的标题。 下面的示例演示如何通过 User 属性访问有关当前用户的属性。这些属性用于设置网页的标题。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If (User.Identity.IsAuthenticated) Then
        Page.Title = "Home page for " + User.Identity.Name
    Else
        Page.Title = "Home page for guest user."
    End If
End Sub

protected void Page_Load(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        Page.Title = "Home page for " + User.Identity.Name;
    }
    else
    {
        Page.Title = "Home page for guest user.";
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpContext 类
HttpContext 成员
System.Web 命名空间


HttpContextBase 类

HttpContextBase 类
成员

用作包含有关某个 HTTP 请求的 HTTP 特定信息的类的基类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpContextBase _
    Implements IServiceProvider
public abstract class HttpContextBase : IServiceProvider
public ref class HttpContextBase abstract : IServiceProvider
[<AbstractClassAttribute>]
type HttpContextBase =
    class
        interface IServiceProvider
    end

HttpContextBase 类为抽象类，该类包含的成员与 HttpContext 类相同。使用 HttpContextBase 类可以创建一些派生类，这些派生类与 HttpContext 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpContextBase 类为抽象类，该类包含的成员与 HttpContext 类相同。使用 HttpContextBase 类可以创建一些派生类，这些派生类与 HttpContext 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpContextBase 类为抽象类，该类包含的成员与 HttpContext 类相同。使用 HttpContextBase 类可以创建一些派生类，这些派生类与 HttpContext 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpContextWrapper 类是从 HttpContextBase 类派生的。HttpContextWrapper 类用作 HttpContext 类的包装。在运行时，通常使用 HttpContextWrapper 类的实例调用 HttpContext 对象上的成员。 HttpContextWrapper 类是从 HttpContextBase 类派生的。HttpContextWrapper 类用作 HttpContext 类的包装。在运行时，通常使用 HttpContextWrapper 类的实例调用 HttpContext 对象上的成员。 HttpContextWrapper 类是从 HttpContextBase 类派生的。HttpContextWrapper 类用作 HttpContext 类的包装。在运行时，通常使用 HttpContextWrapper 类的实例调用 HttpContext 对象上的成员。

System.Web System.Web..::.HttpContextBaseHttpContextBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 成员
System.Web 命名空间


HttpContextBase 成员

HttpContextBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextBase 类

用作包含有关某个 HTTP 请求的 HTTP 特定信息的类的基类。

HttpContextBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpContextBase 类
System.Web 命名空间


HttpContextBase 构造函数

HttpContextBase 构造函数
HttpContextBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpContextBase()
protected:
HttpContextBase()
new : unit -> HttpContextBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase 方法

HttpContextBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextBase 类

HttpContextBase 类型公开以下成员。

名称 说明
页首

参考

HttpContextBase 类
System.Web 命名空间


HttpContextBase ..::.AddError 方法

HttpContextBase
.
.
::
.
AddError 方法
HttpContextBase 类

在派生类中重写时，将异常添加到当前 HTTP 请求的异常集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddError ( _
    errorInfo As Exception _
)
public virtual void AddError(
    Exception errorInfo
)
public:
virtual void AddError(
    Exception^ errorInfo
)
abstract AddError :
        errorInfo:Exception -> unit
override AddError :
        errorInfo:Exception -> unit

参数

errorInfo
类型： System Exception
要添加到异常集合中的异常。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.ClearError 方法

HttpContextBase
.
.
::
.
ClearError 方法
HttpContextBase 类

在派生类中重写时，清除当前 HTTP 请求的所有错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub ClearError
public virtual void ClearError()
public:
virtual void ClearError()
abstract ClearError : unit -> unit
override ClearError : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.GetGlobalResourceObject 方法

HttpContextBase
.
.
::
.
GetGlobalResourceObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextBase 类

在派生类中重写时，获取应用程序级资源。

名称 说明
页首

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.GetGlobalResourceObject 方法 (String, String)

HttpContextBase
.
.
::
.
GetGlobalResourceObject 方法 (String, String)
HttpContextBase 类

在派生类中重写时，获取基于指定的 ClassKey 和 ResourceKey 属性的应用程序级资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetGlobalResourceObject ( _
    classKey As String, _
    resourceKey As String _
) As Object
public virtual Object GetGlobalResourceObject(
    string classKey,
    string resourceKey
)
public:
virtual Object^ GetGlobalResourceObject(
    String^ classKey,
    String^ resourceKey
)
abstract GetGlobalResourceObject :
        classKey:string *
        resourceKey:string -> Object
override GetGlobalResourceObject :
        classKey:string *
        resourceKey:string -> Object

参数

classKey
类型： System String
一个字符串，表示所请求资源对象的 ClassKey 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。

返回值

类型： System Object
所请求的应用程序级资源对象；如果没有找到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
GetGlobalResourceObject 重载
System.Web 命名空间


HttpContextBase ..::.GetGlobalResourceObject 方法 (String, String, CultureInfo)

HttpContextBase
.
.
::
.
GetGlobalResourceObject 方法 (String, String, CultureInfo)
HttpContextBase 类

在派生类中重写时，获取基于指定的 ClassKey 和 ResourceKey 属性以及 CultureInfo 对象的应用程序级资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetGlobalResourceObject ( _
    classKey As String, _
    resourceKey As String, _
    culture As CultureInfo _
) As Object
public virtual Object GetGlobalResourceObject(
    string classKey,
    string resourceKey,
    CultureInfo culture
)
public:
virtual Object^ GetGlobalResourceObject(
    String^ classKey,
    String^ resourceKey,
    CultureInfo^ culture
)
abstract GetGlobalResourceObject :
        classKey:string *
        resourceKey:string *
        culture:CultureInfo -> Object
override GetGlobalResourceObject :
        classKey:string *
        resourceKey:string *
        culture:CultureInfo -> Object

参数

classKey
类型： System String
一个字符串，表示所请求资源对象的 ClassKey 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。
culture
类型： System.Globalization CultureInfo
一个字符串，表示请求的资源的 CultureInfo 对象。

返回值

类型： System Object
所请求的应用程序级资源对象（针对指定的区域性进行了本地化）；如果没有找到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
GetGlobalResourceObject 重载
System.Web 命名空间


HttpContextBase ..::.GetLocalResourceObject 方法

HttpContextBase
.
.
::
.
GetLocalResourceObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextBase 类

在派生类中重写时，获取页级别的资源。

名称 说明
页首

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.GetLocalResourceObject 方法 (String, String)

HttpContextBase
.
.
::
.
GetLocalResourceObject 方法 (String, String)
HttpContextBase 类

在派生类中重写时，获取基于指定的 VirtualPath 和 ResourceKey 属性的页级别的资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetLocalResourceObject ( _
    virtualPath As String, _
    resourceKey As String _
) As Object
public virtual Object GetLocalResourceObject(
    string virtualPath,
    string resourceKey
)
public:
virtual Object^ GetLocalResourceObject(
    String^ virtualPath,
    String^ resourceKey
)
abstract GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string -> Object
override GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string -> Object

参数

virtualPath
类型： System String
一个表示本地资源对象的 VirtualPath 属性的字符串。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。

返回值

类型： System Object
所请求的页级别的资源对象；如果没有找到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
GetLocalResourceObject 重载
System.Web 命名空间


HttpContextBase ..::.GetLocalResourceObject 方法 (String, String, CultureInfo)

HttpContextBase
.
.
::
.
GetLocalResourceObject 方法 (String, String, CultureInfo)
HttpContextBase 类

在派生类中重写时，获取基于指定的 VirtualPath 和 ResourceKey 属性以及 CultureInfo 对象的页级别的资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetLocalResourceObject ( _
    virtualPath As String, _
    resourceKey As String, _
    culture As CultureInfo _
) As Object
public virtual Object GetLocalResourceObject(
    string virtualPath,
    string resourceKey,
    CultureInfo culture
)
public:
virtual Object^ GetLocalResourceObject(
    String^ virtualPath,
    String^ resourceKey,
    CultureInfo^ culture
)
abstract GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string *
        culture:CultureInfo -> Object
override GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string *
        culture:CultureInfo -> Object

参数

virtualPath
类型： System String
一个表示本地资源对象的 VirtualPath 属性的字符串。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。
culture
类型： System.Globalization CultureInfo
一个字符串，表示所请求资源对象的 CultureInfo 对象。

返回值

类型： System Object
所请求的本地资源对象（针对指定区域性对其进行了本地化）；如果未找到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
GetLocalResourceObject 重载
System.Web 命名空间


HttpContextBase ..::.GetSection 方法

HttpContextBase
.
.
::
.
GetSection 方法
HttpContextBase 类

在派生类中重写时，获取当前应用程序的默认配置的指定配置节。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetSection ( _
    sectionName As String _
) As Object
public virtual Object GetSection(
    string sectionName
)
public:
virtual Object^ GetSection(
    String^ sectionName
)
abstract GetSection :
        sectionName:string -> Object
override GetSection :
        sectionName:string -> Object

参数

sectionName
类型： System String
配置节路径（使用 XPath 格式）和配置元素名称。

返回值

类型： System Object
指定的配置节，如果该配置节不存在，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.GetService 方法

HttpContextBase
.
.
::
.
GetService 方法
HttpContextBase 类

在派生类中重写时，返回当前服务类型的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetService ( _
    serviceType As Type _
) As Object
public virtual Object GetService(
    Type serviceType
)
public:
virtual Object^ GetService(
    Type^ serviceType
)
abstract GetService :
        serviceType:Type -> Object
override GetService :
        serviceType:Type -> Object

参数

serviceType
类型： System Type
要获取的服务对象的类型。

返回值

类型： System Object
当前服务类型，如果未找到任何服务，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.RemapHandler 方法

HttpContextBase
.
.
::
.
RemapHandler 方法
HttpContextBase 类

在派生类中被重写时，指定请求的处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemapHandler ( _
    handler As IHttpHandler _
)
public virtual void RemapHandler(
    IHttpHandler handler
)
public:
virtual void RemapHandler(
    IHttpHandler^ handler
)
abstract RemapHandler :
        handler:IHttpHandler -> unit
override RemapHandler :
        handler:IHttpHandler -> unit

参数

handler
类型： System.Web IHttpHandler
应处理请求的对象。
异常 | 条件
NotImplementedException | 派生的类型无法实现此方法。

如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。 如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。 如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.RewritePath 方法

HttpContextBase
.
.
::
.
RewritePath 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextBase 类

在派生类中重写时，分配内部重写路径，这使得请求 URL 可以与资源的内部路径不同。

名称 说明
页首

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.RewritePath 方法 (String)

HttpContextBase
.
.
::
.
RewritePath 方法 (String)
HttpContextBase 类

在派生类中重写时，使用指定的路径重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RewritePath ( _
    path As String _
)
public virtual void RewritePath(
    string path
)
public:
virtual void RewritePath(
    String^ path
)
abstract RewritePath :
        path:string -> unit
override RewritePath :
        path:string -> unit

参数

path
类型： System String
替换路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
RewritePath 重载
System.Web 命名空间


HttpContextBase ..::.RewritePath 方法 (String, Boolean)

HttpContextBase
.
.
::
.
RewritePath 方法 (String, Boolean)
HttpContextBase 类

在派生类中重写时，使用指定的路径和一个值重写 URL，该值指定是否修改服务器资源的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RewritePath ( _
    path As String, _
    rebaseClientPath As Boolean _
)
public virtual void RewritePath(
    string path,
    bool rebaseClientPath
)
public:
virtual void RewritePath(
    String^ path,
    bool rebaseClientPath
)
abstract RewritePath :
        path:string *
        rebaseClientPath:bool -> unit
override RewritePath :
        path:string *
        rebaseClientPath:bool -> unit

参数

path
类型： System String
替换路径。
rebaseClientPath
类型： System Boolean
如果重置虚拟路径，则为 true；如果保持虚拟路径不变，则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
RewritePath 重载
System.Web 命名空间


HttpContextBase ..::.RewritePath 方法 (String, String, String)

HttpContextBase
.
.
::
.
RewritePath 方法 (String, String, String)
HttpContextBase 类

在派生类中重写时，使用指定的路径、路径信息和查询字符串信息重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RewritePath ( _
    filePath As String, _
    pathInfo As String, _
    queryString As String _
)
public virtual void RewritePath(
    string filePath,
    string pathInfo,
    string queryString
)
public:
virtual void RewritePath(
    String^ filePath,
    String^ pathInfo,
    String^ queryString
)
abstract RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string -> unit
override RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string -> unit

参数

filePath
类型： System String
替换路径。
pathInfo
类型： System String
资源的附加路径信息。
queryString
类型： System String
请求查询字符串。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
RewritePath 重载
System.Web 命名空间


HttpContextBase ..::.RewritePath 方法 (String, String, String, Boolean)

HttpContextBase
.
.
::
.
RewritePath 方法 (String, String, String, Boolean)
HttpContextBase 类

在派生类中重写时，使用指定的路径、路径信息、查询字符串信息和一个值（该值指定是否将客户端文件路径设置为重写路径）重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RewritePath ( _
    filePath As String, _
    pathInfo As String, _
    queryString As String, _
    setClientFilePath As Boolean _
)
public virtual void RewritePath(
    string filePath,
    string pathInfo,
    string queryString,
    bool setClientFilePath
)
public:
virtual void RewritePath(
    String^ filePath,
    String^ pathInfo,
    String^ queryString,
    bool setClientFilePath
)
abstract RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string *
        setClientFilePath:bool -> unit
override RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string *
        setClientFilePath:bool -> unit

参数

filePath
类型： System String
替换路径。
pathInfo
类型： System String
资源的附加路径信息。
queryString
类型： System String
请求查询字符串。
setClientFilePath
类型： System Boolean
若要将用于客户端资源的文件路径设置为 filePath 参数的值，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
RewritePath 重载
System.Web 命名空间


HttpContextBase ..::.SetSessionStateBehavior 方法

HttpContextBase
.
.
::
.
SetSessionStateBehavior 方法
HttpContextBase 类

在派生类中重写时，设置支持 HTTP 请求所必需的会话状态行为的类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetSessionStateBehavior ( _
    sessionStateBehavior As SessionStateBehavior _
)
public virtual void SetSessionStateBehavior(
    SessionStateBehavior sessionStateBehavior
)
public:
virtual void SetSessionStateBehavior(
    SessionStateBehavior sessionStateBehavior
)
abstract SetSessionStateBehavior :
        sessionStateBehavior:SessionStateBehavior -> unit
override SetSessionStateBehavior :
        sessionStateBehavior:SessionStateBehavior -> unit

参数

sessionStateBehavior
类型： System.Web.SessionState SessionStateBehavior
枚举值之一，该值指定需要什么类型的会话状态行为。
异常 | 条件
NotImplementedException | 派生的类型无法实现此方法。

SetSessionStateBehavior 方法提供必须通过继承自此类型的类来实现的基方法。ASP.NET 在 HttpContextWrapper 和 HttpContext 类中实现此方法。 SetSessionStateBehavior 方法提供必须通过继承自此类型的类来实现的基方法。ASP.NET 在 HttpContextWrapper 和 HttpContext 类中实现此方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间
SetSessionStateBehavior


HttpContextBase 属性

HttpContextBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextBase 类

HttpContextBase 类型公开以下成员。

名称 说明
页首

参考

HttpContextBase 类
System.Web 命名空间


HttpContextBase ..::.AllErrors 属性

HttpContextBase
.
.
::
.
AllErrors 属性
HttpContextBase 类

在派生类中重写时，获取在处理 HTTP 请求时累积的错误（如果有）的数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AllErrors As Exception()
    Get
public virtual Exception[] AllErrors { get; }
public:
virtual property array<Exception^>^ AllErrors {
    array<Exception^>^ get ();
}
abstract AllErrors : Exception[]
override AllErrors : Exception[]

属性值

类型：
array<
System Exception
>
[]
()
[]

当前 HTTP 请求的 Exception 对象的数组，如果在 HTTP 请求处理过程中没有累积任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Application 属性

HttpContextBase
.
.
::
.
Application 属性
HttpContextBase 类

在派生类中重写时，获取当前 HTTP 请求的 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Application As HttpApplicationStateBase
    Get
public virtual HttpApplicationStateBase Application { get; }
public:
virtual property HttpApplicationStateBase^ Application {
    HttpApplicationStateBase^ get ();
}
abstract Application : HttpApplicationStateBase
override Application : HttpApplicationStateBase

属性值

类型： System.Web HttpApplicationStateBase
当前 HTTP 请求的应用程序状态对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.ApplicationInstance 属性

HttpContextBase
.
.
::
.
ApplicationInstance 属性
HttpContextBase 类

在派生类中重写时，获取或设置当前 HTTP 请求的 HttpApplication 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ApplicationInstance As HttpApplication
    Get
    Set
public virtual HttpApplication ApplicationInstance { get; set; }
public:
virtual property HttpApplication^ ApplicationInstance {
    HttpApplication^ get ();
    void set (HttpApplication^ value);
}
abstract ApplicationInstance : HttpApplication with get, set
override ApplicationInstance : HttpApplication with get, set

属性值

类型： System.Web HttpApplication
当前 HTTP 请求的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Cache 属性

HttpContextBase
.
.
::
.
Cache 属性
HttpContextBase 类

在派生类中重写时，获取当前应用程序域的 Cache 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Cache As Cache
    Get
public virtual Cache Cache { get; }
public:
virtual property Cache^ Cache {
    Cache^ get ();
}
abstract Cache : Cache
override Cache : Cache

属性值

类型： System.Web.Caching Cache
当前应用程序域的缓存。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.CurrentHandler 属性

HttpContextBase
.
.
::
.
CurrentHandler 属性
HttpContextBase 类

在派生类中重写时，获取表示当前正在执行的处理程序的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CurrentHandler As IHttpHandler
    Get
public virtual IHttpHandler CurrentHandler { get; }
public:
virtual property IHttpHandler^ CurrentHandler {
    IHttpHandler^ get ();
}
abstract CurrentHandler : IHttpHandler
override CurrentHandler : IHttpHandler

属性值

类型： System.Web IHttpHandler
一个表示当前正在执行的处理程序的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.CurrentNotification 属性

HttpContextBase
.
.
::
.
CurrentNotification 属性
HttpContextBase 类

在派生类中重写时，获取一个 RequestNotification 值，该值指示当前正在处理的 HttpApplication 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CurrentNotification As RequestNotification
    Get
public virtual RequestNotification CurrentNotification { get; }
public:
virtual property RequestNotification CurrentNotification {
    RequestNotification get ();
}
abstract CurrentNotification : RequestNotification
override CurrentNotification : RequestNotification

属性值

类型： System.Web RequestNotification
RequestNotification 值之一。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Error 属性

HttpContextBase
.
.
::
.
Error 属性
HttpContextBase 类

在派生类中重写时，获取在处理 HTTP 请求时累积的错误中的第一个错误（如果有）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Error As Exception
    Get
public virtual Exception Error { get; }
public:
virtual property Exception^ Error {
    Exception^ get ();
}
abstract Error : Exception
override Error : Exception

属性值

类型： System Exception
当前 HTTP 请求/响应进程的第一个异常，如果在 HTTP 请求处理过程中未累积任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Handler 属性

HttpContextBase
.
.
::
.
Handler 属性
HttpContextBase 类

在派生类中重写时，获取或设置负责处理 HTTP 请求的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Handler As IHttpHandler
    Get
    Set
public virtual IHttpHandler Handler { get; set; }
public:
virtual property IHttpHandler^ Handler {
    IHttpHandler^ get ();
    void set (IHttpHandler^ value);
}
abstract Handler : IHttpHandler with get, set
override Handler : IHttpHandler with get, set

属性值

类型： System.Web IHttpHandler
负责处理 HTTP 请求的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.IsCustomErrorEnabled 属性

HttpContextBase
.
.
::
.
IsCustomErrorEnabled 属性
HttpContextBase 类

在派生类中重写时，获取一个值，该值指示是否为当前 HTTP 请求启用了自定义错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsCustomErrorEnabled As Boolean
    Get
public virtual bool IsCustomErrorEnabled { get; }
public:
virtual property bool IsCustomErrorEnabled {
    bool get ();
}
abstract IsCustomErrorEnabled : bool
override IsCustomErrorEnabled : bool

属性值

类型： System Boolean
如果启用了自定义错误，则为 true；否则，为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.IsDebuggingEnabled 属性

HttpContextBase
.
.
::
.
IsDebuggingEnabled 属性
HttpContextBase 类

在派生类中重写时，获取一个值，该值指示当前 HTTP 请求是否处于调试模式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsDebuggingEnabled As Boolean
    Get
public virtual bool IsDebuggingEnabled { get; }
public:
virtual property bool IsDebuggingEnabled {
    bool get ();
}
abstract IsDebuggingEnabled : bool
override IsDebuggingEnabled : bool

属性值

类型： System Boolean
如果请求处于调试模式，则为 true；否则，为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.IsPostNotification 属性

HttpContextBase
.
.
::
.
IsPostNotification 属性
HttpContextBase 类

在派生类中重写时，获取一个值，该值指示 HttpApplication 事件是否已完成处理。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsPostNotification As Boolean
    Get
public virtual bool IsPostNotification { get; }
public:
virtual property bool IsPostNotification {
    bool get ();
}
abstract IsPostNotification : bool
override IsPostNotification : bool

属性值

类型： System Boolean
如果该事件已完成处理，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Items 属性

HttpContextBase
.
.
::
.
Items 属性
HttpContextBase 类

在派生类中重写时，获取一个键/值集合，该集合在 HTTP 请求过程中可以用于在模块与处理程序之间组织和共享数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Items As IDictionary
    Get
public virtual IDictionary Items { get; }
public:
virtual property IDictionary^ Items {
    IDictionary^ get ();
}
abstract Items : IDictionary
override Items : IDictionary

属性值

类型： System.Collections IDictionary
一个键/值集合，使用指定的键提供对集合中单个值的访问。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.PreviousHandler 属性

HttpContextBase
.
.
::
.
PreviousHandler 属性
HttpContextBase 类

在派生类中重写时，获取父处理程序的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreviousHandler As IHttpHandler
    Get
public virtual IHttpHandler PreviousHandler { get; }
public:
virtual property IHttpHandler^ PreviousHandler {
    IHttpHandler^ get ();
}
abstract PreviousHandler : IHttpHandler
override PreviousHandler : IHttpHandler

属性值

类型： System.Web IHttpHandler
表示父处理程序的 IHttpHandler 对象，如果未找到任何父处理程序，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Profile 属性

HttpContextBase
.
.
::
.
Profile 属性
HttpContextBase 类

在派生类中重写时，获取当前用户配置文件的 ProfileBase 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Profile As ProfileBase
    Get
public virtual ProfileBase Profile { get; }
public:
virtual property ProfileBase^ Profile {
    ProfileBase^ get ();
}
abstract Profile : ProfileBase
override Profile : ProfileBase

属性值

类型： System.Web.Profile ProfileBase
如果在应用程序配置文件中定义了配置文件属性，并对应用程序启用了配置文件，则为表示当前用户配置文件的对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Request 属性

HttpContextBase
.
.
::
.
Request 属性
HttpContextBase 类

在派生类中重写时，获取当前 HTTP 请求的 HttpRequest 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Request As HttpRequestBase
    Get
public virtual HttpRequestBase Request { get; }
public:
virtual property HttpRequestBase^ Request {
    HttpRequestBase^ get ();
}
abstract Request : HttpRequestBase
override Request : HttpRequestBase

属性值

类型： System.Web HttpRequestBase
当前 HTTP 请求。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Response 属性

HttpContextBase
.
.
::
.
Response 属性
HttpContextBase 类

在派生类中重写时，获取当前 HTTP 响应的 HttpResponse 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Response As HttpResponseBase
    Get
public virtual HttpResponseBase Response { get; }
public:
virtual property HttpResponseBase^ Response {
    HttpResponseBase^ get ();
}
abstract Response : HttpResponseBase
override Response : HttpResponseBase

属性值

类型： System.Web HttpResponseBase
当前 HTTP 响应。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Server 属性

HttpContextBase
.
.
::
.
Server 属性
HttpContextBase 类

在派生类中重写时，获取 HttpServerUtility 对象，该对象提供在处理 Web 请求时使用的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Server As HttpServerUtilityBase
    Get
public virtual HttpServerUtilityBase Server { get; }
public:
virtual property HttpServerUtilityBase^ Server {
    HttpServerUtilityBase^ get ();
}
abstract Server : HttpServerUtilityBase
override Server : HttpServerUtilityBase

属性值

类型： System.Web HttpServerUtilityBase
当前 HTTP 请求的服务器实用工具对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Session 属性

HttpContextBase
.
.
::
.
Session 属性
HttpContextBase 类

在派生类中重写时，获取当前 HTTP 请求的 HttpSessionState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Session As HttpSessionStateBase
    Get
public virtual HttpSessionStateBase Session { get; }
public:
virtual property HttpSessionStateBase^ Session {
    HttpSessionStateBase^ get ();
}
abstract Session : HttpSessionStateBase
override Session : HttpSessionStateBase

属性值

类型： System.Web HttpSessionStateBase
当前 HTTP 请求的会话状态对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.SkipAuthorization 属性

HttpContextBase
.
.
::
.
SkipAuthorization 属性
HttpContextBase 类

在派生类中重写时，获取或设置一个值，该值指定 UrlAuthorizationModule 对象是否应跳过对当前请求的授权检查。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property SkipAuthorization As Boolean
    Get
    Set
public virtual bool SkipAuthorization { get; set; }
public:
virtual property bool SkipAuthorization {
    bool get ();
    void set (bool value);
}
abstract SkipAuthorization : bool with get, set
override SkipAuthorization : bool with get, set

属性值

类型： System Boolean
如果 UrlAuthorizationModule 应跳过授权检查，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Timestamp 属性

HttpContextBase
.
.
::
.
Timestamp 属性
HttpContextBase 类

在派生类中重写时，获取当前 HTTP 请求的初始时间戳。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Timestamp As DateTime
    Get
public virtual DateTime Timestamp { get; }
public:
virtual property DateTime Timestamp {
    DateTime get ();
}
abstract Timestamp : DateTime
override Timestamp : DateTime

属性值

类型： System DateTime
当前 HTTP 请求的时间戳。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.Trace 属性

HttpContextBase
.
.
::
.
Trace 属性
HttpContextBase 类

在派生类中重写时，获取当前 HTTP 响应的 TraceContext 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Trace As TraceContext
    Get
public virtual TraceContext Trace { get; }
public:
virtual property TraceContext^ Trace {
    TraceContext^ get ();
}
abstract Trace : TraceContext
override Trace : TraceContext

属性值

类型： System.Web TraceContext
当前 HTTP 响应的跟踪对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextBase ..::.User 属性

HttpContextBase
.
.
::
.
User 属性
HttpContextBase 类

在派生类中重写时，获取或设置当前 HTTP 请求的安全信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property User As IPrincipal
    Get
    Set
public virtual IPrincipal User { get; set; }
public:
virtual property IPrincipal^ User {
    IPrincipal^ get ();
    void set (IPrincipal^ value);
}
abstract User : IPrincipal with get, set
override User : IPrincipal with get, set

属性值

类型： System.Security.Principal IPrincipal
包含当前 HTTP 请求的安全信息的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextBase 类
HttpContextBase 成员
System.Web 命名空间


HttpContextWrapper 类

HttpContextWrapper 类
成员

封装包含有关单个 HTTP 请求的 HTTP 特定信息的 HTTP 内部对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpContextWrapper _
    Inherits HttpContextBase
public class HttpContextWrapper : HttpContextBase
public ref class HttpContextWrapper : public HttpContextBase
type HttpContextWrapper =
    class
        inherit HttpContextBase
    end

HttpContextWrapper 类从 HttpContextBase 类派生，并用作 HttpContext 类的包装。此类公开 HttpContext 类的功能，还公开 HttpContextBase 类型。使用 HttpContextBase 类可以将应用程序中 HttpContext 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpContextWrapper 类从 HttpContextBase 类派生，并用作 HttpContext 类的包装。此类公开 HttpContext 类的功能，还公开 HttpContextBase 类型。使用 HttpContextBase 类可以将应用程序中 HttpContext 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpContextWrapper 类从 HttpContextBase 类派生，并用作 HttpContext 类的包装。此类公开 HttpContext 类的功能，还公开 HttpContextBase 类型。使用 HttpContextBase 类可以将应用程序中 HttpContext 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpContextWrapperHttpContextWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper 成员

HttpContextWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextWrapper 类

封装包含有关单个 HTTP 请求的 HTTP 特定信息的 HTTP 内部对象。

HttpContextWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpContextWrapper 类
System.Web 命名空间


HttpContextWrapper 构造函数

HttpContextWrapper 构造函数
HttpContextWrapper 类

使用指定的上下文对象初始化 HttpContextWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpContext As HttpContext _
)
public HttpContextWrapper(
    HttpContext httpContext
)
public:
HttpContextWrapper(
    HttpContext^ httpContext
)
new :
        httpContext:HttpContext -> HttpContextWrapper

参数

httpContext
类型： System.Web HttpContext
可使用此包装类进行访问的对象。
异常 | 条件
ArgumentNullException | httpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper 方法

HttpContextWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextWrapper 类

HttpContextWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpContextWrapper 类
System.Web 命名空间


HttpContextWrapper ..::.AddError 方法

HttpContextWrapper
.
.
::
.
AddError 方法
HttpContextWrapper 类

将异常添加到当前 HTTP 请求的异常集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddError ( _
    errorInfo As Exception _
)
public override void AddError(
    Exception errorInfo
)
public:
virtual void AddError(
    Exception^ errorInfo
) override
abstract AddError :
        errorInfo:Exception -> unit
override AddError :
        errorInfo:Exception -> unit

参数

errorInfo
类型： System Exception
要添加到异常集合中的异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.ClearError 方法

HttpContextWrapper
.
.
::
.
ClearError 方法
HttpContextWrapper 类

清除当前 HTTP 请求的所有错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub ClearError
public override void ClearError()
public:
virtual void ClearError() override
abstract ClearError : unit -> unit
override ClearError : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.GetGlobalResourceObject 方法

HttpContextWrapper
.
.
::
.
GetGlobalResourceObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextWrapper 类

获取应用程序级别的资源。

名称 说明
页首

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.GetGlobalResourceObject 方法 (String, String)

HttpContextWrapper
.
.
::
.
GetGlobalResourceObject 方法 (String, String)
HttpContextWrapper 类

根据指定的 ClassKey 和 ResourceKey 属性，获取应用程序级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetGlobalResourceObject ( _
    classKey As String, _
    resourceKey As String _
) As Object
public override Object GetGlobalResourceObject(
    string classKey,
    string resourceKey
)
public:
virtual Object^ GetGlobalResourceObject(
    String^ classKey,
    String^ resourceKey
) override
abstract GetGlobalResourceObject :
        classKey:string *
        resourceKey:string -> Object
override GetGlobalResourceObject :
        classKey:string *
        resourceKey:string -> Object

参数

classKey
类型： System String
一个字符串，表示所请求资源对象的 ClassKey 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。

返回值

类型： System Object
所请求的应用程序级别资源对象；如果找不到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
GetGlobalResourceObject 重载
System.Web 命名空间


HttpContextWrapper ..::.GetGlobalResourceObject 方法 (String, String, CultureInfo)

HttpContextWrapper
.
.
::
.
GetGlobalResourceObject 方法 (String, String, CultureInfo)
HttpContextWrapper 类

根据指定的 ClassKey 和 ResourceKey 属性以及 CultureInfo 对象，获取一个应用程序级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetGlobalResourceObject ( _
    classKey As String, _
    resourceKey As String, _
    culture As CultureInfo _
) As Object
public override Object GetGlobalResourceObject(
    string classKey,
    string resourceKey,
    CultureInfo culture
)
public:
virtual Object^ GetGlobalResourceObject(
    String^ classKey,
    String^ resourceKey,
    CultureInfo^ culture
) override
abstract GetGlobalResourceObject :
        classKey:string *
        resourceKey:string *
        culture:CultureInfo -> Object
override GetGlobalResourceObject :
        classKey:string *
        resourceKey:string *
        culture:CultureInfo -> Object

参数

classKey
类型： System String
一个字符串，表示所请求资源对象的 ClassKey 属性。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。
culture
类型： System.Globalization CultureInfo
一个字符串，表示请求的资源的 CultureInfo 对象。

返回值

类型： System Object
所请求的应用程序级别资源对象（针对指定的区域性进行了本地化）；如果找不到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
GetGlobalResourceObject 重载
System.Web 命名空间


HttpContextWrapper ..::.GetLocalResourceObject 方法

HttpContextWrapper
.
.
::
.
GetLocalResourceObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextWrapper 类

获取页级别的资源。

名称 说明
页首

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.GetLocalResourceObject 方法 (String, String)

HttpContextWrapper
.
.
::
.
GetLocalResourceObject 方法 (String, String)
HttpContextWrapper 类

根据指定的 VirtualPath 和 ResourceKey 属性，获取页级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetLocalResourceObject ( _
    virtualPath As String, _
    resourceKey As String _
) As Object
public override Object GetLocalResourceObject(
    string virtualPath,
    string resourceKey
)
public:
virtual Object^ GetLocalResourceObject(
    String^ virtualPath,
    String^ resourceKey
) override
abstract GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string -> Object
override GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string -> Object

参数

virtualPath
类型： System String
一个表示本地资源对象的 VirtualPath 属性的字符串。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。

返回值

类型： System Object
所请求的页级别的资源对象；如果找不到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
GetLocalResourceObject 重载
System.Web 命名空间


HttpContextWrapper ..::.GetLocalResourceObject 方法 (String, String, CultureInfo)

HttpContextWrapper
.
.
::
.
GetLocalResourceObject 方法 (String, String, CultureInfo)
HttpContextWrapper 类

根据指定的 VirtualPath 和 ResourceKey 属性以及 CultureInfo 对象，获取一个页级别资源对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetLocalResourceObject ( _
    virtualPath As String, _
    resourceKey As String, _
    culture As CultureInfo _
) As Object
public override Object GetLocalResourceObject(
    string virtualPath,
    string resourceKey,
    CultureInfo culture
)
public:
virtual Object^ GetLocalResourceObject(
    String^ virtualPath,
    String^ resourceKey,
    CultureInfo^ culture
) override
abstract GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string *
        culture:CultureInfo -> Object
override GetLocalResourceObject :
        virtualPath:string *
        resourceKey:string *
        culture:CultureInfo -> Object

参数

virtualPath
类型： System String
一个表示本地资源对象的 VirtualPath 属性的字符串。
resourceKey
类型： System String
一个字符串，表示所请求资源对象的 ResourceKey 属性。
culture
类型： System.Globalization CultureInfo
一个字符串，表示所请求资源对象的 CultureInfo 对象。

返回值

类型： System Object
所请求的本地资源对象（针对指定的区域性进行了本地化）；如果找不到匹配的资源对象，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
GetLocalResourceObject 重载
System.Web 命名空间


HttpContextWrapper ..::.GetSection 方法

HttpContextWrapper
.
.
::
.
GetSection 方法
HttpContextWrapper 类

获取当前应用程序的默认配置的指定配置节。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetSection ( _
    sectionName As String _
) As Object
public override Object GetSection(
    string sectionName
)
public:
virtual Object^ GetSection(
    String^ sectionName
) override
abstract GetSection :
        sectionName:string -> Object
override GetSection :
        sectionName:string -> Object

参数

sectionName
类型： System String
配置节路径（使用 XPath 格式）和配置元素名称。

返回值

类型： System Object
指定的配置节，如果该配置节不存在，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.GetService 方法

HttpContextWrapper
.
.
::
.
GetService 方法
HttpContextWrapper 类

返回当前服务类型的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetService ( _
    serviceType As Type _
) As Object
public override Object GetService(
    Type serviceType
)
public:
virtual Object^ GetService(
    Type^ serviceType
) override
abstract GetService :
        serviceType:Type -> Object
override GetService :
        serviceType:Type -> Object

参数

serviceType
类型： System Type
要获取的服务类型。

返回值

类型： System Object
当前服务类型，如果未找到任何服务，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.RemapHandler 方法

HttpContextWrapper
.
.
::
.
RemapHandler 方法
HttpContextWrapper 类

用于为请求指定处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemapHandler ( _
    handler As IHttpHandler _
)
public override void RemapHandler(
    IHttpHandler handler
)
public:
virtual void RemapHandler(
    IHttpHandler^ handler
) override
abstract RemapHandler :
        handler:IHttpHandler -> unit
override RemapHandler :
        handler:IHttpHandler -> unit

参数

handler
类型： System.Web IHttpHandler
应处理请求的对象。
异常 | 条件
InvalidOperationException | RemapHandler 方法是在发生 MapRequestHandler 事件之后调用的。

如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。 如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。 如果将 handler 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用默认处理程序处理请求。可以将 handler 设置为异步处理程序或同步处理程序。该处理程序必须实现 IHttpHandler 接口。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.RewritePath 方法

HttpContextWrapper
.
.
::
.
RewritePath 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextWrapper 类

分配内部重写路径，这使得请求的 URL 可以与资源的内部路径不同。

名称 说明
页首

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.RewritePath 方法 (String)

HttpContextWrapper
.
.
::
.
RewritePath 方法 (String)
HttpContextWrapper 类

使用指定的路径重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RewritePath ( _
    path As String _
)
public override void RewritePath(
    string path
)
public:
virtual void RewritePath(
    String^ path
) override
abstract RewritePath :
        path:string -> unit
override RewritePath :
        path:string -> unit

参数

path
类型： System String
替换路径。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | path 不在当前应用程序的根目录中。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
RewritePath 重载
System.Web 命名空间


HttpContextWrapper ..::.RewritePath 方法 (String, Boolean)

HttpContextWrapper
.
.
::
.
RewritePath 方法 (String, Boolean)
HttpContextWrapper 类

使用指定的路径和一个值重写 URL，该值指定是否修改服务器资源的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RewritePath ( _
    path As String, _
    rebaseClientPath As Boolean _
)
public override void RewritePath(
    string path,
    bool rebaseClientPath
)
public:
virtual void RewritePath(
    String^ path,
    bool rebaseClientPath
) override
abstract RewritePath :
        path:string *
        rebaseClientPath:bool -> unit
override RewritePath :
        path:string *
        rebaseClientPath:bool -> unit

参数

path
类型： System String
要重写为的路径。
rebaseClientPath
类型： System Boolean
如果重置虚拟路径，则为 true；如果保持虚拟路径不变，则为 false。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | path 不在当前应用程序的根目录中。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
RewritePath 重载
System.Web 命名空间


HttpContextWrapper ..::.RewritePath 方法 (String, String, String)

HttpContextWrapper
.
.
::
.
RewritePath 方法 (String, String, String)
HttpContextWrapper 类

使用指定的路径、路径信息和查询字符串信息重写 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RewritePath ( _
    filePath As String, _
    pathInfo As String, _
    queryString As String _
)
public override void RewritePath(
    string filePath,
    string pathInfo,
    string queryString
)
public:
virtual void RewritePath(
    String^ filePath,
    String^ pathInfo,
    String^ queryString
) override
abstract RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string -> unit
override RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string -> unit

参数

filePath
类型： System String
替换路径。
pathInfo
类型： System String
资源的附加路径信息。
queryString
类型： System String
请求查询字符串。
异常 | 条件
ArgumentNullException | filePath 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | filePath 参数不在当前应用程序的根目录中。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
RewritePath 重载
System.Web 命名空间


HttpContextWrapper ..::.RewritePath 方法 (String, String, String, Boolean)

HttpContextWrapper
.
.
::
.
RewritePath 方法 (String, String, String, Boolean)
HttpContextWrapper 类

使用指定的路径、路径信息、查询字符串信息和一个值重写 URL，该值指定是否将客户端文件路径设置为重写路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RewritePath ( _
    filePath As String, _
    pathInfo As String, _
    queryString As String, _
    setClientFilePath As Boolean _
)
public override void RewritePath(
    string filePath,
    string pathInfo,
    string queryString,
    bool setClientFilePath
)
public:
virtual void RewritePath(
    String^ filePath,
    String^ pathInfo,
    String^ queryString,
    bool setClientFilePath
) override
abstract RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string *
        setClientFilePath:bool -> unit
override RewritePath :
        filePath:string *
        pathInfo:string *
        queryString:string *
        setClientFilePath:bool -> unit

参数

filePath
类型： System String
替换路径。
pathInfo
类型： System String
资源的附加路径信息。
queryString
类型： System String
请求查询字符串。
setClientFilePath
类型： System Boolean
若为 true，则将用于客户端资源的文件路径设置为 filePath 参数的值；否则为 false。
异常 | 条件
ArgumentNullException | filePath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | filePath 不在当前应用程序的根目录中。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
RewritePath 重载
System.Web 命名空间


HttpContextWrapper ..::.SetSessionStateBehavior 方法

HttpContextWrapper
.
.
::
.
SetSessionStateBehavior 方法
HttpContextWrapper 类

设置支持 HTTP 请求所需的会话状态行为的类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetSessionStateBehavior ( _
    sessionStateBehavior As SessionStateBehavior _
)
public override void SetSessionStateBehavior(
    SessionStateBehavior sessionStateBehavior
)
public:
virtual void SetSessionStateBehavior(
    SessionStateBehavior sessionStateBehavior
) override
abstract SetSessionStateBehavior :
        sessionStateBehavior:SessionStateBehavior -> unit
override SetSessionStateBehavior :
        sessionStateBehavior:SessionStateBehavior -> unit

参数

sessionStateBehavior
类型： System.Web.SessionState SessionStateBehavior
枚举值之一，该值指定需要什么类型的会话状态行为。

SetSessionStateBehavior 方法重写 SetSessionStateBehavior 基方法。若要实现基类方法，SetSessionStateBehavior 方法需要调用 HttpContext 类的 SetSessionStateBehavior 方法，并传递 sessionStateBehavior 设置。 SetSessionStateBehavior 方法重写 SetSessionStateBehavior 基方法。若要实现基类方法，SetSessionStateBehavior 方法需要调用 HttpContext 类的 SetSessionStateBehavior 方法，并传递 sessionStateBehavior 设置。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间
SetSessionStateBehavior


HttpContextWrapper 属性

HttpContextWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpContextWrapper 类

HttpContextWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpContextWrapper 类
System.Web 命名空间


HttpContextWrapper ..::.AllErrors 属性

HttpContextWrapper
.
.
::
.
AllErrors 属性
HttpContextWrapper 类

获取在处理 HTTP 请求时累积的错误（如果有）的数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AllErrors As Exception()
    Get
public override Exception[] AllErrors { get; }
public:
virtual property array<Exception^>^ AllErrors {
    array<Exception^>^ get () override;
}
abstract AllErrors : Exception[]
override AllErrors : Exception[]

属性值

类型：
array<
System Exception
>
[]
()
[]

当前 HTTP 请求的 Exception 对象的数组，如果在 HTTP 请求处理过程中没有累积任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Application 属性

HttpContextWrapper
.
.
::
.
Application 属性
HttpContextWrapper 类

为当前 HTTP 请求获取 HttpApplicationState 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Application As HttpApplicationStateBase
    Get
public override HttpApplicationStateBase Application { get; }
public:
virtual property HttpApplicationStateBase^ Application {
    HttpApplicationStateBase^ get () override;
}
abstract Application : HttpApplicationStateBase
override Application : HttpApplicationStateBase

属性值

类型： System.Web HttpApplicationStateBase
当前 HTTP 请求的状态对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.ApplicationInstance 属性

HttpContextWrapper
.
.
::
.
ApplicationInstance 属性
HttpContextWrapper 类

为当前 HTTP 请求获取或设置 HttpApplication 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ApplicationInstance As HttpApplication
    Get
    Set
public override HttpApplication ApplicationInstance { get; set; }
public:
virtual property HttpApplication^ ApplicationInstance {
    HttpApplication^ get () override;
    void set (HttpApplication^ value) override;
}
abstract ApplicationInstance : HttpApplication with get, set
override ApplicationInstance : HttpApplication with get, set

属性值

类型： System.Web HttpApplication
当前 HTTP 请求的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Cache 属性

HttpContextWrapper
.
.
::
.
Cache 属性
HttpContextWrapper 类

获取当前应用程序域的 Cache 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Cache As Cache
    Get
public override Cache Cache { get; }
public:
virtual property Cache^ Cache {
    Cache^ get () override;
}
abstract Cache : Cache
override Cache : Cache

属性值

类型： System.Web.Caching Cache
当前应用程序域的缓存对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.CurrentHandler 属性

HttpContextWrapper
.
.
::
.
CurrentHandler 属性
HttpContextWrapper 类

获取表示当前正在执行的处理程序的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CurrentHandler As IHttpHandler
    Get
public override IHttpHandler CurrentHandler { get; }
public:
virtual property IHttpHandler^ CurrentHandler {
    IHttpHandler^ get () override;
}
abstract CurrentHandler : IHttpHandler
override CurrentHandler : IHttpHandler

属性值

类型： System.Web IHttpHandler
表示当前正在执行的处理程序的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.CurrentNotification 属性

HttpContextWrapper
.
.
::
.
CurrentNotification 属性
HttpContextWrapper 类

获取一个 RequestNotification 值，该值指示当前正在处理的 HttpApplication 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CurrentNotification As RequestNotification
    Get
public override RequestNotification CurrentNotification { get; }
public:
virtual property RequestNotification CurrentNotification {
    RequestNotification get () override;
}
abstract CurrentNotification : RequestNotification
override CurrentNotification : RequestNotification

属性值

类型： System.Web RequestNotification
RequestNotification 值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Error 属性

HttpContextWrapper
.
.
::
.
Error 属性
HttpContextWrapper 类

获取在处理 HTTP 请求时累积的错误中的第一个错误（如果有）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Error As Exception
    Get
public override Exception Error { get; }
public:
virtual property Exception^ Error {
    Exception^ get () override;
}
abstract Error : Exception
override Error : Exception

属性值

类型： System Exception
当前 HTTP 请求的第一个异常，如果在处理该 HTTP 请求时未累积任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 当前 HTTP 请求的第一个异常，如果在处理该 HTTP 请求时未累积任何错误，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。默认值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Handler 属性

HttpContextWrapper
.
.
::
.
Handler 属性
HttpContextWrapper 类

获取或设置负责处理 HTTP 请求的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Handler As IHttpHandler
    Get
    Set
public override IHttpHandler Handler { get; set; }
public:
virtual property IHttpHandler^ Handler {
    IHttpHandler^ get () override;
    void set (IHttpHandler^ value) override;
}
abstract Handler : IHttpHandler with get, set
override Handler : IHttpHandler with get, set

属性值

类型： System.Web IHttpHandler
负责处理 HTTP 请求的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.IsCustomErrorEnabled 属性

HttpContextWrapper
.
.
::
.
IsCustomErrorEnabled 属性
HttpContextWrapper 类

获取一个值，该值指示是否对当前 HTTP 请求启用了自定义错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsCustomErrorEnabled As Boolean
    Get
public override bool IsCustomErrorEnabled { get; }
public:
virtual property bool IsCustomErrorEnabled {
    bool get () override;
}
abstract IsCustomErrorEnabled : bool
override IsCustomErrorEnabled : bool

属性值

类型： System Boolean
如果启用了自定义错误，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.IsDebuggingEnabled 属性

HttpContextWrapper
.
.
::
.
IsDebuggingEnabled 属性
HttpContextWrapper 类

获取一个值，该值指示当前 HTTP 请求是否处于调试模式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsDebuggingEnabled As Boolean
    Get
public override bool IsDebuggingEnabled { get; }
public:
virtual property bool IsDebuggingEnabled {
    bool get () override;
}
abstract IsDebuggingEnabled : bool
override IsDebuggingEnabled : bool

属性值

类型： System Boolean
如果请求处于调试模式，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.IsPostNotification 属性

HttpContextWrapper
.
.
::
.
IsPostNotification 属性
HttpContextWrapper 类

获取一个值，该值指示 HttpApplication 事件是否已完成处理。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsPostNotification As Boolean
    Get
public override bool IsPostNotification { get; }
public:
virtual property bool IsPostNotification {
    bool get () override;
}
abstract IsPostNotification : bool
override IsPostNotification : bool

属性值

类型： System Boolean
如果该事件已完成处理，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Items 属性

HttpContextWrapper
.
.
::
.
Items 属性
HttpContextWrapper 类

获取一个键/值集合，该集合在 HTTP 请求过程中可以用于在模块与处理程序之间组织和共享数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Items As IDictionary
    Get
public override IDictionary Items { get; }
public:
virtual property IDictionary^ Items {
    IDictionary^ get () override;
}
abstract Items : IDictionary
override Items : IDictionary

属性值

类型： System.Collections IDictionary
一个键/值集合，使用指定的键提供对集合中单个值的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.PreviousHandler 属性

HttpContextWrapper
.
.
::
.
PreviousHandler 属性
HttpContextWrapper 类

获取父处理程序的 IHttpHandler 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PreviousHandler As IHttpHandler
    Get
public override IHttpHandler PreviousHandler { get; }
public:
virtual property IHttpHandler^ PreviousHandler {
    IHttpHandler^ get () override;
}
abstract PreviousHandler : IHttpHandler
override PreviousHandler : IHttpHandler

属性值

类型： System.Web IHttpHandler
表示父处理程序的 IHttpHandler 对象，如果未找到任何父处理程序，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Profile 属性

HttpContextWrapper
.
.
::
.
Profile 属性
HttpContextWrapper 类

获取当前用户配置文件的 ProfileBase 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Profile As ProfileBase
    Get
public override ProfileBase Profile { get; }
public:
virtual property ProfileBase^ Profile {
    ProfileBase^ get () override;
}
abstract Profile : ProfileBase
override Profile : ProfileBase

属性值

类型： System.Web.Profile ProfileBase
如果在应用程序配置文件中定义了配置文件属性，并对应用程序启用了配置文件，则为表示当前用户配置文件的对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Request 属性

HttpContextWrapper
.
.
::
.
Request 属性
HttpContextWrapper 类

为当前 HTTP 请求获取 HttpRequestBase 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Request As HttpRequestBase
    Get
public override HttpRequestBase Request { get; }
public:
virtual property HttpRequestBase^ Request {
    HttpRequestBase^ get () override;
}
abstract Request : HttpRequestBase
override Request : HttpRequestBase

属性值

类型： System.Web HttpRequestBase
当前 HTTP 请求。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Response 属性

HttpContextWrapper
.
.
::
.
Response 属性
HttpContextWrapper 类

为当前 HTTP 响应获取 HttpResponseBase 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Response As HttpResponseBase
    Get
public override HttpResponseBase Response { get; }
public:
virtual property HttpResponseBase^ Response {
    HttpResponseBase^ get () override;
}
abstract Response : HttpResponseBase
override Response : HttpResponseBase

属性值

类型： System.Web HttpResponseBase
当前 HTTP 响应。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Server 属性

HttpContextWrapper
.
.
::
.
Server 属性
HttpContextWrapper 类

获取 HttpServerUtilityBase 对象，该对象提供在处理 Web 请求时使用的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Server As HttpServerUtilityBase
    Get
public override HttpServerUtilityBase Server { get; }
public:
virtual property HttpServerUtilityBase^ Server {
    HttpServerUtilityBase^ get () override;
}
abstract Server : HttpServerUtilityBase
override Server : HttpServerUtilityBase

属性值

类型： System.Web HttpServerUtilityBase
当前 HTTP 请求的服务器实用工具对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Session 属性

HttpContextWrapper
.
.
::
.
Session 属性
HttpContextWrapper 类

为当前 HTTP 请求获取 HttpSessionStateBase 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Session As HttpSessionStateBase
    Get
public override HttpSessionStateBase Session { get; }
public:
virtual property HttpSessionStateBase^ Session {
    HttpSessionStateBase^ get () override;
}
abstract Session : HttpSessionStateBase
override Session : HttpSessionStateBase

属性值

类型： System.Web HttpSessionStateBase
当前 HTTP 请求的会话状态对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.SkipAuthorization 属性

HttpContextWrapper
.
.
::
.
SkipAuthorization 属性
HttpContextWrapper 类

获取或设置一个值，该值指定 UrlAuthorizationModule 对象是否应跳过对当前请求的授权检查。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property SkipAuthorization As Boolean
    Get
    Set
public override bool SkipAuthorization { get; set; }
public:
virtual property bool SkipAuthorization {
    bool get () override;
    void set (bool value) override;
}
abstract SkipAuthorization : bool with get, set
override SkipAuthorization : bool with get, set

属性值

类型： System Boolean
如果 UrlAuthorizationModule 应跳过授权检查，则为 true；否则为 false。默认值为 false。 如果 UrlAuthorizationModule 应跳过授权检查，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Timestamp 属性

HttpContextWrapper
.
.
::
.
Timestamp 属性
HttpContextWrapper 类

获取当前 HTTP 请求的初始时间戳。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Timestamp As DateTime
    Get
public override DateTime Timestamp { get; }
public:
virtual property DateTime Timestamp {
    DateTime get () override;
}
abstract Timestamp : DateTime
override Timestamp : DateTime

属性值

类型： System DateTime
当前 HTTP 请求的时间戳。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.Trace 属性

HttpContextWrapper
.
.
::
.
Trace 属性
HttpContextWrapper 类

为当前 HTTP 响应获取 TraceContext 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Trace As TraceContext
    Get
public override TraceContext Trace { get; }
public:
virtual property TraceContext^ Trace {
    TraceContext^ get () override;
}
abstract Trace : TraceContext
override Trace : TraceContext

属性值

类型： System.Web TraceContext
当前 HTTP 响应的跟踪对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpContextWrapper ..::.User 属性

HttpContextWrapper
.
.
::
.
User 属性
HttpContextWrapper 类

为当前 HTTP 请求获取或设置安全信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property User As IPrincipal
    Get
    Set
public override IPrincipal User { get; set; }
public:
virtual property IPrincipal^ User {
    IPrincipal^ get () override;
    void set (IPrincipal^ value) override;
}
abstract User : IPrincipal with get, set
override User : IPrincipal with get, set

属性值

类型： System.Security.Principal IPrincipal
包含当前 HTTP 请求的安全信息的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpContextWrapper 类
HttpContextWrapper 成员
System.Web 命名空间


HttpCookie 类

HttpCookie 类
成员

提供创建和操作各 HTTP Cookie 的类型安全方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpCookie
public sealed class HttpCookie
public ref class HttpCookie sealed
[<SealedAttribute>]
type HttpCookie =  class end

HttpCookie 类获取和设置各 Cookie 的属性。HttpCookieCollection 类提供存储、检索和管理多个 Cookie 的方法。 HttpCookie 类获取和设置各 Cookie 的属性。HttpCookieCollection 类提供存储、检索和管理多个 Cookie 的方法。

ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 对象的 Cookies 集合访问的集合，包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 对象的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie HTTP 响应标头的形式传输到客户端。 ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 对象的 Cookies 集合访问的集合，包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 对象的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie HTTP 响应标头的形式传输到客户端。 ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 对象的 Cookies 集合访问的集合，包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 对象的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie HTTP 响应标头的形式传输到客户端。

下面的代码示例演示如何对 HttpRequest 对象中名为 DateCookieExample 的 Cookie 进行检查。如果找不到该 Cookie，则将创建它并将其添加到 HttpResponse 对象。Cookie 设置为 10 分钟后过期。 下面的代码示例演示如何对 HttpRequest 对象中名为 DateCookieExample 的 Cookie 进行检查。如果找不到该 Cookie，则将创建它并将其添加到 HttpResponse 对象。Cookie 设置为 10 分钟后过期。 下面的代码示例演示如何对 HttpRequest 对象中名为 DateCookieExample 的 Cookie 进行检查。如果找不到该 Cookie，则将创建它并将其添加到 HttpResponse 对象。Cookie 设置为 10 分钟后过期。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim sb As New StringBuilder()
        ' Get cookie from current request.
        Dim cookie As HttpCookie
        cookie = Request.Cookies.Get("DateCookieExample")

        ' Check if cookie exists in the current request
        If (cookie Is Nothing) Then
            sb.Append("Cookie was not received from the client. ")
            sb.Append("Creating cookie to add to the response. <br/>")
            ' Create cookie.
            cookie = New HttpCookie("DateCookieExample")
            ' Set value of cookie to current date time.
            cookie.Value = DateTime.Now.ToString()
            ' Set cookie to expire in 10 minutes.
            cookie.Expires = DateTime.Now.AddMinutes(10D)
            ' Insert the cookie in the current HttpResponse.
            Response.Cookies.Add(cookie)
        Else
            sb.Append("Cookie retrieved from client. <br/>")
            sb.Append("Cookie Name: " + cookie.Name + "<br/>")
            sb.Append("Cookie Value: " + cookie.Value + "<br/>")
            sb.Append("Cookie Expiration Date: " & _
                cookie.Expires.ToString() & "<br/>")
        End If
        Label1.Text = sb.ToString()

    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpCookie Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label id="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        // Get cookie from the current request.
        HttpCookie cookie = Request.Cookies.Get("DateCookieExample");

        // Check if cookie exists in the current request.
        if (cookie == null)
        {
            sb.Append("Cookie was not received from the client. ");
            sb.Append("Creating cookie to add to the response. <br/>");
            // Create cookie.
            cookie = new HttpCookie("DateCookieExample");
            // Set value of cookie to current date time.
            cookie.Value = DateTime.Now.ToString();
            // Set cookie to expire in 10 minutes.
            cookie.Expires = DateTime.Now.AddMinutes(10d);
            // Insert the cookie in the current HttpResponse.
            Response.Cookies.Add(cookie);
        }
        else
        {
            sb.Append("Cookie retrieved from client. <br/>");
            sb.Append("Cookie Name: " + cookie.Name + "<br/>");
            sb.Append("Cookie Value: " + cookie.Value + "<br/>");
            sb.Append("Cookie Expiration Date: " +
                cookie.Expires.ToString() + "<br/>");
        }
        Label1.Text = sb.ToString();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpCookie Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label id="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpCookieHttpCookie
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 成员
System.Web 命名空间
HttpResponse
HttpRequest
HttpCookieCollection


HttpCookie 成员

HttpCookie 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookie 类

提供创建和操作各 HTTP Cookie 的类型安全方法。

HttpCookie 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCookie 类
System.Web 命名空间


HttpCookie 构造函数

HttpCookie 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookie 类

初始化 HttpCookie 类的新实例。

名称 说明
页首

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间


HttpCookie 构造函数 (String)

HttpCookie 构造函数 (String)
HttpCookie 类

创建并命名新的 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    name As String _
)
public HttpCookie(
    string name
)
public:
HttpCookie(
    String^ name
)
new :
        name:string -> HttpCookie

参数

name
类型： System String
新 Cookie 的名称。

下面的代码示例创建并命名一个新 Cookie。

Dim MyCookie As New HttpCookie("LastVisit")

HttpCookie MyCookie = new HttpCookie("LastVisit");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
HttpCookie 重载
System.Web 命名空间


HttpCookie 构造函数 (String, String)

HttpCookie 构造函数 (String, String)
HttpCookie 类

创建和命名新的 Cookie，并为其赋值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    name As String, _
    value As String _
)
public HttpCookie(
    string name,
    string value
)
public:
HttpCookie(
    String^ name,
    String^ value
)
new :
        name:string *
        value:string -> HttpCookie

参数

name
类型： System String
新 Cookie 的名称。
value
类型： System String
新 Cookie 的值。

下面的代码示例创建和命名一个新 Cookie，并为其设置值。

Dim MyCookie As New HttpCookie("LastVisit", CStr(DateTime.Now()))

HttpCookie MyCookie = new HttpCookie("LastVisit",
    DateTime.Now.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
HttpCookie 重载
System.Web 命名空间


HttpCookie 方法

HttpCookie 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookie 类

HttpCookie 类型公开以下成员。

名称 说明
页首

参考

HttpCookie 类
System.Web 命名空间


HttpCookie 属性

HttpCookie 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookie 类

HttpCookie 类型公开以下成员。

名称 说明
页首

参考

HttpCookie 类
System.Web 命名空间


HttpCookie ..::.Domain 属性

HttpCookie
.
.
::
.
Domain 属性
HttpCookie 类

获取或设置将此 Cookie 与其关联的域。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Domain As String
    Get
    Set
public string Domain { get; set; }
public:
property String^ Domain {
    String^ get ();
    void set (String^ value);
}
member Domain : string with get, set

属性值

类型： System String
要将此 Cookie 与其关联的域名。默认值为当前域。 要将此 Cookie 与其关联的域名。默认值为当前域。

设置 Domain 特性可将此 Cookie 的传输限制为从该域请求资源的客户端。

下面的代码示例设置此 Cookie 的域。

MyCookie.Domain = "Microsoft.com"

MyCookie.Domain = "Microsoft.com";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间


HttpCookie ..::.Expires 属性

HttpCookie
.
.
::
.
Expires 属性
HttpCookie 类

获取或设置此 Cookie 的过期日期和时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Expires As DateTime
    Get
    Set
public DateTime Expires { get; set; }
public:
property DateTime Expires {
    DateTime get ();
    void set (DateTime value);
}
member Expires : DateTime with get, set

属性值

类型： System DateTime
此 Cookie 的过期时间（在客户端）。

下面的代码示例将此 Cookie 的过期时间设置为当前时间之后 10 分钟。

MyCookie.Expires = DateTime.Now.AddMinutes(10.0)

MyCookie.Expires = DateTime.Now.AddMinutes(10.0);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间


HttpCookie ..::.HasKeys 属性

HttpCookie
.
.
::
.
HasKeys 属性
HttpCookie 类

获取一个值，通过该值指示 Cookie 是否具有子键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property HasKeys As Boolean
    Get
public bool HasKeys { get; }
public:
property bool HasKeys {
    bool get ();
}
member HasKeys : bool

属性值

类型： System Boolean
如果 Cookie 具有子键，则为 true；否则为 false。默认为 false。 如果 Cookie 具有子键，则为 true；否则为 false。默认为 false。

下面的代码示例检查 Cookie 集合的每个成员来寻找多个值。如果 Cookie 的 HasKeys 属性为 true，则指示存在多个值，此示例将值名称复制到一个字符串数组，将对应值复制到另一个字符串数组。有关如何为 Cookie 创建多个值的示例，请参见 Values。 下面的代码示例检查 Cookie 集合的每个成员来寻找多个值。如果 Cookie 的 HasKeys 属性为 true，则指示存在多个值，此示例将值名称复制到一个字符串数组，将对应值复制到另一个字符串数组。有关如何为 Cookie 创建多个值的示例，请参见 Values。 下面的代码示例检查 Cookie 集合的每个成员来寻找多个值。如果 Cookie 的 HasKeys 属性为 true，则指示存在多个值，此示例将值名称复制到一个字符串数组，将对应值复制到另一个字符串数组。有关如何为 Cookie 创建多个值的示例，请参见 Values。

  Dim MyCookieCollection As HttpCookieCollection
  Dim MyCookie As HttpCookie
  Dim MyKeyNames() As String
  Dim MyValues() As String
  Dim loop1 As Integer

  MyCookieCollection = Request.Cookies
  For loop1 = 0 To MyCookieCollection.Count - 1
      MyCookie = MyCookieCollection(loop1)
      If MyCookie.HasKeys Then
          Dim MyCookieValues As NameValueCollection = _
              New NameValueCollection(MyCookie.Values)
          MyKeyNames = MyCookieValues.AllKeys
          For Each KeyName As String In MyKeyNames
              MyValues = MyCookieValues.GetValues(KeyName)
          Next
      End If
  Next loop1

HttpCookieCollection MyCookieCollection = Request.Cookies;
 for(int loop1 = 0; loop1 < MyCookieCollection.Count; loop1++)
 {
    HttpCookie MyCookie = MyCookieCollection[loop1];

    if ( MyCookie.HasKeys )
    {
      NameValueCollection MyCookieValues =
          new NameValueCollection(MyCookie.Values);
      String[] MyKeyNames = MyCookieValues.AllKeys;
      foreach(string KeyName in MyKeyNames)
          {
              String[] MyValues =
                  MyCookieValues.GetValues(KeyName);
          }
    }
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间
NameValueCollection
Value


HttpCookie ..::.HttpOnly 属性

HttpCookie
.
.
::
.
HttpOnly 属性
HttpCookie 类

获取或设置一个值，该值指定 Cookie 是否可通过客户端脚本访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property HttpOnly As Boolean
    Get
    Set
public bool HttpOnly { get; set; }
public:
property bool HttpOnly {
    bool get ();
    void set (bool value);
}
member HttpOnly : bool with get, set

属性值

类型： System Boolean
如果 Cookie 具有 HttpOnly 特性且不能通过客户端脚本访问，则为 true；否则为 false。默认值为 false。 如果 Cookie 具有 HttpOnly 特性且不能通过客户端脚本访问，则为 true；否则为 false。默认值为 false。

Microsoft Internet Explorer 版本 6 Service Pack 1 和更高版本支持 Cookie 属性 HttpOnly，该属性有助于缓解跨站点脚本威胁，这种威胁可能导致 Cookie 被窃取。窃取的 Cookie 可以包含标识站点用户的敏感信息，如 ASP.NET 会话 ID 或 Forms 身份验证票证，攻击者可以重播窃取的 Cookie，以便伪装成用户或获取敏感信息。如果兼容浏览器接收到 HttpOnly Cookie，则客户端脚本不能对它进行访问。 Microsoft Internet Explorer 版本 6 Service Pack 1 和更高版本支持 Cookie 属性 HttpOnly，该属性有助于缓解跨站点脚本威胁，这种威胁可能导致 Cookie 被窃取。窃取的 Cookie 可以包含标识站点用户的敏感信息，如 ASP.NET 会话 ID 或 Forms 身份验证票证，攻击者可以重播窃取的 Cookie，以便伪装成用户或获取敏感信息。如果兼容浏览器接收到 HttpOnly Cookie，则客户端脚本不能对它进行访问。 Microsoft Internet Explorer 版本 6 Service Pack 1 和更高版本支持 Cookie 属性 HttpOnly，该属性有助于缓解跨站点脚本威胁，这种威胁可能导致 Cookie 被窃取。窃取的 Cookie 可以包含标识站点用户的敏感信息，如 ASP.NET 会话 ID 或 Forms 身份验证票证，攻击者可以重播窃取的 Cookie，以便伪装成用户或获取敏感信息。如果兼容浏览器接收到 HttpOnly Cookie，则客户端脚本不能对它进行访问。

警告说明 警告

将 HttpOnly 属性设置为 true，并不能防止对网络频道具有访问权限的攻击者直接访问该 Cookie。针对这种情况，应考虑使用安全套接字层 (SSL) 来提供帮助。工作站的安全也很重要，原因是恶意用户可能使用打开的浏览器窗口或包含持久性 Cookie 的计算机，以合法用户的标识获取对网站的访问。 将 HttpOnly 属性设置为 true，并不能防止对网络频道具有访问权限的攻击者直接访问该 Cookie。针对这种情况，应考虑使用安全套接字层 (SSL) 来提供帮助。工作站的安全也很重要，原因是恶意用户可能使用打开的浏览器窗口或包含持久性 Cookie 的计算机，以合法用户的标识获取对网站的访问。 将 HttpOnly 属性设置为 true，并不能防止对网络频道具有访问权限的攻击者直接访问该 Cookie。针对这种情况，应考虑使用安全套接字层 (SSL) 来提供帮助。工作站的安全也很重要，原因是恶意用户可能使用打开的浏览器窗口或包含持久性 Cookie 的计算机，以合法用户的标识获取对网站的访问。

有关可能发生的攻击以及如何使用此属性缓解攻击的更多信息，请参见 Mitigating Cross-site Scripting With HTTP-only Cookies（使用仅用于 HTTP 的 Cookies 缓解跨站点脚本）。

下面的代码示例演示如何编写 HttpOnly Cookie，并演示客户端为何不能通过 ECMAScript 访问该 Cookie。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    ' Create a new HttpCookie.
    Dim myHttpCookie As New HttpCookie("LastVisit", DateTime.Now.ToString())

    ' By default, the HttpOnly property is set to false
    ' unless specified otherwise in configuration.

    myHttpCookie.Name = "MyHttpCookie"
    Response.AppendCookie(myHttpCookie)

    ' Show the name of the cookie.
    Response.Write(myHttpCookie.Name)

    ' Create an HttpOnly cookie.
    Dim myHttpOnlyCookie As New HttpCookie("LastVisit", DateTime.Now.ToString())

    ' Setting the HttpOnly value to true, makes
    ' this cookie accessible only to ASP.NET.

    myHttpOnlyCookie.HttpOnly = True
    myHttpOnlyCookie.Name = "MyHttpOnlyCookie"
    Response.AppendCookie(myHttpOnlyCookie)

    ' Show the name of the HttpOnly cookie.
    Response.Write(myHttpOnlyCookie.Name)

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<script type="text/javascript">
function getCookie(NameOfCookie)
{
  if (document.cookie.length > 0)
  {
    begin = document.cookie.indexOf(NameOfCookie+"=");
    if (begin != -1)
    {
    begin += NameOfCookie.length+1;
      end = document.cookie.indexOf(";", begin);
      if (end == -1) end = document.cookie.length;
      return unescape(document.cookie.substring(begin, end));
    }
  }
  return null;
}
</script>

<script type="text/javascript">

// This code returns the cookie name.
alert("Getting HTTP Cookie");
alert(getCookie("MyHttpCookie"));

// Because the cookie is set to HttpOnly,
// this returns null.
alert("Getting HTTP Only Cookie");
alert(getCookie("MyHttpOnlyCookie"));

</script>

</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    void Page_Load(object sender, EventArgs e)
    {
        // Create a new HttpCookie.
        HttpCookie myHttpCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());

        // By default, the HttpOnly property is set to false
        // unless specified otherwise in configuration.

        myHttpCookie.Name = "MyHttpCookie";
        Response.AppendCookie(myHttpCookie);

        // Show the name of the cookie.
        Response.Write(myHttpCookie.Name);

        // Create an HttpOnly cookie.
        HttpCookie myHttpOnlyCookie = new HttpCookie("LastVisit", DateTime.Now.ToString());

        // Setting the HttpOnly value to true, makes
        // this cookie accessible only to ASP.NET.

        myHttpOnlyCookie.HttpOnly = true;
        myHttpOnlyCookie.Name = "MyHttpOnlyCookie";
        Response.AppendCookie(myHttpOnlyCookie);

        // Show the name of the HttpOnly cookie.
        Response.Write(myHttpOnlyCookie.Name);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<script type="text/javascript">
function getCookie(NameOfCookie)
{
    if (document.cookie.length > 0)
{
    begin = document.cookie.indexOf(NameOfCookie+"=");
    if (begin != -1)
   {
    begin += NameOfCookie.length+1;
      end = document.cookie.indexOf(";", begin);
      if (end == -1) end = document.cookie.length;
      return unescape(document.cookie.substring(begin, end));
      }
  }
return null;
}
</script>

<script type="text/javascript">

    // This code returns the cookie name.
    alert("Getting HTTP Cookie");
    alert(getCookie("MyHttpCookie"));

    // Because the cookie is set to HttpOnly,
    // this returns null.
    alert("Getting HTTP Only Cookie");
    alert(getCookie("MyHttpOnlyCookie"));

</script>

</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间


HttpCookie ..::.Item 属性

HttpCookie
.
.
::
.
Item 属性
HttpCookie 类

获取 HttpCookie..::.Values 属性的快捷方式。此属性是为了与以前的 Active Server Pages (ASP) 版本兼容而提供的。 获取 HttpCookie..::.Values 属性的快捷方式。此属性是为了与以前的 Active Server Pages (ASP) 版本兼容而提供的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Item ( _
    key As String _
) As String
    Get
    Set
public string this[
    string key
] { get; set; }
public:
property String^ Item[String^ key] {
    String^ get (String^ key);
    void set (String^ key, String^ value);
}
member Item : string with get, set

参数

key
类型： System String
Cookie 值的键（索引）。

属性值

类型： System String
Cookie 值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间
Value


HttpCookie ..::.Name 属性

HttpCookie
.
.
::
.
Name 属性
HttpCookie 类

获取或设置 Cookie 的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Name As String
    Get
    Set
public string Name { get; set; }
public:
property String^ Name {
    String^ get ();
    void set (String^ value);
}
member Name : string with get, set

属性值

类型： System String
除非构造函数另外指定，否则默认值为 null 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例在 Cookie 头中接收来自客户端的 Cookie 集合，并遍历该集合以查找具有特定名称的 Cookie。

Dim loop1 As Integer
 Dim MyCookie As HttpCookie
 Dim MyCookieCollection As HttpCookieCollection

 MyCookieCollection = Request.Cookies

 For loop1 = 0 TO MyCookieCollection.Count - 1
    MyCookie = MyCookieCollection(loop1)
    If MyCookie.Name = "UserName" Then
       '...
    End If
 Next loop1

int loop1;
 HttpCookie MyCookie;
 HttpCookieCollection MyCookieCollection;

 MyCookieCollection = Request.Cookies;

 for (loop1 = 0; loop1 < MyCookieCollection.Count; loop1++)
 {
    MyCookie = MyCookieCollection[loop1];
    if (MyCookie.Name == "UserName")
    {
       //...
    }
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间
Value


HttpCookie ..::.Path 属性

HttpCookie
.
.
::
.
Path 属性
HttpCookie 类

获取或设置要与当前 Cookie 一起传输的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Path As String
    Get
    Set
public string Path { get; set; }
public:
property String^ Path {
    String^ get ();
    void set (String^ value);
}
member Path : string with get, set

属性值

类型： System String
要与此 Cookie 一起传输的虚拟路径。默认值为当前请求的路径。 要与此 Cookie 一起传输的虚拟路径。默认值为当前请求的路径。

Path 属性扩展 Domain 属性，以完整描述此 Cookie 应用到的特定 URL。例如，在 URL http:/www.microsoft.com/asp 中，域为 www.microsoft.com，路径为 /asp。 Path 属性扩展 Domain 属性，以完整描述此 Cookie 应用到的特定 URL。例如，在 URL http:/www.microsoft.com/asp 中，域为 www.microsoft.com，路径为 /asp。

下面的代码示例设置新 Cookie 的 Path 属性。

MyCookie.Path = "/asp"

MyCookie.Path = "/asp";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间
Domain


HttpCookie ..::.Secure 属性

HttpCookie
.
.
::
.
Secure 属性
HttpCookie 类

获取或设置一个值，该值指示是否使用安全套接字层 (SSL)（即仅通过 HTTPS）传输 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Secure As Boolean
    Get
    Set
public bool Secure { get; set; }
public:
property bool Secure {
    bool get ();
    void set (bool value);
}
member Secure : bool with get, set

属性值

类型： System Boolean
如果通过 SSL 连接 (HTTPS) 传输 Cookie，则为 true；否则为 false。默认为 false。 如果通过 SSL 连接 (HTTPS) 传输 Cookie，则为 true；否则为 false。默认为 false。

若要使用 SSL 对整个应用程序设置 Cookie 传输，请在应用程序的配置文件 Web.config 中启用 SSL，该配置文件位于应用程序的根目录下。有关更多信息，请参见 httpCookies 元素（ASP.NET 设置架构）。使用 Secure 属性以编程方式设置的值会覆盖 Web.config 文件中设置的值。 若要使用 SSL 对整个应用程序设置 Cookie 传输，请在应用程序的配置文件 Web.config 中启用 SSL，该配置文件位于应用程序的根目录下。有关更多信息，请参见 httpCookies 元素（ASP.NET 设置架构）。使用 Secure 属性以编程方式设置的值会覆盖 Web.config 文件中设置的值。 若要使用 SSL 对整个应用程序设置 Cookie 传输，请在应用程序的配置文件 Web.config 中启用 SSL，该配置文件位于应用程序的根目录下。有关更多信息，请参见 httpCookies 元素（ASP.NET 设置架构）。使用 Secure 属性以编程方式设置的值会覆盖 Web.config 文件中设置的值。

当处理敏感信息时，强烈建议使用具有 SSL 加密的 HTTPS 协议。SSL 保护数据不被改变（数据完整性），保护用户的标识（保密性），并保证数据来自预期客户（身份验证）。有关加密的优点的更多信息，请参见 加密服务。有关在 Internet 信息服务 (IIS) Web 服务器上配置 SSL 的更多信息，请参见在 Web 服务器或网站上配置 SSL。 当处理敏感信息时，强烈建议使用具有 SSL 加密的 HTTPS 协议。SSL 保护数据不被改变（数据完整性），保护用户的标识（保密性），并保证数据来自预期客户（身份验证）。有关加密的优点的更多信息，请参见 加密服务。有关在 Internet 信息服务 (IIS) Web 服务器上配置 SSL 的更多信息，请参见在 Web 服务器或网站上配置 SSL。 当处理敏感信息时，强烈建议使用具有 SSL 加密的 HTTPS 协议。SSL 保护数据不被改变（数据完整性），保护用户的标识（保密性），并保证数据来自预期客户（身份验证）。有关加密的优点的更多信息，请参见 加密服务。有关在 Internet 信息服务 (IIS) Web 服务器上配置 SSL 的更多信息，请参见在 Web 服务器或网站上配置 SSL。 当处理敏感信息时，强烈建议使用具有 SSL 加密的 HTTPS 协议。SSL 保护数据不被改变（数据完整性），保护用户的标识（保密性），并保证数据来自预期客户（身份验证）。有关加密的优点的更多信息，请参见 加密服务。有关在 Internet 信息服务 (IIS) Web 服务器上配置 SSL 的更多信息，请参见在 Web 服务器或网站上配置 SSL。

下面的代码示例在 Cookie 设置为使用 SSL 传输时采取操作。

If MyCookie.Secure Then
    '...
 End If

if (MyCookie.Secure)
 {
   //...
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间

其他资源

httpCookies 元素（ASP.NET 设置架构）
使用安全套接字层


HttpCookie ..::.Value 属性

HttpCookie
.
.
::
.
Value 属性
HttpCookie 类

获取或设置单个 Cookie 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Value As String
    Get
    Set
public string Value { get; set; }
public:
property String^ Value {
    String^ get ();
    void set (String^ value);
}
member Value : string with get, set

属性值

类型： System String
Cookie 的值。默认值为 null 引用（在 Visual Basic 中为 Nothing）。 Cookie 的值。默认值为 null 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例将一个现有 Cookie 的值设置为“abc123”。

MyCookie.Value = "abc123"

MyCookie.Value = "abc123";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间


HttpCookie ..::.Values 属性

HttpCookie
.
.
::
.
Values 属性
HttpCookie 类

获取单个 Cookie 对象所包含的键值对的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Values As NameValueCollection
    Get
public NameValueCollection Values { get; }
public:
property NameValueCollection^ Values {
    NameValueCollection^ get ();
}
member Values : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
Cookie 值的集合。

下面的代码示例创建一个新 Cookie，并向它添加几个值。有关如何从一个 Cookie 中提取多个值的示例，请参见 HasKeys。 下面的代码示例创建一个新 Cookie，并向它添加几个值。有关如何从一个 Cookie 中提取多个值的示例，请参见 HasKeys。

Dim MyCookie As HttpCookie = New HttpCookie("Cookie1")
 MyCookie.Values("Val1") = "1"
 MyCookie.Values("Val2") = "2"
 MyCookie.Values("Val3") = "3"
 Response.Cookies.Add(MyCookie)

HttpCookie MyCookie = new HttpCookie("Cookie1");
 MyCookie.Values["Val1"] = "1";
 MyCookie.Values["Val2"] = "2";
 MyCookie.Values["Val3"] = "3";
 Response.Cookies.Add(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookie 类
HttpCookie 成员
System.Web 命名空间
Value


HttpCookieCollection 类

HttpCookieCollection 类
成员

提供操作 HTTP Cookie 的类型安全方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpCookieCollection _
    Inherits NameObjectCollectionBase
public sealed class HttpCookieCollection : NameObjectCollectionBase
public ref class HttpCookieCollection sealed : public NameObjectCollectionBase
[<SealedAttribute>]
type HttpCookieCollection =
    class
        inherit NameObjectCollectionBase
    end

下面的代码示例演示如何使用 HttpRequest 对象的 Cookies 属性读取 Cookie 以及如何使用 HttpResponse 对象的 Cookies 属性写入 Cookie。这两个属性均返回 HttpCookieCollection 对象。如果两个 Cookie 中的任何一个命名为 userName，且 lastVisit 不在 HTTP 请求中，则在 HTTP 响应中创建这两个 Cookie。如果两个 Cookie 存在，则显示这两个 Cookie 的属性。 下面的代码示例演示如何使用 HttpRequest 对象的 Cookies 属性读取 Cookie 以及如何使用 HttpResponse 对象的 Cookies 属性写入 Cookie。这两个属性均返回 HttpCookieCollection 对象。如果两个 Cookie 中的任何一个命名为 userName，且 lastVisit 不在 HTTP 请求中，则在 HTTP 响应中创建这两个 Cookie。如果两个 Cookie 存在，则显示这两个 Cookie 的属性。 下面的代码示例演示如何使用 HttpRequest 对象的 Cookies 属性读取 Cookie 以及如何使用 HttpResponse 对象的 Cookies 属性写入 Cookie。这两个属性均返回 HttpCookieCollection 对象。如果两个 Cookie 中的任何一个命名为 userName，且 lastVisit 不在 HTTP 请求中，则在 HTTP 响应中创建这两个 Cookie。如果两个 Cookie 存在，则显示这两个 Cookie 的属性。 下面的代码示例演示如何使用 HttpRequest 对象的 Cookies 属性读取 Cookie 以及如何使用 HttpResponse 对象的 Cookies 属性写入 Cookie。这两个属性均返回 HttpCookieCollection 对象。如果两个 Cookie 中的任何一个命名为 userName，且 lastVisit 不在 HTTP 请求中，则在 HTTP 响应中创建这两个 Cookie。如果两个 Cookie 存在，则显示这两个 Cookie 的属性。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim sb As New StringBuilder()
        ' Check to see if cookies exist in HTTP request.
        If (Request.Cookies("userName") Is Nothing AndAlso _
            Request.Cookies("lastVisit") Is Nothing) Then
            Response.Cookies("userName").Value = "user name"
            Response.Cookies("userName").Expires = DateTime.Now.AddMinutes(20D)

            Dim aCookie As HttpCookie
            aCookie = New HttpCookie("lastVisit")
            aCookie.Value = DateTime.Now.ToString()
            aCookie.Expires = DateTime.Now.AddMinutes(20D)
            Response.Cookies.Add(aCookie)
            sb.Append("Two cookies added to response. " & _
                "Refresh the page to read the cookies.")
        Else
            Dim cookies As HttpCookieCollection
            cookies = Request.Cookies
            For i As Integer = 0 To cookies.Count - 1
                sb.Append("Name: " & cookies(i).Name & "<br/>")
                sb.Append("Value: " & cookies(i).Value & "<br/>")
                sb.Append("Expires: " & cookies(i).Expires.ToString() & _
                          "<br/><br/>")
            Next

        End If
        Label1.Text = sb.ToString()
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpCookieCollection Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label id="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        // Check to see if cookies exist in HTTP request.
        if (Request.Cookies["userName"] == null &&
            Request.Cookies["lastVist"] == null)
        {
            Response.Cookies["userName"].Value = "user name";
            Response.Cookies["userName"].Expires = DateTime.Now.AddMinutes(20d);

            HttpCookie aCookie = new HttpCookie("lastVisit");
            aCookie.Value = DateTime.Now.ToString();
            aCookie.Expires = DateTime.Now.AddMinutes(20d);
            Response.Cookies.Add(aCookie);
            sb.Append("Two cookies added to response. " +
                "Refresh the page to read the cookies.");
        }
        else
        {
            HttpCookieCollection cookies = Request.Cookies;
            for (int i = 0; i < cookies.Count; i++)
            {
                sb.Append("Name: " + cookies[i].Name + "<br/>");
                sb.Append("Value: " + cookies[i].Value + "<br/>");
                sb.Append("Expires: " + cookies[i].Expires.ToString() +
                          "<br/><br/>");
            }
        }
        Label1.Text = sb.ToString();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpCookieCollection Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label id="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpCookieCollectionHttpCookieCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 成员
System.Web 命名空间
HttpCookie

其他资源

ASP.NET Cookies


HttpCookieCollection 成员

HttpCookieCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

提供操作 HTTP Cookie 的类型安全方法。

HttpCookieCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpCookieCollection 类
System.Web 命名空间


HttpCookieCollection 构造函数

HttpCookieCollection 构造函数
HttpCookieCollection 类

初始化 HttpCookieCollection 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpCookieCollection()
public:
HttpCookieCollection()
new : unit -> HttpCookieCollection

ASP.NET 包含两个内部 Cookie 集合。可通过 Cookies 访问的集合包含 Cookie 标头中由客户端传输到服务器的 Cookie。可通过 Cookies 访问的集合包含生成于服务器上并在 Set-Cookie 头中传输到客户端的 Cookie。 ASP.NET 包含两个内部 Cookie 集合。可通过 Cookies 访问的集合包含 Cookie 标头中由客户端传输到服务器的 Cookie。可通过 Cookies 访问的集合包含生成于服务器上并在 Set-Cookie 头中传输到客户端的 Cookie。 ASP.NET 包含两个内部 Cookie 集合。可通过 Cookies 访问的集合包含 Cookie 标头中由客户端传输到服务器的 Cookie。可通过 Cookies 访问的集合包含生成于服务器上并在 Set-Cookie 头中传输到客户端的 Cookie。

下面的示例创建一个新的 Cookie 集合对象，并用从客户端接收的 Cookie 来填充它。

Dim MyCookieCollection As New HttpCookieCollection()
 MyCookieCollection = Request.Cookies

HttpCookieCollection MyCookieCollection = new HttpCookieCollection();
 MyCookieCollection = Request.Cookies;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
HttpRequest
HttpResponse
HttpCookie


HttpCookieCollection 方法

HttpCookieCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

HttpCookieCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpCookieCollection 类
System.Web 命名空间


HttpCookieCollection ..::.Add 方法

HttpCookieCollection
.
.
::
.
Add 方法
HttpCookieCollection 类

将指定的 Cookie 添加到此 Cookie 集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Add ( _
    cookie As HttpCookie _
)
public void Add(
    HttpCookie cookie
)
public:
void Add(
    HttpCookie^ cookie
)
member Add :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
要添加到集合中的 HttpCookie。

在一个应用程序中可以存在任意数目的 Cookie 集合，但是只有通过内部 Cookies 对象引用的集合发送到客户端。

Add 方法允许 Cookie 集合中存在重复的 Cookie。使用 Set 方法可确保 Cookie 在 Cookie 集合中的唯一性。 Add 方法允许 Cookie 集合中存在重复的 Cookie。使用 Set 方法可确保 Cookie 在 Cookie 集合中的唯一性。

下面的示例创建一个新的 Cookie 集合和一个名为“LastVisit”的新 Cookie，将此 Cookie 的值设置为当前日期和时间，并将此 Cookie 添加到新集合中。

Dim MyCookieCollection as New HttpCookieCollection()
 Dim MyCookie As New HttpCookie("LastVisit")
 MyCookie.Value = DateTime.Now().ToString()
 MyCookieCollection.Add(MyCookie)

HttpCookieCollection MyCookieCollection = new HttpCookieCollection();
 HttpCookie MyCookie = new HttpCookie("LastVisit");
 MyCookie.Value = DateTime.Now.ToString();
 MyCookieCollection.Add(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
Clear
Set


HttpCookieCollection ..::.BaseGet 方法

HttpCookieCollection
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间


HttpCookieCollection ..::.BaseGetAllValues 方法

HttpCookieCollection
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间


HttpCookieCollection ..::.BaseSet 方法

HttpCookieCollection
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间


HttpCookieCollection ..::.Clear 方法

HttpCookieCollection
.
.
::
.
Clear 方法
HttpCookieCollection 类

清除 Cookie 集合中的所有 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Clear
public void Clear()
public:
void Clear()
member Clear : unit -> unit

下面的示例删除 Cookie 集合中的所有 Cookie。

MyCookieCollection.Clear()

MyCookieCollection.Clear();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
Add


HttpCookieCollection ..::.CopyTo 方法

HttpCookieCollection
.
.
::
.
CopyTo 方法
HttpCookieCollection 类

从指定的数组索引处开始，将 Cookie 集合的成员复制到 Array 中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub CopyTo ( _
    dest As Array, _
    index As Integer _
)
public void CopyTo(
    Array dest,
    int index
)
public:
void CopyTo(
    Array^ dest,
    int index
)
member CopyTo :
        dest:Array *
        index:int -> unit

参数

dest
类型： System Array
目标 Array。
index
类型： System Int32
目标数组的索引，从此处开始复制。

下面的示例将整个 Cookie 集合复制到一个新的 Array 对象中。

' Create the one-dimensional target array.
 ' Dimension it large enough to hold the cookies collection.
 Dim MyArray As Array = Array.CreateInstance(GetType(String), Request.Cookies.Count)

 ' Copy the entire collection to the array.
 Request.Cookies.CopyTo(MyArray, 0)

// Create the one-dimensional target array.
 // Dimension it large enough to hold the cookies collection.
 Array MyArray = Array.CreateInstance( typeof(String), Request.Cookies.Count );

 // Copy the entire collection to the array.
 Request.Cookies.CopyTo( MyArray, 0 );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
Clear
Add


HttpCookieCollection ..::.Get 方法

HttpCookieCollection
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

从 Cookie 集合中返回单个 HttpCookie 对象。重载此属性以允许按名称或数字索引检索 Cookie。 从 Cookie 集合中返回单个 HttpCookie 对象。重载此属性以允许按名称或数字索引检索 Cookie。

名称 说明
页首

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间


HttpCookieCollection ..::.Get 方法 (Int32)

HttpCookieCollection
.
.
::
.
Get 方法 (Int32)
HttpCookieCollection 类

从 Cookie 集合中返回具有指定索引的 HttpCookie 项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    index As Integer _
) As HttpCookie
public HttpCookie Get(
    int index
)
public:
HttpCookie^ Get(
    int index
)
member Get :
        index:int -> HttpCookie

参数

index
类型： System Int32
要从集合中检索的 Cookie 索引。

返回值

类型： System.Web HttpCookie
按 index 指定的 HttpCookie。

下面的示例从 Cookie 集合返回每个 Cookie，检查其名称是否为“LastVisit”，如果找到“LastVisit”，则将其值更新为当前日期和时间。

Dim loop1 As Integer
 Dim MyCookie As HttpCookie
 Dim MyCookieCollection As HttpCookieCollection = Request.Cookies

 For loop1 = 0 To MyCookieCollection.Count - 1
    MyCookie = MyCookieCollection.Get(loop1)
    If MyCookie.Name = "LastVisit" Then
       MyCookie.Value = DateTime.Now().ToString()
       MyCookieCollection.Set(MyCookie)
    End If
 Next loop1

int loop1;
 HttpCookie MyCookie;
 HttpCookieCollection MyCookieCollection = Response.Cookies;

 for(loop1 = 0; loop1 < MyCookieCollection.Count; loop1++)
 {
    MyCookie = MyCookieCollection.Get(loop1);
    if(MyCookie.Value == "LastVisit")
    {
       MyCookie.Value = DateTime.Now.ToString();
       MyCookieCollection.Set(MyCookie);
    }
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
Get 重载
System.Web 命名空间
Set


HttpCookieCollection ..::.Get 方法 (String)

HttpCookieCollection
.
.
::
.
Get 方法 (String)
HttpCookieCollection 类

从 Cookie 集合中返回具有指定名称的 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    name As String _
) As HttpCookie
public HttpCookie Get(
    string name
)
public:
HttpCookie^ Get(
    String^ name
)
member Get :
        name:string -> HttpCookie

参数

name
类型： System String
要从集合中检索的 Cookie 的名称。

返回值

类型： System.Web HttpCookie
按 name 指定的 HttpCookie。

如果指定 Cookie 不存在，此方法将创建具有该名称的新 Cookie。

下面的示例将客户端发送的 Cookie 集合捕获到新的 Cookie 集合中，从新集合中检索名为“LastVisit”的 Cookie，并将该 Cookie 的值更新为当前日期和时间。

Dim MyCookieCollection As HttpCookieCollection = Request.Cookies
 Dim MyCookie As HttpCookie = MyCookieCollection.Get("LastVisit")
 MyCookie.Value = DateTime.Now().ToString()
 MyCookieCollection.Set(MyCookie)

HttpCookieCollection MyCookieCollection = Request.Cookies;
 HttpCookie MyCookie = MyCookieCollection.Get("LastVisit");
 MyCookie.Value = DateTime.Now.ToString();
 MyCookieCollection.Set(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
Get 重载
System.Web 命名空间
Set


HttpCookieCollection ..::.GetKey 方法

HttpCookieCollection
.
.
::
.
GetKey 方法
HttpCookieCollection 类

返回指定数字索引处的 Cookie 键（名称）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetKey ( _
    index As Integer _
) As String
public string GetKey(
    int index
)
public:
String^ GetKey(
    int index
)
member GetKey :
        index:int -> string

参数

index
类型： System Int32
要从集合中检索的键索引。

返回值

类型： System String
按 index 指定的 Cookie 的名称。

下面的示例从 Cookie 集合返回每个 Cookie，检查其名称是否为“LastVisit”，如果找到“LastVisit”，则将其值更新为当前日期和时间。

Dim loop1 As Integer
 Dim MyCookie As HttpCookie
 Dim MyCookieCollection As HttpCookieCollection = Request.Cookies

 For loop1 = 0 To MyCookieCollection.Count - 1
    If MyCookieCollection.GetKey(loop1) = "LastVisit" Then
       MyCookieCollection(loop1).Value = DateTime.Now().ToString()
       MyCookieCollection.Set(MyCookieCollection(loop1))
       Exit For
    End If
 Next loop1

int loop1;

 HttpCookieCollection MyCookieCollection = Response.Cookies;

 for(loop1 = 0; loop1 < MyCookieCollection.Count; loop1++)
 {
    if(MyCookieCollection.GetKey(loop1) == "LastVisit")
    {
       MyCookieCollection[loop1].Value = DateTime.Now.ToString();
       MyCookieCollection.Set(MyCookieCollection[loop1]);
    }
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间


HttpCookieCollection ..::.Remove 方法

HttpCookieCollection
.
.
::
.
Remove 方法
HttpCookieCollection 类

从集合中移除具有指定名称的 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Remove ( _
    name As String _
)
public void Remove(
    string name
)
public:
void Remove(
    String^ name
)
member Remove :
        name:string -> unit

参数

name
类型： System String
要从集合中移除的 Cookie 名称。

如果具有指定 name 的 Cookie 在集合中不存在，将不会引发异常。

下面的示例从集合中移除 Cookie。

MyCookieCollection.Remove(MyCookie)

MyCookieCollection.Remove(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
Add
Set


HttpCookieCollection ..::.Set 方法

HttpCookieCollection
.
.
::
.
Set 方法
HttpCookieCollection 类

更新 Cookie 集合中现有 Cookie 的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Set ( _
    cookie As HttpCookie _
)
public void Set(
    HttpCookie cookie
)
public:
void Set(
    HttpCookie^ cookie
)
member Set :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
要更新的 HttpCookie 对象。

Set 方法首先查看 Cookie 是否已存在于集合中，如果是，则更新它。Set 方法不允许 Cookie 集合中存在重复的 Cookie。要在 Cookie 集合中添加重复的 Cookie，请使用 Add 方法。 Set 方法首先查看 Cookie 是否已存在于集合中，如果是，则更新它。Set 方法不允许 Cookie 集合中存在重复的 Cookie。要在 Cookie 集合中添加重复的 Cookie，请使用 Add 方法。 Set 方法首先查看 Cookie 是否已存在于集合中，如果是，则更新它。Set 方法不允许 Cookie 集合中存在重复的 Cookie。要在 Cookie 集合中添加重复的 Cookie，请使用 Add 方法。

下面的示例更新现有 Cookie 的值。

MyCookie.Value = DateTime.Now().ToString()
 MyCookieCollection.Set(MyCookie)

MyCookie.Value = DateTime.Now.ToString();
 MyCookieCollection.Set(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
Get
Add


HttpCookieCollection 属性

HttpCookieCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

HttpCookieCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpCookieCollection 类
System.Web 命名空间


HttpCookieCollection ..::.AllKeys 属性

HttpCookieCollection
.
.
::
.
AllKeys 属性
HttpCookieCollection 类

获取一个字符串数组，该数组包含此 Cookie 集合中的所有键（Cookie 名称）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AllKeys As String()
    Get
public string[] AllKeys { get; }
public:
property array<String^>^ AllKeys {
    array<String^>^ get ();
}
member AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

Cookie 名称的数组。

下面的示例创建一个字符串数组，该数组包含客户端的 Cookie 集合中的 Cookie 名称。

Dim MyCookieNamesArray() As String = Request.Cookies.AllKeys

String[] MyCookieNamesArray = Request.Cookies.AllKeys;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间
Item


HttpCookieCollection ..::.Item 属性

HttpCookieCollection
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpCookieCollection 类

从 Cookie 集合中获取具有指定名称的 Cookie。重载此属性以允许按名称或数字索引检索 Cookie。 从 Cookie 集合中获取具有指定名称的 Cookie。重载此属性以允许按名称或数字索引检索 Cookie。

名称 说明
页首

参考

HttpCookieCollection 类
HttpCookieCollection 成员
System.Web 命名空间


HttpCookieCollection ..::.Item 属性 (Int32)

HttpCookieCollection
.
.
::
.
Item 属性 (Int32)
HttpCookieCollection 类

从 Cookie 集合中获取具有指定数字索引的 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    index As Integer _
) As HttpCookie
    Get
public HttpCookie this[
    int index
] { get; }
public:
property HttpCookie^ Item[int index] {
    HttpCookie^ get (int index);
}
member Item : HttpCookie

参数

index
类型： System Int32
要从集合中检索的 Cookie 索引。

属性值

类型： System.Web HttpCookie
按 index 指定的 HttpCookie。

下面的示例将第一个 Cookie 的名称存储为 Cookie 集合中的字符串变量（索引为 0）。

Dim CookieName As String = MyCookieCollection(0).Name

String CookieName = MyCookieCollection[0].Name;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
Item 重载
System.Web 命名空间
Get


HttpCookieCollection ..::.Item 属性 (String)

HttpCookieCollection
.
.
::
.
Item 属性 (String)
HttpCookieCollection 类

从 Cookie 集合中获取具有指定名称的 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    name As String _
) As HttpCookie
    Get
public HttpCookie this[
    string name
] { get; }
public:
property HttpCookie^ Item[String^ name] {
    HttpCookie^ get (String^ name);
}
member Item : HttpCookie

参数

name
类型： System String
要检索的 Cookie 名称。

属性值

类型： System.Web HttpCookie
由 name 指定的 HttpCookie。

下面的示例获取名为“LastVisit”的 Cookie 并提取它的值。

Dim str As String
 str = Request.Cookies("LastVisit").Value

String str;
 str = Request.Cookies["LastVisit"].Value;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpCookieCollection 类
HttpCookieCollection 成员
Item 重载
System.Web 命名空间
Get


HttpCookieMode 枚举

HttpCookieMode 枚举

指定如何将 Cookie 用于 Web 应用程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration HttpCookieMode
public enum HttpCookieMode
public enum class HttpCookieMode
type HttpCookieMode
成员名称 | 说明
UseUri | 该调用功能使用查询字符串来存储标识符，无论浏览器或设备是否支持 Cookie。
UseCookies | 使用 Cookie 保持用户数据，无论浏览器或设备是否支持 Cookie。
AutoDetect | ASP.NET 确定请求浏览器或设备是否支持 Cookie。如果请求浏览器或设备支持 Cookie，则 AutoDetect 使用 Cookie 来保持用户数据；否则在查询字符串中使用标识符。如果浏览器或设备支持使用 Cookie，但当前 Cookie 被禁用，请求功能仍将使用 Cookie。 ASP.NET 确定请求浏览器或设备是否支持 Cookie。如果请求浏览器或设备支持 Cookie，则 AutoDetect 使用 Cookie 来保持用户数据；否则在查询字符串中使用标识符。如果浏览器或设备支持使用 Cookie，但当前 Cookie 被禁用，请求功能仍将使用 Cookie。 ASP.NET 确定请求浏览器或设备是否支持 Cookie。如果请求浏览器或设备支持 Cookie，则 AutoDetect 使用 Cookie 来保持用户数据；否则在查询字符串中使用标识符。如果浏览器或设备支持使用 Cookie，但当前 Cookie 被禁用，请求功能仍将使用 Cookie。
UseDeviceProfile | ASP.NET 根据 System.Web..::.HttpBrowserCapabilities 设置来确定是否使用 Cookie。如果该设置指示浏览器或设备支持 Cookie，则使用 Cookie；否则在查询字符串中使用标识符。 ASP.NET 根据 System.Web..::.HttpBrowserCapabilities 设置来确定是否使用 Cookie。如果该设置指示浏览器或设备支持 Cookie，则使用 Cookie；否则在查询字符串中使用标识符。

HttpCookieMode 枚举用于指定 sessionState 配置节中 cookieless 特性的值。可用于支持无 Cookie 身份验证的所有功能。 HttpCookieMode 枚举用于指定 sessionState 配置节中 cookieless 特性的值。可用于支持无 Cookie 身份验证的所有功能。

HttpCookieMode 枚举值指定应该如何使用 Cookie 来维护关于用户的信息。使用了 AutoDetect 时，ASP.NET 会查询浏览器或设备来确定其是否支持 Cookie。如果浏览器或设备支持 Cookie，则使用 Cookie 来保持用户数据；否则在查询字符串中使用标识符。 HttpCookieMode 枚举值指定应该如何使用 Cookie 来维护关于用户的信息。使用了 AutoDetect 时，ASP.NET 会查询浏览器或设备来确定其是否支持 Cookie。如果浏览器或设备支持 Cookie，则使用 Cookie 来保持用户数据；否则在查询字符串中使用标识符。 HttpCookieMode 枚举值指定应该如何使用 Cookie 来维护关于用户的信息。使用了 AutoDetect 时，ASP.NET 会查询浏览器或设备来确定其是否支持 Cookie。如果浏览器或设备支持 Cookie，则使用 Cookie 来保持用户数据；否则在查询字符串中使用标识符。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

System.Web 命名空间
SessionStateSection Cookieless
FormsAuthentication CookieMode
HttpSessionState IsCookieless

其他资源

sessionState 元素（ASP.NET 设置架构）


HttpException 类

HttpException 类
成员

描述在处理 HTTP 请求期间发生的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public Class HttpException _
    Inherits ExternalException
[SerializableAttribute]
public class HttpException : ExternalException
[SerializableAttribute]
public ref class HttpException : public ExternalException
[<SerializableAttribute>]
type HttpException =
    class
        inherit ExternalException
    end

HttpException 类是一个特定于 HTTP 的异常类，ASP.NET 可通过该类生成异常信息。有关引发和处理异常的更多信息，请参见 处理和引发异常。 HttpException 类是一个特定于 HTTP 的异常类，ASP.NET 可通过该类生成异常信息。有关引发和处理异常的更多信息，请参见 处理和引发异常。

下面的代码示例演示如何使用 HttpException 类引发自定义的异常。Button_Click 方法确定哪个按钮被单击，然后调用 CheckNumber 或 CheckBoolean 方法之一。如果用户在文本框中输入的值不是所期望的类型，则根据错误类型使用自定义的消息创建并引发 HttpException 异常。 下面的代码示例演示如何使用 HttpException 类引发自定义的异常。Button_Click 方法确定哪个按钮被单击，然后调用 CheckNumber 或 CheckBoolean 方法之一。如果用户在文本框中输入的值不是所期望的类型，则根据错误类型使用自定义的消息创建并引发 HttpException 异常。 下面的代码示例演示如何使用 HttpException 类引发自定义的异常。Button_Click 方法确定哪个按钮被单击，然后调用 CheckNumber 或 CheckBoolean 方法之一。如果用户在文本框中输入的值不是所期望的类型，则根据错误类型使用自定义的消息创建并引发 HttpException 异常。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  Sub CheckNumber()

    Try

      ' Check whether the value is an integer.
      Dim convertInt As String = textbox1.Text
      Convert.ToInt32(convertInt)

    Catch e As Exception

      ' Throw an HttpException with customized message.
      Throw New HttpException("not an integer")

    End Try

  End Sub

  Sub CheckBoolean()

    Try

      ' Check whether the value is an boolean.
      Dim convertBool As String = textbox1.Text
      Convert.ToBoolean(convertBool)

    Catch e As Exception

      ' Throw an HttpException with customized message.
      Throw New HttpException("not a boolean")

    End Try

  End Sub

  Sub Button_Click(ByVal sender As [Object], ByVal e As EventArgs)

    Try

      ' Check to see which button was clicked.
      Dim b As Button = CType(sender, Button)
      If b.ID.StartsWith("button1") Then
        CheckNumber()
      ElseIf b.ID.StartsWith("button2") Then
        CheckBoolean()
      End If

      label1.Text = "You entered: " + textbox1.Text
      label1.ForeColor = System.Drawing.Color.Black

      ' Catch the HttpException.
    Catch exp As HttpException

      label1.Text = "An HttpException was raised. " + "The value entered in the textbox is " + exp.Message.ToString()
      label1.ForeColor = System.Drawing.Color.Red

    End Try

  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpException Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <br />
        <b>Enter a value in the text box.</b>
        <br />
        <asp:TextBox ID="textbox1"
                     Runat="server">
        </asp:TextBox>
        <br />
        <asp:Button ID="button1"
                    Text="Check for integer."
                    OnClick="Button_Click"
                    Runat="server">
        </asp:Button>
        <br />
        <asp:Button ID="button2"
                    Text="Check for boolean."
                    OnClick="Button_Click"
                    Runat="server">
        </asp:Button>
        <br />
        <asp:Label ID="label1"
                   Runat="server">
        </asp:Label>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    void CheckNumber()
    {
        try
        {
            // Check whether the value is an integer.
            String convertInt = textbox1.Text;
            Convert.ToInt32(convertInt);
        }
        catch (Exception e)
        {
            // Throw an HttpException with customized message.
            throw new HttpException("not an integer");
        }
    }
    void CheckBoolean()
    {
        try
        {
            // Check whether the value is an boolean.
            String convertBool = textbox1.Text;
            Convert.ToBoolean(convertBool);
        }
        catch (Exception e)
        {
            // Throw an HttpException with customized message.
            throw new HttpException("not a boolean");
        }
    }

    void Button_Click(Object sender, EventArgs e)
    {
        try
        {
            // Check to see which button was clicked.
            Button b = (Button)sender;
            if (b.ID.StartsWith("button1"))
                CheckNumber();
            else if (b.ID.StartsWith("button2"))
                CheckBoolean();

            label1.Text = "You entered: " + textbox1.Text;
            label1.ForeColor = System.Drawing.Color.Black;
        }
        // Catch the HttpException.
        catch (HttpException exp)
        {
            label1.Text = "An HttpException was raised. "
               + "The value entered in the textbox is " + exp.Message.ToString();
            label1.ForeColor = System.Drawing.Color.Red;
        }
    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpException Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <br />
        <b>Enter a value in the text box.</b>
        <br />
        <asp:TextBox ID="textbox1"
                     Runat="server">
        </asp:TextBox>
        <br />
        <asp:Button ID="button1"
                    Text="Check for integer."
                    OnClick="Button_Click"
                    Runat="server">
        </asp:Button>
        <br />
        <asp:Button ID="button2"
                    Text="Check for boolean."
                    OnClick="Button_Click"
                    Runat="server">
        </asp:Button>
        <br />
        <asp:Label ID="label1"
                   Runat="server">
        </asp:Label>
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpExceptionHttpException

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 成员
System.Web 命名空间

其他资源

处理和引发异常
脚本侵入概述


HttpException 成员

HttpException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpException 类

描述在处理 HTTP 请求期间发生的异常。

HttpException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpException 类
System.Web 命名空间


HttpException 构造函数

HttpException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpException 类

初始化 HttpException 类的新实例。

名称 说明
页首

参考

HttpException 类
HttpException 成员
System.Web 命名空间


HttpException 构造函数

HttpException 构造函数
HttpException 类

初始化 HttpException 类的新实例并创建一个空 HttpException 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpException()
public:
HttpException()
new : unit -> HttpException

当处理异常时，有时捕获一系列相关的异常（其中外部异常是因为响应内部异常而引发）十分有用。

从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。 从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。 从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。

下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如果该值不为整数，则引发一个异常，然后创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如果该值不为整数，则引发一个异常，然后创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如果该值不为整数，则引发一个异常，然后创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如果该值不为整数，则引发一个异常，然后创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>Example for HttpException</title>
<script language="VB" runat="server">
         Sub CheckNumber()
            Try
               ' Check whether the value is an integer.
               Dim convertInt As [String] = textbox1.Text
               Convert.ToInt32(convertInt)
            Catch e As Exception
               ' Throw the 'HttpException' object.
               Throw New HttpException()
            End Try
         End Sub 'CheckNumber

         Sub Button_Click(sender As [Object], e As EventArgs)
            Try
               CheckNumber()
               label1.Text = "The integer value you entered is: " + textbox1.Text
            Catch exp As HttpException
               label1.Text = "<font color='red'>An HttpException was raised!:" _
                  & " The value entered in the textbox is not an integer</font>"
            End Try
         End Sub 'Button_Click

         Sub Page_Load(sender As [Object], e As EventArgs)
            label1.Text=""
         End Sub
      </script>
   </head>

   <body>
      <center>
         <h3>Example for HttpException</h3>
      </center>
      <form id="WebForm9" method="post" runat="server">
         <center>
            <b>Enter a value in the text box.</b>
            <asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
            <br />
            <asp:Button Text="Click Here" OnClick="Button_Click" Runat="server"></asp:Button>
            <br />
            <b><asp:Label Runat="server" ID="label1"></asp:Label></b>
         </center>
      </form>
   </body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>
            Example for HttpException
         </title>
<script language="C#" runat="server">
         void CheckNumber()
         {
            try
            {
               // Check whether the value is an integer.
               String convertInt = textbox1.Text;
               Convert.ToInt32(convertInt);
            }
            catch(Exception e)
            {
               // Throw a 'HttpException' object.
               throw new HttpException();
            }
         }

         void Button_Click(Object sender, EventArgs e)
         {
            try
            {
               CheckNumber();
               label1.Text = "The integer value you entered is: "+textbox1.Text;
            }
            catch(HttpException exp)
            {
               label1.Text = "<font color='red'>An HttpException was raised!:"
                  + " The value entered in the textbox is not an integer.</font>";
            }
         }

         void page_load(object sender,EventArgs e)
         {
            label1.Text="";
         }
      </script>
   </head>

   <body>
      <center>
         <h3>
            Example for HttpException
         </h3>
      </center>

      <form id="WebForm9" method="post" runat="server">
         <center>
         <br />
         <b>Enter a value in the text box.</b>
         <br />
         <asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
         <br />
         <asp:Button Text="Click Here" OnClick="Button_Click" Runat="server"></asp:Button>
         <br />
         <b><asp:Label Runat="server" ID="label1"></asp:Label></b>
         </center>
      </form>
   </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException

其他资源

脚本侵入概述


HttpException 构造函数 (String)

HttpException 构造函数 (String)
HttpException 类

使用所提供的错误消息初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String _
)
public HttpException(
    string message
)
public:
HttpException(
    String^ message
)
new :
        message:string -> HttpException

参数

message
类型： System String
当发生异常时向客户端显示的错误消息。

下面的代码示例演示了 HttpException 类的 HttpException 构造函数。如果用户输入的值为 0，则引发 HttpException。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。如果用户输入的值为 0，则引发 HttpException。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

If Num = 0 Then
   Throw New HttpException("No value entered")
end if

if (Num == 0)
{
   throw new HttpException("No value entered");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException

其他资源

脚本侵入概述


HttpException 构造函数 (Int32, String)

HttpException 构造函数 (Int32, String)
HttpException 类

使用 HTTP 响应状态代码和错误消息初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpCode As Integer, _
    message As String _
)
public HttpException(
    int httpCode,
    string message
)
public:
HttpException(
    int httpCode,
    String^ message
)
new :
        httpCode:int *
        message:string -> HttpException

参数

httpCode
类型： System Int32
发送到对应于此错误的客户端的 HTTP 响应状态代码。
message
类型： System String
当发生异常时向客户端显示的错误消息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException


HttpException 构造函数 (SerializationInfo, StreamingContext)

HttpException 构造函数 (SerializationInfo, StreamingContext)
HttpException 类

用序列化数据初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
protected HttpException(
    SerializationInfo info,
    StreamingContext context
)
protected:
HttpException(
    SerializationInfo^ info,
    StreamingContext context
)
new :
        info:SerializationInfo *
        context:StreamingContext -> HttpException

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

在反序列化过程中调用 HttpException 构造函数来重建通过流传输的异常对象。有关更多信息，请参见 XML and SOAP Serialization。 在反序列化过程中调用 HttpException 构造函数来重建通过流传输的异常对象。有关更多信息，请参见 XML and SOAP Serialization。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
SerializationInfo
StreamingContext

其他资源

XML and SOAP Serialization


HttpException 构造函数 (String, Exception)

HttpException 构造函数 (String, Exception)
HttpException 类

使用错误消息和 InnerException 属性初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public HttpException(
    string message,
    Exception innerException
)
public:
HttpException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> HttpException

参数

message
类型： System String
当发生异常时向客户端显示的错误消息。
innerException
类型： System Exception
引发当前异常的 InnerException（如果有的话）。

当处理异常时，有时捕获一系列相关的异常（其中外部异常是因为响应内部异常而引发）十分有用。

从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。 从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。 从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。

下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后在 catch 块中创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后在 catch 块中创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后在 catch 块中创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户通过文本框输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后在 catch 块中创建并引发一个新的 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并将错误消息显示在浏览器上。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>Example for HttpException</title>
<script language="VB" runat="server">
         Sub CheckNumber()
            Try
               ' Check whether the value is an integer.
               Dim convertInt As [String] = textbox1.Text
               Convert.ToInt32(convertInt)
            Catch e As Exception
               ' Throw an HttpException object with a message.
               Throw New HttpException("The value entered in the textbox is not a integer", e)
            End Try
         End Sub 'CheckNumber

         Sub Button_Click(sender As [Object], e As EventArgs)
            Try
               CheckNumber()
               label1.Text = "The integer value you entered is: " + textbox1.Text
            Catch exp As HttpException
               ' Display the exception thrown.
               label1.Text = "<font color='red'>An HttpException was raised!: " + exp.Message + "</font>"
               Dim myInnerException As Exception = exp.InnerException
               label2.Text = "InnerException is : " + myInnerException.GetType().ToString()
            End Try
         End Sub 'Button_Click

         Sub page_load(sender As [Object], e As EventArgs)
            label1.Text=""
            label2.Text=""
         End Sub
      </script>
   </head>

   <body>
      <center>
      <h3>Example for HttpException</h3>
      <form id="WebForm9" method="post" runat="server">
         <b>Enter the value in the text box </b>
         <asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
         <br />
         <asp:Button Text="Click Here" OnClick="Button_Click" Runat="server" ID="Button1"></asp:Button>
         <br />
         <b>
         <asp:Label Runat="server" ID="label1"></asp:Label>
         <br />
         <asp:Label Runat="server" ID="label2"></asp:Label>
         </b>
      </form>
      </center>
   </body>
</html>

<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>Example for HttpException</title>
<script language="C#" runat="server">
         void CheckNumber()
         {
            try
            {
               // Check whether the value is an integer.
               String convertInt= textbox1.Text;
               Convert.ToInt32(convertInt);
            }
            catch(Exception e)
            {
               // Throw an HttpException object with a message.
               throw new HttpException("THe value entered in the text box is not a integer", e);
            }
         }

         void Button_Click(Object sender, EventArgs e)
         {
            try
            {
               CheckNumber();
               label1.Text = "The integer value you entered is: " + textbox1.Text;
            }
            catch(HttpException exp)
            {
               // Display the exception thrown.
               label1.Text = "<font color='red'>An HttpException was raised: " + exp.Message + "</font>";
               Exception myInnerException = exp.InnerException;
               label2.Text = "InnerException is : " + myInnerException.GetType();
            }
         }

         void page_load(Object sender,EventArgs e)
         {
            label1.Text="";
            label2.Text="";
         }
      </script>
   </head>

   <body>
      <center>
         <h3>Example for HttpException</h3>
      </center>
      <form id="Form1" method="post" runat="server">
         <center>
            <b>Enter the value in the text box </b>
            <br />
            <asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
            <br />
            <asp:Button Text="Click Here" OnClick="Button_Click" Runat="server" ID="Button1"></asp:Button>
            <br />
            <b>
               <asp:Label Runat="server" ID="label1"></asp:Label>
               <br />
               <asp:Label Runat="server" ID="label2"></asp:Label>
            </b>
         </center>
      </form>
   </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException

其他资源

脚本侵入概述


HttpException 构造函数 (String, Int32)

HttpException 构造函数 (String, Int32)
HttpException 类

使用错误消息和异常代码初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    hr As Integer _
)
public HttpException(
    string message,
    int hr
)
public:
HttpException(
    String^ message,
    int hr
)
new :
        message:string *
        hr:int -> HttpException

参数

message
类型： System String
当发生异常时向客户端显示的错误消息。
hr
类型： System Int32
定义错误的异常代码。

下面的代码示例演示了 HttpException 类的 HttpException 构造函数。如果用户输入的值为 0，则引发 HttpException 异常。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。如果用户输入的值为 0，则引发 HttpException 异常。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

If Num = 0 Then
   Throw New HttpException("No value entered", 100)
end if

if (Num == 0)
{
   throw new HttpException("No value entered", 100);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException

其他资源

脚本侵入概述


HttpException 构造函数 (Int32, String, Exception)

HttpException 构造函数 (Int32, String, Exception)
HttpException 类

使用 HTTP 响应状态代码、错误消息以及 InnerException 属性初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpCode As Integer, _
    message As String, _
    innerException As Exception _
)
public HttpException(
    int httpCode,
    string message,
    Exception innerException
)
public:
HttpException(
    int httpCode,
    String^ message,
    Exception^ innerException
)
new :
        httpCode:int *
        message:string *
        innerException:Exception -> HttpException

参数

httpCode
类型： System Int32
在客户端上显示的 HTTP 响应状态代码。
message
类型： System String
当发生异常时向客户端显示的错误消息。
innerException
类型： System Exception
引发当前异常的 InnerException（如果有的话）。

当处理异常时，有时捕获一系列相关的异常（其中外部异常是因为响应内部异常而引发）十分有用。

从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。 从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。 从外部异常的 InnerException 属性可获得导致该外部异常的内部异常引用。此机制保留早期异常携带的错误消息，包括原始异常，同时允许您创建更具意义的外部异常。有关更多信息，请参见 InnerException。

下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后创建一个包含 HTTP 响应状态代码、异常的消息和任何内部异常的新 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并显示错误消息、错误代码和内部异常。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后创建一个包含 HTTP 响应状态代码、异常的消息和任何内部异常的新 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并显示错误消息、错误代码和内部异常。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后创建一个包含 HTTP 响应状态代码、异常的消息和任何内部异常的新 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并显示错误消息、错误代码和内部异常。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。CheckNumber 方法接受用户输入的值，并检查它是否为整数。如该值不为整数，则引发一个异常，然后创建一个包含 HTTP 响应状态代码、异常的消息和任何内部异常的新 HttpException 对象。该异常在 Button_Click 事件处理程序中捕获，并显示错误消息、错误代码和内部异常。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<%@ Import Namespace="System.Drawing" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>Example for HttpException</title>
<script language="VB" runat="server">
         Sub CheckNumber()
            Try
               'Check whether the value is integer.
               Dim convertInt As [String] = textbox1.Text
               Convert.ToInt32(convertInt)
            Catch ex As Exception
               ' Throw an HttpException object that contains the HTTP error code,
               ' message, and inner exception.
               Throw New HttpException(500, "The entered value is not an integer.", ex)
            End Try
         End Sub

         Sub Button_Click(sender As [Object], e As EventArgs)
            Try
               CheckNumber()
               label1.Text = "The integer Value you entered is: " & textbox1.Text

            Catch exp As HttpException
               ' Display the Exception thrown.
               label1.ForeColor = Color.Red
               label1.Text = "An HttpException was raised: " & exp.Message

               Dim myInnerException As Exception = exp.InnerException

               ' Display the inner exception.
               label2.Text = "InnerException is : " & myInnerException.GetType().ToString()

            End Try
         End Sub

         Sub page_load(sender As [Object], e As EventArgs)
            label1.Text = ""
            label2.Text = ""
         End Sub
      </script>
   </head>

   <body>
      <center>
         <h3>Example for HttpException</h3>
         <form id="WebForm9" method="post" runat="server">
            <b>Enter the value in the text box.</b>
            <asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
            <br />
            <asp:Button Text="Click Here" OnClick="Button_Click" Runat="server" ID="Button1"></asp:Button>
            <br />
            <b>
            <asp:Label Runat="server" ID="label1"></asp:Label>
            <br />
            <asp:Label Runat="server" ID="label2"></asp:Label>
            </b>
         </form>
      </center>
   </body>
</html>

<%@ Import Namespace="System.Drawing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>Example for HttpException</title>
<script language="C#" runat="server">
         void CheckNumber()
         {
            try
            {
               // Check whether the value is an integer.
               String convertInt = textbox1.Text;
               Convert.ToInt32(convertInt);
            }
            catch(Exception ex)
            {
               // Throw an HttpException object that contains the HTTP error code,
               // message, and inner exception.
               throw new HttpException(500, "The entered value is not an integer.", ex);
            }
         }

         void Button_Click(Object sender, EventArgs e)
         {
            try
            {
               CheckNumber();
               label1.Text = "The integer value you entered is: " + textbox1.Text;
            }
            catch(HttpException exp)
            {
               // Display the exception thrown.
               label1.ForeColor = Color.Red;
               label1.Text = "An HttpException was raised!: " + exp.Message;
               Exception myInnerException = exp.InnerException;

               // Display the inner exception.
               label2.Text = "The InnerException is : " + myInnerException.GetType();

            }
         }

         void page_load(Object sender,EventArgs e)
         {
           label1.Text="";
           label2.Text="";
         }

      </script>
   </head>

   <body>
      <center>
         <h3>Example for HttpException</h3>
         <form id="WebForm9" method="post" runat="server">
            <b>Enter the value in the text box </b>
            <br />
            <asp:TextBox Runat="server" ID="textbox1"></asp:TextBox>
            <br />
            <asp:Button Text="Click Here" OnClick="Button_Click" Runat="server" ID="Button1"></asp:Button>
            <br />
            <b>
               <asp:Label Runat="server" ID="label1"></asp:Label>
               <br />
               <asp:Label Runat="server" ID="label2"></asp:Label>
            </b>
         </form>
      </center>
   </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException

其他资源

脚本侵入概述


HttpException 构造函数 (Int32, String, Int32)

HttpException 构造函数 (Int32, String, Int32)
HttpException 类

使用 HTTP 响应状态代码、错误消息和异常代码初始化 HttpException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpCode As Integer, _
    message As String, _
    hr As Integer _
)
public HttpException(
    int httpCode,
    string message,
    int hr
)
public:
HttpException(
    int httpCode,
    String^ message,
    int hr
)
new :
        httpCode:int *
        message:string *
        hr:int -> HttpException

参数

httpCode
类型： System Int32
在客户端上显示的 HTTP 响应状态代码。
message
类型： System String
当发生异常时向客户端显示的错误消息。
hr
类型： System Int32
定义错误的异常代码。

下面的代码示例演示了 HttpException 类的 HttpException 构造函数。用户名和电子邮件信息由用户在所提供的文本框中输入。如果其中任何一个文本框留空，则创建并引发一个 HttpException 对象。HttpException 的错误代码由 GetHttpCode 方法获得并显示在网页上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。用户名和电子邮件信息由用户在所提供的文本框中输入。如果其中任何一个文本框留空，则创建并引发一个 HttpException 对象。HttpException 的错误代码由 GetHttpCode 方法获得并显示在网页上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。用户名和电子邮件信息由用户在所提供的文本框中输入。如果其中任何一个文本框留空，则创建并引发一个 HttpException 对象。HttpException 的错误代码由 GetHttpCode 方法获得并显示在网页上。 下面的代码示例演示了 HttpException 类的 HttpException 构造函数。用户名和电子邮件信息由用户在所提供的文本框中输入。如果其中任何一个文本框留空，则创建并引发一个 HttpException 对象。HttpException 的错误代码由 GetHttpCode 方法获得并显示在网页上。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>HttpException Example</title>
<script language="VB" runat="server">
         Sub SubmitButton_Click(sender As Object, e As EventArgs)
            Try
               If Textbox1.Text.Length = 0 Or Textbox2.Text.Length = 0 Then
                  ' Raise an Exception if the username or emailid field is empty.
                  Throw New HttpException(901, "User name or e-mail ID not provided", 333)
               Else
                  MyLabel.Text = "Hello " & Textbox1.Text & "<br />"
                  MyLabel.Text += "The Weekly newsletter is mailed to :" & Textbox2.Text & "<br />"
               End If
            Catch ex As HttpException
               ' Display the error code returned by the GetHttpCode method.
            MyLabel.Text = "<h4><font color=""red"">The exception is " & ex.GetHttpCode() & _
               " - " & ex.Message & "</font></h4>"
            End Try
         End Sub

         Sub Page_Load(sender As Object, e As EventArgs)
            MyLabel.Text = ""
         End Sub
      </script>
   </head>

   <body>
      <form runat="server" id="Form1">
         <h3>HttpException Example</h3>
         Enter User name and E-mail
         <br /><br />
         User Name:
         <asp:TextBox ID="Textbox1" Runat="server"></asp:TextBox>
         <br />
         E-mail ID:
         <asp:TextBox ID="Textbox2" Runat="server"></asp:TextBox>
         <asp:Button ID="Button1" Text="Submit" OnClick="SubmitButton_Click" runat="server"/>
         <br />
         <asp:label id="MyLabel" runat="server"/>
      </form>
   </body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <head>
    <title>HttpException Example</title>
<script language="C#" runat="server">
         void SubmitButton_Click(Object sender, EventArgs e)
         {
            try
            {
               if(Textbox1.Text.Length==0 || Textbox2.Text.Length==0)
               {
                  // Raise an Exception if the username or the emailfield field is empty.
                  throw new HttpException(901,"User name or e-mail ID not provided.",333);
               }
               else
               {
                  MyLabel.Text="Hello "+Textbox1.Text+"<br />";
                  MyLabel.Text+="The Weekly newsletter is mailed to :"+
                           Textbox2.Text+"<br />";
               }
            }
            catch(HttpException ex)
            {
               // Display the error code returned by the GetHttpCode method.
               MyLabel.Text="<h4><font color=\"red\">The exception is "+
                  ex.GetHttpCode() +" - "+ ex.Message + "</font></h4>";
            }
         }

         void Page_Load(object sender,EventArgs e)
         {
            MyLabel.Text="";
         }
      </script>
   </head>

   <body>
      <form runat="server" id="Form1">
         <h3>HttpException Example</h3>
         Enter UserName and Email
         <br /><br />
         UserName :
         <asp:TextBox ID="Textbox1" Runat="server"></asp:TextBox>
         <br />
         E-mail ID :
         <asp:TextBox ID="Textbox2" Runat="server"></asp:TextBox>
         <asp:Button ID="Button1" Text="Submit" OnClick="SubmitButton_Click" runat="server" />
         <br />
         <asp:label id="MyLabel" runat="server" />
      </form>
   </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
HttpException 重载
System.Web 命名空间
InnerException

其他资源

脚本侵入概述


HttpException 方法

HttpException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpException 类

HttpException 类型公开以下成员。

名称 说明
页首

参考

HttpException 类
System.Web 命名空间


HttpException ..::.CreateFromLastError 方法

HttpException
.
.
::
.
CreateFromLastError 方法
HttpException 类

基于从 Win32 API GetLastError() 方法返回的错误代码创建一个新的 HttpException 异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function CreateFromLastError ( _
    message As String _
) As HttpException
public static HttpException CreateFromLastError(
    string message
)
public:
static HttpException^ CreateFromLastError(
    String^ message
)
static member CreateFromLastError :
        message:string -> HttpException

参数

message
类型： System String
当发生异常时向客户端显示的错误消息。

返回值

类型： System.Web HttpException
一个 HttpException，它基于从对 Win32 API GetLastError() 方法的调用返回的错误代码。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
System.Web 命名空间
InnerException


HttpException ..::.GetHtmlErrorMessage 方法

HttpException
.
.
::
.
GetHtmlErrorMessage 方法
HttpException 类

获取要返回给客户端的 HTML 错误消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetHtmlErrorMessage As String
public string GetHtmlErrorMessage()
public:
String^ GetHtmlErrorMessage()
member GetHtmlErrorMessage : unit -> string

返回值

类型： System String
HTML 错误消息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
System.Web 命名空间
InnerException


HttpException ..::.GetHttpCode 方法

HttpException
.
.
::
.
GetHttpCode 方法
HttpException 类

获取要返回给客户端的 HTTP 响应状态代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetHttpCode As Integer
public int GetHttpCode()
public:
int GetHttpCode()
member GetHttpCode : unit -> int

返回值

类型： System Int32
表示异常或 InnerException 代码的非零 HTTP 代码；否则为 HTTP 响应状态代码 500。

如果存在非零 HTTP 代码，则将其返回。否则，返回 InnerException 代码。如果既没有 InnerException 代码也没有非零 HTTP 代码，则返回 HTTP 响应状态代码 500。有关 HTTP 响应状态代码的更多信息，请参见万维网联合会 (W3C) 网站上的“Status Code Definitions of the Hypertext Transfer Protocol - HTTP/1.1”（超文本传输协议的状态代码定义 -- HTTP/1.1）。 如果存在非零 HTTP 代码，则将其返回。否则，返回 InnerException 代码。如果既没有 InnerException 代码也没有非零 HTTP 代码，则返回 HTTP 响应状态代码 500。有关 HTTP 响应状态代码的更多信息，请参见万维网联合会 (W3C) 网站上的“Status Code Definitions of the Hypertext Transfer Protocol - HTTP/1.1”（超文本传输协议的状态代码定义 -- HTTP/1.1）。 如果存在非零 HTTP 代码，则将其返回。否则，返回 InnerException 代码。如果既没有 InnerException 代码也没有非零 HTTP 代码，则返回 HTTP 响应状态代码 500。有关 HTTP 响应状态代码的更多信息，请参见万维网联合会 (W3C) 网站上的“Status Code Definitions of the Hypertext Transfer Protocol - HTTP/1.1”（超文本传输协议的状态代码定义 -- HTTP/1.1）。 如果存在非零 HTTP 代码，则将其返回。否则，返回 InnerException 代码。如果既没有 InnerException 代码也没有非零 HTTP 代码，则返回 HTTP 响应状态代码 500。有关 HTTP 响应状态代码的更多信息，请参见万维网联合会 (W3C) 网站上的“Status Code Definitions of the Hypertext Transfer Protocol - HTTP/1.1”（超文本传输协议的状态代码定义 -- HTTP/1.1）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpException 类
HttpException 成员
System.Web 命名空间
InnerException


HttpException ..::.GetObjectData 方法

HttpException
.
.
::
.
GetObjectData 方法
HttpException 类

获取关于异常的信息并将其添加到 SerializationInfo 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

实现

GetObjectData 方法将关于异常的信息添加到要序列化的 SerializationInfo 对象。反序列化期间，从通过流传输的 SerializationInfo 重建异常。 GetObjectData 方法将关于异常的信息添加到要序列化的 SerializationInfo 对象。反序列化期间，从通过流传输的 SerializationInfo 重建异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpException 类
HttpException 成员
System.Web 命名空间
SerializationInfo
StreamingContext

其他资源

XML and SOAP Serialization


HttpException 属性

HttpException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpException 类

HttpException 类型公开以下成员。

名称 说明
页首

参考

HttpException 类
System.Web 命名空间


HttpException ..::.WebEventCode 属性

HttpException
.
.
::
.
WebEventCode 属性
HttpException 类

获取与 HTTP 异常相关联的事件代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property WebEventCode As Integer
    Get
    Friend Set
public int WebEventCode { get; internal set; }
public:
property int WebEventCode {
    int get ();
    internal: void set (int value);
}
member WebEventCode : int with get, internal set

属性值

类型： System Int32
一个表示 Web 事件代码的整数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpException 类
HttpException 成员
System.Web 命名空间


HttpException 事件

HttpException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpException 类

HttpException 类型公开以下成员。

名称 说明
页首

参考

HttpException 类
System.Web 命名空间


HttpFileCollection 类

HttpFileCollection 类
成员

提供对客户端上载文件的访问，并组织这些文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpFileCollection _
    Inherits NameObjectCollectionBase
public sealed class HttpFileCollection : NameObjectCollectionBase
public ref class HttpFileCollection sealed : public NameObjectCollectionBase
[<SealedAttribute>]
type HttpFileCollection =
    class
        inherit NameObjectCollectionBase
    end

客户端使用 HTTP Content-Type 头为 multipart/form-data 的多部分 MIME 格式，在内容体中对文件进行编码和传输。ASP.NET 将编码后的文件从内容体提取到 HttpFileCollection 的各成员中。HttpPostedFile 类的方法和属性提供对每个文件的内容和属性的访问。 客户端使用 HTTP Content-Type 头为 multipart/form-data 的多部分 MIME 格式，在内容体中对文件进行编码和传输。ASP.NET 将编码后的文件从内容体提取到 HttpFileCollection 的各成员中。HttpPostedFile 类的方法和属性提供对每个文件的内容和属性的访问。 客户端使用 HTTP Content-Type 头为 multipart/form-data 的多部分 MIME 格式，在内容体中对文件进行编码和传输。ASP.NET 将编码后的文件从内容体提取到 HttpFileCollection 的各成员中。HttpPostedFile 类的方法和属性提供对每个文件的内容和属性的访问。

下面的示例演示如何访问从 HttpRequest 对象的 Files 属性返回的 HttpFileCollection 集合。HttpFileCollection 集合由网页上的两个 FileUpload 控件填充。文件集合中的项显示在 BulletedList 控件中。 下面的示例演示如何访问从 HttpRequest 对象的 Files 属性返回的 HttpFileCollection 集合。HttpFileCollection 集合由网页上的两个 FileUpload 控件填充。文件集合中的项显示在 BulletedList 控件中。 下面的示例演示如何访问从 HttpRequest 对象的 Files 属性返回的 HttpFileCollection 集合。HttpFileCollection 集合由网页上的两个 FileUpload 控件填充。文件集合中的项显示在 BulletedList 控件中。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        ' Clear the BulletedList.
        BulletedList1.Items.Clear()

        ' Check to see if at least one file was specified.
        If (FileUpload1.HasFile Or FileUpload2.HasFile) Then

            Label1.Text = "The file collection consists of:"

            ' Get the HttpFileCollection.
            Dim hfc As HttpFileCollection = Request.Files
            For Each h As String In hfc.AllKeys

                ' Add an item to the BulletedList if a file
                ' was specified for the corresponding control.
                If (hfc(h).ContentLength > 0) Then
                    BulletedList1.Items.Add(Server.HtmlEncode(hfc(h).FileName))
                End If
            Next
        Else

            Label1.Text = "You did not specify any files to upload or " & _
                "the file(s) could not be found."

        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>HttpFileCollection Example</title>
</head>
<body>
    <form id="form1"
          runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1"
                        runat="server" />
        <br />
        <asp:FileUpload ID="FileUpload2"
                        runat="server" />
        <br />
        <asp:Button ID="Button1"
                    runat="server"
                    OnClick="Button1_Click"
                    Text="Upload" />
        <br />
        <asp:Label ID="Label1"
                   runat="server"/>
        <br />
        <asp:BulletedList ID="BulletedList1"
                          runat="server">
        </asp:BulletedList>
        </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Button1_Click(object sender, EventArgs e)
    {
        // Clear the BulletedList.
        BulletedList1.Items.Clear();

        // Check to see if at least one file was specified.
        if (FileUpload1.HasFile | FileUpload2.HasFile)
        {
            Label1.Text = "The file collection consists of:";

            // Get the HttpFileCollection.
            HttpFileCollection hfc = Request.Files;
            foreach (String h in hfc.AllKeys)
            {
                // Add an item to the BulletedList if a file
                // was specified for the corresponding control.
                if (hfc[h].ContentLength > 0)
                    BulletedList1.Items.Add(Server.HtmlEncode(hfc[h].FileName));
            }

        }
        else
        {
            Label1.Text = "You did not specify any files to upload or " +
                "the file(s) could not be found.";
        }

    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpFileCollection Example</title>
</head>
<body>
    <form id="form1"
          runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1"
                        runat="server" />
        <br />
        <asp:FileUpload ID="FileUpload2"
                        runat="server" />
        <br />
        <asp:Button ID="Button1"
                    runat="server"
                    OnClick="Button1_Click"
                    Text="Upload" />
        <br />
        <asp:Label ID="Label1"
                   runat="server"/>
        <br />
        <asp:BulletedList ID="BulletedList1"
                          runat="server">
        </asp:BulletedList>
        </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpFileCollectionHttpFileCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 成员
System.Web 命名空间
HttpPostedFile
HtmlInputFile


HttpFileCollection 成员

HttpFileCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

提供对客户端上载文件的访问，并组织这些文件。

HttpFileCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpFileCollection 类
System.Web 命名空间


HttpFileCollection 方法

HttpFileCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

HttpFileCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpFileCollection 类
System.Web 命名空间


HttpFileCollection ..::.BaseGet 方法

HttpFileCollection
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间


HttpFileCollection ..::.BaseGetAllValues 方法

HttpFileCollection
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间


HttpFileCollection ..::.BaseSet 方法

HttpFileCollection
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间


HttpFileCollection ..::.CopyTo 方法

HttpFileCollection
.
.
::
.
CopyTo 方法
HttpFileCollection 类

从指定的数组索引处开始，将文件集合的成员复制到 Array 中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub CopyTo ( _
    dest As Array, _
    index As Integer _
)
public void CopyTo(
    Array dest,
    int index
)
public:
void CopyTo(
    Array^ dest,
    int index
)
member CopyTo :
        dest:Array *
        index:int -> unit

参数

dest
类型： System Array
目标 Array。
index
类型： System Int32
目标数组的索引，从此处开始复制。

下面的示例将整个文件集合复制到一个新的 Array 对象中。

' Create the one-dimensional target array.
 ' Dimension it large enough to hold the files collection.
 Dim MyArray As Array = Array.CreateInstance(GetType(String), Request.Files.Count)

 ' Copy the entire collection to the array.
 Request.Files.CopyTo(MyArray, 0)

// Create the one-dimensional target array.
 // Dimension it large enough to hold the files collection.
 Array MyArray = Array.CreateInstance( typeof(String), Request.Files.Count );

 // Copy the entire collection to the array.
 Request.Files.CopyTo( MyArray, 0 );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间
Array


HttpFileCollection ..::.Get 方法

HttpFileCollection
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

从文件集合中返回一个单独的 HttpPostedFile 对象。重载此属性以允许按名称或数字索引来检索对象。 从文件集合中返回一个单独的 HttpPostedFile 对象。重载此属性以允许按名称或数字索引来检索对象。

名称 说明
页首

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间


HttpFileCollection ..::.Get 方法 (Int32)

HttpFileCollection
.
.
::
.
Get 方法 (Int32)
HttpFileCollection 类

从文件集合中返回具有指定数字索引的 HttpPostedFile 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    index As Integer _
) As HttpPostedFile
public HttpPostedFile Get(
    int index
)
public:
HttpPostedFile^ Get(
    int index
)
member Get :
        index:int -> HttpPostedFile

参数

index
类型： System Int32
要从文件集合中返回的对象的索引。

返回值

类型： System.Web HttpPostedFile
一个 HttpPostedFile 对象。

下面的示例从客户端发送的集合中检索第一个文件对象（索引为 0），并检索此对象所表示的文件的名称。

Dim MyFileColl As HttpFileCollection = Request.Files
 Dim MyPostedMember As HttpPostedFile = MyFileColl.Get(0)
 Dim MyFileName As String = MyPostedMember.FileName

HttpFileCollection MyFileColl = Request.Files;
 HttpPostedFile MyPostedMember = MyFileColl.Get(0);
 String MyFileName = MyPostedMember.FileName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
Get 重载
System.Web 命名空间
Item


HttpFileCollection ..::.Get 方法 (String)

HttpFileCollection
.
.
::
.
Get 方法 (String)
HttpFileCollection 类

从文件集合中返回具有指定名称的 HttpPostedFile 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    name As String _
) As HttpPostedFile
public HttpPostedFile Get(
    string name
)
public:
HttpPostedFile^ Get(
    String^ name
)
member Get :
        name:string -> HttpPostedFile

参数

name
类型： System String
要从文件集合中返回的对象的名称。

返回值

类型： System.Web HttpPostedFile
HttpPostedFile 对象。

下面的示例从客户端发送的集合中检索名为“CustInfo”的文件对象，并检索此对象所表示的实际文件名。

Dim MyFileColl As HttpFileCollection = Request.Files
 Dim MyPostedMember As HttpPostedFile = MyFileColl.Get("CustInfo")
 Dim MyFileName As String = MyPostedMember.FileName

HttpFileCollection MyFileColl = Request.Files;
 HttpPostedFile MyPostedMember = MyFileColl.Get("CustInfo");
 String MyFileName = MyPostedMember.FileName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
Get 重载
System.Web 命名空间
Item


HttpFileCollection ..::.GetKey 方法

HttpFileCollection
.
.
::
.
GetKey 方法
HttpFileCollection 类

返回具有指定数字索引的 HttpFileCollection 成员名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetKey ( _
    index As Integer _
) As String
public string GetKey(
    int index
)
public:
String^ GetKey(
    int index
)
member GetKey :
        index:int -> string

参数

index
类型： System Int32
要返回的对象名索引。

返回值

类型： System String
按 index 指定的 HttpFileCollection 成员的名称。

下面的示例在文件集合中依次查找，若找到名为“CustInfo”的文件集合成员，则执行操作。

Dim loop1 As Integer
 Dim MyFileColl As HttpFileCollection = Request.Files

 For loop1 = 0 To MyFileColl.Count - 1
    If MyFileColl.GetKey(loop1) = "CustInfo" Then
       '...
    End If
 Next loop1

int loop1;
 HttpFileCollection MyFileColl = Request.Files;

 for( loop1 = 0; loop1 < MyFileColl.Count; loop1++)
 {
    if( MyFileColl.GetKey(loop1) == "CustInfo")
    {
       //...
    }
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间


HttpFileCollection 属性

HttpFileCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

HttpFileCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpFileCollection 类
System.Web 命名空间


HttpFileCollection ..::.AllKeys 属性

HttpFileCollection
.
.
::
.
AllKeys 属性
HttpFileCollection 类

获取一个字符串数组，该数组包含文件集合中所有成员的键（名称）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AllKeys As String()
    Get
public string[] AllKeys { get; }
public:
property array<String^>^ AllKeys {
    array<String^>^ get ();
}
member AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

文件名的数组。

下面的示例加载从客户端传输到字符串数组中的 HttpFileCollection 名称。

Dim MyNameArray() As String = Request.Files.AllKeys

String[] MyNameArray = Request.Files.AllKeys;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间
GetKey


HttpFileCollection ..::.Item 属性

HttpFileCollection
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollection 类

从文件集合中获取单个 HttpPostedFile 对象。重载此属性以允许按名称或数字索引来检索对象。 从文件集合中获取单个 HttpPostedFile 对象。重载此属性以允许按名称或数字索引来检索对象。

名称 说明
页首

参考

HttpFileCollection 类
HttpFileCollection 成员
System.Web 命名空间


HttpFileCollection ..::.Item 属性 (Int32)

HttpFileCollection
.
.
::
.
Item 属性 (Int32)
HttpFileCollection 类

从 HttpFileCollection 中获取具有指定数字索引的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    index As Integer _
) As HttpPostedFile
    Get
public HttpPostedFile this[
    int index
] { get; }
public:
property HttpPostedFile^ Item[int index] {
    HttpPostedFile^ get (int index);
}
member Item : HttpPostedFile

参数

index
类型： System Int32
要从文件集合中获取的项索引。

属性值

类型： System.Web HttpPostedFile
按 index 指定的 HttpPostedFile。

下面的示例从客户端发送的集合中检索第一个文件对象（索引为 0），并检索此对象所表示的实际文件名。

Dim MyPostedMember As HttpPostedFile = Request.Files(0)
 Dim MyFileName As String = MyPostedMember.FileName

HttpPostedFile MyPostedMember = Request.Files[0];
 String MyFileName = MyPostedMember.FileName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
Item 重载
System.Web 命名空间
Get


HttpFileCollection ..::.Item 属性 (String)

HttpFileCollection
.
.
::
.
Item 属性 (String)
HttpFileCollection 类

从文件集合中获取具有指定名称的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    name As String _
) As HttpPostedFile
    Get
public HttpPostedFile this[
    string name
] { get; }
public:
property HttpPostedFile^ Item[String^ name] {
    HttpPostedFile^ get (String^ name);
}
member Item : HttpPostedFile

参数

name
类型： System String
要返回的项名称。

属性值

类型： System.Web HttpPostedFile
按 name 指定的 HttpPostedFile。

下面的示例从客户端发送的集合中检索名为“CustInfo”的文件对象，并检索此对象所表示的实际文件名。

Dim MyPostedMember As HttpPostedFile = Request.Files("CustInfo")
 Dim MyFileName As String = MyPostedMember.FileName

HttpPostedFile MyPostedMember = Request.Files["CustInfo"];
 String MyFileName = MyPostedMember.FileName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpFileCollection 类
HttpFileCollection 成员
Item 重载
System.Web 命名空间
Get


HttpFileCollectionBase 类

HttpFileCollectionBase 类
成员

用作一些类的基类，这些类提供对客户端已上载的文件的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpFileCollectionBase _
    Inherits NameObjectCollectionBase _
    Implements ICollection, IEnumerable
public abstract class HttpFileCollectionBase : NameObjectCollectionBase,
    ICollection, IEnumerable
public ref class HttpFileCollectionBase abstract : public NameObjectCollectionBase,
    ICollection, IEnumerable
[<AbstractClassAttribute>]
type HttpFileCollectionBase =
    class
        inherit NameObjectCollectionBase
        interface ICollection
        interface IEnumerable
    end

HttpFileCollectionBase 类为抽象类，其中包含与 HttpFileCollection 类相同的成员。使用 HttpFileCollectionBase 类可以创建与 HttpFileCollection 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员，以实现正在测试的方案。 HttpFileCollectionBase 类为抽象类，其中包含与 HttpFileCollection 类相同的成员。使用 HttpFileCollectionBase 类可以创建与 HttpFileCollection 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员，以实现正在测试的方案。 HttpFileCollectionBase 类为抽象类，其中包含与 HttpFileCollection 类相同的成员。使用 HttpFileCollectionBase 类可以创建与 HttpFileCollection 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员，以实现正在测试的方案。

HttpFileCollectionWrapper 类是从 HttpFileCollectionBase 类派生的。HttpFileCollectionWrapper 类用作 HttpFileCollection 类的包装。在运行时，通常使用 HttpFileCollectionWrapper 类的实例调用 HttpFileCollection 对象的成员。 HttpFileCollectionWrapper 类是从 HttpFileCollectionBase 类派生的。HttpFileCollectionWrapper 类用作 HttpFileCollection 类的包装。在运行时，通常使用 HttpFileCollectionWrapper 类的实例调用 HttpFileCollection 对象的成员。 HttpFileCollectionWrapper 类是从 HttpFileCollectionBase 类派生的。HttpFileCollectionWrapper 类用作 HttpFileCollection 类的包装。在运行时，通常使用 HttpFileCollectionWrapper 类的实例调用 HttpFileCollection 对象的成员。

System.Web System.Web..::.HttpFileCollectionBaseHttpFileCollectionBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase 成员

HttpFileCollectionBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

用作一些类的基类，这些类提供对客户端已上载的文件的访问。

HttpFileCollectionBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpFileCollectionBase 类
System.Web 命名空间


HttpFileCollectionBase 构造函数

HttpFileCollectionBase 构造函数
HttpFileCollectionBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpFileCollectionBase()
protected:
HttpFileCollectionBase()
new : unit -> HttpFileCollectionBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase 方法

HttpFileCollectionBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

HttpFileCollectionBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpFileCollectionBase 类
System.Web 命名空间


HttpFileCollectionBase ..::.BaseGet 方法

HttpFileCollectionBase
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.BaseGetAllValues 方法

HttpFileCollectionBase
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.BaseSet 方法

HttpFileCollectionBase
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.CopyTo 方法

HttpFileCollectionBase
.
.
::
.
CopyTo 方法
HttpFileCollectionBase 类

当在派生类中重写时，从数组中的指定索引位置开始，将集合中的元素复制到该数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub CopyTo ( _
    dest As Array, _
    index As Integer _
)
public virtual void CopyTo(
    Array dest,
    int index
)
public:
virtual void CopyTo(
    Array^ dest,
    int index
)
abstract CopyTo :
        dest:Array *
        index:int -> unit
override CopyTo :
        dest:Array *
        index:int -> unit

参数

dest
类型： System Array
作为集合中元素的复制目标位置的一维数组。该数组必须具有从零开始的索引。 作为集合中元素的复制目标位置的一维数组。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中开始复制位置的从零开始的索引。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.Get 方法

HttpFileCollectionBase
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

当在派生类中重写时，按名称或索引返回集合中的已发布文件对象。

名称 说明
页首

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.Get 方法 (Int32)

HttpFileCollectionBase
.
.
::
.
Get 方法 (Int32)
HttpFileCollectionBase 类

当在派生类中重写时，返回指定索引处的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Get ( _
    index As Integer _
) As HttpPostedFileBase
public virtual HttpPostedFileBase Get(
    int index
)
public:
virtual HttpPostedFileBase^ Get(
    int index
)
abstract Get :
        index:int -> HttpPostedFileBase
override Get :
        index:int -> HttpPostedFileBase

参数

index
类型： System Int32
要返回的对象的索引。

返回值

类型： System.Web HttpPostedFileBase
index 指定的已发布文件对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
Get 重载
System.Web 命名空间


HttpFileCollectionBase ..::.Get 方法 (String)

HttpFileCollectionBase
.
.
::
.
Get 方法 (String)
HttpFileCollectionBase 类

当在派生类中重写时，返回集合中具有指定名称的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Get ( _
    name As String _
) As HttpPostedFileBase
public virtual HttpPostedFileBase Get(
    string name
)
public:
virtual HttpPostedFileBase^ Get(
    String^ name
)
abstract Get :
        name:string -> HttpPostedFileBase
override Get :
        name:string -> HttpPostedFileBase

参数

name
类型： System String
要返回的对象的名称。

返回值

类型： System.Web HttpPostedFileBase
name 指定的已发布文件对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
Get 重载
System.Web 命名空间


HttpFileCollectionBase ..::.GetEnumerator 方法

HttpFileCollectionBase
.
.
::
.
GetEnumerator 方法
HttpFileCollectionBase 类

当在派生类中重写时，返回可用于循环访问集合的枚举数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个可用于循环访问集合的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.GetKey 方法

HttpFileCollectionBase
.
.
::
.
GetKey 方法
HttpFileCollectionBase 类

当在派生类中重写时，返回指定索引处的已发布文件对象的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetKey ( _
    index As Integer _
) As String
public virtual string GetKey(
    int index
)
public:
virtual String^ GetKey(
    int index
)
abstract GetKey :
        index:int -> string
override GetKey :
        index:int -> string

参数

index
类型： System Int32
要返回的对象名称的索引。

返回值

类型： System String
index 指定的已发布文件对象的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase 属性

HttpFileCollectionBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

HttpFileCollectionBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpFileCollectionBase 类
System.Web 命名空间


HttpFileCollectionBase ..::.AllKeys 属性

HttpFileCollectionBase
.
.
::
.
AllKeys 属性
HttpFileCollectionBase 类

当在派生类中重写时，获取一个数组，该数组包含集合中所有已发布文件对象的键（名称）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AllKeys As String()
    Get
public virtual string[] AllKeys { get; }
public:
virtual property array<String^>^ AllKeys {
    array<String^>^ get ();
}
abstract AllKeys : string[]
override AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

文件名的数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.Count 属性

HttpFileCollectionBase
.
.
::
.
Count 属性
HttpFileCollectionBase 类

当在派生类中重写时，获取集合中已发布文件对象的数目。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.IsSynchronized 属性

HttpFileCollectionBase
.
.
::
.
IsSynchronized 属性
HttpFileCollectionBase 类

当在派生类中重写时，获取一个值，该值指示对集合的访问是否是线程安全的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsSynchronized As Boolean
    Get
public virtual bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get ();
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果访问是同步的（线程安全），则为 true；否则为 false。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.Item 属性

HttpFileCollectionBase
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionBase 类

当在派生类中重写时，按名称或索引获取文件集合中的已发布文件对象。

名称 说明
页首

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionBase ..::.Item 属性 (Int32)

HttpFileCollectionBase
.
.
::
.
Item 属性 (Int32)
HttpFileCollectionBase 类

当在派生类中重写时，获取指定索引处的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Item ( _
    index As Integer _
) As HttpPostedFileBase
    Get
public virtual HttpPostedFileBase this[
    int index
] { get; }
public:
virtual property HttpPostedFileBase^ Item[int index] {
    HttpPostedFileBase^ get (int index);
}
abstract Item : HttpPostedFileBase
override Item : HttpPostedFileBase

参数

index
类型： System Int32
要获取的对象的索引。

属性值

类型： System.Web HttpPostedFileBase
index 指定的已发布文件对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
Item 重载
System.Web 命名空间


HttpFileCollectionBase ..::.Item 属性 (String)

HttpFileCollectionBase
.
.
::
.
Item 属性 (String)
HttpFileCollectionBase 类

当在派生类中重写时，获取集合中具有指定名称的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Item ( _
    name As String _
) As HttpPostedFileBase
    Get
public virtual HttpPostedFileBase this[
    string name
] { get; }
public:
virtual property HttpPostedFileBase^ Item[String^ name] {
    HttpPostedFileBase^ get (String^ name);
}
abstract Item : HttpPostedFileBase
override Item : HttpPostedFileBase

参数

name
类型： System String
要返回的对象的名称。

属性值

类型： System.Web HttpPostedFileBase
name 指定的已发布文件对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
Item 重载
System.Web 命名空间


HttpFileCollectionBase ..::.SyncRoot 属性

HttpFileCollectionBase
.
.
::
.
SyncRoot 属性
HttpFileCollectionBase 类

当在派生类中重写时，获取一个对象，该对象可用于同步对集合的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SyncRoot As Object
    Get
public virtual Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get ();
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionBase 类
HttpFileCollectionBase 成员
System.Web 命名空间


HttpFileCollectionWrapper 类

HttpFileCollectionWrapper 类
成员

封装 HTTP 内部对象，该对象提供对客户端已上载的文件的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpFileCollectionWrapper _
    Inherits HttpFileCollectionBase
public class HttpFileCollectionWrapper : HttpFileCollectionBase
public ref class HttpFileCollectionWrapper : public HttpFileCollectionBase
type HttpFileCollectionWrapper =
    class
        inherit HttpFileCollectionBase
    end

HttpFileCollectionWrapper 类从 HttpFileCollectionBase 类派生，并用作 HttpFileCollection 类的包装。此类公开 HttpFileCollection 类的功能，同时还公开 HttpFileCollectionBase 类型。使用 HttpFileCollectionBase 类，可以将应用程序中 HttpFileCollection 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpFileCollectionWrapper 类从 HttpFileCollectionBase 类派生，并用作 HttpFileCollection 类的包装。此类公开 HttpFileCollection 类的功能，同时还公开 HttpFileCollectionBase 类型。使用 HttpFileCollectionBase 类，可以将应用程序中 HttpFileCollection 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpFileCollectionWrapper 类从 HttpFileCollectionBase 类派生，并用作 HttpFileCollection 类的包装。此类公开 HttpFileCollection 类的功能，同时还公开 HttpFileCollectionBase 类型。使用 HttpFileCollectionBase 类，可以将应用程序中 HttpFileCollection 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpFileCollectionWrapperHttpFileCollectionWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper 成员

HttpFileCollectionWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

封装 HTTP 内部对象，该对象提供对客户端已上载的文件的访问。

HttpFileCollectionWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpFileCollectionWrapper 类
System.Web 命名空间


HttpFileCollectionWrapper 构造函数

HttpFileCollectionWrapper 构造函数
HttpFileCollectionWrapper 类

初始化 HttpFileCollectionWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpFileCollection As HttpFileCollection _
)
public HttpFileCollectionWrapper(
    HttpFileCollection httpFileCollection
)
public:
HttpFileCollectionWrapper(
    HttpFileCollection^ httpFileCollection
)
new :
        httpFileCollection:HttpFileCollection -> HttpFileCollectionWrapper

参数

httpFileCollection
类型： System.Web HttpFileCollection
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpApplicationState 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper 方法

HttpFileCollectionWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

HttpFileCollectionWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpFileCollectionWrapper 类
System.Web 命名空间


HttpFileCollectionWrapper ..::.BaseGet 方法

HttpFileCollectionWrapper
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.BaseGetAllValues 方法

HttpFileCollectionWrapper
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.BaseSet 方法

HttpFileCollectionWrapper
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.CopyTo 方法

HttpFileCollectionWrapper
.
.
::
.
CopyTo 方法
HttpFileCollectionWrapper 类

从数组中指定的索引位置开始，将集合中的元素复制到该数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub CopyTo ( _
    dest As Array, _
    index As Integer _
)
public override void CopyTo(
    Array dest,
    int index
)
public:
virtual void CopyTo(
    Array^ dest,
    int index
) override
abstract CopyTo :
        dest:Array *
        index:int -> unit
override CopyTo :
        dest:Array *
        index:int -> unit

参数

dest
类型： System Array
作为集合中元素的复制目标位置的一维数组。该数组必须具有从零开始的索引。 作为集合中元素的复制目标位置的一维数组。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中开始复制位置的从零开始的索引。

实现

异常 | 条件
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零。
ArgumentException | array 是多维数组。 - 或 - 源 HttpFileCollectionWrapper 对象中的元素数目大于从 index 到目标数组末尾之间的可用空间。
InvalidCastException | 无法自动将源 HttpFileCollectionWrapper 对象的类型强制转换为目标数组的类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.Get 方法

HttpFileCollectionWrapper
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

按名称或索引，返回集合中的已发布文件对象。

名称 说明
页首

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.Get 方法 (Int32)

HttpFileCollectionWrapper
.
.
::
.
Get 方法 (Int32)
HttpFileCollectionWrapper 类

返回指定索引处的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function Get ( _
    index As Integer _
) As HttpPostedFileBase
public override HttpPostedFileBase Get(
    int index
)
public:
virtual HttpPostedFileBase^ Get(
    int index
) override
abstract Get :
        index:int -> HttpPostedFileBase
override Get :
        index:int -> HttpPostedFileBase

参数

index
类型： System Int32
要返回的项的索引。

返回值

类型： System.Web HttpPostedFileBase
index 指定的已发布文件对象。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
Get 重载
System.Web 命名空间


HttpFileCollectionWrapper ..::.Get 方法 (String)

HttpFileCollectionWrapper
.
.
::
.
Get 方法 (String)
HttpFileCollectionWrapper 类

返回集合中具有指定名称的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function Get ( _
    name As String _
) As HttpPostedFileBase
public override HttpPostedFileBase Get(
    string name
)
public:
virtual HttpPostedFileBase^ Get(
    String^ name
) override
abstract Get :
        name:string -> HttpPostedFileBase
override Get :
        name:string -> HttpPostedFileBase

参数

name
类型： System String
要返回的对象的名称。

返回值

类型： System.Web HttpPostedFileBase
如果找到，则为 name 指定的已发布文件对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
Get 重载
System.Web 命名空间


HttpFileCollectionWrapper ..::.GetEnumerator 方法

HttpFileCollectionWrapper
.
.
::
.
GetEnumerator 方法
HttpFileCollectionWrapper 类

返回一个可用于循环访问集合的枚举数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个可用于循环访问集合的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.GetKey 方法

HttpFileCollectionWrapper
.
.
::
.
GetKey 方法
HttpFileCollectionWrapper 类

返回指定索引处的已发布文件对象的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetKey ( _
    index As Integer _
) As String
public override string GetKey(
    int index
)
public:
virtual String^ GetKey(
    int index
) override
abstract GetKey :
        index:int -> string
override GetKey :
        index:int -> string

参数

index
类型： System Int32
要返回的对象名称的索引。

返回值

类型： System String
index 指定的已发布文件对象的名称。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.GetObjectData 方法

HttpFileCollectionWrapper
.
.
::
.
GetObjectData 方法
HttpFileCollectionWrapper 类

返回序列化 HttpFileCollectionWrapper 对象所需的数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter := True)> _
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
[SecurityPermissionAttribute(SecurityAction::Demand, SerializationFormatter = true)]
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
序列化 HttpFileCollectionWrapper 对象所需的信息。
context
类型： System.Runtime.Serialization StreamingContext
与 HttpFileCollectionWrapper 对象关联的序列化流的源和目标。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.OnDeserialization 方法

HttpFileCollectionWrapper
.
.
::
.
OnDeserialization 方法
HttpFileCollectionWrapper 类

反序列化完成时引发反序列化事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub OnDeserialization ( _
    sender As Object _
)
public override void OnDeserialization(
    Object sender
)
public:
virtual void OnDeserialization(
    Object^ sender
) override
abstract OnDeserialization :
        sender:Object -> unit
override OnDeserialization :
        sender:Object -> unit

参数

sender
类型： System Object
反序列化事件源。

实现

异常 | 条件
SerializationException | 与当前 HttpFileCollectionWrapper 实例关联的 System.Runtime.Serialization..::.SerializationInfo 对象无效。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper 属性

HttpFileCollectionWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

HttpFileCollectionWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpFileCollectionWrapper 类
System.Web 命名空间


HttpFileCollectionWrapper ..::.AllKeys 属性

HttpFileCollectionWrapper
.
.
::
.
AllKeys 属性
HttpFileCollectionWrapper 类

获取一个数组，该数组包含集合中所有已发布文件对象的键（名称）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AllKeys As String()
    Get
public override string[] AllKeys { get; }
public:
virtual property array<String^>^ AllKeys {
    array<String^>^ get () override;
}
abstract AllKeys : string[]
override AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

文件名的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.Count 属性

HttpFileCollectionWrapper
.
.
::
.
Count 属性
HttpFileCollectionWrapper 类

获取集合中的对象数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.IsSynchronized 属性

HttpFileCollectionWrapper
.
.
::
.
IsSynchronized 属性
HttpFileCollectionWrapper 类

获取一个值，该值指示对集合的访问是否是线程安全的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsSynchronized As Boolean
    Get
public override bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get () override;
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果访问是同步的（线程安全），则为 true；否则为 false。默认值为 false。 如果访问是同步的（线程安全），则为 true；否则为 false。默认值为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.Item 属性

HttpFileCollectionWrapper
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpFileCollectionWrapper 类

按名称或索引，从文件集合中获取已发布文件对象。

名称 说明
页首

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.Item 属性 (Int32)

HttpFileCollectionWrapper
.
.
::
.
Item 属性 (Int32)
HttpFileCollectionWrapper 类

获取指定索引处的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Item ( _
    index As Integer _
) As HttpPostedFileBase
    Get
public override HttpPostedFileBase this[
    int index
] { get; }
public:
virtual property HttpPostedFileBase^ Item[int index] {
    HttpPostedFileBase^ get (int index) override;
}
abstract Item : HttpPostedFileBase
override Item : HttpPostedFileBase

参数

index
类型： System Int32
要获取的项的索引。

属性值

类型： System.Web HttpPostedFileBase
index 指定的已发布文件对象。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
Item 重载
System.Web 命名空间


HttpFileCollectionWrapper ..::.Item 属性 (String)

HttpFileCollectionWrapper
.
.
::
.
Item 属性 (String)
HttpFileCollectionWrapper 类

获取集合中具有指定名称的已发布文件对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Item ( _
    name As String _
) As HttpPostedFileBase
    Get
public override HttpPostedFileBase this[
    string name
] { get; }
public:
virtual property HttpPostedFileBase^ Item[String^ name] {
    HttpPostedFileBase^ get (String^ name) override;
}
abstract Item : HttpPostedFileBase
override Item : HttpPostedFileBase

参数

name
类型： System String
要获取的对象的名称。

属性值

类型： System.Web HttpPostedFileBase
如果找到，则为 name 指定的已发布文件对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
Item 重载
System.Web 命名空间


HttpFileCollectionWrapper ..::.Keys 属性

HttpFileCollectionWrapper
.
.
::
.
Keys 属性
HttpFileCollectionWrapper 类

获取 NameObjectCollectionBase..::.KeysCollection 实例，该实例包含 HttpApplicationStateWrapper 实例中的所有键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Keys As NameObjectCollectionBase..::..KeysCollection
    Get
public override NameObjectCollectionBase..::..KeysCollection Keys { get; }
public:
virtual property NameObjectCollectionBase..::..KeysCollection^ Keys {
    NameObjectCollectionBase..::..KeysCollection^ get () override;
}
abstract Keys : NameObjectCollectionBase..::..KeysCollection
override Keys : NameObjectCollectionBase..::..KeysCollection

属性值

类型： System.Collections.Specialized NameObjectCollectionBase KeysCollection
一个包含集合中所有键的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpFileCollectionWrapper ..::.SyncRoot 属性

HttpFileCollectionWrapper
.
.
::
.
SyncRoot 属性
HttpFileCollectionWrapper 类

获取可用于同步对集合的访问的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SyncRoot As Object
    Get
public override Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () override;
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpFileCollectionWrapper 类
HttpFileCollectionWrapper 成员
System.Web 命名空间


HttpModuleCollection 类

HttpModuleCollection 类
成员

提供一种索引和检索 IHttpModule 对象集合的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpModuleCollection _
    Inherits NameObjectCollectionBase
public sealed class HttpModuleCollection : NameObjectCollectionBase
public ref class HttpModuleCollection sealed : public NameObjectCollectionBase
[<SealedAttribute>]
type HttpModuleCollection =
    class
        inherit NameObjectCollectionBase
    end

下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。

<%@ Page language="VB" %>
<%@ Import Namespace = "System.Data"  %>

<script runat="server">
' System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo
Sub Page_Load(Sender As Object, e As EventArgs )

' Get the HttpContext object for the current request.
Dim i As Integer
Dim myHttpContext As HttpContext  = HttpContext.Current
' Get the application object for the current request.
Dim  myHttpApplication As HttpApplication = myHttpContext.ApplicationInstance
' Get the collection of all HTTPModule objects for the current application.
Dim myHttpModuleCollection As HttpModuleCollection = myHttpApplication.Modules

' Get the name of the HttpModule object at index 1.
Dim httpModuleName As string = myHttpModuleCollection.GetKey(1)
Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>")

Dim  allModules() As string = myHttpModuleCollection.AllKeys

' Display the names of all HttpModule objects.
Response.Write("<b>The HttpModule objects of HttpModuleCollection are:</b><br>")

For i = 0 To allModules.Length -1
   Response.Write("Module" + i.ToString() + "  : " + allModules(i).ToString() + "<br>")
Next i

' Copy the HttpModule objects in the collection into an array.
Dim httpModuleArray As System.Array = Array.CreateInstance(GetType(object),myHttpModuleCollection.AllKeys.Length)
myHttpModuleCollection.CopyTo(httpModuleArray,0)
Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+ "<br>Displaying the HttpModule objects in the array:</b><br>")

For i=0 To httpModuleArray.Length -1
   Response.Write("Module" + i.ToString() + ": " + httpModuleArray.GetValue(i).ToString() + "<br>")
Next i

End Sub
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

<%@ Page language="C#" %>
<%@ Import Namespace = "System.Data"  %>
<script runat="server">
// System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo

void Page_Load(object sender, System.EventArgs e)
{
    // Get the HttpContext object for the current request.
    HttpContext myHttpContext = HttpContext.Current;
    // Get the application object for the current request.
    HttpApplication myHttpApplication = myHttpContext.ApplicationInstance;
    // Get the collection of all HTTPModule objects for the current application.
    HttpModuleCollection myHttpModuleCollection = myHttpApplication.Modules;

    // Get the name of the HttpModule object at index 1.
    string httpModuleName = myHttpModuleCollection.GetKey(1);
    Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>");

    string[] allModules = myHttpModuleCollection.AllKeys;

    // Display the names of all HttpModule objects.
    Response.Write("<b>The HttpModule objects contained in the HttpModuleCollection are:</b><br>");

    for(int i=0; i < allModules.Length; i++)
       Response.Write("Module" + i + "  : " + allModules[i] + "<br>");

    // Copy the HttpModule objects in the collection into an array.
    System.Array httpModuleArray = Array.CreateInstance(typeof(object),myHttpModuleCollection.AllKeys.Length);
    myHttpModuleCollection.CopyTo(httpModuleArray,0);
    Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+
       "<br>Displaying the HttpModule objects in array:</b><br>");

    for(int i=0; i < httpModuleArray.Length; i++)
       Response.Write("Module" + i + ": " + httpModuleArray.GetValue(i) + "<br>");

}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

System.Web System.Web..::.HttpModuleCollectionHttpModuleCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection 成员

HttpModuleCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

提供一种索引和检索 IHttpModule 对象集合的方法。

HttpModuleCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpModuleCollection 类
System.Web 命名空间


HttpModuleCollection 方法

HttpModuleCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

HttpModuleCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpModuleCollection 类
System.Web 命名空间


HttpModuleCollection ..::.BaseGet 方法

HttpModuleCollection
.
.
::
.
BaseGet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

获取 NameObjectCollectionBase 实例中指定项的值。

名称 说明
页首

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.BaseGetAllValues 方法

HttpModuleCollection
.
.
::
.
BaseGetAllValues 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

返回数组，该数组包含 NameObjectCollectionBase 实例中的所有值。

名称 说明
页首

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.BaseSet 方法

HttpModuleCollection
.
.
::
.
BaseSet 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

设置 NameObjectCollectionBase 实例中的项值。

名称 说明
页首

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.CopyTo 方法

HttpModuleCollection
.
.
::
.
CopyTo 方法
HttpModuleCollection 类

从指定的数组索引处开始，将模块集合的成员复制到 Array 中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub CopyTo ( _
    dest As Array, _
    index As Integer _
)
public void CopyTo(
    Array dest,
    int index
)
public:
void CopyTo(
    Array^ dest,
    int index
)
member CopyTo :
        dest:Array *
        index:int -> unit

参数

dest
类型： System Array
目标 Array。
index
类型： System Int32
开始复制的目标 Array 的索引。

下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。

<%@ Page language="VB" %>
<%@ Import Namespace = "System.Data"  %>

<script runat="server">
' System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo
Sub Page_Load(Sender As Object, e As EventArgs )

' Get the HttpContext object for the current request.
Dim i As Integer
Dim myHttpContext As HttpContext  = HttpContext.Current
' Get the application object for the current request.
Dim  myHttpApplication As HttpApplication = myHttpContext.ApplicationInstance
' Get the collection of all HTTPModule objects for the current application.
Dim myHttpModuleCollection As HttpModuleCollection = myHttpApplication.Modules

' Get the name of the HttpModule object at index 1.
Dim httpModuleName As string = myHttpModuleCollection.GetKey(1)
Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>")

Dim  allModules() As string = myHttpModuleCollection.AllKeys

' Display the names of all HttpModule objects.
Response.Write("<b>The HttpModule objects of HttpModuleCollection are:</b><br>")

For i = 0 To allModules.Length -1
   Response.Write("Module" + i.ToString() + "  : " + allModules(i).ToString() + "<br>")
Next i

' Copy the HttpModule objects in the collection into an array.
Dim httpModuleArray As System.Array = Array.CreateInstance(GetType(object),myHttpModuleCollection.AllKeys.Length)
myHttpModuleCollection.CopyTo(httpModuleArray,0)
Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+ "<br>Displaying the HttpModule objects in the array:</b><br>")

For i=0 To httpModuleArray.Length -1
   Response.Write("Module" + i.ToString() + ": " + httpModuleArray.GetValue(i).ToString() + "<br>")
Next i

End Sub
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

<%@ Page language="C#" %>
<%@ Import Namespace = "System.Data"  %>
<script runat="server">
// System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo

void Page_Load(object sender, System.EventArgs e)
{
    // Get the HttpContext object for the current request.
    HttpContext myHttpContext = HttpContext.Current;
    // Get the application object for the current request.
    HttpApplication myHttpApplication = myHttpContext.ApplicationInstance;
    // Get the collection of all HTTPModule objects for the current application.
    HttpModuleCollection myHttpModuleCollection = myHttpApplication.Modules;

    // Get the name of the HttpModule object at index 1.
    string httpModuleName = myHttpModuleCollection.GetKey(1);
    Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>");

    string[] allModules = myHttpModuleCollection.AllKeys;

    // Display the names of all HttpModule objects.
    Response.Write("<b>The HttpModule objects contained in the HttpModuleCollection are:</b><br>");

    for(int i=0; i < allModules.Length; i++)
       Response.Write("Module" + i + "  : " + allModules[i] + "<br>");

    // Copy the HttpModule objects in the collection into an array.
    System.Array httpModuleArray = Array.CreateInstance(typeof(object),myHttpModuleCollection.AllKeys.Length);
    myHttpModuleCollection.CopyTo(httpModuleArray,0);
    Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+
       "<br>Displaying the HttpModule objects in array:</b><br>");

    for(int i=0; i < httpModuleArray.Length; i++)
       Response.Write("Module" + i + ": " + httpModuleArray.GetValue(i) + "<br>");

}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.Get 方法

HttpModuleCollection
.
.
::
.
Get 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

从 HttpModuleCollection 中返回个别 IHttpModule 对象。

名称 说明
页首

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.Get 方法 (Int32)

HttpModuleCollection
.
.
::
.
Get 方法 (Int32)
HttpModuleCollection 类

从 HttpModuleCollection 中返回具有指定索引的 IHttpModule 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    index As Integer _
) As IHttpModule
public IHttpModule Get(
    int index
)
public:
IHttpModule^ Get(
    int index
)
member Get :
        index:int -> IHttpModule

参数

index
类型： System Int32
要从集合中返回的 IHttpModule 对象的索引。

返回值

类型： System.Web IHttpModule
由 index 参数指定的 IHttpModule 成员。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
Get 重载
System.Web 命名空间


HttpModuleCollection ..::.Get 方法 (String)

HttpModuleCollection
.
.
::
.
Get 方法 (String)
HttpModuleCollection 类

从 HttpModuleCollection 中返回具有指定名称的 IHttpModule 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Get ( _
    name As String _
) As IHttpModule
public IHttpModule Get(
    string name
)
public:
IHttpModule^ Get(
    String^ name
)
member Get :
        name:string -> IHttpModule

参数

name
类型： System String
要检索的项的关键字。

返回值

类型： System.Web IHttpModule
由 name 参数指定的 IHttpModule 成员。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
Get 重载
System.Web 命名空间


HttpModuleCollection ..::.GetKey 方法

HttpModuleCollection
.
.
::
.
GetKey 方法
HttpModuleCollection 类

返回指定数字索引处的 IHttpModule 对象的关键字（名称）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetKey ( _
    index As Integer _
) As String
public string GetKey(
    int index
)
public:
String^ GetKey(
    int index
)
member GetKey :
        index:int -> string

参数

index
类型： System Int32
要从集合中检索的关键字的索引。

返回值

类型： System String
由 index 参数指定的 IHttpModule 成员的名称。

下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。

<%@ Page language="VB" %>
<%@ Import Namespace = "System.Data"  %>

<script runat="server">
' System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo
Sub Page_Load(Sender As Object, e As EventArgs )

' Get the HttpContext object for the current request.
Dim i As Integer
Dim myHttpContext As HttpContext  = HttpContext.Current
' Get the application object for the current request.
Dim  myHttpApplication As HttpApplication = myHttpContext.ApplicationInstance
' Get the collection of all HTTPModule objects for the current application.
Dim myHttpModuleCollection As HttpModuleCollection = myHttpApplication.Modules

' Get the name of the HttpModule object at index 1.
Dim httpModuleName As string = myHttpModuleCollection.GetKey(1)
Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>")

Dim  allModules() As string = myHttpModuleCollection.AllKeys

' Display the names of all HttpModule objects.
Response.Write("<b>The HttpModule objects of HttpModuleCollection are:</b><br>")

For i = 0 To allModules.Length -1
   Response.Write("Module" + i.ToString() + "  : " + allModules(i).ToString() + "<br>")
Next i

' Copy the HttpModule objects in the collection into an array.
Dim httpModuleArray As System.Array = Array.CreateInstance(GetType(object),myHttpModuleCollection.AllKeys.Length)
myHttpModuleCollection.CopyTo(httpModuleArray,0)
Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+ "<br>Displaying the HttpModule objects in the array:</b><br>")

For i=0 To httpModuleArray.Length -1
   Response.Write("Module" + i.ToString() + ": " + httpModuleArray.GetValue(i).ToString() + "<br>")
Next i

End Sub
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

<%@ Page language="C#" %>
<%@ Import Namespace = "System.Data"  %>
<script runat="server">
// System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo

void Page_Load(object sender, System.EventArgs e)
{
    // Get the HttpContext object for the current request.
    HttpContext myHttpContext = HttpContext.Current;
    // Get the application object for the current request.
    HttpApplication myHttpApplication = myHttpContext.ApplicationInstance;
    // Get the collection of all HTTPModule objects for the current application.
    HttpModuleCollection myHttpModuleCollection = myHttpApplication.Modules;

    // Get the name of the HttpModule object at index 1.
    string httpModuleName = myHttpModuleCollection.GetKey(1);
    Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>");

    string[] allModules = myHttpModuleCollection.AllKeys;

    // Display the names of all HttpModule objects.
    Response.Write("<b>The HttpModule objects contained in the HttpModuleCollection are:</b><br>");

    for(int i=0; i < allModules.Length; i++)
       Response.Write("Module" + i + "  : " + allModules[i] + "<br>");

    // Copy the HttpModule objects in the collection into an array.
    System.Array httpModuleArray = Array.CreateInstance(typeof(object),myHttpModuleCollection.AllKeys.Length);
    myHttpModuleCollection.CopyTo(httpModuleArray,0);
    Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+
       "<br>Displaying the HttpModule objects in array:</b><br>");

    for(int i=0; i < httpModuleArray.Length; i++)
       Response.Write("Module" + i + ": " + httpModuleArray.GetValue(i) + "<br>");

}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection 属性

HttpModuleCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

HttpModuleCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpModuleCollection 类
System.Web 命名空间


HttpModuleCollection ..::.AllKeys 属性

HttpModuleCollection
.
.
::
.
AllKeys 属性
HttpModuleCollection 类

获取一个包含 HttpModuleCollection 中所有关键字（模块名称）的字符串数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AllKeys As String()
    Get
public string[] AllKeys { get; }
public:
property array<String^>^ AllKeys {
    array<String^>^ get ();
}
member AllKeys : string[]

属性值

类型：
array<
System String
>
[]
()
[]

模块名称的数组。

下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。 下面的代码示例演示 HttpModuleCollection 类的 AllKeys 属性以及 GetKey 和 CopyTo 方法。该示例从当前的 HttpContext 对象获取当前请求的应用程序对象。然后，它从应用程序实例中提取 HttpModuleCollection 对象，并显示 IHttpModule 对象的名称。

<%@ Page language="VB" %>
<%@ Import Namespace = "System.Data"  %>

<script runat="server">
' System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo
Sub Page_Load(Sender As Object, e As EventArgs )

' Get the HttpContext object for the current request.
Dim i As Integer
Dim myHttpContext As HttpContext  = HttpContext.Current
' Get the application object for the current request.
Dim  myHttpApplication As HttpApplication = myHttpContext.ApplicationInstance
' Get the collection of all HTTPModule objects for the current application.
Dim myHttpModuleCollection As HttpModuleCollection = myHttpApplication.Modules

' Get the name of the HttpModule object at index 1.
Dim httpModuleName As string = myHttpModuleCollection.GetKey(1)
Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>")

Dim  allModules() As string = myHttpModuleCollection.AllKeys

' Display the names of all HttpModule objects.
Response.Write("<b>The HttpModule objects of HttpModuleCollection are:</b><br>")

For i = 0 To allModules.Length -1
   Response.Write("Module" + i.ToString() + "  : " + allModules(i).ToString() + "<br>")
Next i

' Copy the HttpModule objects in the collection into an array.
Dim httpModuleArray As System.Array = Array.CreateInstance(GetType(object),myHttpModuleCollection.AllKeys.Length)
myHttpModuleCollection.CopyTo(httpModuleArray,0)
Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+ "<br>Displaying the HttpModule objects in the array:</b><br>")

For i=0 To httpModuleArray.Length -1
   Response.Write("Module" + i.ToString() + ": " + httpModuleArray.GetValue(i).ToString() + "<br>")
Next i

End Sub
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

<%@ Page language="C#" %>
<%@ Import Namespace = "System.Data"  %>
<script runat="server">
// System.Web.HttpModuleCollection.AllKeys;GetKey;CopyTo

void Page_Load(object sender, System.EventArgs e)
{
    // Get the HttpContext object for the current request.
    HttpContext myHttpContext = HttpContext.Current;
    // Get the application object for the current request.
    HttpApplication myHttpApplication = myHttpContext.ApplicationInstance;
    // Get the collection of all HTTPModule objects for the current application.
    HttpModuleCollection myHttpModuleCollection = myHttpApplication.Modules;

    // Get the name of the HttpModule object at index 1.
    string httpModuleName = myHttpModuleCollection.GetKey(1);
    Response.Write("The name of the HttpModule object at index 1" + " is " +"'"+  httpModuleName+"'." + "<br><br>");

    string[] allModules = myHttpModuleCollection.AllKeys;

    // Display the names of all HttpModule objects.
    Response.Write("<b>The HttpModule objects contained in the HttpModuleCollection are:</b><br>");

    for(int i=0; i < allModules.Length; i++)
       Response.Write("Module" + i + "  : " + allModules[i] + "<br>");

    // Copy the HttpModule objects in the collection into an array.
    System.Array httpModuleArray = Array.CreateInstance(typeof(object),myHttpModuleCollection.AllKeys.Length);
    myHttpModuleCollection.CopyTo(httpModuleArray,0);
    Response.Write("<br><br><b>Successfully copied the HttpModule objects in the HttpModuleCollection to an array."+
       "<br>Displaying the HttpModule objects in array:</b><br>");

    for(int i=0; i < httpModuleArray.Length; i++)
       Response.Write("Module" + i + ": " + httpModuleArray.GetValue(i) + "<br>");

}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>HttpModuleCollection Example</title>
</head>
<body>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.Item 属性

HttpModuleCollection
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpModuleCollection 类

从 HttpModuleCollection 中获取指定的 IHttpModule 对象。

名称 说明
页首

参考

HttpModuleCollection 类
HttpModuleCollection 成员
System.Web 命名空间


HttpModuleCollection ..::.Item 属性 (Int32)

HttpModuleCollection
.
.
::
.
Item 属性 (Int32)
HttpModuleCollection 类

从 HttpModuleCollection 中获取具有指定数字索引的 IHttpModule 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    index As Integer _
) As IHttpModule
    Get
public IHttpModule this[
    int index
] { get; }
public:
property IHttpModule^ Item[int index] {
    IHttpModule^ get (int index);
}
member Item : IHttpModule

参数

index
类型： System Int32
要从集合中检索的 IHttpModule 对象的索引。

属性值

类型： System.Web IHttpModule
由 index 参数指定的 IHttpModule 对象模块。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
Item 重载
System.Web 命名空间


HttpModuleCollection ..::.Item 属性 (String)

HttpModuleCollection
.
.
::
.
Item 属性 (String)
HttpModuleCollection 类

从 HttpModuleCollection 获取具有指定名称的 IHttpModule 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    name As String _
) As IHttpModule
    Get
public IHttpModule this[
    string name
] { get; }
public:
property IHttpModule^ Item[String^ name] {
    IHttpModule^ get (String^ name);
}
member Item : IHttpModule

参数

name
类型： System String
要检索的项的关键字。

属性值

类型： System.Web IHttpModule
由 name 参数指定的 IHttpModule 对象模块。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpModuleCollection 类
HttpModuleCollection 成员
Item 重载
System.Web 命名空间


HttpParseException 类

HttpParseException 类
成员

发生分析错误时引发的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public NotInheritable Class HttpParseException _
    Inherits HttpException
[SerializableAttribute]
public sealed class HttpParseException : HttpException
[SerializableAttribute]
public ref class HttpParseException sealed : public HttpException
[<SealedAttribute>]
[<SerializableAttribute>]
type HttpParseException =
    class
        inherit HttpException
    end

HttpParseException 类是一个特定于 HTTP 的异常类，ASP.NET 可通过该类输出分析器异常信息。有关引发和处理异常的更多信息，请参见 处理和引发异常。 HttpParseException 类是一个特定于 HTTP 的异常类，ASP.NET 可通过该类输出分析器异常信息。有关引发和处理异常的更多信息，请参见 处理和引发异常。

下面的示例演示如何使用 HttpParseException 来自定义在页分析期间生成的错误。此示例中定义了一个自定义的 HtmlSelect 控件。如果自定义控件的子元素不属于指定的类型，则在自定义 HtmlSelectBuilder 的 GetChildControlType 重写方法中将引发一个 HttpParseException。若要生成一个分析异常，请将子元素文本 MyCustomOption 更改为其他任何字符串。 下面的示例演示如何使用 HttpParseException 来自定义在页分析期间生成的错误。此示例中定义了一个自定义的 HtmlSelect 控件。如果自定义控件的子元素不属于指定的类型，则在自定义 HtmlSelectBuilder 的 GetChildControlType 重写方法中将引发一个 HttpParseException。若要生成一个分析异常，请将子元素文本 MyCustomOption 更改为其他任何字符串。 下面的示例演示如何使用 HttpParseException 来自定义在页分析期间生成的错误。此示例中定义了一个自定义的 HtmlSelect 控件。如果自定义控件的子元素不属于指定的类型，则在自定义 HtmlSelectBuilder 的 GetChildControlType 重写方法中将引发一个 HttpParseException。若要生成一个分析异常，请将子元素文本 MyCustomOption 更改为其他任何字符串。 下面的示例演示如何使用 HttpParseException 来自定义在页分析期间生成的错误。此示例中定义了一个自定义的 HtmlSelect 控件。如果自定义控件的子元素不属于指定的类型，则在自定义 HtmlSelectBuilder 的 GetChildControlType 重写方法中将引发一个 HttpParseException。若要生成一个分析异常，请将子元素文本 MyCustomOption 更改为其他任何字符串。

<%@ Page Language="VB"%>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpParseException Example</title>
</head>
  <body>
    <form id="Form1" runat="server">
      <h3>HttpParseException Example</h3>

      <aspSample:CustomHtmlSelectWithHttpParseException
       id="customhtmlselect1"
       runat="server">
      <aspSample:MyCustomOption optionid="option1" value="1"/>
      <aspSample:MyCustomOption optionid="option2" value="2"/>
      <aspSample:MyCustomOption optionid="option3" value="3"/>
      </aspSample:CustomHtmlSelectWithHttpParseException>

    </form>

  </body>

</html>

<%@ Page Language="C#"%>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpParseException Example</title>
</head>
  <body>
    <form id="Form1" runat="server">
      <h3>HttpParseException Example</h3>

      <aspSample:CustomHtmlSelectWithHttpParseException
       id="customhtmlselect1"
       runat="server">
      <aspSample:MyCustomOption optionid="option1" value="1"/>
      <aspSample:MyCustomOption optionid="option2" value="2"/>
      <aspSample:MyCustomOption optionid="option3" value="3"/>
      </aspSample:CustomHtmlSelectWithHttpParseException>

    </form>

  </body>

</html>

Imports System
Imports System.Security.Permissions
Imports System.Collections
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Namespace Samples.AspNet.VB
    ' Define a child control for the custom HtmlSelect.
    Public Class MyCustomOption
        Private _id As String
        Private _value As String

        Public Property optionid() As String
            Get
                Return _id
            End Get
            Set(ByVal value As String)
                _id = value
            End Set
        End Property

        Public Property value() As String
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property
    End Class

    ' Define a custom HtmlSelectBuilder.
    Public Class MyHtmlSelectBuilderWithparseException
        Inherits HtmlSelectBuilder

        <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
        Public Overrides Function GetChildControlType(ByVal tagName As String, ByVal attribs As IDictionary) As Type

            ' Distinguish between two possible types of child controls.
            If tagName.ToLower().EndsWith("mycustomoption") Then

                Return GetType(MyCustomOption)

            Else

                Throw New HttpParseException("This custom HtmlSelect control" & _
                         "requires child elements of the form ""MyCustomOption""")
            End If

        End Function

    End Class

    <ControlBuilderAttribute(GetType(MyHtmlSelectBuilderWithparseException))> _
    Public Class CustomHtmlSelectWithHttpParseException
        Inherits HtmlSelect

        ' Override the AddParsedSubObject method.
        Protected Overrides Sub AddParsedSubObject(ByVal obj As Object)

            Dim _outputtext As String
            If TypeOf obj Is MyCustomOption Then
                _outputtext = "custom select option : " + CType(obj, MyCustomOption).value
                Dim li As New ListItem(_outputtext, CType(obj, MyCustomOption).value)
                MyBase.Items.Add(li)
            End If

        End Sub

    End Class

End Namespace

using System;
using System.Security.Permissions;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS
{
    // Define a child control for the custom HtmlSelect.
    public class MyCustomOption
    {
        string _id;
        string _value;

        public string optionid
        {
            get
            { return _id; }
            set
            { _id = value; }
        }

        public string value
        {
            get
            { return _value; }
            set
            { _value = value; }
        }

    }

    // Define a custom HtmlSelectBuilder.
    public class MyHtmlSelectBuilderWithparseException : HtmlSelectBuilder
    {
        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
        public override Type GetChildControlType(string tagName, IDictionary attribs)
        {
            // Distinguish between two possible types of child controls.
            if (tagName.ToLower().EndsWith("mycustomoption"))
            {
                return typeof(MyCustomOption);
            }
            else
            {
                throw new HttpParseException("This custom HtmlSelect control" +                                                  "requires child elements of the form \"MyCustomOption\"");
            }
        }

    }

    [ControlBuilderAttribute(typeof(MyHtmlSelectBuilderWithparseException))]
    public class CustomHtmlSelectWithHttpParseException : HtmlSelect
    {
        // Override the AddParsedSubObject method.
        protected override void AddParsedSubObject(object obj)
        {

            string _outputtext;
            if (obj is MyCustomOption)
            {
                _outputtext = "custom select option : " + ((MyCustomOption)obj).value;
                ListItem li = new ListItem(_outputtext, ((MyCustomOption)obj).value);
                base.Items.Add(li);
            }
        }
    }

}

System.Web System.Web..::.HttpParseExceptionHttpParseException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpParseException 成员
System.Web 命名空间
HtmlSelect
HtmlSelectBuilder

其他资源

处理和引发异常


HttpParseException 成员

HttpParseException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpParseException 类

发生分析错误时引发的异常。

HttpParseException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpParseException 类
System.Web 命名空间


HttpParseException 构造函数

HttpParseException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpParseException 类

初始化 HttpParseException 类的新实例。

名称 说明
页首

参考

HttpParseException 类
HttpParseException 成员
System.Web 命名空间


HttpParseException 构造函数

HttpParseException 构造函数
HttpParseException 类

初始化 HttpParseException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpParseException()
public:
HttpParseException()
new : unit -> HttpParseException

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
HttpParseException 重载
System.Web 命名空间


HttpParseException 构造函数 (String)

HttpParseException 构造函数 (String)
HttpParseException 类

使用指定的错误消息初始化 HttpParseException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String _
)
public HttpParseException(
    string message
)
public:
HttpParseException(
    String^ message
)
new :
        message:string -> HttpParseException

参数

message
类型： System String
发生错误时要指定的异常消息。

下面的示例演示 HttpException 构造函数的使用。若想获得完整的工作代码示例，请参见 HttpParseException 的概述主题。 下面的示例演示 HttpException 构造函数的使用。若想获得完整的工作代码示例，请参见 HttpParseException 的概述主题。

Throw New HttpParseException("This custom HtmlSelect control" & _
         "requires child elements of the form ""MyCustomOption""")

throw new HttpParseException("This custom HtmlSelect control" +                                                  "requires child elements of the form \"MyCustomOption\"");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
HttpParseException 重载
System.Web 命名空间


HttpParseException 构造函数 (String, Exception)

HttpParseException 构造函数 (String, Exception)
HttpParseException 类

使用指定的错误消息和对内部异常的引用来初始化 HttpParseException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public HttpParseException(
    string message,
    Exception innerException
)
public:
HttpParseException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> HttpParseException

参数

message
类型： System String
发生错误时要指定的异常消息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。 导致当前异常的异常。如果 innerException 参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则当前异常在处理内部异常的 catch 块中引发。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
HttpParseException 重载
System.Web 命名空间


HttpParseException 构造函数 (String, Exception, String, String, Int32)

HttpParseException 构造函数 (String, Exception, String, String, Int32)
HttpParseException 类

使用关于正在编译的源代码的特定信息和发生异常的行号初始化 HttpParseException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception, _
    virtualPath As String, _
    sourceCode As String, _
    line As Integer _
)
public HttpParseException(
    string message,
    Exception innerException,
    string virtualPath,
    string sourceCode,
    int line
)
public:
HttpParseException(
    String^ message,
    Exception^ innerException,
    String^ virtualPath,
    String^ sourceCode,
    int line
)
new :
        message:string *
        innerException:Exception *
        virtualPath:string *
        sourceCode:string *
        line:int -> HttpParseException

参数

message
类型： System String
发生错误时要指定的异常消息。
innerException
类型： System Exception
导致当前异常的异常。如果 innerException 不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在处理内部异常的 catch 块中引发当前异常。 导致当前异常的异常。如果 innerException 不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在处理内部异常的 catch 块中引发当前异常。
virtualPath
类型： System String
异常的虚拟路径。
sourceCode
类型： System String
发生异常时正在编译的源代码。
line
类型： System Int32
发生异常的行号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
HttpParseException 重载
System.Web 命名空间


HttpParseException 方法

HttpParseException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpParseException 类

HttpParseException 类型公开以下成员。

名称 说明
页首

参考

HttpParseException 类
System.Web 命名空间


HttpParseException ..::.GetObjectData 方法

HttpParseException
.
.
::
.
GetObjectData 方法
HttpParseException 类

当在派生类中重写时，使用关于异常的信息设置 SerializationInfo 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter := True)> _
Public Overrides Sub GetObjectData ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(
    SerializationInfo info,
    StreamingContext context
)
[SecurityPermissionAttribute(SecurityAction::Demand, SerializationFormatter = true)]
public:
virtual void GetObjectData(
    SerializationInfo^ info,
    StreamingContext context
) override
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
abstract GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit
[<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)>]
override GetObjectData :
        info:SerializationInfo *
        context:StreamingContext -> unit

参数

info
类型： System.Runtime.Serialization SerializationInfo
SerializationInfo，它存有有关所引发异常的序列化的对象数据。
context
类型： System.Runtime.Serialization StreamingContext
StreamingContext，它包含有关源或目标的上下文信息。

实现

异常 | 条件
ArgumentNullException | info 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

GetObjectData 方法使用要序列化的所有异常对象数据设置 SerializationInfo 对象。反序列化期间，从通过流传输的 SerializationInfo 重建异常。 GetObjectData 方法使用要序列化的所有异常对象数据设置 SerializationInfo 对象。反序列化期间，从通过流传输的 SerializationInfo 重建异常。

下面的代码示例演示如何定义一个派生的可序列化 Exception 类，该类实现了 GetObjectData 方法，此方法对两个属性做一些小的改动，然后调用基类以执行序列化。该示例强行产生一个被零除错误，然后创建派生 Exception 类的一个实例。代码将该实例序列化为一个文件，将该文件反序列化为一个新的 Exception（将被引发），然后捕捉并显示该异常的数据。 下面的代码示例演示如何定义一个派生的可序列化 Exception 类，该类实现了 GetObjectData 方法，此方法对两个属性做一些小的改动，然后调用基类以执行序列化。该示例强行产生一个被零除错误，然后创建派生 Exception 类的一个实例。代码将该实例序列化为一个文件，将该文件反序列化为一个新的 Exception（将被引发），然后捕捉并显示该异常的数据。 下面的代码示例演示如何定义一个派生的可序列化 Exception 类，该类实现了 GetObjectData 方法，此方法对两个属性做一些小的改动，然后调用基类以执行序列化。该示例强行产生一个被零除错误，然后创建派生 Exception 类的一个实例。代码将该实例序列化为一个文件，将该文件反序列化为一个新的 Exception（将被引发），然后捕捉并显示该异常的数据。

' Example for the Exception( SerializationInfo, StreamingContext )
' constructor and the Exception.GetObjectData( SerializationInfo,
' StreamingContext ) method.
'
' If compiling with the Visual Basic compiler (VBC) from the command
' prompt, be sure to add the following switch:
'    /reference:System.Runtime.Serialization.Formatters.Soap.dll
Imports System
Imports System.IO
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Soap
Imports Microsoft.VisualBasic
Imports System.Security.Permissions

Namespace NDP_UE_VB

    ' Define a serializable derived exception class.
    <Serializable()>  _
    Class SecondLevelException
        Inherits Exception

        ' This public constructor is used by class instantiators.
        Public Sub New( message As String, inner As Exception )
            MyBase.New( message, inner )

            HelpLink = "http://MSDN.Microsoft.com"
            Source = "Exception_Class_Samples"
        End Sub ' New

        ' This protected constructor is used for deserialization.
        Protected Sub New( info As SerializationInfo, _
            context As StreamingContext )
                MyBase.New( info, context )
        End Sub ' New

        ' GetObjectData performs a custom serialization.
        <SecurityPermissionAttribute(SecurityAction.Demand, _
                                     SerializationFormatter:=True)> _
        Overrides Sub GetObjectData( info As SerializationInfo, _
            context As StreamingContext)

            ' Change the case of two properties, and then use the
            ' method of the base class.
            HelpLink = HelpLink.ToLower()
            Source = Source.ToUpper()

            MyBase.GetObjectData(info, context)

        End Sub ' ISerializable.GetObjectData
    End Class ' SecondLevelException

    Module SerializationDemo

        Sub Main()
            Console.WriteLine( _
                "This example of the Exception constructor " & _
                "and Exception.GetObjectData " & vbCrLf & _
                "with SerializationInfo and StreamingContext " & _
                "parameters generates " & vbCrLf & _
                "the following output." & vbCrLf )

            ' This code forces a division by 0 and catches the
            ' resulting exception.
            Try
                Try
                    Dim zero As Integer = 0
                    Dim ecks As Integer = 1 \ zero

                ' Create a new exception to throw again.
                Catch ex As Exception

                    Dim newExcept As New SecondLevelException( _
                        "Forced a division by 0 and threw " & _
                        "another exception.", ex )

                    Console.WriteLine( _
                        "Forced a division by 0, caught the " & _
                        "resulting exception, " & vbCrLf & _
                        "and created a derived exception:" & vbCrLf )
                    Console.WriteLine( "HelpLink: {0}", _
                        newExcept.HelpLink )
                    Console.WriteLine( "Source:   {0}", _
                        newExcept.Source )

                    ' This FileStream is used for the serialization.
                    Dim stream As New FileStream( _
                        "NewException.dat", FileMode.Create )

                    ' Serialize the derived exception.
                    Try
                        Dim formatter As New SoapFormatter( Nothing, _
                            New StreamingContext( _
                                StreamingContextStates.File ) )
                        formatter.Serialize( stream, newExcept )

                        ' Rewind the stream and deserialize the
                        ' exception.
                        stream.Position = 0
                        Dim deserExcept As SecondLevelException = _
                            CType( formatter.Deserialize( stream ), _
                                SecondLevelException )

                        Console.WriteLine( vbCrLf & _
                            "Serialized the exception, and then " & _
                            "deserialized the resulting stream " & _
                            "into a " & vbCrLf & "new exception. " & _
                            "The deserialization changed the case " & _
                            "of certain properties:" & vbCrLf )

                        ' Throw the deserialized exception again.
                        Throw deserExcept

                    Catch se As SerializationException
                        Console.WriteLine( "Failed to serialize: {0}", _
                            se.ToString( ) )

                    Finally
                        stream.Close( )
                    End Try
                End Try

            Catch ex As Exception
                Console.WriteLine( "HelpLink: {0}", ex.HelpLink )
                Console.WriteLine( "Source:   {0}", ex.Source )

                Console.WriteLine( )
                Console.WriteLine( ex.ToString( ) )
            End Try
        End Sub ' Main

    End Module ' SerializationDemo
End Namespace ' NDP_UE_VB

' This example of the Exception constructor and Exception.GetObjectData
' with SerializationInfo and StreamingContext parameters generates
' the following output.
'
' Forced a division by 0, caught the resulting exception,
' and created a derived exception:
'
' HelpLink: http://MSDN.Microsoft.com
' Source:   Exception_Class_Samples
'
' Serialized the exception, and then deserialized the resulting stream into a
' new exception. The deserialization changed the case of certain properties:
'
' HelpLink: http://msdn.microsoft.com
' Source:   EXCEPTION_CLASS_SAMPLES
'
' NDP_UE_VB.SecondLevelException: Forced a division by 0 and threw another exce
' ption. ---> System.DivideByZeroException: Attempted to divide by zero.
'    at NDP_UE_VB.SerializationDemo.Main()
'    --- End of inner exception stack trace ---
'    at NDP_UE_VB.SerializationDemo.Main()

// Example for the Exception( SerializationInfo, StreamingContext )
// constructor and the Exception.GetObjectData( SerializationInfo,
// StreamingContext ) method.
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
using System.Security.Permissions;

namespace NDP_UE_CS
{
    // Define a serializable derived exception class.
    [Serializable()]
    class SecondLevelException : Exception, ISerializable
    {
        // This public constructor is used by class instantiators.
        public SecondLevelException( string message, Exception inner ) :
            base( message, inner )
        {
            HelpLink = "http://MSDN.Microsoft.com";
            Source = "Exception_Class_Samples";
        }

        // This protected constructor is used for deserialization.
        protected SecondLevelException( SerializationInfo info,
            StreamingContext context ) :
                base( info, context )
        { }

        // GetObjectData performs a custom serialization.
        [SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]
        public override void GetObjectData( SerializationInfo info,
            StreamingContext context )
        {
            // Change the case of two properties, and then use the
            // method of the base class.
            HelpLink = HelpLink.ToLower( );
            Source = Source.ToUpper( );

            base.GetObjectData( info, context );
        }
    }

    class SerializationDemo
    {
        public static void Main()
        {
            Console.WriteLine(
                "This example of the Exception constructor " +
                "and Exception.GetObjectData\nwith Serialization" +
                "Info and StreamingContext parameters " +
                "generates \nthe following output.\n" );

            try
            {
                // This code forces a division by 0 and catches the
                // resulting exception.
                try
                {
                    int  zero = 0;
                    int  ecks = 1 / zero;
                }
                catch( Exception ex )
                {
                    // Create a new exception to throw again.
                    SecondLevelException newExcept =
                        new SecondLevelException(
                            "Forced a division by 0 and threw " +
                            "another exception.", ex );

                    Console.WriteLine(
                        "Forced a division by 0, caught the " +
                        "resulting exception, \n" +
                        "and created a derived exception:\n" );
                    Console.WriteLine( "HelpLink: {0}",
                        newExcept.HelpLink );
                    Console.WriteLine( "Source:   {0}",
                        newExcept.Source );

                    // This FileStream is used for the serialization.
                    FileStream stream =
                        new FileStream( "NewException.dat",
                            FileMode.Create );

                    try
                    {
                        // Serialize the derived exception.
                        SoapFormatter formatter =
                            new SoapFormatter( null,
                                new StreamingContext(
                                    StreamingContextStates.File ) );
                        formatter.Serialize( stream, newExcept );

                        // Rewind the stream and deserialize the
                        // exception.
                        stream.Position = 0;
                        SecondLevelException deserExcept =
                            (SecondLevelException)
                                formatter.Deserialize( stream );

                        Console.WriteLine(
                            "\nSerialized the exception, and then " +
                            "deserialized the resulting stream " +
                            "into a \nnew exception. " +
                            "The deserialization changed the case " +
                            "of certain properties:\n" );

                        // Throw the deserialized exception again.
                        throw deserExcept;
                    }
                    catch( SerializationException se )
                    {
                        Console.WriteLine( "Failed to serialize: {0}",
                            se.ToString( ) );
                    }
                    finally
                    {
                        stream.Close( );
                    }
                }
            }
            catch( Exception ex )
            {
                Console.WriteLine( "HelpLink: {0}", ex.HelpLink );
                Console.WriteLine( "Source:   {0}", ex.Source );

                Console.WriteLine( );
                Console.WriteLine( ex.ToString( ) );
            }
        }
    }
}

/*
This example of the Exception constructor and Exception.GetObjectData
with SerializationInfo and StreamingContext parameters generates
the following output.

Forced a division by 0, caught the resulting exception,
and created a derived exception:

HelpLink: http://MSDN.Microsoft.com
Source:   Exception_Class_Samples

Serialized the exception, and then deserialized the resulting stream into a
new exception. The deserialization changed the case of certain properties:

HelpLink: http://msdn.microsoft.com
Source:   EXCEPTION_CLASS_SAMPLES

NDP_UE_CS.SecondLevelException: Forced a division by 0 and threw another except
ion. ---> System.DivideByZeroException: Attempted to divide by zero.
   at NDP_UE_CS.SerializationDemo.Main()
   --- End of inner exception stack trace ---
   at NDP_UE_CS.SerializationDemo.Main()
*/

// Example for the Exception( SerializationInfo, StreamingContext )
// constructor and the Exception.GetObjectData( SerializationInfo,
// StreamingContext ) method.
#using <System.Runtime.Serialization.Formatters.Soap.dll>

using namespace System;
using namespace System::IO;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Formatters::Soap;

// Define a serializable derived exception class.

[Serializable]
ref class SecondLevelException: public Exception, public ISerializable
{
public:

   // This public constructor is used by class instantiators.
   SecondLevelException( String^ message, Exception^ inner )
      : Exception( message, inner )
   {
      HelpLink = "http://MSDN.Microsoft.com";
      Source = "Exception_Class_Samples";
   }

protected:

   // This protected constructor is used for deserialization.
   SecondLevelException( SerializationInfo^ info, StreamingContext context )
      : Exception( info, context )
   {}

public:

   // GetObjectData performs a custom serialization.
   [System::Security::Permissions::SecurityPermissionAttribute
   (System::Security::Permissions::SecurityAction::LinkDemand,
   Flags=System::Security::Permissions::SecurityPermissionFlag::SerializationFormatter)]
   virtual void GetObjectData( SerializationInfo^ info, StreamingContext context ) override
   {

      // Change the case of two properties, and then use the
      // method of the base class.
      HelpLink = HelpLink->ToLower();
      Source = Source->ToUpper();
      Exception::GetObjectData( info, context );
   }

};

int main()
{
   Console::WriteLine( "This example of the Exception constructor "
   "and Exception.GetObjectData\nwith Serialization"
   "Info and StreamingContext parameters "
   "generates \nthe following output.\n" );
   try
   {

      // This code forces a division by 0 and catches the
      // resulting exception.
      try
      {
         int zero = 0;
         int ecks = 1 / zero;
      }
      catch ( Exception^ ex )
      {

         // Create a new exception to throw again.
         SecondLevelException^ newExcept = gcnew SecondLevelException( "Forced a division by 0 and threw "
         "another exception.",ex );
         Console::WriteLine( "Forced a division by 0, caught the "
         "resulting exception, \n"
         "and created a derived exception:\n" );
         Console::WriteLine( "HelpLink: {0}", newExcept->HelpLink );
         Console::WriteLine( "Source:   {0}", newExcept->Source );

         // This FileStream is used for the serialization.
         FileStream^ stream = gcnew FileStream( "NewException.dat",FileMode::Create );
         try
         {

            // Serialize the derived exception.
            SoapFormatter^ formatter = gcnew SoapFormatter( nullptr,StreamingContext(StreamingContextStates::File) );
            formatter->Serialize( stream, newExcept );

            // Rewind the stream and deserialize the
            // exception.
            stream->Position = 0;
            SecondLevelException^ deserExcept = dynamic_cast<SecondLevelException^>(formatter->Deserialize( stream ));
            Console::WriteLine( "\nSerialized the exception, and then "
            "deserialized the resulting stream "
            "into a \nnew exception. "
            "The deserialization changed the case "
            "of certain properties:\n" );

            // Throw the deserialized exception again.
            throw deserExcept;
         }
         catch ( SerializationException^ se )
         {
            Console::WriteLine( "Failed to serialize: {0}", se->ToString() );
         }
         finally
         {
            stream->Close();
         }

      }

   }
   catch ( Exception^ ex )
   {
      Console::WriteLine( "HelpLink: {0}", ex->HelpLink );
      Console::WriteLine( "Source:   {0}", ex->Source );
      Console::WriteLine();
      Console::WriteLine( ex->ToString() );
   }

}

/*
This example of the Exception constructor and Exception.GetObjectData
with SerializationInfo and StreamingContext parameters generates
the following output.

Forced a division by 0, caught the resulting exception,
and created a derived exception:

HelpLink: http://MSDN.Microsoft.com
Source:   Exception_Class_Samples

Serialized the exception, and then deserialized the resulting stream into a
new exception. The deserialization changed the case of certain properties:

HelpLink: http://msdn.microsoft.com
Source:   EXCEPTION_CLASS_SAMPLES

SecondLevelException: Forced a division by 0 and threw another exception. ---> S
ystem.DivideByZeroException: Attempted to divide by zero.
   at main()
   --- End of inner exception stack trace ---
   at main()

*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
System.Web 命名空间
SerializationInfo


HttpParseException 属性

HttpParseException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpParseException 类

HttpParseException 类型公开以下成员。

名称 说明
页首

参考

HttpParseException 类
System.Web 命名空间


HttpParseException ..::.FileName 属性

HttpParseException
.
.
::
.
FileName 属性
HttpParseException 类

获取发生错误时正在分析的文件的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property FileName As String
    Get
public string FileName { get; }
public:
property String^ FileName {
    String^ get ();
}
member FileName : string

属性值

类型： System String
在错误发生时正在分析的源文件的物理路径；否则，如果物理路径为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

FileName 属性返回有错误的源文件的物理路径，除非该物理路径为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），在这种情况下，它将返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpParseException 类
HttpParseException 成员
System.Web 命名空间


HttpParseException ..::.Line 属性

HttpParseException
.
.
::
.
Line 属性
HttpParseException 类

获取发生错误时正在分析的行的编号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Line As Integer
    Get
public int Line { get; }
public:
property int Line {
    int get ();
}
member Line : int

属性值

类型： System Int32
发生错误时正在分析的行的编号。此值是基于 1 的，不是基于 0 的。 发生错误时正在分析的行的编号。此值是基于 1 的，不是基于 0 的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpParseException 类
HttpParseException 成员
System.Web 命名空间


HttpParseException ..::.ParserErrors 属性

HttpParseException
.
.
::
.
ParserErrors 属性
HttpParseException 类

获取当前异常的分析器错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ParserErrors As ParserErrorCollection
    Get
public ParserErrorCollection ParserErrors { get; }
public:
property ParserErrorCollection^ ParserErrors {
    ParserErrorCollection^ get ();
}
member ParserErrors : ParserErrorCollection

属性值

类型： System.Web ParserErrorCollection
一个当前异常的分析器错误集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
System.Web 命名空间


HttpParseException ..::.VirtualPath 属性

HttpParseException
.
.
::
.
VirtualPath 属性
HttpParseException 类

获取生成错误的源文件的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property VirtualPath As String
    Get
public string VirtualPath { get; }
public:
property String^ VirtualPath {
    String^ get ();
}
member VirtualPath : string

属性值

类型： System String
生成该错误的源文件的虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpParseException 类
HttpParseException 成员
System.Web 命名空间


HttpParseException 事件

HttpParseException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpParseException 类

HttpParseException 类型公开以下成员。

名称 说明
页首

参考

HttpParseException 类
System.Web 命名空间


HttpPostedFile 类

HttpPostedFile 类
成员

提供对客户端已上载的单独文件的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpPostedFile
public sealed class HttpPostedFile
public ref class HttpPostedFile sealed
[<SealedAttribute>]
type HttpPostedFile =  class end

HttpFileCollection 类提供对作为一个文件集合从客户端上载的所有文件的访问。HttpPostedFile 类提供用于获取关于单独的文件的信息和读取及保存文件的属性和方法。 HttpFileCollection 类提供对作为一个文件集合从客户端上载的所有文件的访问。HttpPostedFile 类提供用于获取关于单独的文件的信息和读取及保存文件的属性和方法。

HtmlInputFile 控件可用于选择文件和从客户端上载文件。

文件以 MIME“multipart/form-data”格式上载。默认情况下，大于 256 KB 的所有请求（包括表单字段和上载的文件）都缓冲到磁盘而不是保存在服务器内存中。 文件以 MIME“multipart/form-data”格式上载。默认情况下，大于 256 KB 的所有请求（包括表单字段和上载的文件）都缓冲到磁盘而不是保存在服务器内存中。

可以通过访问 MaxRequestLength 属性或通过设置 Machine.config 或 Web.config 文件中 httpRuntime 元素（ASP.NET 设置架构） 元素的 maxRequestLength 特性来指定允许的最大请求大小。默认值为 4 MB。 可以通过访问 MaxRequestLength 属性或通过设置 Machine.config 或 Web.config 文件中 httpRuntime 元素（ASP.NET 设置架构） 元素的 maxRequestLength 特性来指定允许的最大请求大小。默认值为 4 MB。

在服务器内存中为请求缓冲的数据量（包括文件上载）可通过访问 RequestLengthDiskThreshold 属性或通过设置 Machine.config 或 Web.config 文件中 httpRuntime 元素（ASP.NET 设置架构） 元素的 requestLengthDiskThreshold 特性来指定。

通过调整 MaxRequestLength 和 RequestLengthDiskThreshold 属性，您可以精细调整服务器的性能。此外，应该考虑设置 MaxRequestLength 以防止向服务器发送大型文件的用户导致的拒绝服务攻击。 通过调整 MaxRequestLength 和 RequestLengthDiskThreshold 属性，您可以精细调整服务器的性能。此外，应该考虑设置 MaxRequestLength 以防止向服务器发送大型文件的用户导致的拒绝服务攻击。

分配用于缓冲上载文件的服务器资源将在请求结束时被销毁。若要保存文件的持久副本，请使用 SaveAs 方法。 分配用于缓冲上载文件的服务器资源将在请求结束时被销毁。若要保存文件的持久副本，请使用 SaveAs 方法。

System.Web System.Web..::.HttpPostedFileHttpPostedFile
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpPostedFile 成员
System.Web 命名空间
HtmlInputFile
HttpFileCollection

其他资源

httpRuntime 元素（ASP.NET 设置架构）


HttpPostedFile 成员

HttpPostedFile 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFile 类

提供对客户端已上载的单独文件的访问。

HttpPostedFile 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpPostedFile 类
System.Web 命名空间


HttpPostedFile 方法

HttpPostedFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFile 类

HttpPostedFile 类型公开以下成员。

名称 说明
页首

参考

HttpPostedFile 类
System.Web 命名空间


HttpPostedFile ..::.SaveAs 方法

HttpPostedFile
.
.
::
.
SaveAs 方法
HttpPostedFile 类

保存上载文件的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SaveAs ( _
    filename As String _
)
public void SaveAs(
    string filename
)
public:
void SaveAs(
    String^ filename
)
member SaveAs :
        filename:string -> unit

参数

filename
类型： System String
保存的文件的名称。
异常 | 条件
HttpException | HttpRuntimeSection 对象的 RequireRootedSaveAsPath 属性设置为 true，但 filename 不是绝对路径。

请求的最大允许大小（包括上载文件）默认为 4 MB。可在 Machine.config 或 Web.config 文件的 httpRuntime 元素（ASP.NET 设置架构） 元素的 maxRequestLength 特性中指定最大请求大小。可使用 Web.config 文件中的 location 元素（ASP.NET 设置架构） 元素指定特定页的最大请求大小。 请求的最大允许大小（包括上载文件）默认为 4 MB。可在 Machine.config 或 Web.config 文件的 httpRuntime 元素（ASP.NET 设置架构） 元素的 maxRequestLength 特性中指定最大请求大小。可使用 Web.config 文件中的 location 元素（ASP.NET 设置架构） 元素指定特定页的最大请求大小。 请求的最大允许大小（包括上载文件）默认为 4 MB。可在 Machine.config 或 Web.config 文件的 httpRuntime 元素（ASP.NET 设置架构） 元素的 maxRequestLength 特性中指定最大请求大小。可使用 Web.config 文件中的 location 元素（ASP.NET 设置架构） 元素指定特定页的最大请求大小。

下面的代码示例演示如何将客户端上载的所有文件保存到 Web 服务器的本地磁盘上的 C:\TempFiles 文件夹中。

Dim Loop1 As Integer
 Dim TempFileName As String
 Dim MyFileCollection As HttpFileCollection = Request.Files

 For Loop1 = 0 To MyFileCollection.Count - 1
    ' Create a new file name.
    TempFileName = "C:\TempFiles\File_" & CStr(Loop1)
    ' Save the file.
    MyFileCollection(Loop1).SaveAs(TempFileName)
 Next Loop1

String TempFileName;
 HttpFileCollection MyFileCollection = Request.Files;

 for (int Loop1 = 0; Loop1 < MyFileCollection.Count; Loop1++)
 {
    // Create a new file name.
    TempFileName = "C:\\TempFiles\\File_" + Loop1.ToString();
    // Save the file.
    MyFileCollection[Loop1].SaveAs(TempFileName);
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpPostedFile 类
HttpPostedFile 成员
System.Web 命名空间

其他资源

httpRuntime 元素（ASP.NET 设置架构）
location 元素（ASP.NET 设置架构）


HttpPostedFile 属性

HttpPostedFile 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFile 类

HttpPostedFile 类型公开以下成员。

名称 说明
页首

参考

HttpPostedFile 类
System.Web 命名空间


HttpPostedFile ..::.ContentLength 属性

HttpPostedFile
.
.
::
.
ContentLength 属性
HttpPostedFile 类

获取上载文件的大小（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ContentLength As Integer
    Get
public int ContentLength { get; }
public:
property int ContentLength {
    int get ();
}
member ContentLength : int

属性值

类型： System Int32
文件长度（以字节为单位）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpPostedFile 类
HttpPostedFile 成员
System.Web 命名空间
ContentType


HttpPostedFile ..::.ContentType 属性

HttpPostedFile
.
.
::
.
ContentType 属性
HttpPostedFile 类

获取客户端发送的文件的 MIME 内容类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ContentType As String
    Get
public string ContentType { get; }
public:
property String^ ContentType {
    String^ get ();
}
member ContentType : string

属性值

类型： System String
上载文件的 MIME 内容类型。

下面的代码示例演示如何循环访问上载文件集合中的所有文件，并在文件的 MIME 类型为 US-ASCII 时执行操作。

Dim Loop1 As Integer
 Dim MyFileCollection As HttpFileCollection = Request.Files

 For Loop1 = 0 To MyFileCollection.Count - 1
    If MyFileCollection(Loop1).ContentType = "video/mpeg" Then
       '...
    End If
 Next Loop1

HttpFileCollection MyFileCollection = Request.Files;

 for (int Loop1 = 0; Loop1 < MyFileCollection.Count; Loop1++)
 {
    if (MyFileCollection[Loop1].ContentType == "video/mpeg")
    {
       //...
    }
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpPostedFile 类
HttpPostedFile 成员
System.Web 命名空间
FileName
ContentLength


HttpPostedFile ..::.FileName 属性

HttpPostedFile
.
.
::
.
FileName 属性
HttpPostedFile 类

获取客户端上的文件的完全限定名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property FileName As String
    Get
public string FileName { get; }
public:
property String^ FileName {
    String^ get ();
}
member FileName : string

属性值

类型： System String
客户端的文件的名称，包含目录路径。

下面的代码示例演示如何将一个上载文件（文件集合中的第一个文件）的名称分配给一个字符串变量。

Dim MyFileColl As HttpFileCollection = Request.Files
 Dim MyPostedFile As HttpPostedFile = MyFileColl.Get(0)
 Dim MyFileName As String = MyPostedFile.FileName

HttpFileCollection MyFileColl = Request.Files;
 HttpPostedFile MyPostedFile = MyFileColl.Get(0);
 String MyFileName = MyPostedFile.FileName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpPostedFile 类
HttpPostedFile 成员
System.Web 命名空间
ContentType


HttpPostedFile ..::.InputStream 属性

HttpPostedFile
.
.
::
.
InputStream 属性
HttpPostedFile 类

获取一个 Stream 对象，该对象指向一个上载文件，以准备读取该文件的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property InputStream As Stream
    Get
public Stream InputStream { get; }
public:
property Stream^ InputStream {
    Stream^ get ();
}
member InputStream : Stream

属性值

类型： System.IO Stream
指向文件的 Stream。

下面的代码示例演示如何将客户端文件集合中的第一个文件的内容读取到一个字节数组中，并将该字节数组复制到一个字符串。

Imports System
Imports System.Web
Imports System.Web.UI

Public Class Page1: Inherits Page

 Protected Loop1 As Integer
 Protected MyString As String

  Protected Sub Page_Load(sender As Object, e As EventArgs)

    Dim MyFileCollection As HttpFileCollection
    Dim MyFile As HttpPostedFile
    Dim FileLen As Integer
    Dim MyString As String
    Dim MyStream As System.IO.Stream

    MyFileCollection = Request.Files
    MyFile = MyFileCollection(0)

    FileLen = MyFile.ContentLength
    Dim Input(FileLen) As Byte

    ' Initialize the stream.
    MyStream = MyFile.InputStream

    ' Read the file into the byte array.
    MyStream.Read(input, 0, FileLen)

    ' Copy the byte array into a string.
    For Loop1 = 0 To FileLen-1
      MyString = MyString & Input(Loop1).ToString()
    Next Loop1

 End Sub

End Class

using System;
using System.Web;
using System.Web.UI;

public class Page1: Page
{
 protected string MyString;
 private void Page_Load(Object sender, EventArgs e)
 {
   HttpFileCollection MyFileCollection;
   HttpPostedFile MyFile;
   int FileLen;
   System.IO.Stream MyStream;

   MyFileCollection = Request.Files;
   MyFile = MyFileCollection[0];

   FileLen = MyFile.ContentLength;
   byte[] input = new byte[FileLen];

   // Initialize the stream.
   MyStream = MyFile.InputStream;

   // Read the file into the byte array.
   MyStream.Read(input, 0, FileLen);

   // Copy the byte array into a string.
   for (int Loop1 = 0; Loop1 < FileLen; Loop1++)
     MyString = MyString + input[Loop1].ToString();

 }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpPostedFile 类
HttpPostedFile 成员
System.Web 命名空间


HttpPostedFileBase 类

HttpPostedFileBase 类
成员

充当类的基类，这些类提供对客户端已上载的单独文件的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpPostedFileBase
public abstract class HttpPostedFileBase
public ref class HttpPostedFileBase abstract
[<AbstractClassAttribute>]
type HttpPostedFileBase =  class end

HttpPostedFileBase 类为抽象类，该类包含的成员与 HttpPostedFile 类相同。使用 HttpPostedFileBase 类可以创建一些派生类，这些派生类与 HttpPostedFile 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpPostedFileBase 类为抽象类，该类包含的成员与 HttpPostedFile 类相同。使用 HttpPostedFileBase 类可以创建一些派生类，这些派生类与 HttpPostedFile 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpPostedFileBase 类为抽象类，该类包含的成员与 HttpPostedFile 类相同。使用 HttpPostedFileBase 类可以创建一些派生类，这些派生类与 HttpPostedFile 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpPostedFileWrapper 类是从 HttpPostedFileBase 类派生的。HttpPostedFileWrapper 类用作 HttpPostedFile 类的包装。在运行时，通常使用 HttpPostedFileWrapper 类的实例调用 HttpPostedFile 对象的成员。 HttpPostedFileWrapper 类是从 HttpPostedFileBase 类派生的。HttpPostedFileWrapper 类用作 HttpPostedFile 类的包装。在运行时，通常使用 HttpPostedFileWrapper 类的实例调用 HttpPostedFile 对象的成员。 HttpPostedFileWrapper 类是从 HttpPostedFileBase 类派生的。HttpPostedFileWrapper 类用作 HttpPostedFile 类的包装。在运行时，通常使用 HttpPostedFileWrapper 类的实例调用 HttpPostedFile 对象的成员。

System.Web System.Web..::.HttpPostedFileBaseHttpPostedFileBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileBase 成员

HttpPostedFileBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFileBase 类

充当类的基类，这些类提供对客户端已上载的单独文件的访问。

HttpPostedFileBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpPostedFileBase 类
System.Web 命名空间


HttpPostedFileBase 构造函数

HttpPostedFileBase 构造函数
HttpPostedFileBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpPostedFileBase()
protected:
HttpPostedFileBase()
new : unit -> HttpPostedFileBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 类
HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileBase 方法

HttpPostedFileBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFileBase 类

HttpPostedFileBase 类型公开以下成员。

名称 说明
页首

参考

HttpPostedFileBase 类
System.Web 命名空间


HttpPostedFileBase ..::.SaveAs 方法

HttpPostedFileBase
.
.
::
.
SaveAs 方法
HttpPostedFileBase 类

在派生类中重写时，保存上载文件的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SaveAs ( _
    filename As String _
)
public virtual void SaveAs(
    string filename
)
public:
virtual void SaveAs(
    String^ filename
)
abstract SaveAs :
        filename:string -> unit
override SaveAs :
        filename:string -> unit

参数

filename
类型： System String
待保存文件的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 类
HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileBase 属性

HttpPostedFileBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFileBase 类

HttpPostedFileBase 类型公开以下成员。

名称 说明
页首

参考

HttpPostedFileBase 类
System.Web 命名空间


HttpPostedFileBase ..::.ContentLength 属性

HttpPostedFileBase
.
.
::
.
ContentLength 属性
HttpPostedFileBase 类

在派生类中重写时，获取上载文件的大小（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ContentLength As Integer
    Get
public virtual int ContentLength { get; }
public:
virtual property int ContentLength {
    int get ();
}
abstract ContentLength : int
override ContentLength : int

属性值

类型： System Int32
文件的长度（以字节为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 类
HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileBase ..::.ContentType 属性

HttpPostedFileBase
.
.
::
.
ContentType 属性
HttpPostedFileBase 类

在派生类中重写时，获取上载文件的 MIME 内容类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ContentType As String
    Get
public virtual string ContentType { get; }
public:
virtual property String^ ContentType {
    String^ get ();
}
abstract ContentType : string
override ContentType : string

属性值

类型： System String
文件的 MIME 内容类型。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 类
HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileBase ..::.FileName 属性

HttpPostedFileBase
.
.
::
.
FileName 属性
HttpPostedFileBase 类

在派生类中重写时，获取客户端上文件的完全限定名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property FileName As String
    Get
public virtual string FileName { get; }
public:
virtual property String^ FileName {
    String^ get ();
}
abstract FileName : string
override FileName : string

属性值

类型： System String
客户端上文件的名称，包括目录路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 类
HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileBase ..::.InputStream 属性

HttpPostedFileBase
.
.
::
.
InputStream 属性
HttpPostedFileBase 类

在派生类中重写时，获取一个 Stream 对象，该对象指向一个上载文件，以准备读取该文件的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property InputStream As Stream
    Get
public virtual Stream InputStream { get; }
public:
virtual property Stream^ InputStream {
    Stream^ get ();
}
abstract InputStream : Stream
override InputStream : Stream

属性值

类型： System.IO Stream
用于读取文件的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileBase 类
HttpPostedFileBase 成员
System.Web 命名空间


HttpPostedFileWrapper 类

HttpPostedFileWrapper 类
成员

封装 HTTP 内部对象，该对象提供对客户端已上载的单独文件的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpPostedFileWrapper _
    Inherits HttpPostedFileBase
public class HttpPostedFileWrapper : HttpPostedFileBase
public ref class HttpPostedFileWrapper : public HttpPostedFileBase
type HttpPostedFileWrapper =
    class
        inherit HttpPostedFileBase
    end

HttpPostedFileWrapper 类从 HttpPostedFileBase 类派生，并用作 HttpPostedFile 类的包装。此类公开 HttpPostedFile 类的功能，同时还公开 HttpPostedFileBase 类型。使用 HttpPostedFileBase 类可以将应用程序中 HttpPostedFile 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpPostedFileWrapper 类从 HttpPostedFileBase 类派生，并用作 HttpPostedFile 类的包装。此类公开 HttpPostedFile 类的功能，同时还公开 HttpPostedFileBase 类型。使用 HttpPostedFileBase 类可以将应用程序中 HttpPostedFile 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpPostedFileWrapper 类从 HttpPostedFileBase 类派生，并用作 HttpPostedFile 类的包装。此类公开 HttpPostedFile 类的功能，同时还公开 HttpPostedFileBase 类型。使用 HttpPostedFileBase 类可以将应用程序中 HttpPostedFile 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpPostedFileWrapperHttpPostedFileWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 成员
System.Web 命名空间


HttpPostedFileWrapper 成员

HttpPostedFileWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFileWrapper 类

封装 HTTP 内部对象，该对象提供对客户端已上载的单独文件的访问。

HttpPostedFileWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpPostedFileWrapper 类
System.Web 命名空间


HttpPostedFileWrapper 构造函数

HttpPostedFileWrapper 构造函数
HttpPostedFileWrapper 类

初始化 HttpPostedFileWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpPostedFile As HttpPostedFile _
)
public HttpPostedFileWrapper(
    HttpPostedFile httpPostedFile
)
public:
HttpPostedFileWrapper(
    HttpPostedFile^ httpPostedFile
)
new :
        httpPostedFile:HttpPostedFile -> HttpPostedFileWrapper

参数

httpPostedFile
类型： System.Web HttpPostedFile
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpApplicationState 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 类
HttpPostedFileWrapper 成员
System.Web 命名空间


HttpPostedFileWrapper 方法

HttpPostedFileWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFileWrapper 类

HttpPostedFileWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpPostedFileWrapper 类
System.Web 命名空间


HttpPostedFileWrapper ..::.SaveAs 方法

HttpPostedFileWrapper
.
.
::
.
SaveAs 方法
HttpPostedFileWrapper 类

保存上载文件的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SaveAs ( _
    filename As String _
)
public override void SaveAs(
    string filename
)
public:
virtual void SaveAs(
    String^ filename
) override
abstract SaveAs :
        filename:string -> unit
override SaveAs :
        filename:string -> unit

参数

filename
类型： System String
待保存文件的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 类
HttpPostedFileWrapper 成员
System.Web 命名空间


HttpPostedFileWrapper 属性

HttpPostedFileWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpPostedFileWrapper 类

HttpPostedFileWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpPostedFileWrapper 类
System.Web 命名空间


HttpPostedFileWrapper ..::.ContentLength 属性

HttpPostedFileWrapper
.
.
::
.
ContentLength 属性
HttpPostedFileWrapper 类

获取上载文件的大小（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ContentLength As Integer
    Get
public override int ContentLength { get; }
public:
virtual property int ContentLength {
    int get () override;
}
abstract ContentLength : int
override ContentLength : int

属性值

类型： System Int32
文件的长度（以字节为单位）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 类
HttpPostedFileWrapper 成员
System.Web 命名空间


HttpPostedFileWrapper ..::.ContentType 属性

HttpPostedFileWrapper
.
.
::
.
ContentType 属性
HttpPostedFileWrapper 类

获取上载文件的 MIME 内容类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ContentType As String
    Get
public override string ContentType { get; }
public:
virtual property String^ ContentType {
    String^ get () override;
}
abstract ContentType : string
override ContentType : string

属性值

类型： System String
文件的 MIME 内容类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 类
HttpPostedFileWrapper 成员
System.Web 命名空间


HttpPostedFileWrapper ..::.FileName 属性

HttpPostedFileWrapper
.
.
::
.
FileName 属性
HttpPostedFileWrapper 类

获取客户端上的文件的完全限定名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property FileName As String
    Get
public override string FileName { get; }
public:
virtual property String^ FileName {
    String^ get () override;
}
abstract FileName : string
override FileName : string

属性值

类型： System String
客户端上文件的名称，包括目录路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 类
HttpPostedFileWrapper 成员
System.Web 命名空间


HttpPostedFileWrapper ..::.InputStream 属性

HttpPostedFileWrapper
.
.
::
.
InputStream 属性
HttpPostedFileWrapper 类

获取一个 Stream 对象，该对象指向一个上载文件，以准备读取该文件的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property InputStream As Stream
    Get
public override Stream InputStream { get; }
public:
virtual property Stream^ InputStream {
    Stream^ get () override;
}
abstract InputStream : Stream
override InputStream : Stream

属性值

类型： System.IO Stream
用于读取文件的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpPostedFileWrapper 类
HttpPostedFileWrapper 成员
System.Web 命名空间


HttpRequest 类

HttpRequest 类
成员

使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpRequest
public sealed class HttpRequest
public ref class HttpRequest sealed
[<SealedAttribute>]
type HttpRequest =  class end

HttpRequest 类的方法和属性通过 HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性公开。

说明 说明

要支持 HttpRequest 类的成员使用 Unicode，需要安装 IIS 6.0 或更高版本。

下面的示例使用 StreamWriter 类将若干 HttpRequest 类属性值的值写入文件。对于是字符串类型的属性，属性值被写入文件时将被编码为 HTML。将遍历表示集合的各个属性，并且将这些属性包含的每个键/值对写入文件。在 ASP.NET 标记中，Request 关键字引用 HttpRequest 对象。 下面的示例使用 StreamWriter 类将若干 HttpRequest 类属性值的值写入文件。对于是字符串类型的属性，属性值被写入文件时将被编码为 HTML。将遍历表示集合的各个属性，并且将这些属性包含的每个键/值对写入文件。在 ASP.NET 标记中，Request 关键字引用 HttpRequest 对象。 下面的示例使用 StreamWriter 类将若干 HttpRequest 类属性值的值写入文件。对于是字符串类型的属性，属性值被写入文件时将被编码为 HTML。将遍历表示集合的各个属性，并且将这些属性包含的每个键/值对写入文件。在 ASP.NET 标记中，Request 关键字引用 HttpRequest 对象。 下面的示例使用 StreamWriter 类将若干 HttpRequest 类属性值的值写入文件。对于是字符串类型的属性，属性值被写入文件时将被编码为 HTML。将遍历表示集合的各个属性，并且将这些属性包含的每个键/值对写入文件。在 ASP.NET 标记中，Request 关键字引用 HttpRequest 对象。

安全说明 安全说明

此示例具有一个文本框，用于接受用户输入，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例具有一个文本框，用于接受用户输入，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例具有一个文本框，用于接受用户输入，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<%@ Page Language="VB" %>
<%@ import Namespace="System.Threading" %>
<%@ import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    '  NOTE: To use this sample, create a c:\temp\CS folder,
    '  add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
    '  in IIS 6.x NETWORK SERVICE), and give it write permissions
    '  to the folder.

    Private Const INFO_DIR As String = "c:\temp\VB\RequestDetails"
    Public Shared requestCount As Integer

    Private Sub Page_Load(sender As Object, e As System.EventArgs)

        ' Create a variable to use when iterating
        ' through the UserLanguages property.
        Dim langCount As Integer

        ' Create a counter to name the file.
        Dim requestNumber As Integer = _
          Interlocked.Increment(requestCount)

        ' Create the file to contain information about the request.
        Dim strFilePath As String = INFO_DIR & requestNumber.ToString() & ".txt"
        Dim sw As StreamWriter = File.CreateText(strFilePath)

        Try

            ' Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
            sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
            sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
            sw.WriteLine(Server.HtmlEncode(Request.FilePath))
            sw.WriteLine(Server.HtmlEncode(Request.Path))

            ' Iterate through the Form collection and write
            ' the values to the file with HTML encoding.
            For Each s As String In Request.Form
                sw.WriteLine("Form: " & Server.HtmlEncode(s))
            Next s

            ' Write the PathInfo property value
            ' or a string if it is empty.
            If Request.PathInfo = String.Empty Then
                sw.WriteLine("The PathInfo property contains no information.")
            Else
                sw.WriteLine(Server.HtmlEncode(Request.PathInfo))
            End If

            ' Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath))
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath))
            sw.WriteLine(Server.HtmlEncode(Request.RawUrl))

            ' Write a message to the file dependent upon
            ' the value of the TotalBytes property.
            If Request.TotalBytes > 1000 Then
                sw.WriteLine("The request is 1KB or greater")
            Else
                sw.WriteLine("The request is less than 1KB")
            End If

            ' Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.RequestType))
            sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
            sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
            sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))

            ' Iterate through the UserLanguages collection and
            ' write its HTML encoded values to the file.
            For langCount = 0 To Request.UserLanguages.Length - 1
                sw.WriteLine("User Language " & langCount.ToString() & _
                 ": " & Server.HtmlEncode( _
                     Request.UserLanguages(langCount)))
            Next

        Finally
            ' Close the stream to the file.
            sw.Close()
        End Try

        lblInfoSent.Text = _
         "Information about this request has been sent to a file."
    End Sub 'Page_Load

    Private Sub btnSendInfo_Click(sender As Object, e As System.EventArgs)
        lblInfoSent.Text = _
         "Hello, " & Server.HtmlEncode(txtBoxName.Text) & _
          ". You have created a new  request info file."
    End Sub 'btnSendInfo_Click

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p>
        </p>
        <p>
            Enter your name here:
            <asp:TextBox id="txtBoxName" runat="server"></asp:TextBox>
        </p>
        <p>
            <asp:Button id="btnSendInfo" onclick="btnSendInfo_Click" runat="server" Text="Click Here"></asp:Button>
        </p>
        <p>
            <asp:Label id="lblInfoSent" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ import Namespace="System.Threading" %>
<%@ import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    /* NOTE: To use this sample, create a c:\temp\CS folder,
    *  add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
    *  in IIS 6.x NETWORK SERVICE), and give it write permissions
    *  to the folder.*/

    private const string INFO_DIR = @"c:\temp\CS\RequestDetails";
    public static int requestCount;

    private void Page_Load(object sender, System.EventArgs e)
    {

        // Create a variable to use when iterating
        // through the UserLanguages property.
        int langCount;

        int requestNumber = Interlocked.Increment(ref requestCount);

        // Create the file to contain information about the request.
        string strFilePath = INFO_DIR + requestNumber.ToString() + @".txt";

        StreamWriter sw = File.CreateText(strFilePath);

        try
        {
            // Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
            sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
            sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
            sw.WriteLine(Server.HtmlEncode(Request.FilePath));
            sw.WriteLine(Server.HtmlEncode(Request.Path));

            // Iterate through the Form collection and write
            // the values to the file with HTML encoding.
            // String[] formArray = Request.Form.AllKeys;
            foreach (string s in Request.Form)
            {
                sw.WriteLine("Form: " + Server.HtmlEncode(s));
            }

            // Write the PathInfo property value
            // or a string if it is empty.
            if (Request.PathInfo == String.Empty)
            {
                sw.WriteLine("The PathInfo property contains no information.");
            }
            else
            {
                sw.WriteLine(Server.HtmlEncode(Request.PathInfo));
            }

            // Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath));
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath));
            sw.WriteLine(Server.HtmlEncode(Request.RawUrl));

            // Write a message to the file dependent upon
            // the value of the TotalBytes property.
            if (Request.TotalBytes > 1000)
            {
                sw.WriteLine("The request is 1KB or greater");
            }
            else
            {
                sw.WriteLine("The request is less than 1KB");
            }

            // Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.RequestType));
            sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
            sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
            sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));

            // Iterate through the UserLanguages collection and
            // write its HTML encoded values to the file.
            for (langCount=0; langCount < Request.UserLanguages.Length; langCount++)
            {
                sw.WriteLine(@"User Language " + langCount +": " + Server.HtmlEncode(Request.UserLanguages[langCount]));
            }
       }

       finally
       {
            // Close the stream to the file.
            sw.Close();
       }

        lblInfoSent.Text = "Information about this request has been sent to a file.";
    }

    private void btnSendInfo_Click(object sender, System.EventArgs e)
    {
        lblInfoSent.Text = "Hello, " + Server.HtmlEncode(txtBoxName.Text) +
          ". You have created a new  request info file.";
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p>
        </p>
        <p>
            Enter your name here:
            <asp:TextBox id="txtBoxName" runat="server"></asp:TextBox>
        </p>
        <p>
            <asp:Button id="btnSendInfo" onclick="btnSendInfo_Click" runat="server" Text="Click Here"></asp:Button>
        </p>
        <p>
            <asp:Label id="lblInfoSent" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>

System.Web System.Web..::.HttpRequestHttpRequest
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 成员
System.Web 命名空间


HttpRequest 成员

HttpRequest 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequest 类

使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。

HttpRequest 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpRequest 类
System.Web 命名空间


HttpRequest 构造函数

HttpRequest 构造函数
HttpRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 HttpRequest 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    filename As String, _
    url As String, _
    queryString As String _
)
public HttpRequest(
    string filename,
    string url,
    string queryString
)
public:
HttpRequest(
    String^ filename,
    String^ url,
    String^ queryString
)
new :
        filename:string *
        url:string *
        queryString:string -> HttpRequest

参数

filename
类型： System String
与请求关联的文件的名称。
url
类型： System String
有关当前请求的 URL 的信息。
queryString
类型： System String
与请求一起发送的整个查询字符串（'?' 之后的所有内容）。

不必创建您自己的 HttpRequest 类的实例。HttpRequest 类的方法和属性通过 HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性公开。 不必创建您自己的 HttpRequest 类的实例。HttpRequest 类的方法和属性通过 HttpApplication、HttpContext、Page 和 UserControl 类的 Request 属性公开。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest 方法

HttpRequest 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequest 类

HttpRequest 类型公开以下成员。

名称 说明
页首

参考

HttpRequest 类
System.Web 命名空间


HttpRequest ..::.BinaryRead 方法

HttpRequest
.
.
::
.
BinaryRead 方法
HttpRequest 类

执行对当前输入流进行指定字节数的二进制读取。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function BinaryRead ( _
    count As Integer _
) As Byte()
public byte[] BinaryRead(
    int count
)
public:
array<unsigned char>^ BinaryRead(
    int count
)
member BinaryRead :
        count:int -> byte[]

参数

count
类型： System Int32
要读取的字节数。

返回值

类型：
array<
System Byte
>
[]
()
[]

字节数组。
异常 | 条件
ArgumentOutOfRangeException | count 为 0。 - 或 - count 大于可用字节数。

BinaryRead 方法是为与 ASP 兼容而提供的。有关更多信息，请参见 在 Microsoft.com 中搜索（将 ASP 页迁移到 ASP.NET）。 BinaryRead 方法是为与 ASP 兼容而提供的。有关更多信息，请参见 在 Microsoft.com 中搜索（将 ASP 页迁移到 ASP.NET）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.GetChannelBindingToken 方法

HttpRequest
.
.
::
.
GetChannelBindingToken 方法
HttpRequest 类

注意：此 API 现在已过时。

改用 HttpChannelBinding 属性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<ObsoleteAttribute("This method is obsolete. Use HttpChannelBinding property instead.")> _
<PermissionSetAttribute(SecurityAction.Demand, Unrestricted := True)> _
Public Sub GetChannelBindingToken ( _
    <OutAttribute> ByRef token As IntPtr, _
    <OutAttribute> ByRef size As Integer _
)
[ObsoleteAttribute("This method is obsolete. Use HttpChannelBinding property instead.")]
[PermissionSetAttribute(SecurityAction.Demand, Unrestricted = true)]
public void GetChannelBindingToken(
    out IntPtr token,
    out int size
)
[ObsoleteAttribute(L"This method is obsolete. Use HttpChannelBinding property instead.")]
[PermissionSetAttribute(SecurityAction::Demand, Unrestricted = true)]
public:
void GetChannelBindingToken(
    [OutAttribute] IntPtr% token,
    [OutAttribute] int% size
)
[<ObsoleteAttribute("This method is obsolete. Use HttpChannelBinding property instead.")>]
[<PermissionSetAttribute(SecurityAction.Demand, Unrestricted = true)>]
member GetChannelBindingToken :
        token:IntPtr byref *
        size:int byref -> unit

参数

token
类型： System IntPtr %
标记。
size
类型： System Int32 %
标记的大小。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

在 4 中过时（编译器警告）

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.InsertEntityBody 方法

HttpRequest
.
.
::
.
InsertEntityBody 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequest 类

为用于将 HTTP 请求实体正文插入内存的 IIS 方法提供托管包装。

名称 说明
页首

InsertEntityBody 方法重载提供对 IIS 7 IHttpRequest::InsertEntityBody 方法的托管访问。IIS 方法将 HTTP 请求实体正文（客户端发布的数据）插入到内存中。这非常有用，因为 IIS 在读取请求实体之后不保留它的副本。InsertEntityBody 方法创建 HTTP 请求实体数据的副本，将其提供给 IIS 进行其他自定义处理。 InsertEntityBody 方法重载提供对 IIS 7 IHttpRequest::InsertEntityBody 方法的托管访问。IIS 方法将 HTTP 请求实体正文（客户端发布的数据）插入到内存中。这非常有用，因为 IIS 在读取请求实体之后不保留它的副本。InsertEntityBody 方法创建 HTTP 请求实体数据的副本，将其提供给 IIS 进行其他自定义处理。 InsertEntityBody 方法重载提供对 IIS 7 IHttpRequest::InsertEntityBody 方法的托管访问。IIS 方法将 HTTP 请求实体正文（客户端发布的数据）插入到内存中。这非常有用，因为 IIS 在读取请求实体之后不保留它的副本。InsertEntityBody 方法创建 HTTP 请求实体数据的副本，将其提供给 IIS 进行其他自定义处理。 InsertEntityBody 方法重载提供对 IIS 7 IHttpRequest::InsertEntityBody 方法的托管访问。IIS 方法将 HTTP 请求实体正文（客户端发布的数据）插入到内存中。这非常有用，因为 IIS 在读取请求实体之后不保留它的副本。InsertEntityBody 方法创建 HTTP 请求实体数据的副本，将其提供给 IIS 进行其他自定义处理。

说明 说明

InsertEntityBody 方法重载仅在 IIS 7.0 或更高版本上适用，因为在 IIS 7.0 中添加了 IHttpRequest::InsertEntityBody 方法。

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.InsertEntityBody 方法

HttpRequest
.
.
::
.
InsertEntityBody 方法
HttpRequest 类

向 IIS 提供 HTTP 请求实体正文的副本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.High)> _
Public Sub InsertEntityBody
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)]
public void InsertEntityBody()
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::High)]
public:
void InsertEntityBody()
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)>]
member InsertEntityBody : unit -> unit

异常 | 条件
PlatformNotSupportedException | 在 IIS 7.0 以前的 IIS 版本上调用该方法。

IIS 在读取请求之后不保留请求副本。因此，建议只有 HTTP 请求的处理程序才应该读取请求实体。 IIS 在读取请求之后不保留请求副本。因此，建议只有 HTTP 请求的处理程序才应该读取请求实体。

HttpRequest..::.InsertEntityBody 方法重载为 IIS 提供请求实体的副本（如果以前是由 ASP.NET 读取）。对于 ASP.NET 已读取实体请求并且要重新使用现有请求数据的情况，此方法重载非常有用。 HttpRequest..::.InsertEntityBody 方法重载为 IIS 提供请求实体的副本（如果以前是由 ASP.NET 读取）。对于 ASP.NET 已读取实体请求并且要重新使用现有请求数据的情况，此方法重载非常有用。

  • AspNetHostingPermission

    用于在宿主环境中操作。安全操作：Demand。关联的枚举：High 用于在宿主环境中操作。安全操作：Demand。关联的枚举：High 用于在宿主环境中操作。安全操作：Demand。关联的枚举：High

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequest 类
HttpRequest 成员
InsertEntityBody 重载
System.Web 命名空间


HttpRequest ..::.InsertEntityBody 方法 ( array<Byte >[]()[], Int32, Int32)

HttpRequest
.
.
::
.
InsertEntityBody 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
HttpRequest 类

向 IIS 提供 HTTP 请求实体正文的副本以及有关请求实体对象的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.High)> _
Public Sub InsertEntityBody ( _
    buffer As Byte(), _
    offset As Integer, _
    count As Integer _
)
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)]
public void InsertEntityBody(
    byte[] buffer,
    int offset,
    int count
)
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::High)]
public:
void InsertEntityBody(
    array<unsigned char>^ buffer,
    int offset,
    int count
)
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)>]
member InsertEntityBody :
        buffer:byte[] *
        offset:int *
        count:int -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

一个包含请求实体数据的数组。
offset
类型： System Int32
buffer 中开始存储请求实体数据的位置，该位置从零开始计数。
count
类型： System Int32
要读取到 buffer 数组中的字节数。
异常 | 条件
PlatformNotSupportedException | 在 IIS 7.0 以前的 IIS 版本上调用该方法。
ArgumentNullException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | count 是负值。
ArgumentOutOfRangeException | offset 是负值。
ArgumentException | count 中的项目数大于 buffer 中的可用控件，指定了 offset 值。

IIS 在读取请求之后不保留请求副本。因此，建议只有 HTTP 请求的处理程序才应该读取请求实体。 IIS 在读取请求之后不保留请求副本。因此，建议只有 HTTP 请求的处理程序才应该读取请求实体。

当您希望执行自定义处理时，如将不同的实体正文插入到内存中，HttpRequest..::.InsertEntityBody 方法重载非常有帮助。

  • AspNetHostingPermission

    用于在宿主环境中操作。安全操作：Demand。关联的枚举：High 用于在宿主环境中操作。安全操作：Demand。关联的枚举：High 用于在宿主环境中操作。安全操作：Demand。关联的枚举：High

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequest 类
HttpRequest 成员
InsertEntityBody 重载
System.Web 命名空间


HttpRequest ..::.MapImageCoordinates 方法

HttpRequest
.
.
::
.
MapImageCoordinates 方法
HttpRequest 类

将传入图像字段窗体参数映射为适当的 x 坐标值和 y 坐标值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function MapImageCoordinates ( _
    imageFieldName As String _
) As Integer()
public int[] MapImageCoordinates(
    string imageFieldName
)
public:
array<int>^ MapImageCoordinates(
    String^ imageFieldName
)
member MapImageCoordinates :
        imageFieldName:string -> int[]

参数

imageFieldName
类型： System String
窗体图像映射的名称。

返回值

类型：
array<
System Int32
>
[]
()
[]

二维整数数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.MapPath 方法

HttpRequest
.
.
::
.
MapPath 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequest 类

为当前请求将请求的 URL 中的虚拟路径映射到服务器上的物理路径。

名称 说明
页首

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.MapPath 方法 (String)

HttpRequest
.
.
::
.
MapPath 方法 (String)
HttpRequest 类

将指定的虚拟路径映射到物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function MapPath ( _
    virtualPath As String _
) As String
public string MapPath(
    string virtualPath
)
public:
String^ MapPath(
    String^ virtualPath
)
member MapPath :
        virtualPath:string -> string

参数

virtualPath
类型： System String
当前请求的虚拟路径（绝对路径或相对路径）。

返回值

类型： System String
由 virtualPath 指定的服务器物理路径。
异常 | 条件
HttpException | 没有为该请求定义 HttpContext 对象。
警告说明 警告

MapPath 属性很可能包含有关宿主环境的敏感信息。不应向用户显示返回值。 MapPath 属性很可能包含有关宿主环境的敏感信息。不应向用户显示返回值。

下面的代码示例使用 MapPath 方法将虚拟路径转换为服务器上完全限定的物理路径。此示例包括两个部分： 下面的代码示例使用 MapPath 方法将虚拟路径转换为服务器上完全限定的物理路径。此示例包括两个部分：

  • .aspx 页映射路径、读取文件并显示读取操作的结果。

  • UpperCaseFilterStream 类，该类将通过它传递的所有字符都更改为大写。

示例的第一部分显示如何使用 MapPath 方法将虚拟路径转换为完全限定的物理路径。之后，将此物理路径传递给 StreamReader 对象，该对象包含该文件的内容。然后，调用 Write 方法，以在页面上显示文件的内容。Filter 属性用于将筛选器附加到响应流，该响应流使页面上显示的文本全部大写。 示例的第一部分显示如何使用 MapPath 方法将虚拟路径转换为完全限定的物理路径。之后，将此物理路径传递给 StreamReader 对象，该对象包含该文件的内容。然后，调用 Write 方法，以在页面上显示文件的内容。Filter 属性用于将筛选器附加到响应流，该响应流使页面上显示的文本全部大写。 示例的第一部分显示如何使用 MapPath 方法将虚拟路径转换为完全限定的物理路径。之后，将此物理路径传递给 StreamReader 对象，该对象包含该文件的内容。然后，调用 Write 方法，以在页面上显示文件的内容。Filter 属性用于将筛选器附加到响应流，该响应流使页面上显示的文本全部大写。 示例的第一部分显示如何使用 MapPath 方法将虚拟路径转换为完全限定的物理路径。之后，将此物理路径传递给 StreamReader 对象，该对象包含该文件的内容。然后，调用 Write 方法，以在页面上显示文件的内容。Filter 属性用于将筛选器附加到响应流，该响应流使页面上显示的文本全部大写。

<%@ Page Language="VB" Debug="true"%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="Samples.AspNet.VB.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    ' Filter the text to be rendered as all uppercase.
    Response.Filter = New UpperCaseFilterStream(Response.Filter)

    ' Convert a virtual path to a fully qualified physical path.
    Dim fullpath As String = Request.MapPath("~\\TestFile.txt")

    Try

      Dim sr As StreamReader = New StreamReader(fullpath)

      Do While sr.Peek() >= 0
        Response.Write(Convert.ToChar(sr.Read()))
      Loop
      sr.Close()
      Message.Text = "Reading the file was successful."

    Catch ex As Exception

      Message.Text = "The process failed."

    End Try

  End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpResponse.MapPath Example</title>
  </head>
  <body>
    <form id="Form1" runat="server">

      <asp:Label id="Message"
                 runat="server"/>

    </form>
  </body>
</html>

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ import Namespace="Samples.AspNet.CS.Controls"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {

      // Filter the text to be rendered as all uppercase.
      Response.Filter = new UpperCaseFilterStream(Response.Filter);

      // Convert a virtual path to a fully qualified physical path.
      string fullpath = Request.MapPath("~\\TestFile.txt");

      try
      {
        // Read the contents of the file using a StreamReader.
        using (StreamReader sr = new StreamReader(fullpath))
        while (sr.Peek() >= 0)
        {
          Response.Write((char)sr.Read());
        }
        Message.Text = "Reading the file was successful.";

      }
      catch (Exception ex)
      {
        Message.Text = "The process failed.";
      }
     }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpResponse.MapPath Example</title>
  </head>
  <body>
    <form id="form1" runat="server">

      <asp:Label id="Message"
                 runat="server"/>

    </form>
  </body>
</html>

示例的第二部分显示一个从 Stream 继承的类，并将响应流中的所有字符都转换为大写。将此代码放置在您的应用程序的 App_Code 文件夹中。 示例的第二部分显示一个从 Stream 继承的类，并将响应流中的所有字符都转换为大写。将此代码放置在您的应用程序的 App_Code 文件夹中。

Imports System
Imports System.IO
Imports System.Text

Namespace Samples.AspNet.VB.Controls

    Public Class UpperCaseFilterStream
        Inherits Stream

        ' This filter changes all characters passed through it to uppercase.
        Private strSink As Stream
        Private lngPosition As Long

        Public Sub New(ByVal sink As Stream)
            strSink = sink
        End Sub 'New

        ' The following members of Stream must be overriden.
        Public Overrides ReadOnly Property CanRead() As Boolean
            Get
                Return True
            End Get
        End Property

        Public Overrides ReadOnly Property CanSeek() As Boolean
            Get
                Return True
            End Get
        End Property

        Public Overrides ReadOnly Property CanWrite() As Boolean
            Get
                Return True
            End Get
        End Property

        Public Overrides ReadOnly Property Length() As Long
            Get
                Return 0
            End Get
        End Property

        Public Overrides Property Position() As Long
            Get
                Return lngPosition
            End Get
            Set(ByVal value As Long)
                lngPosition = Value
            End Set
        End Property

        Public Overrides Function Seek( _
        ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
            Return strSink.Seek(offset, direction)
        End Function 'Seek

        Public Overrides Sub SetLength(ByVal length As Long)
            strSink.SetLength(length)
        End Sub 'SetLength

        Public Overrides Sub Close()
            strSink.Close()
        End Sub 'Close

        Public Overrides Sub Flush()
            strSink.Flush()
        End Sub 'Flush

        Public Overrides Function Read( _
        ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
            Return strSink.Read(buffer, offset, count)
        End Function 'Read

        ' The Write method actually does the filtering.
        Public Overrides Sub Write( _
        ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)

            Dim data(count) As Byte
            System.Buffer.BlockCopy(buffer, offset, data, 0, count)
            Dim inputstring As String = Encoding.ASCII.GetString(data).ToUpper()
            data = Encoding.ASCII.GetBytes(InputString)
            strSink.Write(data, 0, count)

        End Sub 'Write

    End Class 'UpperCaseFilter

End Namespace

using System;
using System.IO;
using System.Text;

namespace Samples.AspNet.CS.Controls
{

   public class UpperCaseFilterStream : Stream
   // This filter changes all characters passed through it to uppercase.
   {
      private Stream strSink;
      private long lngPosition;

      public UpperCaseFilterStream(Stream sink)
      {
          strSink = sink;
      }

      // The following members of Stream must be overriden.
      public override bool CanRead
      {
         get { return true; }
      }

      public override bool CanSeek
      {
         get { return true; }
      }

      public override bool CanWrite
      {
         get { return true; }
      }

      public override long Length
      {
         get { return 0; }
      }

      public override long Position
      {
         get { return lngPosition; }
         set { lngPosition = value; }
      }

      public override long Seek(long offset, System.IO.SeekOrigin direction)
      {
         return strSink.Seek(offset, direction);
      }

      public override void SetLength(long length)
      {
         strSink.SetLength(length);
      }

      public override void Close()
      {
         strSink.Close();
      }

      public override void Flush()
      {
         strSink.Flush();
      }

      public override int Read(byte[] buffer, int offset, int count)
      {
         return strSink.Read(buffer, offset, count);
      }

      // The Write method actually does the filtering.
      public override void Write(byte[] buffer, int offset, int count)
      {
         byte[] data = new byte[count];
         Buffer.BlockCopy(buffer, offset, data, 0, count);
         string inputstring = Encoding.ASCII.GetString(data).ToUpper();
         data = Encoding.ASCII.GetBytes(inputstring);
         strSink.Write(data, 0, count);

      }
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
MapPath 重载
System.Web 命名空间


HttpRequest ..::.MapPath 方法 (String, String, Boolean)

HttpRequest
.
.
::
.
MapPath 方法 (String, String, Boolean)
HttpRequest 类

将指定的虚拟路径映射到物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function MapPath ( _
    virtualPath As String, _
    baseVirtualDir As String, _
    allowCrossAppMapping As Boolean _
) As String
public string MapPath(
    string virtualPath,
    string baseVirtualDir,
    bool allowCrossAppMapping
)
public:
String^ MapPath(
    String^ virtualPath,
    String^ baseVirtualDir,
    bool allowCrossAppMapping
)
member MapPath :
        virtualPath:string *
        baseVirtualDir:string *
        allowCrossAppMapping:bool -> string

参数

virtualPath
类型： System String
当前请求的虚拟路径（绝对路径或相对路径）。
baseVirtualDir
类型： System String
用于相对解析的虚拟基目录路径。
allowCrossAppMapping
类型： System Boolean
true 表示 virtualPath 可能属于另一个应用程序；否则，为 false。

返回值

类型： System String
服务器上的物理路径。
异常 | 条件
HttpException | allowCrossMapping 为 false，virtualPath 属于另一个应用程序。
HttpException | 没有为该请求定义 HttpContext 对象。
警告说明 警告

MapPath 属性很可能包含有关宿主环境的敏感信息。不应向用户显示返回值。 MapPath 属性很可能包含有关宿主环境的敏感信息。不应向用户显示返回值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
MapPath 重载
System.Web 命名空间


HttpRequest ..::.SaveAs 方法

HttpRequest
.
.
::
.
SaveAs 方法
HttpRequest 类

将 HTTP 请求保存到磁盘。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SaveAs ( _
    filename As String, _
    includeHeaders As Boolean _
)
public void SaveAs(
    string filename,
    bool includeHeaders
)
public:
void SaveAs(
    String^ filename,
    bool includeHeaders
)
member SaveAs :
        filename:string *
        includeHeaders:bool -> unit

参数

filename
类型： System String
物理驱动器路径。
includeHeaders
类型： System Boolean
一个布尔值，该值指定是否应将 HTTP 头保存到磁盘。
异常 | 条件
HttpException | HttpRuntimeSection 的 RequireRootedSaveAsPath 属性设置为 true，但 filename 不是绝对路径。

将请求上下文保存到磁盘在调试过程中会很有用。

下面的代码示例在加载页时调用 SaveAs 方法。该调用指定将请求作为文本文件保存在一个 ASP.NET 进程标识被授予写权限的目录中，而且请求中包含的所有标头信息都会包含在该文件中。 下面的代码示例在加载页时调用 SaveAs 方法。该调用指定将请求作为文本文件保存在一个 ASP.NET 进程标识被授予写权限的目录中，而且请求中包含的所有标头信息都会包含在该文件中。

Request.SaveAs("c:\\temp\\HttpRequest.txt", True)

Request.SaveAs("c:\\temp\\HttpRequest.txt", true);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.ValidateInput 方法

HttpRequest
.
.
::
.
ValidateInput 方法
HttpRequest 类

对通过 Cookies 、Form 和 QueryString 属性访问的集合进行验证。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub ValidateInput
public void ValidateInput()
public:
void ValidateInput()
member ValidateInput : unit -> unit

异常 | 条件
HttpRequestValidationException | 从客户端接收到具有潜在危险的数据。

HttpRequest 类使用输入验证标志来跟踪是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。 HttpRequest 类使用输入验证标志来跟踪是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。 HttpRequest 类使用输入验证标志来跟踪是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。

如果页指令或配置启用了验证功能，则在页的 ProcessRequest 处理阶段调用此方法。如果未启用验证功能，则可通过代码调用 ValidateInput 方法。 如果页指令或配置启用了验证功能，则在页的 ProcessRequest 处理阶段调用此方法。如果未启用验证功能，则可通过代码调用 ValidateInput 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
Cookies
Form
QueryString


HttpRequest 属性

HttpRequest 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequest 类

HttpRequest 类型公开以下成员。

名称 说明
页首

参考

HttpRequest 类
System.Web 命名空间


HttpRequest ..::.AcceptTypes 属性

HttpRequest
.
.
::
.
AcceptTypes 属性
HttpRequest 类

获取客户端支持的 MIME 接受类型的字符串数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AcceptTypes As String()
    Get
public string[] AcceptTypes { get; }
public:
property array<String^>^ AcceptTypes {
    array<String^>^ get ();
}
member AcceptTypes : string[]

属性值

类型：
array<
System String
>
[]
()
[]

客户端支持的 MIME 接受类型的字符串数组。

下面的代码示例将 AcceptTypes 属性返回的多个值捕获到一个对象变量中，并将每个值的序号和名称写入单独的 HTTP 输出行中。

Dim MyType() As String
 Dim Indx As Integer

 MyType = Request.AcceptTypes
 For Indx = 0 To MyType.GetUpperBound(0)
    Response.Write("Accept Type " & Cstr(Indx) & ": " & Cstr(MyType(Indx)) & "<br>")
 Next Indx

int indx;

 String[] arr = Request.AcceptTypes;
 for (indx = 0; indx < arr.Length; indx++) {
    Response.Write("Accept Type " + indx +": " + arr[indx] + "<br>");
 }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.AnonymousID 属性

HttpRequest
.
.
::
.
AnonymousID 属性
HttpRequest 类

获取该用户的匿名标识符（如果存在）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AnonymousID As String
    Get
public string AnonymousID { get; }
public:
property String^ AnonymousID {
    String^ get ();
}
member AnonymousID : string

属性值

类型： System String
字符串，表示当前匿名用户标识符。

AnonymousID 属性将一个长久的唯一标识符分配给一个未经身份验证的用户，该标识符可用于跟踪用户或将配置文件属性分配给该用户，而无需将数据存储在 Session 对象中。默认情况下，使用 Cookie 来跟踪 AnonymousID 属性，但是，当匿名标识配置节中的 Cookieless 特性设置为 UseUri、UseDeviceProfile 或 AutoDetect 值。如果您不再需要该 Cookie 起作用（例如，在对一个匿名用户进行身份验证时），则必须显式清除它。 AnonymousID 属性将一个长久的唯一标识符分配给一个未经身份验证的用户，该标识符可用于跟踪用户或将配置文件属性分配给该用户，而无需将数据存储在 Session 对象中。默认情况下，使用 Cookie 来跟踪 AnonymousID 属性，但是，当匿名标识配置节中的 Cookieless 特性设置为 UseUri、UseDeviceProfile 或 AutoDetect 值。如果您不再需要该 Cookie 起作用（例如，在对一个匿名用户进行身份验证时），则必须显式清除它。 AnonymousID 属性将一个长久的唯一标识符分配给一个未经身份验证的用户，该标识符可用于跟踪用户或将配置文件属性分配给该用户，而无需将数据存储在 Session 对象中。默认情况下，使用 Cookie 来跟踪 AnonymousID 属性，但是，当匿名标识配置节中的 Cookieless 特性设置为 UseUri、UseDeviceProfile 或 AutoDetect 值。如果您不再需要该 Cookie 起作用（例如，在对一个匿名用户进行身份验证时），则必须显式清除它。

在需要标识未经身份验证的实体时，以及在要求进行身份验证时，使用匿名标识。有关更多信息，请参见anonymousIdentification 元素（ASP.NET 设置架构） 在需要标识未经身份验证的实体时，以及在要求进行身份验证时，使用匿名标识。有关更多信息，请参见anonymousIdentification 元素（ASP.NET 设置架构）

下面的示例演示如何通过处理 Global.asax 文件中的 AnonymousIdentificationModule..::.Creating 事件来使用 AnonymousID 属性。此示例包括两个部分： 下面的示例演示如何通过处理 Global.asax 文件中的 AnonymousIdentificationModule..::.Creating 事件来使用 AnonymousID 属性。此示例包括两个部分：

  • Global.asax 文件中处理 AnonymousIdentificationModule..::.Creating 事件的方法。

  • Web 窗体页。

代码示例的第一部分说明如何通过处理 Global.asax 文件中 AnonymousIdentificationModule..::.Creating 事件来设置 AnonymousID 属性。创建匿名 ID 时，名为 AnonymousIdentification_Creating 的方法设置 AnonymousID 属性。 代码示例的第一部分说明如何通过处理 Global.asax 文件中 AnonymousIdentificationModule..::.Creating 事件来设置 AnonymousID 属性。创建匿名 ID 时，名为 AnonymousIdentification_Creating 的方法设置 AnonymousID 属性。

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

        'Initialize user count property
        Application("UserCount") = 0

    End Sub

    Sub AnonymousIdentification_Creating(ByVal sender As Object, ByVal e As AnonymousIdentificationEventArgs)

        ' Change the anonymous id
        e.AnonymousID = "mysite.com_Anonymous_User_" & DateTime.Now.Ticks

        ' Increment count of unique anonymous users
        Application("UserCount") = Int32.Parse(Application("UserCount").ToString()) + 1

    End Sub

void Application_Start(Object sender, EventArgs e)
    {
        // Initialize user count property
        Application["UserCount"] = 0;
    }

public void AnonymousIdentification_Creating(Object sender, AnonymousIdentificationEventArgs e)
    {
    // Change the anonymous id
    e.AnonymousID = "mysite.com_Anonymous_User_" + DateTime.Now.Ticks;

    // Increment count of unique anonymous users
    Application["UserCount"] = Int32.Parse(Application["UserCount"].ToString()) + 1;
}

代码示例的第二部分演示如何显示由前一个示例中的 AnonymousIdentification_Creating 事件处理程序创建的新 AnonymousID。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    If (Application("UserCount") IsNot Nothing) Then
      lblUserCount.Text = Application("UserCount").ToString()
      lblCurrentUser.Text = Request.AnonymousID
    End If

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>AnonymousID Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Number of users:
        <asp:Label ID="lblUserCount" Runat="server"></asp:Label><br />
    Current user:
        <asp:Label ID="lblCurrentUser" Runat="server"></asp:Label><br />
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  void Page_Load(object sender, EventArgs e)
    {
      if (Application["UserCount"] != null)
      {
          lblUserCount.Text = Application["UserCount"].ToString();
          lblCurrentUser.Text = Request.AnonymousID;
      }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>AnonymousID Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Number of users:
        <asp:Label ID="lblUserCount" Runat="server"></asp:Label><br />
    Current user:
        <asp:Label ID="lblCurrentUser" Runat="server"></asp:Label><br />
    </div>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
IsAuthenticated
AnonymousIdentificationModule Creating

其他资源

anonymousIdentification 元素（ASP.NET 设置架构）


HttpRequest ..::.ApplicationPath 属性

HttpRequest
.
.
::
.
ApplicationPath 属性
HttpRequest 类

获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ApplicationPath As String
    Get
public string ApplicationPath { get; }
public:
property String^ ApplicationPath {
    String^ get ();
}
member ApplicationPath : string

属性值

类型： System String
当前应用程序的虚拟路径。

可从不在根目录中的页或 Web 用户控件中使用此属性构造一个相对于应用程序根目录的 URL。这样，位于其他目录结构级别的页和共享控件可以使用相同的代码链接到应用程序中位于固定位置的资源。 可从不在根目录中的页或 Web 用户控件中使用此属性构造一个相对于应用程序根目录的 URL。这样，位于其他目录结构级别的页和共享控件可以使用相同的代码链接到应用程序中位于固定位置的资源。

下面的示例使用 Write 方法进行 HTML 编码，然后，将 ApplicationPath 属性的值写入一个文本文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。它假设存在名为 sw 的 StreamWriter 对象。 下面的示例使用 Write 方法进行 HTML 编码，然后，将 ApplicationPath 属性的值写入一个文本文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。它假设存在名为 sw 的 StreamWriter 对象。 下面的示例使用 Write 方法进行 HTML 编码，然后，将 ApplicationPath 属性的值写入一个文本文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。它假设存在名为 sw 的 StreamWriter 对象。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.FilePath))
sw.WriteLine(Server.HtmlEncode(Request.Path))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.FilePath));
sw.WriteLine(Server.HtmlEncode(Request.Path));

下面的示例使用 ApplicationPath 属性，以编程方式构造一个指向位于应用程序中某个固定位置的资源的路径。引用该资源的页不必与该资源位于同一目录中。 下面的示例使用 ApplicationPath 属性，以编程方式构造一个指向位于应用程序中某个固定位置的资源的路径。引用该资源的页不必与该资源位于同一目录中。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = Request.ApplicationPath
        Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif"
        Label2.Text = Image1.ImageUrl
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpRequest.ApplicationPath Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        ApplicationPath:<br />
        <asp:Label ID="Label1" runat="server" ForeColor="Brown" /><br />

        <asp:Image ID="Image1" runat="server" />

        ImageUrl:<br />
        <asp:Label ID="Label2" runat="server" ForeColor="Brown" />
        <br />
     </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Request.ApplicationPath;
        Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif";
        Label2.Text = Image1.ImageUrl;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpRequest.ApplicationPath Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        ApplicationPath:<br />
        <asp:Label ID="Label1" runat="server" ForeColor="Brown" /><br />

        <asp:Image ID="Image1" runat="server" /><br />

        ImageUrl:<br />
        <asp:Label ID="Label2" runat="server" ForeColor="Brown" />
        <br />
        </div>
    </form>
</body>
</html>

如果您在名为 WebSite1 的 Web 应用程序中运行此示例，WebSite1 将显示为 ApplicationPath 属性的值，/WebSite1/images/Image1.gif 将显示为图像的完整路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.AppRelativeCurrentExecutionFilePath 属性

HttpRequest
.
.
::
.
AppRelativeCurrentExecutionFilePath 属性
HttpRequest 类

获取应用程序根的虚拟路径，并通过对应用程序根使用波形符 (~) 表示法（例如，以“~/page.aspx”的形式）使该路径成为相对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property AppRelativeCurrentExecutionFilePath As String
    Get
public string AppRelativeCurrentExecutionFilePath { get; }
public:
property String^ AppRelativeCurrentExecutionFilePath {
    String^ get ();
}
member AppRelativeCurrentExecutionFilePath : string

属性值

类型： System String
当前请求的应用程序根的虚拟路径。

使用此属性可提供保持不变的 URL 信息（即使应用程序的位置发生了改变）。这样，可以在测试环境和最终部署环境中使用相同的 URL 映射代码，位于不同域中的各个 Web 应用程序副本也可使用相同的 URL 映射代码。 使用此属性可提供保持不变的 URL 信息（即使应用程序的位置发生了改变）。这样，可以在测试环境和最终部署环境中使用相同的 URL 映射代码，位于不同域中的各个 Web 应用程序副本也可使用相同的 URL 映射代码。

下面的示例使用 AppRelativeCurrentExecutionFilePath 属性将 Image 控件的 URL 设置为与页位于同一目录下的一个图像。请在不同的目录结构级别运行此页，并查看最终的 AppRelativeCurrentExecutionFilePath 属性值。 下面的示例使用 AppRelativeCurrentExecutionFilePath 属性将 Image 控件的 URL 设置为与页位于同一目录下的一个图像。请在不同的目录结构级别运行此页，并查看最终的 AppRelativeCurrentExecutionFilePath 属性值。

<%@ Page Language="VB"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        ' Get an image that is in the same directory as the currently executing control.
        Image1.ImageUrl = VirtualPathUtility.GetDirectory( _
            Request.AppRelativeCurrentExecutionFilePath) + "image1.jpg"
        Label1.Text = "App-relative Image URL = " + Image1.ImageUrl
    End Sub

</script>

<head id="Head1" runat="server">
    <title>HttpRequest AppRelativeCurrentExecutionFilePath</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
          <asp:Image ID="Image1" runat="server" /><br />
            <asp:Label ID="Label1" runat="server" />
        </div>
    </form>
</body>
</html>

<%@ Page Language="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        // Get an image that is in the same directory as the currently executing control.
        Image1.ImageUrl =
            VirtualPathUtility.GetDirectory(Request.AppRelativeCurrentExecutionFilePath)
            + "image1.jpg";
        Label1.Text = "App-relative Image URL = " + Image1.ImageUrl;
    }
</script>

<head id="Head1" runat="server">
    <title>HttpRequest AppRelativeCurrentExecutionFilePath</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
          <asp:Image ID="Image1" runat="server" /><br />
            <asp:Label ID="Label1" runat="server" />
        </div>
    </form>
</body>
</html>

下面的示例使用 AppRelativeCurrentExecutionFilePath 属性，基于页的当前路径以编程方式设置资源的路径。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = Request.ApplicationPath
        Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif"
        Label2.Text = Image1.ImageUrl

        Label3.Text = Request.AppRelativeCurrentExecutionFilePath
        If (VirtualPathUtility.GetDirectory( _
            Request.AppRelativeCurrentExecutionFilePath).Equals( _
            "~/Members/")) _
        Then
            Image2.ImageUrl = Request.ApplicationPath & _
                "/memberimages/Image1.gif"
        Else
            Image2.ImageUrl = Request.ApplicationPath & _
                "/guestimages/Image1.gif"
        End If
        Label4.Text = Image2.ImageUrl
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpRequest.ApplicationPath Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        This is the ApplicationPath from the current page:<br />
        <asp:Label ID="Label1" runat="server" ForeColor="Brown" /><br />
        Use it to link to resources at fixed locations in the application.<br />
        <asp:Image ID="Image1" runat="server" />
        <asp:Label ID="Label2" runat="server" ForeColor="Brown" />
        <br /><br />
        This is the AppRelativeCurrentExecutionFilePath to the current page:<br />
        <asp:Label ID="Label3" runat="server" ForeColor="Brown" /><br />
        Use it to help programatically construct links to resources based on the location of the current page.<br />
        <asp:Image ID="Image2" runat="server" />
        <asp:Label ID="Label4" runat="server" ForeColor="Brown" />
        </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Request.ApplicationPath;
        Image1.ImageUrl = Request.ApplicationPath + "/images/Image1.gif";
        Label2.Text = Image1.ImageUrl;

        Label3.Text = Request.AppRelativeCurrentExecutionFilePath;
        if (VirtualPathUtility.GetDirectory(
            Request.AppRelativeCurrentExecutionFilePath).Equals("~/Members/"))
        {
            Image2.ImageUrl = Request.ApplicationPath +
                "/memberimages/Image1.gif";
        }
        else
        {
            Image2.ImageUrl = Request.ApplicationPath +
            "/guestimages/Image1.gif";
        }
        Label4.Text = Image2.ImageUrl;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpRequest.ApplicationPath Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        This is the ApplicationPath from the current page:<br />
        <asp:Label ID="Label1" runat="server" ForeColor="Brown" /><br />
        Use it to link to resources at fixed locations in the application.<br />
        <asp:Image ID="Image1" runat="server" />
        <asp:Label ID="Label2" runat="server" ForeColor="Brown" />
        <br /><br />
        This is the AppRelativeCurrentExecutionFilePath to the current page:<br />
        <asp:Label ID="Label3" runat="server" ForeColor="Brown" /><br />
        Use it to help programatically construct links to resources based on the location of the current page.<br />
        <asp:Image ID="Image2" runat="server" />
        <asp:Label ID="Label4" runat="server" ForeColor="Brown" />
        </div>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Browser 属性

HttpRequest
.
.
::
.
Browser 属性
HttpRequest 类

获取或设置有关正在请求的客户端的浏览器功能的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Browser As HttpBrowserCapabilities
    Get
    Set
public HttpBrowserCapabilities Browser { get; set; }
public:
property HttpBrowserCapabilities^ Browser {
    HttpBrowserCapabilities^ get ();
    void set (HttpBrowserCapabilities^ value);
}
member Browser : HttpBrowserCapabilities with get, set

属性值

类型： System.Web HttpBrowserCapabilities
列出客户端浏览器功能的 HttpBrowserCapabilities 对象。

下面的代码示例通过 HTML 页将浏览器功能列表发送回客户端。

Dim bc As HttpBrowserCapabilities = Request.Browser
Response.Write("<p>Browser Capabilities:</p>")
Response.Write("Type = " & bc.Type & "<br>")
Response.Write("Name = " & bc.Browser & "<br>")
Response.Write("Version = " & bc.Version & "<br>")
Response.Write("Major Version = " & bc.MajorVersion & "<br>")
Response.Write("Minor Version = " & bc.MinorVersion & "<br>")
Response.Write("Platform = " & bc.Platform & "<br>")
Response.Write("Is Beta = " & bc.Beta & "<br>")
Response.Write("Is Crawler = " & bc.Crawler & "<br>")
Response.Write("Is AOL = " & bc.AOL & "<br>")
Response.Write("Is Win16 = " & bc.Win16 & "<br>")
Response.Write("Is Win32 = " & bc.Win32 & "<br>")
Response.Write("Supports Frames = " & bc.Frames & "<br>")
Response.Write("Supports Tables = " & bc.Tables & "<br>")
Response.Write("Supports Cookies = " & bc.Cookies & "<br>")
Response.Write("Supports VB Script = " & bc.VBScript & "<br>")
Response.Write("Supports JavaScript = " & bc.JavaScript & "<br>")
Response.Write("Supports Java Applets = " & bc.JavaApplets & "<br>")
Response.Write("Supports ActiveX Controls = " & bc.ActiveXControls & "<br>")
Response.Write("CDF = " & bc.CDF & "<br>")

HttpBrowserCapabilities bc = Request.Browser;
Response.Write("<p>Browser Capabilities:</p>");
Response.Write("Type = " + bc.Type + "<br>");
Response.Write("Name = " + bc.Browser + "<br>");
Response.Write("Version = " + bc.Version + "<br>");
Response.Write("Major Version = " + bc.MajorVersion + "<br>");
Response.Write("Minor Version = " + bc.MinorVersion + "<br>");
Response.Write("Platform = " + bc.Platform + "<br>");
Response.Write("Is Beta = " + bc.Beta + "<br>");
Response.Write("Is Crawler = " + bc.Crawler + "<br>");
Response.Write("Is AOL = " + bc.AOL + "<br>");
Response.Write("Is Win16 = " + bc.Win16 + "<br>");
Response.Write("Is Win32 = " + bc.Win32 + "<br>");
Response.Write("Supports Frames = " + bc.Frames + "<br>");
Response.Write("Supports Tables = " + bc.Tables + "<br>");
Response.Write("Supports Cookies = " + bc.Cookies + "<br>");
Response.Write("Supports VB Script = " + bc.VBScript + "<br>");
Response.Write("Supports JavaScript = " + bc.JavaScript + "<br>");
Response.Write("Supports Java Applets = " + bc.JavaApplets + "<br>");
Response.Write("Supports ActiveX Controls = " + bc.ActiveXControls + "<br>");
Response.Write("CDF = " + bc.CDF + "<br>");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
ClientTarget
HttpBrowserCapabilities
UserAgent

其他资源

ASP.NET Web 服务器控件和浏览器功能
clientTarget 元素（ASP.NET 设置架构）


HttpRequest ..::.BufferlessInputStream 属性

HttpRequest
.
.
::
.
BufferlessInputStream 属性
HttpRequest 类

获取一个 Stream 对象，该对象可用于读取传入的 HTTP 实体主体。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property BufferlessInputStream As Stream
    Get
public Stream BufferlessInputStream { get; }
public:
property Stream^ BufferlessInputStream {
    Stream^ get ();
}
member BufferlessInputStream : Stream

属性值

类型： System.IO Stream
一个 Stream 对象，该对象可用于读取传入的 HTTP 实体主体。
异常 条件
HttpException

请求的实体主体已被加载和分析。导致加载和分析实体正文的属性的示例包括： 请求的实体主体已被加载和分析。导致加载和分析实体正文的属性的示例包括：

  • Form

  • InputStream

  • Files

该属性提供 InputStream 属性的替代选择。InputStream 属性一直等待，直到其收到完整的请求且其后返回 Stream 对象。BufferlessInputStream 属性立即返回 Stream 对象。然后，您可以在实体正文的实体内容完全收到之前开始处理该实体正文。 该属性提供 InputStream 属性的替代选择。InputStream 属性一直等待，直到其收到完整的请求且其后返回 Stream 对象。BufferlessInputStream 属性立即返回 Stream 对象。然后，您可以在实体正文的实体内容完全收到之前开始处理该实体正文。 该属性提供 InputStream 属性的替代选择。InputStream 属性一直等待，直到其收到完整的请求且其后返回 Stream 对象。BufferlessInputStream 属性立即返回 Stream 对象。然后，您可以在实体正文的实体内容完全收到之前开始处理该实体正文。 该属性提供 InputStream 属性的替代选择。InputStream 属性一直等待，直到其收到完整的请求且其后返回 Stream 对象。BufferlessInputStream 属性立即返回 Stream 对象。然后，您可以在实体正文的实体内容完全收到之前开始处理该实体正文。

只有当您使用此对象通过调用方法（如 Read 方法）来读取流时，才会返回实体正文（或您请求且已接收的尽可能多的内容）。您可以使用 Read 方法的参数来指定要读取多少实体正文。 只有当您使用此对象通过调用方法（如 Read 方法）来读取流时，才会返回实体正文（或您请求且已接收的尽可能多的内容）。您可以使用 Read 方法的参数来指定要读取多少实体正文。

如果请求为上载大文件，并且您希望上载完成之前访问该文件的内容，此属性非常有用。但是，只能对您希望接管所有实体正文处理的方案使用此属性。这意味着您不能从一个 .aspx 页使用此属性，因为当 .aspx 页运行时，实体正文已经被读取。 如果请求为上载大文件，并且您希望上载完成之前访问该文件的内容，此属性非常有用。但是，只能对您希望接管所有实体正文处理的方案使用此属性。这意味着您不能从一个 .aspx 页使用此属性，因为当 .aspx 页运行时，实体正文已经被读取。 如果请求为上载大文件，并且您希望上载完成之前访问该文件的内容，此属性非常有用。但是，只能对您希望接管所有实体正文处理的方案使用此属性。这意味着您不能从一个 .aspx 页使用此属性，因为当 .aspx 页运行时，实体正文已经被读取。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.ClientCertificate 属性

HttpRequest
.
.
::
.
ClientCertificate 属性
HttpRequest 类

获取当前请求的客户端安全证书。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ClientCertificate As HttpClientCertificate
    Get
public HttpClientCertificate ClientCertificate { get; }
public:
property HttpClientCertificate^ ClientCertificate {
    HttpClientCertificate^ get ();
}
member ClientCertificate : HttpClientCertificate

属性值

类型： System.Web HttpClientCertificate
包含有关客户端安全证书设置的信息的 HttpClientCertificate 对象。

下面的代码示例通过 HTML 页将客户端的证书设置发送回客户端。

Dim cs As HttpClientCertificate = Request.ClientCertificate

Response.Write("<p>Client Certificate settings:</p>")
Response.Write("Certificate = " & cs.Certificate.ToString() & "<br>")
Response.Write("Cookie = " & cs.Cookie & "<br>")
Response.Write("Flags = " & cs.Flags & "<br>")
Response.Write("IsPresent = " & cs.IsPresent & "<br>")
Response.Write("Issuer = " & cs.Issuer & "<br>")
Response.Write("IsValid = " & cs.IsValid & "<br>")
Response.Write("KeySize = " & cs.KeySize & "<br>")
Response.Write("SecretKeySize = " & cs.SecretKeySize & "<br>")
Response.Write("SerialNumber = " & cs.SerialNumber & "<br>")
Response.Write("ServerIssuer = " & cs.ServerIssuer & "<br>")
Response.Write("ServerSubject = " & cs.ServerSubject & "<br>")
Response.Write("Subject = " & cs.Subject & "<br>")
Response.Write("ValidFrom = " & cs.ValidFrom & "<br>")
Response.Write("ValidUntil = " & cs.ValidUntil & "<br>")
Response.Write("What's this = " & cs.ToString() & "<br>")

HttpClientCertificate cs = Request.ClientCertificate;

Response.Write("ClientCertificate Settings:<br>");
Response.Write("Certificate = " + cs.Certificate + "<br>");
Response.Write("Cookie = " + cs.Cookie + "<br>");
Response.Write("Flags = " + cs.Flags + "<br>");
Response.Write("IsPresent = " + cs.IsPresent + "<br>");
Response.Write("Issuer = " + cs.Issuer + "<br>");
Response.Write("IsValid = " + cs.IsValid + "<br>");
Response.Write("KeySize = " + cs.KeySize + "<br>");
Response.Write("SecretKeySize = " + cs.SecretKeySize + "<br>");
Response.Write("SerialNumber = " + cs.SerialNumber + "<br>");
Response.Write("ServerIssuer = " + cs.ServerIssuer + "<br>");
Response.Write("ServerSubject = " + cs.ServerSubject + "<br>");
Response.Write("Subject = " + cs.Subject + "<br>");
Response.Write("ValidFrom = " + cs.ValidFrom + "<br>");
Response.Write("ValidUntil = " + cs.ValidUntil + "<br>");
Response.Write("What's this = " + cs.ToString() + "<br>");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.ContentEncoding 属性

HttpRequest
.
.
::
.
ContentEncoding 属性
HttpRequest 类

获取或设置实体主体的字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ContentEncoding As Encoding
    Get
    Set
public Encoding ContentEncoding { get; set; }
public:
property Encoding^ ContentEncoding {
    Encoding^ get ();
    void set (Encoding^ value);
}
member ContentEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
表示客户端的字符集的 Encoding 对象。

可以在配置文件的 globalization 元素（ASP.NET 设置架构） 中指定默认的内容编码。如果客户端指定了内容编码，则将重写默认配置设置。 可以在配置文件的 globalization 元素（ASP.NET 设置架构） 中指定默认的内容编码。如果客户端指定了内容编码，则将重写默认配置设置。

下面的代码示例将表示当前 HTTP 编码说明的值分配给一个字符串变量。

Dim EncodingType As String
 EncodingType = Request.ContentEncoding.EncodingName

String EncodingType;
 EncodingType = Request.ContentEncoding.EncodingName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.ContentLength 属性

HttpRequest
.
.
::
.
ContentLength 属性
HttpRequest 类

指定客户端发送的内容长度（以字节计）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ContentLength As Integer
    Get
public int ContentLength { get; }
public:
property int ContentLength {
    int get ();
}
member ContentLength : int

属性值

类型： System Int32
客户端发送的内容的长度（以字节为单位）。

下面的代码示例将表示传入请求的内容长度的值分配给一个整数变量。

Dim len As Integer
len = Request.ContentLength

int len;
len = Request.ContentLength;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.ContentType 属性

HttpRequest
.
.
::
.
ContentType 属性
HttpRequest 类

获取或设置传入请求的 MIME 内容类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ContentType As String
    Get
    Set
public string ContentType { get; set; }
public:
property String^ ContentType {
    String^ get ();
    void set (String^ value);
}
member ContentType : string with get, set

属性值

类型： System String
表示传入请求的 MIME 内容类型的字符串，例如，“text/html”。其他常见 MIME 类型包括“audio.wav”、“image/gif”和“application/pdf”。 表示传入请求的 MIME 内容类型的字符串，例如，“text/html”。其他常见 MIME 类型包括“audio.wav”、“image/gif”和“application/pdf”。

下面的代码示例将表示传入请求的内容类型的值分配给一个字符串变量。

Dim str As String
 str = Request.ContentType

String str;
 str = Request.ContentType;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Cookies 属性

HttpRequest
.
.
::
.
Cookies 属性
HttpRequest 类

获取客户端发送的 Cookie 的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Cookies As HttpCookieCollection
    Get
public HttpCookieCollection Cookies { get; }
public:
property HttpCookieCollection^ Cookies {
    HttpCookieCollection^ get ();
}
member Cookies : HttpCookieCollection

属性值

类型： System.Web HttpCookieCollection
表示客户端的 Cookie 变量的 HttpCookieCollection 对象。

ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。

说明 说明

在通过使用 HttpResponse..::.Cookies 集合添加 cookie 后，该 cookie 将立即可在 HttpRequest..::.Cookies 集合中使用，即使该响应尚未发送至客户端。

下面的代码示例依次通过客户端发送的所有 Cookie，并将每个 Cookie 的名称、过期日期、安全参数和值发送到 HTTP 输出。

Dim loop1, loop2 As Integer
Dim arr1(), arr2() As String
Dim MyCookieColl As HttpCookieCollection
Dim MyCookie As HttpCookie

MyCookieColl = Request.Cookies
' Capture all cookie names into a string array.
arr1 = MyCookieColl.AllKeys
' Grab individual cookie objects by cookie name
for loop1 = 0 To arr1.GetUpperBound(0)
   MyCookie = MyCookieColl(arr1(loop1))
   Response.Write("Cookie: " & MyCookie.Name & "<br>")
   Response.Write("Expires: " & MyCookie.Expires & "<br>")
   Response.Write ("Secure:" & MyCookie.Secure & "<br>")

   ' Grab all values for single cookie into an object array.
   arr2 = MyCookie.Values.AllKeys
   ' Loop through cookie value collection and print all values.
   for loop2 = 0 To arr2.GetUpperBound(0)
      Response.Write("Value " & CStr(loop2) + ": " & Server.HtmlEncode(arr2(loop2)) & "<br>")
   Next loop2
Next loop1

int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;

MyCookieColl = Request.Cookies;

// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;

// Grab individual cookie objects by cookie name.
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
   MyCookie = MyCookieColl[arr1[loop1]];
   Response.Write("Cookie: " + MyCookie.Name + "<br>");
   Response.Write("Expires: " + MyCookie.Expires + "<br>");
   Response.Write ("Secure:" + MyCookie.Secure + "<br>");

   //Grab all values for single cookie into an object array.
   String[] arr2 = MyCookie.Values.AllKeys;

   //Loop through cookie Value collection and print all values.
   for (loop2 = 0; loop2 < arr2.Length; loop2++)
   {
      Response.Write("Value" + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
ValidateInput
Form
QueryString


HttpRequest ..::.CurrentExecutionFilePath 属性

HttpRequest
.
.
::
.
CurrentExecutionFilePath 属性
HttpRequest 类

获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property CurrentExecutionFilePath As String
    Get
public string CurrentExecutionFilePath { get; }
public:
property String^ CurrentExecutionFilePath {
    String^ get ();
}
member CurrentExecutionFilePath : string

属性值

类型： System String
当前请求的虚拟路径。

CurrentExecutionFilePath 返回当前正在执行的页处理程序的文件路径。对于使用 Execute 和 Transfer 方法的重定向方案，这意味着 CurrentExecutionFilePath 属性返回所重定向到的页（子页）的路径。但是，当客户端重定向到另一页时，FilePath 属性返回原始页的路径。 CurrentExecutionFilePath 返回当前正在执行的页处理程序的文件路径。对于使用 Execute 和 Transfer 方法的重定向方案，这意味着 CurrentExecutionFilePath 属性返回所重定向到的页（子页）的路径。但是，当客户端重定向到另一页时，FilePath 属性返回原始页的路径。 CurrentExecutionFilePath 返回当前正在执行的页处理程序的文件路径。对于使用 Execute 和 Transfer 方法的重定向方案，这意味着 CurrentExecutionFilePath 属性返回所重定向到的页（子页）的路径。但是，当客户端重定向到另一页时，FilePath 属性返回原始页的路径。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 CurrentExecutionFilePath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 CurrentExecutionFilePath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.FilePath))
sw.WriteLine(Server.HtmlEncode(Request.Path))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.FilePath));
sw.WriteLine(Server.HtmlEncode(Request.Path));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
FilePath
Path
PathInfo
Execute
Transfer


HttpRequest ..::.CurrentExecutionFilePathExtension 属性

HttpRequest
.
.
::
.
CurrentExecutionFilePathExtension 属性
HttpRequest 类

获取 CurrentExecutionFilePath 属性中指定的文件名的扩展名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property CurrentExecutionFilePathExtension As String
    Get
public string CurrentExecutionFilePathExtension { get; }
public:
property String^ CurrentExecutionFilePathExtension {
    String^ get ();
}
member CurrentExecutionFilePathExtension : string

属性值

类型： System String
CurrentExecutionFilePath 属性中指定的文件名的扩展名。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.FilePath 属性

HttpRequest
.
.
::
.
FilePath 属性
HttpRequest 类

获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property FilePath As String
    Get
public string FilePath { get; }
public:
property String^ FilePath {
    String^ get ();
}
member FilePath : string

属性值

类型： System String
当前请求的虚拟路径。

FilePath 属性不包含 PathInfo 尾部。例如，对于 URL http://www.contoso.com/virdir/page.html/tail，FilePath 值为 /virdir/page.html。 FilePath 属性不包含 PathInfo 尾部。例如，对于 URL http://www.contoso.com/virdir/page.html/tail，FilePath 值为 /virdir/page.html。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 FilePath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 FilePath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.FilePath))
sw.WriteLine(Server.HtmlEncode(Request.Path))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.FilePath));
sw.WriteLine(Server.HtmlEncode(Request.Path));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
PathInfo
Path


HttpRequest ..::.Files 属性

HttpRequest
.
.
::
.
Files 属性
HttpRequest 类

获取采用多部分 MIME 格式的由客户端上载的文件的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Files As HttpFileCollection
    Get
public HttpFileCollection Files { get; }
public:
property HttpFileCollection^ Files {
    HttpFileCollection^ get ();
}
member Files : HttpFileCollection

属性值

类型： System.Web HttpFileCollection
HttpFileCollection 对象，表示客户端上载的文件集合。HttpFileCollection 对象的项属于 HttpPostedFile 类型。 HttpFileCollection 对象，表示客户端上载的文件集合。HttpFileCollection 对象的项属于 HttpPostedFile 类型。

仅当 HTTP 请求 Content-Type 值为“multipart/form-data”时，才会填充该文件集合。

下面的代码示例显示 Files 集合中所有文件的名称。

Dim loop1 As Integer
 Dim arr1() As String
 Dim Files As HttpFileCollection

 Files = Request.Files ' Load File collection into HttpFileCollection variable.
 arr1 = Files.AllKeys ' This will get names of all files into a string array.
        For loop1 = 0 To arr1.GetUpperBound(0)
            Response.Write("File: " & Server.HtmlEncode(arr1(loop1)) & "<br>")
            Response.Write("  size = " + Files(loop1).ContentLength + "<br />")
            Response.Write("  content type = " + Files(loop1).ContentType + "<br />")
        Next loop1

int loop1;
HttpFileCollection Files;

Files = Request.Files; // Load File collection into HttpFileCollection variable.
arr1 = Files.AllKeys;  // This will get names of all files into a string array.
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
    Response.Write("File: " + Server.HtmlEncode(arr1[loop1]) + "<br />");
    Response.Write("  size = " + Files[loop1].ContentLength + "<br />");
    Response.Write("  content type = " + Files[loop1].ContentType + "<br />");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Filter 属性

HttpRequest
.
.
::
.
Filter 属性
HttpRequest 类

获取或设置在读取当前输入流时要使用的筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Filter As Stream
    Get
    Set
public Stream Filter { get; set; }
public:
property Stream^ Filter {
    Stream^ get ();
    void set (Stream^ value);
}
member Filter : Stream with get, set

属性值

类型： System.IO Stream
要用作筛选器的 Stream 对象。
异常 | 条件
HttpException | 指定的 Stream 无效。

下面的代码示例创建两个新类，即，筛选 InputStream 的 QQQ1 和 QQQ2。将这些类放入 ASP.NET 应用程序目录中的 Global.asax 文件中，以便筛选应用程序中所有 ASP.NET 网页中的全部输入。 下面的代码示例创建两个新类，即，筛选 InputStream 的 QQQ1 和 QQQ2。将这些类放入 ASP.NET 应用程序目录中的 Global.asax 文件中，以便筛选应用程序中所有 ASP.NET 网页中的全部输入。

<%@ Page language="VB" %>
<%@ Import namespace="System.Text" %>
<%@ Import namespace="System.IO" %>

<script runat="server">
' This example is meant to be added to a Global.asax file.

Sub Application_BeginRequest()
   Request.Filter = New QQQ1(Request.Filter)
   Request.Filter = New QQQ2(Request.Filter)
End Sub

' The class QQQ1 changes all lower case alpha chars to upper case.
Public Class QQQ1
   Inherits Stream

   Private _sink As Stream

   Public Sub New(sink As Stream)
      _sink = sink
   End Sub

   ' All MustOverride interface members must be included.
   Public Overrides ReadOnly Property CanRead() As Boolean
      Get
         Return True
      End Get
   End Property

   Public Overrides ReadOnly Property CanSeek() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property CanWrite() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property Length() As Long
      Get
         Return _sink.Length
      End Get
   End Property

   Public Overrides Property Position() As Long
      Get
         Return _sink.Position
      End Get
      Set
         Throw New NotSupportedException()
      End Set
   End Property

   Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
      Dim c As Integer = _sink.Read(buffer, offset, count)
      Dim i As Integer
      For i = 0 To count - 1
         If buffer(offset+i) >= Asc("a") And buffer(offset+i) <= Asc("z") Then
            buffer(offset+i) = buffer(offset+i) - (Asc("a")-Asc("A"))
         End If
      Next i
      Return c
   End Function

   Public Overrides Function Seek(ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
        Throw New NotSupportedException()
   End Function

   Public Overrides Sub SetLength(ByVal length As Long)
      Throw New NotSupportedException()
   End Sub

   Public Overrides Sub Close()
      _sink.Close()
   End Sub

   Public Overrides Sub Flush()
      _sink.Flush()
   End Sub

   Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
      Throw New NotSupportedException()
   End Sub
End Class

' The class QQQ2 changes all E characters to asterisks.
class QQQ2
   Inherits Stream

   Private _sink As Stream

   Public Sub New(sink As Stream)
      _sink = sink
   End Sub

   ' All MustOverride interface members must be included.
   Public Overrides ReadOnly Property CanRead() As Boolean
      Get
         Return true
      End Get
   End Property

   Public Overrides ReadOnly Property CanSeek() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property CanWrite() As Boolean
      Get
         Return False
      End Get
   End Property

   Public Overrides ReadOnly Property Length() As Long
      Get
         Return _sink.Length
      End Get
   End Property

   Public Overrides Property Position() As Long
      Get
         Return _sink.Position
      End Get
      Set
         Throw New NotSupportedException()
      End Set
   End Property

   Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
      Dim c As Integer = _sink.Read(buffer, offset, count)
      Dim i As Integer
      For i = 0 To count-1
         If buffer(i) = Asc("E") Then
            buffer(i) = Asc("*")
         End If
      Next i
      Return c
   End Function

   Public Overrides Function Seek(ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
      Throw New NotSupportedException()
   End Function

   Public Overrides Sub SetLength(length As Long)
      Throw New NotSupportedException()
   End Sub

   Public Overrides Sub Close()
      _sink.Close()
   End Sub

   Public Overrides Sub Flush()
      _sink.Flush()
   End Sub

   Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
      Throw New NotSupportedException()
   End Sub
End Class

'____________________________________________________________________

' This ASP.NET page uses the request filter to modify all text sent by the
' browser in Request.InputStream. To test the filter, use this page to take
' the POSTed output from a data entry page using a tag such as:
' <form method="POST" action="ThisTestPage.aspx">

'<%@ PAGE LANGUAGE = VB %>
'<%@ IMPORT namespace="System.IO" %>

'<html>
'<Script runat=server>

'   Sub Page_Load()
'      Dim str As Stream, strmContents As String
'      Dim counter, strLen As Integer

      ' Create a Stream object.
'      str = Request.InputStream

      ' Find number of bytes in stream.
'      strLen = CInt(str.Length)

      ' Create a byte array.
'      Dim strArr(strLen) As Byte

      ' Read stream into byte array.
'      str.Read(strArr,0,strLen)

      ' Convert byte array to a text string.
'      For counter = 0 To strLen-1
'         strmContents = strmContents & Chr(strArr(counter))
'      Next counter

'      Response.Write("Contents of Filtered InputStream: " & strmContents)
'   End Sub

' </html>

</script>

<%@ Page language="c#" %>
<%@ Import namespace="System.Text" %>
<%@ Import namespace="System.IO" %>

<script runat="server">

// This code is to be added to a Global.asax file.

public void Application_BeginRequest()
{
   Request.Filter = new QQQ1(Request.Filter);
   Request.Filter = new QQQ2(Request.Filter);
}

class QQQ1 : Stream
{
    private Stream _sink;

    public QQQ1(Stream sink)
    {
        _sink = sink;
    }

    public override bool CanRead
    {
        get { return true; }
    }

    public override bool CanSeek
    {
        get { return false; }
    }

    public override bool CanWrite
    {
        get { return false; }
    }

    public override long Length
    {
        get { return _sink.Length; }
    }

    public override long Position
    {
        get { return _sink.Position; }
        set { throw new NotSupportedException(); }
    }

    public override int Read(byte[] buffer, int offset, int count)
    {
    int c = _sink.Read(buffer, offset, count);

        for (int i = 0; i < count; i++)
        {
            if (buffer[offset+i] >= 'a' && buffer[offset+i] <= 'z')
                buffer[offset+i] -= ('a'-'A');
        }

        return c;
    }

    public override long Seek(long offset, System.IO.SeekOrigin direction)
    {
        throw new NotSupportedException();
    }

    public override void SetLength(long length)
    {
        throw new NotSupportedException();
    }

    public override void Close()
    {
        _sink.Close();
    }

    public override void Flush()
    {
        _sink.Flush();
    }

    public override void Write(byte[] buffer, int offset, int count)
    {
    throw new NotSupportedException();
    }
}

class QQQ2 : Stream
{
    private Stream _sink;

    public QQQ2(Stream sink)
    {
        _sink = sink;
    }

    public override bool CanRead
    {
        get { return true; }
    }

    public override bool CanSeek
    {
        get { return false; }
    }

    public override bool CanWrite
    {
        get { return false; }
    }

    public override long Length
    {
        get { return _sink.Length; }
    }

    public override long Position
    {
        get { return _sink.Position; }
        set { throw new NotSupportedException(); }
    }

    public override int Read(byte[] buffer, int offset, int count)
    {
    int c = _sink.Read(buffer, offset, count);

        for (int i = 0; i < count; i++)
        {
            if (buffer[i] == 'E')
                buffer[i] = (byte)'*';
            else if (buffer[i] == 'e')
                buffer[i] = (byte)'#';
        }
        return c;
    }

    public override long Seek(long offset, System.IO.SeekOrigin direction)
    {
        throw new NotSupportedException();
    }

    public override void SetLength(long length)
    {
        throw new NotSupportedException();
    }

    public override void Close()
    {
        _sink.Close();
    }

    public override void Flush()
    {
        _sink.Flush();
    }

    public override void Write(byte[] buffer, int offset, int count)
    {
    throw new NotSupportedException();
    }
}

/*____________________________________________________________________

This ASP.NET page uses the request filter to modify all text sent by the
browser in Request.InputStream. To test the filter, use this page to take
the POSTed output from a data entry page using a tag such as:
<form method="POST" action="ThisTestPage.aspx">

<%@ PAGE LANGUAGE = C# %>
<%@ IMPORT namespace="System.IO" %>

<html>
<Script runat=server>
   void Page_Load()
   {

      // Create a Stream object to capture entire InputStream from browser.
      Stream str = Request.InputStream;

      // Find number of bytes in stream.
      int strLen = (int)str.Length;

      // Create a byte array to hold stream.
      byte[] bArr = new byte[strLen];

      // Read stream into byte array.
      str.Read(bArr,0,strLen);

      // Convert byte array to a text string.
      String strmContents="";
      for(int i = 0; i < strLen; i++)
         strmContents = strmContents + (Char)bArr[i];

      // Display filtered stream in browser.
      Response.Write("Contents of Filtered InputStream: <br>" + strmContents);
   }
______________________________________________________________________*/

</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Form 属性

HttpRequest
.
.
::
.
Form 属性
HttpRequest 类

获取窗体变量集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Form As NameValueCollection
    Get
public NameValueCollection Form { get; }
public:
property NameValueCollection^ Form {
    NameValueCollection^ get ();
}
member Form : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
表示窗体变量集合的 NameValueCollection。

当 HTTP 请求 Content-Type 值为“application/x-www-form-urlencoded”或“multipart/form-data”时，会填充 Form 属性。

下面的示例演示如何读取浏览器发送的窗体集合中的值。集合中的每个名称/值对都表示窗体中的一个控件及其值。 下面的示例演示如何读取浏览器发送的窗体集合中的值。集合中的每个名称/值对都表示窗体中的一个控件及其值。

Dim loop1 As Integer
Dim arr1() As String
Dim coll As NameValueCollection

' Load Form variables into NameValueCollection variable.
coll=Request.Form

' Get names of all forms into a string array.
arr1 = coll.AllKeys
For loop1 = 0 To arr1.GetUpperBound(0)
   Response.Write("Form: " & arr1(loop1) & "<br>")
Next loop1

int loop1;
NameValueCollection coll;

//Load Form variables into NameValueCollection variable.
coll=Request.Form;
// Get names of all forms into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
   Response.Write("Form: " + arr1[loop1] + "<br>");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
ValidateInput
Cookies
QueryString


HttpRequest ..::.Headers 属性

HttpRequest
.
.
::
.
Headers 属性
HttpRequest 类

获取 HTTP 头集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Headers As NameValueCollection
    Get
public NameValueCollection Headers { get; }
public:
property NameValueCollection^ Headers {
    NameValueCollection^ get ();
}
member Headers : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
头的 NameValueCollection。

有关所有可能标头的列表，请参见 W3C 网站上的 Request Header Fields（请求标头字段）。

下面的代码示例显示 HTTP 请求中所有标头的名称和值。

Dim loop1, loop2 As Integer
 Dim arr1(), arr2() As String
 Dim coll As NameValueCollection

' Load Header collection into NameValueCollection object.
coll=Request.Headers

' Put the names of all keys into a string array.
arr1 = coll.AllKeys
For loop1 = 0 To arr1.GetUpperBound(0)
   Response.Write("Key: " & arr1(loop1) & "<br>")
   arr2 = coll.GetValues(loop1)
   ' Get all values under this key.
   For loop2 = 0 To arr2.GetUpperBound(0)
      Response.Write("Value " & CStr(loop2) & ": " & Server.HtmlEncode(arr2(loop2)) & "<br>")
    Next loop2
 Next loop1

int loop1, loop2;
NameValueCollection coll;

// Load Header collection into NameValueCollection object.
coll=Request.Headers;

// Put the names of all keys into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1<arr1.Length; loop1++)
{
   Response.Write("Key: " + arr1[loop1] + "<br>");
   // Get all values under this key.
   String[] arr2=coll.GetValues(arr1[loop1]);
   for (loop2 = 0; loop2<arr2.Length; loop2++)
   {
      Response.Write("Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.HttpChannelBinding 属性

HttpRequest
.
.
::
.
HttpChannelBinding 属性
HttpRequest 类

获取当前 HttpWorkerRequest 实例的 ChannelBinding 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property HttpChannelBinding As ChannelBinding
    Get
public ChannelBinding HttpChannelBinding { get; }
public:
property ChannelBinding^ HttpChannelBinding {
    ChannelBinding^ get ();
}
member HttpChannelBinding : ChannelBinding

属性值

类型： System.Security.Authentication.ExtendedProtection ChannelBinding
当前 HttpWorkerRequest 实例的 ChannelBinding 对象。
异常 | 条件
PlatformNotSupportedException | 当前的 HttpWorkerRequest 对象不是 System.Web.Hosting.IIS7WorkerRequest 对象或 System.Web.Hosting.ISAPIWorkerRequestInProc 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.HttpMethod 属性

HttpRequest
.
.
::
.
HttpMethod 属性
HttpRequest 类

获取客户端使用的 HTTP 数据传输方法（如 GET、POST 或 HEAD）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property HttpMethod As String
    Get
public string HttpMethod { get; }
public:
property String^ HttpMethod {
    String^ get ();
}
member HttpMethod : string

属性值

类型： System String
客户端使用的 HTTP 数据传输方法。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 HttpMethod 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 HttpMethod 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType))
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType));
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.InputStream 属性

HttpRequest
.
.
::
.
InputStream 属性
HttpRequest 类

获取传入的 HTTP 实体主体的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property InputStream As Stream
    Get
public Stream InputStream { get; }
public:
property Stream^ InputStream {
    Stream^ get ();
}
member InputStream : Stream

属性值

类型： System.IO Stream
表示传入的 HTTP 内容主体的内容的 Stream 对象。

下面的代码示例将 InputStream 的内容复制到一个字符串中。

Dim str As System.IO.Stream, strmContents As String
Dim counter, strLen, strRead As Integer

' Create a Stream object.
str = Request.InputStream
' Find number of bytes in stream.
strLen = CInt(str.Length)
' Create a byte array.
Dim strArr(strLen) As Byte
' Read stream into byte array.
strRead = str.Read(strArr,0,strLen)

' Convert byte array to a text string.
For counter = 0 To strLen-1
   strmContents = strmContents & strArr(counter).ToString()
Next counter

System.IO.Stream str; String strmContents;
Int32 counter, strLen, strRead;
// Create a Stream object.
str = Request.InputStream;
// Find number of bytes in stream.
strLen = Convert.ToInt32(str.Length);
// Create a byte array.
byte[] strArr = new byte[strLen];
// Read stream into byte array.
strRead = str.Read(strArr, 0, strLen);

// Convert byte array to a text string.
strmContents = "";
for (counter = 0; counter < strLen; counter++)
{
    strmContents = strmContents + strArr[counter].ToString();
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.IsAuthenticated 属性

HttpRequest
.
.
::
.
IsAuthenticated 属性
HttpRequest 类

获取一个值，该值指示是否验证了请求。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsAuthenticated As Boolean
    Get
public bool IsAuthenticated { get; }
public:
property bool IsAuthenticated {
    bool get ();
}
member IsAuthenticated : bool

属性值

类型： System Boolean
如果请求已经过身份验证，则为 true；否则，为 false。

下面的代码示例使用 IsAuthenticated 属性确定当前请求是否已经过身份验证。如果请求未经过身份验证，它将被重定向到另一页，在此处，用户可以向 Web 应用程序输入凭据。这是在应用程序默认页中使用的常用技术。 下面的代码示例使用 IsAuthenticated 属性确定当前请求是否已经过身份验证。如果请求未经过身份验证，它将被重定向到另一页，在此处，用户可以向 Web 应用程序输入凭据。这是在应用程序默认页中使用的常用技术。 下面的代码示例使用 IsAuthenticated 属性确定当前请求是否已经过身份验证。如果请求未经过身份验证，它将被重定向到另一页，在此处，用户可以向 Web 应用程序输入凭据。这是在应用程序默认页中使用的常用技术。

Private Sub Page_Load(sender As Object, e As EventArgs)
    ' Check whether the current request has been
    ' authenticated. If it has not, redirect the
    ' user to the Login.aspx page.
    If (Request.IsAuthenticated = False) Then
        Response.Redirect("Login.aspx")
    End If
End Sub

private void Page_Load(object sender, EventArgs e)
{
    // Check whether the current request has been
    // authenticated. If it has not, redirect the
    // user to the Login.aspx page.
    if (!Request.IsAuthenticated)
    {
        Response.Redirect("Login.aspx");
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.IsLocal 属性

HttpRequest
.
.
::
.
IsLocal 属性
HttpRequest 类

获取一个值，该值指示该请求是否来自本地计算机。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsLocal As Boolean
    Get
public bool IsLocal { get; }
public:
property bool IsLocal {
    bool get ();
}
member IsLocal : bool

属性值

类型： System Boolean
如果该请求来自本地计算机，则为 true；否则，为 false。

如果发出请求方的 IP 地址为 127.0.0.1，或者，如果请求的 IP 地址与服务器的 IP 地址相同，IsLocal 属性就会返回 true。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.IsSecureConnection 属性

HttpRequest
.
.
::
.
IsSecureConnection 属性
HttpRequest 类

获取一个值，指示 HTTP 连接是否使用安全套接字（即 HTTPS）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsSecureConnection As Boolean
    Get
public bool IsSecureConnection { get; }
public:
property bool IsSecureConnection {
    bool get ();
}
member IsSecureConnection : bool

属性值

类型： System Boolean
如果连接是 SSL 连接，则为 true；否则为 false。

下面的代码示例确定 IsSecureConnection 属性是否被设置为 false。如果是，SuppressContent 属性就会被设置为 true，以停止发送响应。 下面的代码示例确定 IsSecureConnection 属性是否被设置为 false。如果是，SuppressContent 属性就会被设置为 true，以停止发送响应。

' Check whether the request is sent
' over HTTPS. If not, do not return
' content to the client.
If (Request.IsSecureConnection = False) Then
    Response.SuppressContent = True
End If

// Check whether the request is sent
// over HTTPS. If not, do not send
// content to the client.
if (!Request.IsSecureConnection)
{
    Response.SuppressContent = true;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Item 属性

HttpRequest
.
.
::
.
Item 属性
HttpRequest 类

从 Cookies、Form、QueryString 或 ServerVariables 集合中获取指定的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    key As String _
) As String
    Get
public string this[
    string key
] { get; }
public:
property String^ Item[String^ key] {
    String^ get (String^ key);
}
member Item : string

参数

key
类型： System String
要获取的集合成员的名称。

属性值

类型： System String
key 参数中指定的 QueryString、Form、Cookies 或 ServerVariables 集合成员。如果未找到指定的 key，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 key 参数中指定的 QueryString、Form、Cookies 或 ServerVariables 集合成员。如果未找到指定的 key，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.LogonUserIdentity 属性

HttpRequest
.
.
::
.
LogonUserIdentity 属性
HttpRequest 类

获取当前用户的 WindowsIdentity 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property LogonUserIdentity As WindowsIdentity
    Get
public WindowsIdentity LogonUserIdentity { get; }
public:
property WindowsIdentity^ LogonUserIdentity {
    WindowsIdentity^ get ();
}
member LogonUserIdentity : WindowsIdentity

属性值

类型： System.Security.Principal WindowsIdentity
当前 Microsoft Internet Information Services (IIS) 身份验证设置的 WindowsIdentity 对象。
异常 | 条件
InvalidOperationException | Web 应用程序正在 IIS 7 集成模式下运行，尚未引发 PostAuthenticateRequest 事件。

LogonUserIdentity 属性为当前连接到 Microsoft Internet 信息服务 (IIS) 的用户公开 WindowsIdentity 对象的属性和方法。由 LogonUserIdentity 公开的 WindowsIdentity 类跟踪 IIS 请求标记，并且为 ASP.NET 内部处理的 HTTP 请求提供对此标记的方便访问。自动创建 WindowsIdentity 类的实例，因此不需要构建它来获取其方法和属性的访问权限。 LogonUserIdentity 属性为当前连接到 Microsoft Internet 信息服务 (IIS) 的用户公开 WindowsIdentity 对象的属性和方法。由 LogonUserIdentity 公开的 WindowsIdentity 类跟踪 IIS 请求标记，并且为 ASP.NET 内部处理的 HTTP 请求提供对此标记的方便访问。自动创建 WindowsIdentity 类的实例，因此不需要构建它来获取其方法和属性的访问权限。 LogonUserIdentity 属性为当前连接到 Microsoft Internet 信息服务 (IIS) 的用户公开 WindowsIdentity 对象的属性和方法。由 LogonUserIdentity 公开的 WindowsIdentity 类跟踪 IIS 请求标记，并且为 ASP.NET 内部处理的 HTTP 请求提供对此标记的方便访问。自动创建 WindowsIdentity 类的实例，因此不需要构建它来获取其方法和属性的访问权限。

下面的代码示例显示如何为当前用户检索 LogonUserIdentity 属性，并将各项的值都写出到文本文件。将此代码放置在由窗体的 ACTION 特性引用的 ASP.NET 页上。 下面的代码示例显示如何为当前用户检索 LogonUserIdentity 属性，并将各项的值都写出到文本文件。将此代码放置在由窗体的 ACTION 特性引用的 ASP.NET 页上。

<%@ Page Language="VB" %>
<%@ import Namespace="System.IO" %>

<script runat="server">

    ' * NOTE: To use this sample, create a c:\temp  folder,
    ' *  add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
    ' *  in IIS 6.x NETWORK SERVICE), and give it write permissions
    ' *  to the folder.

    Private Const INFO_DIR As String = "c:\temp\"

    Private Sub Page_Load(sender As Object, e As System.EventArgs)

        ' Validate that user is authenticated
        If Not (Request.LogonUserIdentity.IsAuthenticated) Then
            Response.Redirect("LoginPage.aspx")
        End If

        ' Create a string that contains the file path
        Dim strFilePath As String = INFO_DIR & "VB_Log.txt"

        Response.Write("Writing log file to " & strFilePath & "...")

        ' Create stream writer object and pass it the file path
        Dim sw As StreamWriter = File.CreateText(strFilePath)

        ' Write user info to log
        sw.WriteLine("Access log from " & DateTime.Now.ToString())
        sw.WriteLine("User: " & Request.LogonUserIdentity.User.ToString())
        sw.WriteLine("Name: " & Request.LogonUserIdentity.Name)
        sw.WriteLine("AuthenticationType: " & Request.LogonUserIdentity.AuthenticationType)
        sw.WriteLine("ImpersonationLevel: " & Request.LogonUserIdentity.ImpersonationLevel)
        sw.WriteLine("IsAnonymous: " & Request.LogonUserIdentity.IsAnonymous)
        sw.WriteLine("IsGuest: " & Request.LogonUserIdentity.IsGuest)
        sw.WriteLine("IsSystem: " & Request.LogonUserIdentity.IsSystem)
        sw.WriteLine("Owner: " & Request.LogonUserIdentity.Owner.ToString())
        sw.WriteLine("Token: " & Request.LogonUserIdentity.Token.ToString())

        ' Close the stream to the file.
        sw.Close()
    End Sub

</script>

<%@ Page Language="C#" %>
<%@ import Namespace="System.IO" %>

<script runat="server">

    /* NOTE: To use this sample, create a c:\temp  folder,
    *  add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
    *  in IIS 6.x NETWORK SERVICE), and give it write permissions
    *  to the folder.*/

    private const string INFO_DIR = @"c:\temp\";

    private void Page_Load(object sender, System.EventArgs e)
    {
        // Validate that user is authenticated
        if (!Request.LogonUserIdentity.IsAuthenticated)
            Response.Redirect("LoginPage.aspx");

        // Create a string that contains the file path
        string strFilePath = INFO_DIR + "CS_Log.txt";

        Response.Write("Writing log file to " + strFilePath + "...");

        // Create stream writer object and pass it the file path
        StreamWriter sw = File.CreateText(strFilePath);

        // Write user info to log
        sw.WriteLine("Access log from " + DateTime.Now.ToString());
        sw.WriteLine("User: " + Request.LogonUserIdentity.User);
        sw.WriteLine("Name: " + Request.LogonUserIdentity.Name);
        sw.WriteLine("AuthenticationType: " + Request.LogonUserIdentity.AuthenticationType);
        sw.WriteLine("ImpersonationLevel: " + Request.LogonUserIdentity.ImpersonationLevel);
        sw.WriteLine("IsAnonymous: " + Request.LogonUserIdentity.IsAnonymous);
        sw.WriteLine("IsGuest: " + Request.LogonUserIdentity.IsGuest);
        sw.WriteLine("IsSystem: " + Request.LogonUserIdentity.IsSystem);
        sw.WriteLine("Owner: " + Request.LogonUserIdentity.Owner);
        sw.WriteLine("Token: " + Request.LogonUserIdentity.Token);

        // Close the stream to the file.
        sw.Close();
    }
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Params 属性

HttpRequest
.
.
::
.
Params 属性
HttpRequest 类

获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Params As NameValueCollection
    Get
public NameValueCollection Params { get; }
public:
property NameValueCollection^ Params {
    NameValueCollection^ get ();
}
member Params : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
一个 NameValueCollection 对象。

下面的代码示例循环访问页的 Params 属性，并在页上显示各项及相应的值。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Private Sub Page_Load(sender As Object, e As EventArgs)

        ' Create a string to contain the paramaters'
        ' information.
        Dim paramInfo As String = ""

        Dim i, j As Integer

        ' Obtain a reference to the Request.Params
        ' collection.
        Dim pColl As NameValueCollection = Request.Params

        ' Iterate through the collection and add
        ' each key to the string variable.
        For i = 0 To pColl.Count - 1

            paramInfo += "Key: " + pColl.GetKey(i) + "<br />"

            ' Create a string array that contains
            ' the values associated with each key.
            Dim pValues() As String  = pColl.GetValues(i)

            ' Iterate through the array and add
            ' each value to the string variable.
            For j = 0 To pValues.Length - 1

                paramInfo += "Value:" + pValues(j) + "<br /><br />"

            Next j
        Next i

        ' Set a Label's Text property to the values
        ' contained in the string variable.
        lblValues.Text = paramInfo
    End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label id="lblValues" runat="server" />
    </form>
</body>
</html>

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Create a string to contain the paramaters'
        // information.
        string paramInfo = "";

        // Obtain a reference to the Request.Params
        // collection.
        NameValueCollection pColl = Request.Params;

        // Iterate through the collection and add
        // each key to the string variable.
        for(int i = 0; i <= pColl.Count - 1; i++)
        {
            paramInfo += "Key: " + pColl.GetKey(i) + "<br />";

            // Create a string array that contains
            // the values associated with each key.
            string[] pValues = pColl.GetValues(i);

            // Iterate through the array and add
            // each value to the string variable.
            for(int j = 0; j <= pValues.Length - 1; j++)
            {
                paramInfo += "Value:" + pValues[j] + "<br /><br />";

            }
        }

        // Set a Label's Text property to the values
        // contained in the string variable.
        lblValues.Text = paramInfo;
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label id="lblValues" runat="server" />
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Path 属性

HttpRequest
.
.
::
.
Path 属性
HttpRequest 类

获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Path As String
    Get
public string Path { get; }
public:
property String^ Path {
    String^ get ();
}
member Path : string

属性值

类型： System String
当前请求的虚拟路径。

Path 是 FilePath 和 PathInfo 尾部的串联。例如，对于 URL http://www.contoso.com/virdir/page.html/tail，Path 为 /virdir/page.html/tail。 Path 是 FilePath 和 PathInfo 尾部的串联。例如，对于 URL http://www.contoso.com/virdir/page.html/tail，Path 为 /virdir/page.html/tail。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 Path 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 Path 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.FilePath))
sw.WriteLine(Server.HtmlEncode(Request.Path))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.FilePath));
sw.WriteLine(Server.HtmlEncode(Request.Path));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
FilePath
PathInfo


HttpRequest ..::.PathInfo 属性

HttpRequest
.
.
::
.
PathInfo 属性
HttpRequest 类

获取具有 URL 扩展名的资源的附加路径信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property PathInfo As String
    Get
public string PathInfo { get; }
public:
property String^ PathInfo {
    String^ get ();
}
member PathInfo : string

属性值

类型： System String
资源的附加路径信息。

对于 URL Http://www.contoso.com/virdir/page.html/tail，PathInfo 值为 /tail。

下面的代码示例确定 PathInfo 属性是否包含空字符串。如果包含，Write 方法就会将指明这种情况的字符串写入文件。如果不包含，HtmlEncode 方法会对 PathInfo 属性的值进行 HTML 编码，并且 WriteLine 方法会将经过编码的值写入文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例确定 PathInfo 属性是否包含空字符串。如果包含，Write 方法就会将指明这种情况的字符串写入文件。如果不包含，HtmlEncode 方法会对 PathInfo 属性的值进行 HTML 编码，并且 WriteLine 方法会将经过编码的值写入文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例确定 PathInfo 属性是否包含空字符串。如果包含，Write 方法就会将指明这种情况的字符串写入文件。如果不包含，HtmlEncode 方法会对 PathInfo 属性的值进行 HTML 编码，并且 WriteLine 方法会将经过编码的值写入文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例确定 PathInfo 属性是否包含空字符串。如果包含，Write 方法就会将指明这种情况的字符串写入文件。如果不包含，HtmlEncode 方法会对 PathInfo 属性的值进行 HTML 编码，并且 WriteLine 方法会将经过编码的值写入文件。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write the PathInfo property value
' or a string if it is empty.
If Request.PathInfo = String.Empty Then
    sw.WriteLine("The PathInfo property contains no information.")
Else
    sw.WriteLine(Server.HtmlEncode(Request.PathInfo))
End If

// Write the PathInfo property value
// or a string if it is empty.
if (Request.PathInfo == String.Empty)
{
    sw.WriteLine("The PathInfo property contains no information.");
}
else
{
    sw.WriteLine(Server.HtmlEncode(Request.PathInfo));
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
Path
FilePath


HttpRequest ..::.PhysicalApplicationPath 属性

HttpRequest
.
.
::
.
PhysicalApplicationPath 属性
HttpRequest 类

获取当前正在执行的服务器应用程序的根目录的物理文件系统路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property PhysicalApplicationPath As String
    Get
public string PhysicalApplicationPath { get; }
public:
property String^ PhysicalApplicationPath {
    String^ get ();
}
member PhysicalApplicationPath : string

属性值

类型： System String
当前应用程序的根目录的文件系统路径。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 PhysicalApplicationPath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 PhysicalApplicationPath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath))
sw.WriteLine(Server.HtmlEncode(Request.RawUrl))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath));
sw.WriteLine(Server.HtmlEncode(Request.RawUrl));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.PhysicalPath 属性

HttpRequest
.
.
::
.
PhysicalPath 属性
HttpRequest 类

获取与请求的 URL 相对应的物理文件系统路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property PhysicalPath As String
    Get
public string PhysicalPath { get; }
public:
property String^ PhysicalPath {
    String^ get ();
}
member PhysicalPath : string

属性值

类型： System String
当前请求的文件系统路径。

在使用 Execute 和 Transfer 的重定向方案中，PhysicalPath 属性返回原始页的路径。要查找当前执行页的物理路径，请使用 MapPath 方法，并将输入参数设置为 CurrentExecutionFilePath 属性。 在使用 Execute 和 Transfer 的重定向方案中，PhysicalPath 属性返回原始页的路径。要查找当前执行页的物理路径，请使用 MapPath 方法，并将输入参数设置为 CurrentExecutionFilePath 属性。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 PhysicalPath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 PhysicalPath 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath))
sw.WriteLine(Server.HtmlEncode(Request.RawUrl))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath));
sw.WriteLine(Server.HtmlEncode(Request.RawUrl));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
MapPath
CurrentExecutionFilePath


HttpRequest ..::.QueryString 属性

HttpRequest
.
.
::
.
QueryString 属性
HttpRequest 类

获取 HTTP 查询字符串变量集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property QueryString As NameValueCollection
    Get
public NameValueCollection QueryString { get; }
public:
property NameValueCollection^ QueryString {
    NameValueCollection^ get ();
}
member QueryString : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
NameValueCollection，包含由客户端发送的查询字符串变量的集合。例如，如果请求 URL 为 http://www.contoso.com/default.aspx?id=44，则 QueryString 的值为“id=44”。 NameValueCollection，包含由客户端发送的查询字符串变量的集合。例如，如果请求 URL 为 http://www.contoso.com/default.aspx?id=44，则 QueryString 的值为“id=44”。

下面的代码示例接受来自客户端窗体（具有 GET 方法特性）的查询字符串，并写出窗体上每个命名输入元素的名称和值。将此代码放置在由窗体的 ACTION 特性引用的 ASP.NET 页上。 下面的代码示例接受来自客户端窗体（具有 GET 方法特性）的查询字符串，并写出窗体上每个命名输入元素的名称和值。将此代码放置在由窗体的 ACTION 特性引用的 ASP.NET 页上。

Dim loop1, loop2 As Integer
 Dim arr1(), arr2() As String
 Dim coll As NameValueCollection

' Load Form variables into NameValueCollection variable.
coll=Request.QueryString
' Get names of all keys into a string array.
arr1 = coll.AllKeys
For loop1 = 0 To arr1.GetUpperBound(0)
   Response.Write("Key: " & Server.HtmlEncode(arr1(loop1)) & "<br>")
   ' Get all values under this key.
   arr2 = coll.GetValues(loop1)
    For loop2 = 0 To arr2.GetUpperBound(0)
       Response.Write("Value " & CStr(loop2) & ": " & Server.HtmlEncode(arr2(loop2)) & "<br><br>")
    Next loop2
 Next loop1

int loop1, loop2;

// Load NameValueCollection object.
NameValueCollection coll=Request.QueryString;
// Get names of all keys into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
   Response.Write("Key: " + Server.HtmlEncode(arr1[loop1]) + "<br>");
   String[] arr2 = coll.GetValues(arr1[loop1]);
   for (loop2 = 0; loop2 < arr2.Length; loop2++)
   {
      Response.Write("Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
ValidateInput
Form
Cookies
Community Content
关于.querystring[id] 6/28/2010 3:14:07 AM UTC .net的爱好者
这里的id始终弄不懂。大侠帮忙告诉一下


HttpRequest ..::.RawUrl 属性

HttpRequest
.
.
::
.
RawUrl 属性
HttpRequest 类

获取当前请求的原始 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property RawUrl As String
    Get
    Friend Set
public string RawUrl { get; internal set; }
public:
property String^ RawUrl {
    String^ get ();
    internal: void set (String^ value);
}
member RawUrl : string with get, internal set

属性值

类型： System String
当前请求的原始 URL。

原始 URL 定义为 URL 中域信息之后的部分。在 URL 字符串 http://www.contoso.com/articles/recent.aspx 中，原始 URL 为 /articles/recent.aspx。原始 URL 包含查询字符串（如果存在）。 原始 URL 定义为 URL 中域信息之后的部分。在 URL 字符串 http://www.contoso.com/articles/recent.aspx 中，原始 URL 为 /articles/recent.aspx。原始 URL 包含查询字符串（如果存在）。 原始 URL 定义为 URL 中域信息之后的部分。在 URL 字符串 http://www.contoso.com/articles/recent.aspx 中，原始 URL 为 /articles/recent.aspx。原始 URL 包含查询字符串（如果存在）。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 RawUrl 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 RawUrl 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath))
sw.WriteLine(Server.HtmlEncode(Request.RawUrl))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath));
sw.WriteLine(Server.HtmlEncode(Request.RawUrl));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.RequestContext 属性

HttpRequest
.
.
::
.
RequestContext 属性
HttpRequest 类

获取当前请求的 RequestContext 实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property RequestContext As RequestContext
    Get
    Friend Set
public RequestContext RequestContext { get; internal set; }
public:
property RequestContext^ RequestContext {
    RequestContext^ get ();
    internal: void set (RequestContext^ value);
}
member RequestContext : RequestContext with get, internal set

属性值

类型： System.Web.Routing RequestContext
当前请求的 RequestContext 实例。对于非路由请求，返回的 RequestContext 对象为空。 当前请求的 RequestContext 实例。对于非路由请求，返回的 RequestContext 对象为空。

此属性提供对当前请求的 RouteData 对象的访问。有关 ASP.NET 路由的更多信息，请参见 ASP.NET 路由。 此属性提供对当前请求的 RouteData 对象的访问。有关 ASP.NET 路由的更多信息，请参见 ASP.NET 路由。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间

其他资源

演练：在 Web 窗体应用程序中使用 ASP.NET 路由
如何：在路由页面中访问 URL 参数


HttpRequest ..::.RequestType 属性

HttpRequest
.
.
::
.
RequestType 属性
HttpRequest 类

获取或设置客户端使用的 HTTP 数据传输方法（GET 或 POST）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property RequestType As String
    Get
    Set
public string RequestType { get; set; }
public:
property String^ RequestType {
    String^ get ();
    void set (String^ value);
}
member RequestType : string with get, set

属性值

类型： System String
表示客户端发送的 HTTP 调用类型的字符串。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 RequestType 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 RequestType 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType))
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType));
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.ServerVariables 属性

HttpRequest
.
.
::
.
ServerVariables 属性
HttpRequest 类

获取 Web 服务器变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ServerVariables As NameValueCollection
    Get
public NameValueCollection ServerVariables { get; }
public:
property NameValueCollection^ ServerVariables {
    NameValueCollection^ get ();
}
member ServerVariables : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
服务器变量的 NameValueCollection。

对于 IIS 支持的服务器变量的列表，请参见 IIS Server Variables（IIS 服务器变量）。

下面的代码示例显示所有命名的服务器变量的名称和值。

Dim loop1, loop2 As Integer
Dim arr1(), arr2() As String
Dim coll As NameValueCollection

' Load ServerVariable collection into NameValueCollection object.
coll=Request.ServerVariables
' Get names of all keys into a string array.
arr1 = coll.AllKeys
For loop1 = 0 To arr1.GetUpperBound(0)
   Response.Write("Key: " & arr1(loop1) & "<br>")
   arr2 = coll.GetValues(loop1) ' Get all values under this key.
   For loop2 = 0 To arr2.GetUpperBound(0)
      Response.Write("Value " & CStr(loop2) & ": " & Server.HtmlEncode(arr2(loop2)) & "<br>")
   Next loop2
Next loop1

int loop1, loop2;
NameValueCollection coll;

// Load ServerVariable collection into NameValueCollection object.
coll=Request.ServerVariables;
// Get names of all keys into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1 < arr1.Length; loop1++)
{
   Response.Write("Key: " + arr1[loop1] + "<br>");
   String[] arr2=coll.GetValues(arr1[loop1]);
   for (loop2 = 0; loop2 < arr2.Length; loop2++) {
      Response.Write("Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
   }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.TotalBytes 属性

HttpRequest
.
.
::
.
TotalBytes 属性
HttpRequest 类

获取当前输入流中的字节数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property TotalBytes As Integer
    Get
public int TotalBytes { get; }
public:
property int TotalBytes {
    int get ();
}
member TotalBytes : int

属性值

类型： System Int32
输入流中的字节数。

下面的代码示例确定 TotalBytes 属性值是否大于 1000 字节，并将该信息写入文件。

' Write a message to the file dependent upon
' the value of the TotalBytes property.
If Request.TotalBytes > 1000 Then
    sw.WriteLine("The request is 1KB or greater")
Else
    sw.WriteLine("The request is less than 1KB")
End If

// Write a message to the file dependent upon
// the value of the TotalBytes property.
if (Request.TotalBytes > 1000)
{
    sw.WriteLine("The request is 1KB or greater");
}
else
{
    sw.WriteLine("The request is less than 1KB");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.Url 属性

HttpRequest
.
.
::
.
Url 属性
HttpRequest 类

获取有关当前请求的 URL 的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Url As Uri
    Get
public Uri Url { get; }
public:
property Uri^ Url {
    Uri^ get ();
}
member Url : Uri

属性值

类型： System Uri
包含有关当前请求的 URL 的信息的 Uri 对象。

下面的代码示例将当前请求的 Uri 对象分配给一个对象变量，并在 HTTP 输出中显示 URL 对象的两个属性值。

Dim MyUrl As Uri = Request.Url
 Response.Write("URL Port: " & MyUrl.Port & "<br>")
 Response.Write("URL Protocol: " & Server.HtmlEncode(MyUrl.Scheme) & "<br>")

Uri MyUrl = Request.Url;
 Response.Write("URL Port: " + MyUrl.Port + "<br>");
 Response.Write("URL Protocol: " + Server.HtmlEncode(MyUrl.Scheme) + "<br>");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
Uri


HttpRequest ..::.UrlReferrer 属性

HttpRequest
.
.
::
.
UrlReferrer 属性
HttpRequest 类

获取有关客户端上次请求的 URL 的信息，该请求链接到当前的 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property UrlReferrer As Uri
    Get
public Uri UrlReferrer { get; }
public:
property Uri^ UrlReferrer {
    Uri^ get ();
}
member UrlReferrer : Uri

属性值

类型： System Uri
一个 Uri 对象。
异常 | 条件
UriFormatException | HTTP Referer 请求标头格式不正确，并且不能被转换为 Uri 对象。

下面的代码示例显示将客户端引用到当前应用程序的 URL 的两个属性值。

Dim MyUrl As Uri = Request.UrlReferrer
 Response.Write("Referrer URL Port: " & Server.HtmlEncode(MyUrl.Port.ToString()) & "<br>")
 Response.Write("Referrer URL Protocol: " & Server.HtmlEncode(MyUrl.Scheme) & "<br>")

Uri MyUrl = Request.UrlReferrer;
 Response.Write("Referrer URL Port: " + Server.HtmlEncode(MyUrl.Port.ToString()) + "<br>");
 Response.Write("Referrer URL Protocol: " + Server.HtmlEncode(MyUrl.Scheme) + "<br>");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.UserAgent 属性

HttpRequest
.
.
::
.
UserAgent 属性
HttpRequest 类

获取客户端浏览器的原始用户代理信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property UserAgent As String
    Get
public string UserAgent { get; }
public:
property String^ UserAgent {
    String^ get ();
}
member UserAgent : string

属性值

类型： System String
客户端浏览器的原始用户代理信息。

下面的代码示例将正在请求的浏览器的类型标识分配给一个字符串变量。

Dim userAgent As String
 userAgent= Request.UserAgent
 If userAgent.IndexOf("MSIE 6.0") > -1 Then
    ' The browser is Microsoft Internet Explorer 6.0.
 End If

String userAgent;
userAgent = Request.UserAgent;
if (userAgent.IndexOf("MSIE 6.0") > -1)
{
   // The browser is Microsoft Internet Explorer Version 6.0.
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间
ClientTarget
HttpBrowserCapabilities
Browser

其他资源

ASP.NET Web 服务器控件和浏览器功能
clientTarget 元素（ASP.NET 设置架构）


HttpRequest ..::.UserHostAddress 属性

HttpRequest
.
.
::
.
UserHostAddress 属性
HttpRequest 类

获取远程客户端的 IP 主机地址。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property UserHostAddress As String
    Get
public string UserHostAddress { get; }
public:
property String^ UserHostAddress {
    String^ get ();
}
member UserHostAddress : string

属性值

类型： System String
远程客户端的 IP 地址。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 UserHostAddress 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 UserHostAddress 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType))
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType));
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.UserHostName 属性

HttpRequest
.
.
::
.
UserHostName 属性
HttpRequest 类

获取远程客户端的 DNS 名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property UserHostName As String
    Get
public string UserHostName { get; }
public:
property String^ UserHostName {
    String^ get ();
}
member UserHostName : string

属性值

类型： System String
远程客户端的 DNS 名称。

下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 UserHostName 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。 下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 UserHostName 属性和 WriteLine 方法的值进行编码，以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大示例。

' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType))
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))

// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType));
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequest ..::.UserLanguages 属性

HttpRequest
.
.
::
.
UserLanguages 属性
HttpRequest 类

获取客户端语言首选项的排序字符串数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property UserLanguages As String()
    Get
public string[] UserLanguages { get; }
public:
property array<String^>^ UserLanguages {
    array<String^>^ get ();
}
member UserLanguages : string[]

属性值

类型：
array<
System String
>
[]
()
[]

经过排序的客户端语言首选项的字符串数组，或者，如果为空，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例将 UserLanguages 属性返回的多个值捕获到一个字符串数组中，并将各语言名称写入单独的 HTTP 输出行。

Dim userLang() As String
 Dim count As Integer

 userLang = Request.UserLanguages
 For count = 0 To userLang.GetUpperBound(0)
    Response.Write("User Language: " & Cstr(userLang(count)) & "<br>")
 Next count

int count;
String[] userLang = Request.UserLanguages;

for (count = 0; count < userLang.Length; count++)
{
   Response.Write("User Language " + count +": " + userLang[count] + "<br>");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRequest 类
HttpRequest 成员
System.Web 命名空间


HttpRequestBase 类

HttpRequestBase 类
成员

用作一些类的基类，这些类使 ASP.NET 可以读取客户端在 Web 请求过程中发送的 HTTP 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpRequestBase
public abstract class HttpRequestBase
public ref class HttpRequestBase abstract
[<AbstractClassAttribute>]
type HttpRequestBase =  class end

HttpRequestBase 类为抽象类，该类包含的成员与 HttpRequest 类相同。使用 HttpRequestBase 类可以创建一些派生类，这些派生类与 HttpRequest 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpRequestBase 类为抽象类，该类包含的成员与 HttpRequest 类相同。使用 HttpRequestBase 类可以创建一些派生类，这些派生类与 HttpRequest 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpRequestBase 类为抽象类，该类包含的成员与 HttpRequest 类相同。使用 HttpRequestBase 类可以创建一些派生类，这些派生类与 HttpRequest 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpRequestWrapper 类是从 HttpRequestBase 类派生的。HttpRequestWrapper 类用作 HttpRequest 类的包装。在运行时，通常使用 HttpRequestWrapper 类的实例调用 HttpRequest 对象的成员。 HttpRequestWrapper 类是从 HttpRequestBase 类派生的。HttpRequestWrapper 类用作 HttpRequest 类的包装。在运行时，通常使用 HttpRequestWrapper 类的实例调用 HttpRequest 对象的成员。 HttpRequestWrapper 类是从 HttpRequestBase 类派生的。HttpRequestWrapper 类用作 HttpRequest 类的包装。在运行时，通常使用 HttpRequestWrapper 类的实例调用 HttpRequest 对象的成员。

System.Web System.Web..::.HttpRequestBaseHttpRequestBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase 成员

HttpRequestBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestBase 类

用作一些类的基类，这些类使 ASP.NET 可以读取客户端在 Web 请求过程中发送的 HTTP 值。

HttpRequestBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpRequestBase 类
System.Web 命名空间


HttpRequestBase 构造函数

HttpRequestBase 构造函数
HttpRequestBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpRequestBase()
protected:
HttpRequestBase()
new : unit -> HttpRequestBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase 方法

HttpRequestBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestBase 类

HttpRequestBase 类型公开以下成员。

名称 说明
页首

参考

HttpRequestBase 类
System.Web 命名空间


HttpRequestBase ..::.BinaryRead 方法

HttpRequestBase
.
.
::
.
BinaryRead 方法
HttpRequestBase 类

在派生类中重写时，对当前输入流执行指定字节数的二进制读取。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function BinaryRead ( _
    count As Integer _
) As Byte()
public virtual byte[] BinaryRead(
    int count
)
public:
virtual array<unsigned char>^ BinaryRead(
    int count
)
abstract BinaryRead :
        count:int -> byte[]
override BinaryRead :
        count:int -> byte[]

参数

count
类型： System Int32
要读取的字节数。

返回值

类型：
array<
System Byte
>
[]
()
[]

包含二进制数据的数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.MapImageCoordinates 方法

HttpRequestBase
.
.
::
.
MapImageCoordinates 方法
HttpRequestBase 类

在派生类中重写时，将传入的图像字段窗体参数映射到合适的 x 坐标和 y 坐标值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function MapImageCoordinates ( _
    imageFieldName As String _
) As Integer()
public virtual int[] MapImageCoordinates(
    string imageFieldName
)
public:
virtual array<int>^ MapImageCoordinates(
    String^ imageFieldName
)
abstract MapImageCoordinates :
        imageFieldName:string -> int[]
override MapImageCoordinates :
        imageFieldName:string -> int[]

参数

imageFieldName
类型： System String
图像映射的名称。

返回值

类型：
array<
System Int32
>
[]
()
[]

二维整数数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.MapPath 方法

HttpRequestBase
.
.
::
.
MapPath 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestBase 类

在派生类中重写时，将请求的 URL 中的虚拟路径映射到服务器上的物理路径。

名称 说明
页首

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.MapPath 方法 (String)

HttpRequestBase
.
.
::
.
MapPath 方法 (String)
HttpRequestBase 类

在派生类中重写时，将指定的虚拟路径映射到服务器上的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function MapPath ( _
    virtualPath As String _
) As String
public virtual string MapPath(
    string virtualPath
)
public:
virtual String^ MapPath(
    String^ virtualPath
)
abstract MapPath :
        virtualPath:string -> string
override MapPath :
        virtualPath:string -> string

参数

virtualPath
类型： System String
要映射到物理路径的虚拟路径（绝对或相对）。

返回值

类型： System String
由 virtualPath 指定的服务器上的物理路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
MapPath 重载
System.Web 命名空间


HttpRequestBase ..::.MapPath 方法 (String, String, Boolean)

HttpRequestBase
.
.
::
.
MapPath 方法 (String, String, Boolean)
HttpRequestBase 类

在派生类中重写时，将指定的虚拟路径映射到服务器上的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function MapPath ( _
    virtualPath As String, _
    baseVirtualDir As String, _
    allowCrossAppMapping As Boolean _
) As String
public virtual string MapPath(
    string virtualPath,
    string baseVirtualDir,
    bool allowCrossAppMapping
)
public:
virtual String^ MapPath(
    String^ virtualPath,
    String^ baseVirtualDir,
    bool allowCrossAppMapping
)
abstract MapPath :
        virtualPath:string *
        baseVirtualDir:string *
        allowCrossAppMapping:bool -> string
override MapPath :
        virtualPath:string *
        baseVirtualDir:string *
        allowCrossAppMapping:bool -> string

参数

virtualPath
类型： System String
要映射到物理路径的虚拟路径（绝对或相对）。
baseVirtualDir
类型： System String
用于相对解析的虚拟基目录路径。
allowCrossAppMapping
类型： System Boolean
如果 virtualPath 可以属于另一个应用程序，则为 true；否则为 false。

返回值

类型： System String
服务器上的物理路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
MapPath 重载
System.Web 命名空间


HttpRequestBase ..::.SaveAs 方法

HttpRequestBase
.
.
::
.
SaveAs 方法
HttpRequestBase 类

在派生类中重写时，将 HTTP 请求保存到磁盘。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SaveAs ( _
    filename As String, _
    includeHeaders As Boolean _
)
public virtual void SaveAs(
    string filename,
    bool includeHeaders
)
public:
virtual void SaveAs(
    String^ filename,
    bool includeHeaders
)
abstract SaveAs :
        filename:string *
        includeHeaders:bool -> unit
override SaveAs :
        filename:string *
        includeHeaders:bool -> unit

参数

filename
类型： System String
物理驱动器路径。
includeHeaders
类型： System Boolean
一个指定是否将 HTTP 标头保存到磁盘的值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ValidateInput 方法

HttpRequestBase
.
.
::
.
ValidateInput 方法
HttpRequestBase 类

在派生类中重写时，引发对通过 Cookies、Form 和 QueryString 属性访问的集合的验证。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub ValidateInput
public virtual void ValidateInput()
public:
virtual void ValidateInput()
abstract ValidateInput : unit -> unit
override ValidateInput : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

HttpRequestBase 类使用输入验证标志确定是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。 HttpRequestBase 类使用输入验证标志确定是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。 HttpRequestBase 类使用输入验证标志确定是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase 属性

HttpRequestBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestBase 类

HttpRequestBase 类型公开以下成员。

名称 说明
页首

参考

HttpRequestBase 类
System.Web 命名空间


HttpRequestBase ..::.AcceptTypes 属性

HttpRequestBase
.
.
::
.
AcceptTypes 属性
HttpRequestBase 类

在派生类中重写时，获取客户端支持的 MIME 接受类型的数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AcceptTypes As String()
    Get
public virtual string[] AcceptTypes { get; }
public:
virtual property array<String^>^ AcceptTypes {
    array<String^>^ get ();
}
abstract AcceptTypes : string[]
override AcceptTypes : string[]

属性值

类型：
array<
System String
>
[]
()
[]

客户端支持的 MIME 接受类型的数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.AnonymousID 属性

HttpRequestBase
.
.
::
.
AnonymousID 属性
HttpRequestBase 类

在派生类中重写时，获取用户的匿名标识符（如果存在）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AnonymousID As String
    Get
public virtual string AnonymousID { get; }
public:
virtual property String^ AnonymousID {
    String^ get ();
}
abstract AnonymousID : string
override AnonymousID : string

属性值

类型： System String
当前匿名用户标识符。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ApplicationPath 属性

HttpRequestBase
.
.
::
.
ApplicationPath 属性
HttpRequestBase 类

在派生类中重写时，获取服务器上的 ASP.NET 应用程序的虚拟根路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ApplicationPath As String
    Get
public virtual string ApplicationPath { get; }
public:
virtual property String^ ApplicationPath {
    String^ get ();
}
abstract ApplicationPath : string
override ApplicationPath : string

属性值

类型： System String
当前应用程序的虚拟路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.AppRelativeCurrentExecutionFilePath 属性

HttpRequestBase
.
.
::
.
AppRelativeCurrentExecutionFilePath 属性
HttpRequestBase 类

在派生类中重写时，获取应用程序根目录的虚拟路径，并通过对应用程序根目录使用波形符 (~) 表示法，将该路径转变为相对路径（如“~/page.aspx”的形式）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property AppRelativeCurrentExecutionFilePath As String
    Get
public virtual string AppRelativeCurrentExecutionFilePath { get; }
public:
virtual property String^ AppRelativeCurrentExecutionFilePath {
    String^ get ();
}
abstract AppRelativeCurrentExecutionFilePath : string
override AppRelativeCurrentExecutionFilePath : string

属性值

类型： System String
当前请求的应用程序根目录的虚拟路径（添加了波形符运算符 (~)）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Browser 属性

HttpRequestBase
.
.
::
.
Browser 属性
HttpRequestBase 类

在派生类中重写时，获取有关请求的客户端的浏览器功能的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Browser As HttpBrowserCapabilitiesBase
    Get
public virtual HttpBrowserCapabilitiesBase Browser { get; }
public:
virtual property HttpBrowserCapabilitiesBase^ Browser {
    HttpBrowserCapabilitiesBase^ get ();
}
abstract Browser : HttpBrowserCapabilitiesBase
override Browser : HttpBrowserCapabilitiesBase

属性值

类型： System.Web HttpBrowserCapabilitiesBase
表示客户端浏览器功能的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ClientCertificate 属性

HttpRequestBase
.
.
::
.
ClientCertificate 属性
HttpRequestBase 类

在派生类中重写时，获取当前请求的客户端安全证书。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ClientCertificate As HttpClientCertificate
    Get
public virtual HttpClientCertificate ClientCertificate { get; }
public:
virtual property HttpClientCertificate^ ClientCertificate {
    HttpClientCertificate^ get ();
}
abstract ClientCertificate : HttpClientCertificate
override ClientCertificate : HttpClientCertificate

属性值

类型： System.Web HttpClientCertificate
客户端的安全证书。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ContentEncoding 属性

HttpRequestBase
.
.
::
.
ContentEncoding 属性
HttpRequestBase 类

在派生类中重写时，获取或设置客户端所提供的数据的字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ContentEncoding As Encoding
    Get
    Set
public virtual Encoding ContentEncoding { get; set; }
public:
virtual property Encoding^ ContentEncoding {
    Encoding^ get ();
    void set (Encoding^ value);
}
abstract ContentEncoding : Encoding with get, set
override ContentEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
客户端的字符集。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ContentLength 属性

HttpRequestBase
.
.
::
.
ContentLength 属性
HttpRequestBase 类

在派生类中重写时，获取客户端发送的内容的长度（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ContentLength As Integer
    Get
public virtual int ContentLength { get; }
public:
virtual property int ContentLength {
    int get ();
}
abstract ContentLength : int
override ContentLength : int

属性值

类型： System Int32
客户端发送的内容的长度（以字节为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ContentType 属性

HttpRequestBase
.
.
::
.
ContentType 属性
HttpRequestBase 类

在派生类中重写时，获取或设置请求的 MIME 内容类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ContentType As String
    Get
    Set
public virtual string ContentType { get; set; }
public:
virtual property String^ ContentType {
    String^ get ();
    void set (String^ value);
}
abstract ContentType : string with get, set
override ContentType : string with get, set

属性值

类型： System String
请求的 MIME 内容类型（如“text/html”）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Cookies 属性

HttpRequestBase
.
.
::
.
Cookies 属性
HttpRequestBase 类

在派生类中重写时，获取客户端发送的 Cookie 的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Cookies As HttpCookieCollection
    Get
public virtual HttpCookieCollection Cookies { get; }
public:
virtual property HttpCookieCollection^ Cookies {
    HttpCookieCollection^ get ();
}
abstract Cookies : HttpCookieCollection
override Cookies : HttpCookieCollection

属性值

类型： System.Web HttpCookieCollection
客户端的 Cookie。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.CurrentExecutionFilePath 属性

HttpRequestBase
.
.
::
.
CurrentExecutionFilePath 属性
HttpRequestBase 类

在派生类中重写时，获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CurrentExecutionFilePath As String
    Get
public virtual string CurrentExecutionFilePath { get; }
public:
virtual property String^ CurrentExecutionFilePath {
    String^ get ();
}
abstract CurrentExecutionFilePath : string
override CurrentExecutionFilePath : string

属性值

类型： System String
当前正在执行的页处理程序的虚拟路径。
异常 | 条件
NotImplementedException | 始终为 。

CurrentExecutionFilePath 属性返回当前执行的页处理程序的文件路径。

在使用 HttpServerUtility..::.Execute 方法或 HttpServerUtility..::.Transfer 方法重定向请求时，CurrentExecutionFilePath 属性返回要重定向至的页面（子页面）的路径。但是，当客户端重定向到另一页时，FilePath 属性返回原始页的路径。 在使用 HttpServerUtility..::.Execute 方法或 HttpServerUtility..::.Transfer 方法重定向请求时，CurrentExecutionFilePath 属性返回要重定向至的页面（子页面）的路径。但是，当客户端重定向到另一页时，FilePath 属性返回原始页的路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.FilePath 属性

HttpRequestBase
.
.
::
.
FilePath 属性
HttpRequestBase 类

在派生类中重写时，获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property FilePath As String
    Get
public virtual string FilePath { get; }
public:
virtual property String^ FilePath {
    String^ get ();
}
abstract FilePath : string
override FilePath : string

属性值

类型： System String
当前请求的虚拟路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Files 属性

HttpRequestBase
.
.
::
.
Files 属性
HttpRequestBase 类

在派生类中重写时，获取客户端上载的文件的集合（多部分 MIME 格式）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Files As HttpFileCollectionBase
    Get
public virtual HttpFileCollectionBase Files { get; }
public:
virtual property HttpFileCollectionBase^ Files {
    HttpFileCollectionBase^ get ();
}
abstract Files : HttpFileCollectionBase
override Files : HttpFileCollectionBase

属性值

类型： System.Web HttpFileCollectionBase
客户端上载的文件。HttpFileCollection 对象中的项的类型为 HttpPostedFile。 客户端上载的文件。HttpFileCollection 对象中的项的类型为 HttpPostedFile。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Filter 属性

HttpRequestBase
.
.
::
.
Filter 属性
HttpRequestBase 类

在派生类中重写时，获取或设置要在读取当前输入流时使用的筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Filter As Stream
    Get
    Set
public virtual Stream Filter { get; set; }
public:
virtual property Stream^ Filter {
    Stream^ get ();
    void set (Stream^ value);
}
abstract Filter : Stream with get, set
override Filter : Stream with get, set

属性值

类型： System.IO Stream
要用作筛选器的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Form 属性

HttpRequestBase
.
.
::
.
Form 属性
HttpRequestBase 类

在派生类中重写时，获取客户端发送的窗体变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Form As NameValueCollection
    Get
public virtual NameValueCollection Form { get; }
public:
virtual property NameValueCollection^ Form {
    NameValueCollection^ get ();
}
abstract Form : NameValueCollection
override Form : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
窗体变量。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Headers 属性

HttpRequestBase
.
.
::
.
Headers 属性
HttpRequestBase 类

在派生类中重写时，获取客户端发送的 HTTP 标头的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Headers As NameValueCollection
    Get
public virtual NameValueCollection Headers { get; }
public:
virtual property NameValueCollection^ Headers {
    NameValueCollection^ get ();
}
abstract Headers : NameValueCollection
override Headers : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
请求标头。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.HttpChannelBinding 属性

HttpRequestBase
.
.
::
.
HttpChannelBinding 属性
HttpRequestBase 类

在派生类中重写时，获取当前 HttpWorkerRequest 实例的 ChannelBinding 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property HttpChannelBinding As ChannelBinding
    Get
public virtual ChannelBinding HttpChannelBinding { get; }
public:
virtual property ChannelBinding^ HttpChannelBinding {
    ChannelBinding^ get ();
}
abstract HttpChannelBinding : ChannelBinding
override HttpChannelBinding : ChannelBinding

属性值

类型： System.Security.Authentication.ExtendedProtection ChannelBinding
当前 HttpWorkerRequest 实例的 ChannelBinding 对象。
异常 | 条件
NotImplementedException | 当前的 HttpWorkerRequest 对象不是 System.Web.Hosting.IIS7WorkerRequest 对象或 System.Web.Hosting.ISAPIWorkerRequestInProc 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.HttpMethod 属性

HttpRequestBase
.
.
::
.
HttpMethod 属性
HttpRequestBase 类

在派生类中重写时，获取客户端使用的 HTTP 数据传输方法（如 GET、POST 或 HEAD）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property HttpMethod As String
    Get
public virtual string HttpMethod { get; }
public:
virtual property String^ HttpMethod {
    String^ get ();
}
abstract HttpMethod : string
override HttpMethod : string

属性值

类型： System String
客户端使用的 HTTP 数据传输方法。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.InputStream 属性

HttpRequestBase
.
.
::
.
InputStream 属性
HttpRequestBase 类

在派生类中重写时，获取传入的 HTTP 实体正文的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property InputStream As Stream
    Get
public virtual Stream InputStream { get; }
public:
virtual property Stream^ InputStream {
    Stream^ get ();
}
abstract InputStream : Stream
override InputStream : Stream

属性值

类型： System.IO Stream
传入的 HTTP 实体正文的内容。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.IsAuthenticated 属性

HttpRequestBase
.
.
::
.
IsAuthenticated 属性
HttpRequestBase 类

在派生类中重写时，获取一个值，该值指示请求是否已经过身份验证。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsAuthenticated As Boolean
    Get
public virtual bool IsAuthenticated { get; }
public:
virtual property bool IsAuthenticated {
    bool get ();
}
abstract IsAuthenticated : bool
override IsAuthenticated : bool

属性值

类型： System Boolean
如果请求已经过身份验证，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.IsLocal 属性

HttpRequestBase
.
.
::
.
IsLocal 属性
HttpRequestBase 类

在派生类中重写时，获取一个指示该请求是否来自本地计算机的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsLocal As Boolean
    Get
public virtual bool IsLocal { get; }
public:
virtual property bool IsLocal {
    bool get ();
}
abstract IsLocal : bool
override IsLocal : bool

属性值

类型： System Boolean
如果该请求来自本地计算机，则为 true；否则，为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.IsSecureConnection 属性

HttpRequestBase
.
.
::
.
IsSecureConnection 属性
HttpRequestBase 类

在派生类中重写时，获取一个值，该值指示 HTTP 连接是否使用安全套接字（HTTPS 协议）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsSecureConnection As Boolean
    Get
public virtual bool IsSecureConnection { get; }
public:
virtual property bool IsSecureConnection {
    bool get ();
}
abstract IsSecureConnection : bool
override IsSecureConnection : bool

属性值

类型： System Boolean
如果连接为使用 HTTPS 协议的 SSL 连接，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Item 属性

HttpRequestBase
.
.
::
.
Item 属性
HttpRequestBase 类

在派生类中重写时，从 Cookies、Form、QueryString 或 ServerVariables 集合获取指定的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Item ( _
    key As String _
) As String
    Get
public virtual string this[
    string key
] { get; }
public:
virtual property String^ Item[String^ key] {
    String^ get (String^ key);
}
abstract Item : string
override Item : string

参数

key
类型： System String

属性值

类型： System String
由 key 指定的 QueryString、Form、Cookies 或 ServerVariables 集合成员。如果未找到指定的 key 值，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 由 key 指定的 QueryString、Form、Cookies 或 ServerVariables 集合成员。如果未找到指定的 key 值，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.LogonUserIdentity 属性

HttpRequestBase
.
.
::
.
LogonUserIdentity 属性
HttpRequestBase 类

在派生类中重写时，获取当前用户的 WindowsIdentity 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property LogonUserIdentity As WindowsIdentity
    Get
public virtual WindowsIdentity LogonUserIdentity { get; }
public:
virtual property WindowsIdentity^ LogonUserIdentity {
    WindowsIdentity^ get ();
}
abstract LogonUserIdentity : WindowsIdentity
override LogonUserIdentity : WindowsIdentity

属性值

类型： System.Security.Principal WindowsIdentity
当前用户的标识。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Params 属性

HttpRequestBase
.
.
::
.
Params 属性
HttpRequestBase 类

在派生类中重写时，获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Params As NameValueCollection
    Get
public virtual NameValueCollection Params { get; }
public:
virtual property NameValueCollection^ Params {
    NameValueCollection^ get ();
}
abstract Params : NameValueCollection
override Params : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
合并值的集合。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Path 属性

HttpRequestBase
.
.
::
.
Path 属性
HttpRequestBase 类

在派生类中重写时，获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Path As String
    Get
public virtual string Path { get; }
public:
virtual property String^ Path {
    String^ get ();
}
abstract Path : string
override Path : string

属性值

类型： System String
当前请求的虚拟路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.PathInfo 属性

HttpRequestBase
.
.
::
.
PathInfo 属性
HttpRequestBase 类

在派生类中重写时，获取具有 URL 扩展名的资源的附加路径信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PathInfo As String
    Get
public virtual string PathInfo { get; }
public:
virtual property String^ PathInfo {
    String^ get ();
}
abstract PathInfo : string
override PathInfo : string

属性值

类型： System String
资源的附加路径信息。
异常 | 条件
NotImplementedException | 始终为 。

对于 URL Http://www.contoso.com/virdir/page.html/tail，PathInfo 值为 /tail。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.PhysicalApplicationPath 属性

HttpRequestBase
.
.
::
.
PhysicalApplicationPath 属性
HttpRequestBase 类

在派生类中重写时，获取当前应用程序的根目录的物理文件系统路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PhysicalApplicationPath As String
    Get
public virtual string PhysicalApplicationPath { get; }
public:
virtual property String^ PhysicalApplicationPath {
    String^ get ();
}
abstract PhysicalApplicationPath : string
override PhysicalApplicationPath : string

属性值

类型： System String
当前应用程序的根目录的文件系统路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.PhysicalPath 属性

HttpRequestBase
.
.
::
.
PhysicalPath 属性
HttpRequestBase 类

在派生类中重写时，获取请求的资源的物理文件系统路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PhysicalPath As String
    Get
public virtual string PhysicalPath { get; }
public:
virtual property String^ PhysicalPath {
    String^ get ();
}
abstract PhysicalPath : string
override PhysicalPath : string

属性值

类型： System String
请求的资源的文件系统路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.QueryString 属性

HttpRequestBase
.
.
::
.
QueryString 属性
HttpRequestBase 类

在派生类中重写时，获取 HTTP 查询字符串变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property QueryString As NameValueCollection
    Get
public virtual NameValueCollection QueryString { get; }
public:
virtual property NameValueCollection^ QueryString {
    NameValueCollection^ get ();
}
abstract QueryString : NameValueCollection
override QueryString : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
当前请求的 URL 中由客户端发送的查询字符串变量。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.RawUrl 属性

HttpRequestBase
.
.
::
.
RawUrl 属性
HttpRequestBase 类

在派生类中重写时，获取当前请求的完整 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RawUrl As String
    Get
public virtual string RawUrl { get; }
public:
virtual property String^ RawUrl {
    String^ get ();
}
abstract RawUrl : string
override RawUrl : string

属性值

类型： System String
当前请求的完整 URL。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.RequestContext 属性

HttpRequestBase
.
.
::
.
RequestContext 属性
HttpRequestBase 类

在派生类中重写时，获取当前请求的 RequestContext 实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property RequestContext As RequestContext
    Get
    Friend Set
public virtual RequestContext RequestContext { get; internal set; }
public:
virtual property RequestContext^ RequestContext {
    RequestContext^ get ();
    internal: void set (RequestContext^ value);
}
abstract RequestContext : RequestContext with get, internal set
override RequestContext : RequestContext with get, internal set

属性值

类型： System.Web.Routing RequestContext
当前请求的 RequestContext 实例。对于非路由请求，返回的 RequestContext 对象为空。 当前请求的 RequestContext 实例。对于非路由请求，返回的 RequestContext 对象为空。
异常 | 条件
NotImplementedException | 始终为 。

此属性提供对当前请求的 RouteData 对象的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.RequestType 属性

HttpRequestBase
.
.
::
.
RequestType 属性
HttpRequestBase 类

在派生类中重写时，获取或设置客户端使用的 HTTP 数据传输方法（GET 或 POST）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property RequestType As String
    Get
    Set
public virtual string RequestType { get; set; }
public:
virtual property String^ RequestType {
    String^ get ();
    void set (String^ value);
}
abstract RequestType : string with get, set
override RequestType : string with get, set

属性值

类型： System String
客户端使用的 HTTP 数据传输方法类型。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.ServerVariables 属性

HttpRequestBase
.
.
::
.
ServerVariables 属性
HttpRequestBase 类

在派生类中重写时，获取 Web 服务器变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property ServerVariables As NameValueCollection
    Get
public virtual NameValueCollection ServerVariables { get; }
public:
virtual property NameValueCollection^ ServerVariables {
    NameValueCollection^ get ();
}
abstract ServerVariables : NameValueCollection
override ServerVariables : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
服务器变量
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.TotalBytes 属性

HttpRequestBase
.
.
::
.
TotalBytes 属性
HttpRequestBase 类

在派生类中重写时，获取当前输入流中的字节数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property TotalBytes As Integer
    Get
public virtual int TotalBytes { get; }
public:
virtual property int TotalBytes {
    int get ();
}
abstract TotalBytes : int
override TotalBytes : int

属性值

类型： System Int32
输入流中的字节数。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.Url 属性

HttpRequestBase
.
.
::
.
Url 属性
HttpRequestBase 类

在派生类中重写时，获取有关当前请求的 URL 的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Url As Uri
    Get
public virtual Uri Url { get; }
public:
virtual property Uri^ Url {
    Uri^ get ();
}
abstract Url : Uri
override Url : Uri

属性值

类型： System Uri
一个对象，包含有关当前请求的 URL 的信息。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.UrlReferrer 属性

HttpRequestBase
.
.
::
.
UrlReferrer 属性
HttpRequestBase 类

在派生类中重写时，获取有关链接到当前 URL 的客户端请求的 URL 的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property UrlReferrer As Uri
    Get
public virtual Uri UrlReferrer { get; }
public:
virtual property Uri^ UrlReferrer {
    Uri^ get ();
}
abstract UrlReferrer : Uri
override UrlReferrer : Uri

属性值

类型： System Uri
链接到当前请求的页面的 URL。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.UserAgent 属性

HttpRequestBase
.
.
::
.
UserAgent 属性
HttpRequestBase 类

在派生类中重写时，获取客户端的完整用户代理字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property UserAgent As String
    Get
public virtual string UserAgent { get; }
public:
virtual property String^ UserAgent {
    String^ get ();
}
abstract UserAgent : string
override UserAgent : string

属性值

类型： System String
客户端的完整用户代理字符串。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.UserHostAddress 属性

HttpRequestBase
.
.
::
.
UserHostAddress 属性
HttpRequestBase 类

在派生类中重写时，获取客户端的 IP 主机地址。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property UserHostAddress As String
    Get
public virtual string UserHostAddress { get; }
public:
virtual property String^ UserHostAddress {
    String^ get ();
}
abstract UserHostAddress : string
override UserHostAddress : string

属性值

类型： System String
客户端的 IP 地址。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.UserHostName 属性

HttpRequestBase
.
.
::
.
UserHostName 属性
HttpRequestBase 类

在派生类中重写时，获取客户端的 DNS 名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property UserHostName As String
    Get
public virtual string UserHostName { get; }
public:
virtual property String^ UserHostName {
    String^ get ();
}
abstract UserHostName : string
override UserHostName : string

属性值

类型： System String
客户端的 DNS 名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestBase ..::.UserLanguages 属性

HttpRequestBase
.
.
::
.
UserLanguages 属性
HttpRequestBase 类

在派生类中重写时，获取客户端语言首选项的已排序数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property UserLanguages As String()
    Get
public virtual string[] UserLanguages { get; }
public:
virtual property array<String^>^ UserLanguages {
    array<String^>^ get ();
}
abstract UserLanguages : string[]
override UserLanguages : string[]

属性值

类型：
array<
System String
>
[]
()
[]

客户端语言首选项的已排序数组，如果数组为空，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestBase 类
HttpRequestBase 成员
System.Web 命名空间


HttpRequestValidationException 类

HttpRequestValidationException 类
成员

当从客户端收到作为请求数据一部分的潜在恶意输入字符串时引发的异常。无法继承此类。 当从客户端收到作为请求数据一部分的潜在恶意输入字符串时引发的异常。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public NotInheritable Class HttpRequestValidationException _
    Inherits HttpException
[SerializableAttribute]
public sealed class HttpRequestValidationException : HttpException
[SerializableAttribute]
public ref class HttpRequestValidationException sealed : public HttpException
[<SealedAttribute>]
[<SerializableAttribute>]
type HttpRequestValidationException =
    class
        inherit HttpException
    end

在 Web 应用程序中，要阻止依赖于恶意输入字符串的黑客攻击，约束和验证用户输入是必不可少的。跨站点脚本攻击就是此类攻击的一个示例。其他类型的恶意数据或不需要的数据可以通过各种形式的输入在请求中传入。通过在应用程序中的较低级别限制允许通过的数据类型，就可以阻止不希望的事件，即使当使用代码的程序员没有恰当地使用合适的验证技术时也是如此。 在 Web 应用程序中，要阻止依赖于恶意输入字符串的黑客攻击，约束和验证用户输入是必不可少的。跨站点脚本攻击就是此类攻击的一个示例。其他类型的恶意数据或不需要的数据可以通过各种形式的输入在请求中传入。通过在应用程序中的较低级别限制允许通过的数据类型，就可以阻止不希望的事件，即使当使用代码的程序员没有恰当地使用合适的验证技术时也是如此。 在 Web 应用程序中，要阻止依赖于恶意输入字符串的黑客攻击，约束和验证用户输入是必不可少的。跨站点脚本攻击就是此类攻击的一个示例。其他类型的恶意数据或不需要的数据可以通过各种形式的输入在请求中传入。通过在应用程序中的较低级别限制允许通过的数据类型，就可以阻止不希望的事件，即使当使用代码的程序员没有恰当地使用合适的验证技术时也是如此。 在 Web 应用程序中，要阻止依赖于恶意输入字符串的黑客攻击，约束和验证用户输入是必不可少的。跨站点脚本攻击就是此类攻击的一个示例。其他类型的恶意数据或不需要的数据可以通过各种形式的输入在请求中传入。通过在应用程序中的较低级别限制允许通过的数据类型，就可以阻止不希望的事件，即使当使用代码的程序员没有恰当地使用合适的验证技术时也是如此。

当请求验证检测到潜在的恶意客户端输入时，会引发此异常来中止请求处理。请求中止能够指示危害您的应用程序安全的企图，例如跨站点脚本攻击。强烈建议让您的应用程序显式地检查与请求中止有关的所有输入。不过，您也可以通过将 @ Page 指令中的 validateRequest 特性设置为 false 来禁用请求验证，如下面的示例所示： 当请求验证检测到潜在的恶意客户端输入时，会引发此异常来中止请求处理。请求中止能够指示危害您的应用程序安全的企图，例如跨站点脚本攻击。强烈建议让您的应用程序显式地检查与请求中止有关的所有输入。不过，您也可以通过将 @ Page 指令中的 validateRequest 特性设置为 false 来禁用请求验证，如下面的示例所示： 当请求验证检测到潜在的恶意客户端输入时，会引发此异常来中止请求处理。请求中止能够指示危害您的应用程序安全的企图，例如跨站点脚本攻击。强烈建议让您的应用程序显式地检查与请求中止有关的所有输入。不过，您也可以通过将 @ Page 指令中的 validateRequest 特性设置为 false 来禁用请求验证，如下面的示例所示： 当请求验证检测到潜在的恶意客户端输入时，会引发此异常来中止请求处理。请求中止能够指示危害您的应用程序安全的企图，例如跨站点脚本攻击。强烈建议让您的应用程序显式地检查与请求中止有关的所有输入。不过，您也可以通过将 @ Page 指令中的 validateRequest 特性设置为 false 来禁用请求验证，如下面的示例所示：

<%@ Page validateRequest="false" %>

要禁用应用程序的请求验证，必须修改应用程序的 Web.config 文件或创建一个 Web.config 文件，并将 pages 节的 validateRequest 特性设置为 false，如下面的示例所示：

<configuration>
  <system.web>
    <pages validateRequest="false" />
  </system.web>
</configuration>

要禁用服务器上所有应用程序的请求验证，可以对 Machine.config 文件作此修改。

说明 说明

强烈建议除了由 ASP.NET 执行请求验证以外，您的应用程序显式地检查它使用所有输入。请求验证功能无法捕捉所有攻击，尤其是那些专门针对您的应用程序逻辑精心设计过的攻击。 强烈建议除了由 ASP.NET 执行请求验证以外，您的应用程序显式地检查它使用所有输入。请求验证功能无法捕捉所有攻击，尤其是那些专门针对您的应用程序逻辑精心设计过的攻击。

下面的代码示例演示如何使用 HttpRequestValidationException 检查恶意用户输入。

安全说明 安全说明

此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 此示例有一个接受用户输入的文本框，这是一个潜在的安全威胁。默认情况下，ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = txt1.Text
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox id="txt1" Runat="server" />
        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />
        <br /><br />You entered: <asp:Label ID="Label1" Runat="server" Text="Label" />.
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = txt1.Text;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox id="txt1" Runat="server" />
        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />
        <br /><br />You entered: <asp:Label ID="Label1" Runat="server" Text="Label" />.
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpRequestValidationExceptionHttpRequestValidationException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpRequestValidationException 成员
System.Web 命名空间


HttpRequestValidationException 成员

HttpRequestValidationException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestValidationException 类

当从客户端收到作为请求数据一部分的潜在恶意输入字符串时引发的异常。无法继承此类。 当从客户端收到作为请求数据一部分的潜在恶意输入字符串时引发的异常。无法继承此类。

HttpRequestValidationException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpRequestValidationException 类
System.Web 命名空间


HttpRequestValidationException 构造函数

HttpRequestValidationException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestValidationException 类

已重载。创建 HttpRequestValidationException 类的新实例。 已重载。创建 HttpRequestValidationException 类的新实例。

名称 说明
页首

参考

HttpRequestValidationException 类
HttpRequestValidationException 成员
System.Web 命名空间


HttpRequestValidationException 构造函数

HttpRequestValidationException 构造函数
HttpRequestValidationException 类

创建 HttpRequestValidationException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpRequestValidationException()
public:
HttpRequestValidationException()
new : unit -> HttpRequestValidationException

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequestValidationException 类
HttpRequestValidationException 成员
HttpRequestValidationException 重载
System.Web 命名空间


HttpRequestValidationException 构造函数 (String)

HttpRequestValidationException 构造函数 (String)
HttpRequestValidationException 类

创建具有指定错误消息的新的 HttpRequestValidationException 异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String _
)
public HttpRequestValidationException(
    string message
)
public:
HttpRequestValidationException(
    String^ message
)
new :
        message:string -> HttpRequestValidationException

参数

message
类型： System String
描述错误的字符串。

message 参数的内容应该容易理解。HttpRequestValidationException(String) 构造函数的调用方需要确保 message 字符串已经本地化。 message 参数的内容应该容易理解。HttpRequestValidationException(String) 构造函数的调用方需要确保 message 字符串已经本地化。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequestValidationException 类
HttpRequestValidationException 成员
HttpRequestValidationException 重载
System.Web 命名空间


HttpRequestValidationException 构造函数 (String, Exception)

HttpRequestValidationException 构造函数 (String, Exception)
HttpRequestValidationException 类

使用指定错误消息和对导致此异常的内部异常的引用来初始化 HttpRequestValidationException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public HttpRequestValidationException(
    string message,
    Exception innerException
)
public:
HttpRequestValidationException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> HttpRequestValidationException

参数

message
类型： System String
解释异常原因的错误消息。
innerException
类型： System Exception
导致当前异常的异常。如果此参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在处理内部异常的 catch 块中引发当前异常。 导致当前异常的异常。如果此参数不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在处理内部异常的 catch 块中引发当前异常。

由上一异常直接引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到 HttpRequestValidationException(String, Exception) 构造函数中的值相同；或者，如果 InnerException 属性没有向 HttpRequestValidationException(String, Exception) 构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 由上一异常直接引发的异常应在 InnerException 属性中包括对上一异常的引用。InnerException 属性返回的值与传递到 HttpRequestValidationException(String, Exception) 构造函数中的值相同；或者，如果 InnerException 属性没有向 HttpRequestValidationException(String, Exception) 构造函数提供内部异常值，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRequestValidationException 类
HttpRequestValidationException 成员
HttpRequestValidationException 重载
System.Web 命名空间


HttpRequestValidationException 方法

HttpRequestValidationException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestValidationException 类

HttpRequestValidationException 类型公开以下成员。

名称 说明
页首

参考

HttpRequestValidationException 类
System.Web 命名空间


HttpRequestValidationException 属性

HttpRequestValidationException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestValidationException 类

HttpRequestValidationException 类型公开以下成员。

名称 说明
页首

参考

HttpRequestValidationException 类
System.Web 命名空间


HttpRequestValidationException 事件

HttpRequestValidationException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestValidationException 类

HttpRequestValidationException 类型公开以下成员。

名称 说明
页首

参考

HttpRequestValidationException 类
System.Web 命名空间


HttpRequestWrapper 类

HttpRequestWrapper 类
成员

封装 HTTP 内部对象，该对象使 ASP.NET 可以读取客户端在 Web 请求过程中发送的 HTTP 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpRequestWrapper _
    Inherits HttpRequestBase
public class HttpRequestWrapper : HttpRequestBase
public ref class HttpRequestWrapper : public HttpRequestBase
type HttpRequestWrapper =
    class
        inherit HttpRequestBase
    end

HttpRequestWrapper 类从 HttpRequestBase 类派生，并用作 HttpRequest 类的包装。此类公开 HttpRequest 类的功能并公开 HttpRequestBase 类型。使用 HttpRequestBase 类可以将应用程序中 HttpRequest 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpRequestWrapper 类从 HttpRequestBase 类派生，并用作 HttpRequest 类的包装。此类公开 HttpRequest 类的功能并公开 HttpRequestBase 类型。使用 HttpRequestBase 类可以将应用程序中 HttpRequest 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpRequestWrapper 类从 HttpRequestBase 类派生，并用作 HttpRequest 类的包装。此类公开 HttpRequest 类的功能并公开 HttpRequestBase 类型。使用 HttpRequestBase 类可以将应用程序中 HttpRequest 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpRequestWrapperHttpRequestWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper 成员

HttpRequestWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestWrapper 类

封装 HTTP 内部对象，该对象使 ASP.NET 可以读取客户端在 Web 请求过程中发送的 HTTP 值。

HttpRequestWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpRequestWrapper 类
System.Web 命名空间


HttpRequestWrapper 构造函数

HttpRequestWrapper 构造函数
HttpRequestWrapper 类

使用指定的请求对象初始化 HttpRequestWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpRequest As HttpRequest _
)
public HttpRequestWrapper(
    HttpRequest httpRequest
)
public:
HttpRequestWrapper(
    HttpRequest^ httpRequest
)
new :
        httpRequest:HttpRequest -> HttpRequestWrapper

参数

httpRequest
类型： System.Web HttpRequest
可使用此包装类进行访问的对象。
异常 | 条件
ArgumentNullException | httpRequest 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper 方法

HttpRequestWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestWrapper 类

HttpRequestWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpRequestWrapper 类
System.Web 命名空间


HttpRequestWrapper ..::.BinaryRead 方法

HttpRequestWrapper
.
.
::
.
BinaryRead 方法
HttpRequestWrapper 类

执行对当前输入流进行指定字节数的二进制读取。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function BinaryRead ( _
    count As Integer _
) As Byte()
public override byte[] BinaryRead(
    int count
)
public:
virtual array<unsigned char>^ BinaryRead(
    int count
) override
abstract BinaryRead :
        count:int -> byte[]
override BinaryRead :
        count:int -> byte[]

参数

count
类型： System Int32
要读取的字节数。

返回值

类型：
array<
System Byte
>
[]
()
[]

包含二进制数据的数组。
异常 | 条件
ArgumentOutOfRangeException | count 小于 0。 - 或 - count 大于可用字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.MapImageCoordinates 方法

HttpRequestWrapper
.
.
::
.
MapImageCoordinates 方法
HttpRequestWrapper 类

将传入图像字段窗体参数映射为适当的 x 坐标值和 y 坐标值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function MapImageCoordinates ( _
    imageFieldName As String _
) As Integer()
public override int[] MapImageCoordinates(
    string imageFieldName
)
public:
virtual array<int>^ MapImageCoordinates(
    String^ imageFieldName
) override
abstract MapImageCoordinates :
        imageFieldName:string -> int[]
override MapImageCoordinates :
        imageFieldName:string -> int[]

参数

imageFieldName
类型： System String
图像映射的名称。

返回值

类型：
array<
System Int32
>
[]
()
[]

二维整数数组。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.MapPath 方法

HttpRequestWrapper
.
.
::
.
MapPath 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestWrapper 类

将所请求 URL 中的虚拟路径映射到服务器上的物理路径。

名称 说明
页首

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.MapPath 方法 (String)

HttpRequestWrapper
.
.
::
.
MapPath 方法 (String)
HttpRequestWrapper 类

将指定的虚拟路径映射到服务器上的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function MapPath ( _
    virtualPath As String _
) As String
public override string MapPath(
    string virtualPath
)
public:
virtual String^ MapPath(
    String^ virtualPath
) override
abstract MapPath :
        virtualPath:string -> string
override MapPath :
        virtualPath:string -> string

参数

virtualPath
类型： System String
要映射到物理路径的虚拟路径（绝对或相对）。

返回值

类型： System String
由 virtualPath 指定的服务器上的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
MapPath 重载
System.Web 命名空间


HttpRequestWrapper ..::.MapPath 方法 (String, String, Boolean)

HttpRequestWrapper
.
.
::
.
MapPath 方法 (String, String, Boolean)
HttpRequestWrapper 类

将指定的虚拟路径映射到服务器上的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function MapPath ( _
    virtualPath As String, _
    baseVirtualDir As String, _
    allowCrossAppMapping As Boolean _
) As String
public override string MapPath(
    string virtualPath,
    string baseVirtualDir,
    bool allowCrossAppMapping
)
public:
virtual String^ MapPath(
    String^ virtualPath,
    String^ baseVirtualDir,
    bool allowCrossAppMapping
) override
abstract MapPath :
        virtualPath:string *
        baseVirtualDir:string *
        allowCrossAppMapping:bool -> string
override MapPath :
        virtualPath:string *
        baseVirtualDir:string *
        allowCrossAppMapping:bool -> string

参数

virtualPath
类型： System String
要映射到物理路径的虚拟路径（绝对或相对）。
baseVirtualDir
类型： System String
用于相对解析的虚拟基目录路径。
allowCrossAppMapping
类型： System Boolean
如果 virtualPath 可以属于另一个应用程序，则为 true；否则为 false。

返回值

类型： System String
服务器上的物理路径。
异常 | 条件
HttpException | allowCrossAppMapping 为 false，virtualPath 属于另一个应用程序。
HttpException | 没有为该请求定义 HttpContext 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
MapPath 重载
System.Web 命名空间


HttpRequestWrapper ..::.SaveAs 方法

HttpRequestWrapper
.
.
::
.
SaveAs 方法
HttpRequestWrapper 类

将 HTTP 请求保存到磁盘。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SaveAs ( _
    filename As String, _
    includeHeaders As Boolean _
)
public override void SaveAs(
    string filename,
    bool includeHeaders
)
public:
virtual void SaveAs(
    String^ filename,
    bool includeHeaders
) override
abstract SaveAs :
        filename:string *
        includeHeaders:bool -> unit
override SaveAs :
        filename:string *
        includeHeaders:bool -> unit

参数

filename
类型： System String
物理驱动器路径。
includeHeaders
类型： System Boolean
一个指定是否将 HTTP 标头保存到磁盘的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ValidateInput 方法

HttpRequestWrapper
.
.
::
.
ValidateInput 方法
HttpRequestWrapper 类

引发对通过 Cookies、Form 和 QueryString 属性访问的集合的验证。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub ValidateInput
public override void ValidateInput()
public:
virtual void ValidateInput() override
abstract ValidateInput : unit -> unit
override ValidateInput : unit -> unit

HttpRequest 类使用输入验证标志确定是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。 HttpRequest 类使用输入验证标志确定是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。 HttpRequest 类使用输入验证标志确定是否对通过 Cookies、Form 和 QueryString 属性访问的请求集合执行验证。ValidateInput 方法设置这些标志，以便在调用 Cookies、Form 或 QueryString 属性的 get 访问器时执行输入验证。验证的工作原理是，将所有输入数据与具有潜在危险的数据的硬编码列表进行对照检查。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper 属性

HttpRequestWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRequestWrapper 类

HttpRequestWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpRequestWrapper 类
System.Web 命名空间


HttpRequestWrapper ..::.AcceptTypes 属性

HttpRequestWrapper
.
.
::
.
AcceptTypes 属性
HttpRequestWrapper 类

获取客户端支持的 MIME 接受类型的数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AcceptTypes As String()
    Get
public override string[] AcceptTypes { get; }
public:
virtual property array<String^>^ AcceptTypes {
    array<String^>^ get () override;
}
abstract AcceptTypes : string[]
override AcceptTypes : string[]

属性值

类型：
array<
System String
>
[]
()
[]

客户端支持的 MIME 接受类型的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.AnonymousID 属性

HttpRequestWrapper
.
.
::
.
AnonymousID 属性
HttpRequestWrapper 类

获取用户的匿名标识符（如果可用）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AnonymousID As String
    Get
public override string AnonymousID { get; }
public:
virtual property String^ AnonymousID {
    String^ get () override;
}
abstract AnonymousID : string
override AnonymousID : string

属性值

类型： System String
当前匿名用户标识符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ApplicationPath 属性

HttpRequestWrapper
.
.
::
.
ApplicationPath 属性
HttpRequestWrapper 类

获取服务器上 ASP.NET 应用程序的根目录的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ApplicationPath As String
    Get
public override string ApplicationPath { get; }
public:
virtual property String^ ApplicationPath {
    String^ get () override;
}
abstract ApplicationPath : string
override ApplicationPath : string

属性值

类型： System String
当前应用程序的虚拟根路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.AppRelativeCurrentExecutionFilePath 属性

HttpRequestWrapper
.
.
::
.
AppRelativeCurrentExecutionFilePath 属性
HttpRequestWrapper 类

获取应用程序根的虚拟路径，并通过对应用程序根使用波形符 (~) 表示法（例如，以“~/page.aspx”的形式）使该路径成为相对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property AppRelativeCurrentExecutionFilePath As String
    Get
public override string AppRelativeCurrentExecutionFilePath { get; }
public:
virtual property String^ AppRelativeCurrentExecutionFilePath {
    String^ get () override;
}
abstract AppRelativeCurrentExecutionFilePath : string
override AppRelativeCurrentExecutionFilePath : string

属性值

类型： System String
当前请求的应用程序根目录的虚拟路径（添加了波形符运算符）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Browser 属性

HttpRequestWrapper
.
.
::
.
Browser 属性
HttpRequestWrapper 类

获取有关正在请求的客户端的浏览器功能的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Browser As HttpBrowserCapabilitiesBase
    Get
public override HttpBrowserCapabilitiesBase Browser { get; }
public:
virtual property HttpBrowserCapabilitiesBase^ Browser {
    HttpBrowserCapabilitiesBase^ get () override;
}
abstract Browser : HttpBrowserCapabilitiesBase
override Browser : HttpBrowserCapabilitiesBase

属性值

类型： System.Web HttpBrowserCapabilitiesBase
表示客户端浏览器功能的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ClientCertificate 属性

HttpRequestWrapper
.
.
::
.
ClientCertificate 属性
HttpRequestWrapper 类

获取当前请求的客户端安全证书。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ClientCertificate As HttpClientCertificate
    Get
public override HttpClientCertificate ClientCertificate { get; }
public:
virtual property HttpClientCertificate^ ClientCertificate {
    HttpClientCertificate^ get () override;
}
abstract ClientCertificate : HttpClientCertificate
override ClientCertificate : HttpClientCertificate

属性值

类型： System.Web HttpClientCertificate
客户端的安全证书。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ContentEncoding 属性

HttpRequestWrapper
.
.
::
.
ContentEncoding 属性
HttpRequestWrapper 类

获取或设置客户端提供的数据的字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ContentEncoding As Encoding
    Get
    Set
public override Encoding ContentEncoding { get; set; }
public:
virtual property Encoding^ ContentEncoding {
    Encoding^ get () override;
    void set (Encoding^ value) override;
}
abstract ContentEncoding : Encoding with get, set
override ContentEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
客户端的字符集。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ContentLength 属性

HttpRequestWrapper
.
.
::
.
ContentLength 属性
HttpRequestWrapper 类

获取客户端发送的内容的长度（以字节为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ContentLength As Integer
    Get
public override int ContentLength { get; }
public:
virtual property int ContentLength {
    int get () override;
}
abstract ContentLength : int
override ContentLength : int

属性值

类型： System Int32
客户端发送的内容的长度（以字节为单位）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ContentType 属性

HttpRequestWrapper
.
.
::
.
ContentType 属性
HttpRequestWrapper 类

获取或设置请求的 MIME 内容类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ContentType As String
    Get
    Set
public override string ContentType { get; set; }
public:
virtual property String^ ContentType {
    String^ get () override;
    void set (String^ value) override;
}
abstract ContentType : string with get, set
override ContentType : string with get, set

属性值

类型： System String
请求的 MIME 内容类型（如“text/html”）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Cookies 属性

HttpRequestWrapper
.
.
::
.
Cookies 属性
HttpRequestWrapper 类

获取客户端发送的 Cookie 的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Cookies As HttpCookieCollection
    Get
public override HttpCookieCollection Cookies { get; }
public:
virtual property HttpCookieCollection^ Cookies {
    HttpCookieCollection^ get () override;
}
abstract Cookies : HttpCookieCollection
override Cookies : HttpCookieCollection

属性值

类型： System.Web HttpCookieCollection
客户端的 Cookie。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.CurrentExecutionFilePath 属性

HttpRequestWrapper
.
.
::
.
CurrentExecutionFilePath 属性
HttpRequestWrapper 类

获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CurrentExecutionFilePath As String
    Get
public override string CurrentExecutionFilePath { get; }
public:
virtual property String^ CurrentExecutionFilePath {
    String^ get () override;
}
abstract CurrentExecutionFilePath : string
override CurrentExecutionFilePath : string

属性值

类型： System String
当前正在执行的页处理程序的虚拟路径。

CurrentExecutionFilePath 属性返回当前执行的页处理程序的文件路径。

在使用 HttpServerUtility..::.Execute 方法或 HttpServerUtility..::.Transfer 方法重定向请求时，CurrentExecutionFilePath 属性返回要重定向至的页面（子页面）的路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.FilePath 属性

HttpRequestWrapper
.
.
::
.
FilePath 属性
HttpRequestWrapper 类

获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property FilePath As String
    Get
public override string FilePath { get; }
public:
virtual property String^ FilePath {
    String^ get () override;
}
abstract FilePath : string
override FilePath : string

属性值

类型： System String
当前请求的虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Files 属性

HttpRequestWrapper
.
.
::
.
Files 属性
HttpRequestWrapper 类

获取客户端上载的文件的集合（多部分 MIME 格式）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Files As HttpFileCollectionBase
    Get
public override HttpFileCollectionBase Files { get; }
public:
virtual property HttpFileCollectionBase^ Files {
    HttpFileCollectionBase^ get () override;
}
abstract Files : HttpFileCollectionBase
override Files : HttpFileCollectionBase

属性值

类型： System.Web HttpFileCollectionBase
客户端上载的文件。HttpFileCollection 对象中的项的类型为 HttpPostedFile。 客户端上载的文件。HttpFileCollection 对象中的项的类型为 HttpPostedFile。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Filter 属性

HttpRequestWrapper
.
.
::
.
Filter 属性
HttpRequestWrapper 类

获取或设置要在读取当前输入流时使用的筛选器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Filter As Stream
    Get
    Set
public override Stream Filter { get; set; }
public:
virtual property Stream^ Filter {
    Stream^ get () override;
    void set (Stream^ value) override;
}
abstract Filter : Stream with get, set
override Filter : Stream with get, set

属性值

类型： System.IO Stream
要用作筛选器的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Form 属性

HttpRequestWrapper
.
.
::
.
Form 属性
HttpRequestWrapper 类

获取客户端发送的窗体变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Form As NameValueCollection
    Get
public override NameValueCollection Form { get; }
public:
virtual property NameValueCollection^ Form {
    NameValueCollection^ get () override;
}
abstract Form : NameValueCollection
override Form : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
窗体变量。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Headers 属性

HttpRequestWrapper
.
.
::
.
Headers 属性
HttpRequestWrapper 类

获取客户端发送的 HTTP 标头的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Headers As NameValueCollection
    Get
public override NameValueCollection Headers { get; }
public:
virtual property NameValueCollection^ Headers {
    NameValueCollection^ get () override;
}
abstract Headers : NameValueCollection
override Headers : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
请求标头。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.HttpChannelBinding 属性

HttpRequestWrapper
.
.
::
.
HttpChannelBinding 属性
HttpRequestWrapper 类

获取当前 HttpWorkerRequest 实例的 ChannelBinding 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property HttpChannelBinding As ChannelBinding
    Get
public override ChannelBinding HttpChannelBinding { get; }
public:
virtual property ChannelBinding^ HttpChannelBinding {
    ChannelBinding^ get () override;
}
abstract HttpChannelBinding : ChannelBinding
override HttpChannelBinding : ChannelBinding

属性值

类型： System.Security.Authentication.ExtendedProtection ChannelBinding
当前 HttpWorkerRequest 实例的 ChannelBinding 对象。
异常 | 条件
NotImplementedException | 当前的 HttpWorkerRequest 对象不是 System.Web.Hosting.IIS7WorkerRequest 对象或 System.Web.Hosting.ISAPIWorkerRequestInProc 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.HttpMethod 属性

HttpRequestWrapper
.
.
::
.
HttpMethod 属性
HttpRequestWrapper 类

获取客户端使用的 HTTP 数据传输方法（例如 GET、POST 或 HEAD）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property HttpMethod As String
    Get
public override string HttpMethod { get; }
public:
virtual property String^ HttpMethod {
    String^ get () override;
}
abstract HttpMethod : string
override HttpMethod : string

属性值

类型： System String
客户端使用的 HTTP 数据传输方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.InputStream 属性

HttpRequestWrapper
.
.
::
.
InputStream 属性
HttpRequestWrapper 类

获取传入的 HTTP 实体主体的内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property InputStream As Stream
    Get
public override Stream InputStream { get; }
public:
virtual property Stream^ InputStream {
    Stream^ get () override;
}
abstract InputStream : Stream
override InputStream : Stream

属性值

类型： System.IO Stream
传入的 HTTP 内容体的内容。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.IsAuthenticated 属性

HttpRequestWrapper
.
.
::
.
IsAuthenticated 属性
HttpRequestWrapper 类

获取一个值，该值指示请求是否已经过身份验证。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsAuthenticated As Boolean
    Get
public override bool IsAuthenticated { get; }
public:
virtual property bool IsAuthenticated {
    bool get () override;
}
abstract IsAuthenticated : bool
override IsAuthenticated : bool

属性值

类型： System Boolean
如果请求已经过身份验证，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.IsLocal 属性

HttpRequestWrapper
.
.
::
.
IsLocal 属性
HttpRequestWrapper 类

获取一个指示该请求是否来自本地计算机的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsLocal As Boolean
    Get
public override bool IsLocal { get; }
public:
virtual property bool IsLocal {
    bool get () override;
}
abstract IsLocal : bool
override IsLocal : bool

属性值

类型： System Boolean
如果该请求来自本地计算机，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.IsSecureConnection 属性

HttpRequestWrapper
.
.
::
.
IsSecureConnection 属性
HttpRequestWrapper 类

获取一个值，该值指示 HTTP 连接是否使用安全套接字（HTTPS 协议）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsSecureConnection As Boolean
    Get
public override bool IsSecureConnection { get; }
public:
virtual property bool IsSecureConnection {
    bool get () override;
}
abstract IsSecureConnection : bool
override IsSecureConnection : bool

属性值

类型： System Boolean
如果连接为使用 HTTPS 协议的 SSL 连接，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Item 属性

HttpRequestWrapper
.
.
::
.
Item 属性
HttpRequestWrapper 类

从 Cookies、Form、QueryString 或 ServerVariables 集合获取指定的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Item ( _
    key As String _
) As String
    Get
public override string this[
    string key
] { get; }
public:
virtual property String^ Item[String^ key] {
    String^ get (String^ key) override;
}
abstract Item : string
override Item : string

参数

key
类型： System String
要获取的集合成员的名称。

属性值

类型： System String
由 key 指定的 QueryString、Form、Cookies 或 ServerVariables 集合成员。如果未找到指定的 key 值，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 由 key 指定的 QueryString、Form、Cookies 或 ServerVariables 集合成员。如果未找到指定的 key 值，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.LogonUserIdentity 属性

HttpRequestWrapper
.
.
::
.
LogonUserIdentity 属性
HttpRequestWrapper 类

获取当前用户的 WindowsIdentity 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property LogonUserIdentity As WindowsIdentity
    Get
public override WindowsIdentity LogonUserIdentity { get; }
public:
virtual property WindowsIdentity^ LogonUserIdentity {
    WindowsIdentity^ get () override;
}
abstract LogonUserIdentity : WindowsIdentity
override LogonUserIdentity : WindowsIdentity

属性值

类型： System.Security.Principal WindowsIdentity
当前用户的标识。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Params 属性

HttpRequestWrapper
.
.
::
.
Params 属性
HttpRequestWrapper 类

获取 QueryString、Form、ServerVariables 和 Cookies 项的组合集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Params As NameValueCollection
    Get
public override NameValueCollection Params { get; }
public:
virtual property NameValueCollection^ Params {
    NameValueCollection^ get () override;
}
abstract Params : NameValueCollection
override Params : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
合并值的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Path 属性

HttpRequestWrapper
.
.
::
.
Path 属性
HttpRequestWrapper 类

获取当前请求的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Path As String
    Get
public override string Path { get; }
public:
virtual property String^ Path {
    String^ get () override;
}
abstract Path : string
override Path : string

属性值

类型： System String
当前请求的虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.PathInfo 属性

HttpRequestWrapper
.
.
::
.
PathInfo 属性
HttpRequestWrapper 类

获取具有 URL 扩展名的资源的附加路径信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PathInfo As String
    Get
public override string PathInfo { get; }
public:
virtual property String^ PathInfo {
    String^ get () override;
}
abstract PathInfo : string
override PathInfo : string

属性值

类型： System String
资源的附加路径信息。

对于 URL Http://www.contoso.com/virdir/page.html/tail，PathInfo 值为 /tail。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.PhysicalApplicationPath 属性

HttpRequestWrapper
.
.
::
.
PhysicalApplicationPath 属性
HttpRequestWrapper 类

获取当前应用程序的根目录的物理文件系统路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PhysicalApplicationPath As String
    Get
public override string PhysicalApplicationPath { get; }
public:
virtual property String^ PhysicalApplicationPath {
    String^ get () override;
}
abstract PhysicalApplicationPath : string
override PhysicalApplicationPath : string

属性值

类型： System String
当前应用程序的根目录的文件系统路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.PhysicalPath 属性

HttpRequestWrapper
.
.
::
.
PhysicalPath 属性
HttpRequestWrapper 类

获取所请求资源的物理文件系统路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property PhysicalPath As String
    Get
public override string PhysicalPath { get; }
public:
virtual property String^ PhysicalPath {
    String^ get () override;
}
abstract PhysicalPath : string
override PhysicalPath : string

属性值

类型： System String
请求的资源的文件系统路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.QueryString 属性

HttpRequestWrapper
.
.
::
.
QueryString 属性
HttpRequestWrapper 类

获取 HTTP 查询字符串变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property QueryString As NameValueCollection
    Get
public override NameValueCollection QueryString { get; }
public:
virtual property NameValueCollection^ QueryString {
    NameValueCollection^ get () override;
}
abstract QueryString : NameValueCollection
override QueryString : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
当前请求的 URL 中由客户端发送的查询字符串变量。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.RawUrl 属性

HttpRequestWrapper
.
.
::
.
RawUrl 属性
HttpRequestWrapper 类

获取当前请求的完整 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RawUrl As String
    Get
public override string RawUrl { get; }
public:
virtual property String^ RawUrl {
    String^ get () override;
}
abstract RawUrl : string
override RawUrl : string

属性值

类型： System String
当前请求的完整 URL。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.RequestContext 属性

HttpRequestWrapper
.
.
::
.
RequestContext 属性
HttpRequestWrapper 类

获取当前请求的 RequestContext 实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property RequestContext As RequestContext
    Get
    Friend Set
public override RequestContext RequestContext { get; internal set; }
public:
virtual property RequestContext^ RequestContext {
    RequestContext^ get () override;
    internal: void set (RequestContext^ value) override;
}
abstract RequestContext : RequestContext with get, internal set
override RequestContext : RequestContext with get, internal set

属性值

类型： System.Web.Routing RequestContext
当前请求的 RequestContext 实例。对于非路由请求，返回的 RequestContext 对象为空。 当前请求的 RequestContext 实例。对于非路由请求，返回的 RequestContext 对象为空。

此属性提供对当前请求的 RouteData 对象的访问。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.RequestType 属性

HttpRequestWrapper
.
.
::
.
RequestType 属性
HttpRequestWrapper 类

获取或设置客户端使用的 HTTP 数据传输方法（GET 或 POST）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property RequestType As String
    Get
    Set
public override string RequestType { get; set; }
public:
virtual property String^ RequestType {
    String^ get () override;
    void set (String^ value) override;
}
abstract RequestType : string with get, set
override RequestType : string with get, set

属性值

类型： System String
客户端使用的 HTTP 数据传输方法类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.ServerVariables 属性

HttpRequestWrapper
.
.
::
.
ServerVariables 属性
HttpRequestWrapper 类

获取 Web 服务器变量的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property ServerVariables As NameValueCollection
    Get
public override NameValueCollection ServerVariables { get; }
public:
virtual property NameValueCollection^ ServerVariables {
    NameValueCollection^ get () override;
}
abstract ServerVariables : NameValueCollection
override ServerVariables : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
服务器变量

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.TotalBytes 属性

HttpRequestWrapper
.
.
::
.
TotalBytes 属性
HttpRequestWrapper 类

获取当前输入流中的字节数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property TotalBytes As Integer
    Get
public override int TotalBytes { get; }
public:
virtual property int TotalBytes {
    int get () override;
}
abstract TotalBytes : int
override TotalBytes : int

属性值

类型： System Int32
输入流中的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.Url 属性

HttpRequestWrapper
.
.
::
.
Url 属性
HttpRequestWrapper 类

获取有关当前请求的 URL 的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Url As Uri
    Get
public override Uri Url { get; }
public:
virtual property Uri^ Url {
    Uri^ get () override;
}
abstract Url : Uri
override Url : Uri

属性值

类型： System Uri
一个对象，包含有关当前请求的 URL 的信息。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.UrlReferrer 属性

HttpRequestWrapper
.
.
::
.
UrlReferrer 属性
HttpRequestWrapper 类

获取有关链接到当前 URL 的客户端请求的 URL 的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property UrlReferrer As Uri
    Get
public override Uri UrlReferrer { get; }
public:
virtual property Uri^ UrlReferrer {
    Uri^ get () override;
}
abstract UrlReferrer : Uri
override UrlReferrer : Uri

属性值

类型： System Uri
链接到当前请求的页面的 URL。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.UserAgent 属性

HttpRequestWrapper
.
.
::
.
UserAgent 属性
HttpRequestWrapper 类

获取客户端的完整用户代理字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property UserAgent As String
    Get
public override string UserAgent { get; }
public:
virtual property String^ UserAgent {
    String^ get () override;
}
abstract UserAgent : string
override UserAgent : string

属性值

类型： System String
客户端的完整用户代理字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.UserHostAddress 属性

HttpRequestWrapper
.
.
::
.
UserHostAddress 属性
HttpRequestWrapper 类

获取客户端的 IP 主机地址。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property UserHostAddress As String
    Get
public override string UserHostAddress { get; }
public:
virtual property String^ UserHostAddress {
    String^ get () override;
}
abstract UserHostAddress : string
override UserHostAddress : string

属性值

类型： System String
客户端的 IP 地址。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.UserHostName 属性

HttpRequestWrapper
.
.
::
.
UserHostName 属性
HttpRequestWrapper 类

获取客户端的 DNS 名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property UserHostName As String
    Get
public override string UserHostName { get; }
public:
virtual property String^ UserHostName {
    String^ get () override;
}
abstract UserHostName : string
override UserHostName : string

属性值

类型： System String
客户端的 DNS 名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpRequestWrapper ..::.UserLanguages 属性

HttpRequestWrapper
.
.
::
.
UserLanguages 属性
HttpRequestWrapper 类

获取客户端语言首选项的已排序数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property UserLanguages As String()
    Get
public override string[] UserLanguages { get; }
public:
virtual property array<String^>^ UserLanguages {
    array<String^>^ get () override;
}
abstract UserLanguages : string[]
override UserLanguages : string[]

属性值

类型：
array<
System String
>
[]
()
[]

客户端语言首选项的已排序数组，如果数组为空，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpRequestWrapper 类
HttpRequestWrapper 成员
System.Web 命名空间


HttpResponse 类

HttpResponse 类
成员

封装来自 ASP.NET 操作的 HTTP 响应信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpResponse
public sealed class HttpResponse
public ref class HttpResponse sealed
[<SealedAttribute>]
type HttpResponse =  class end

HttpResponse 类的方法和属性通过 HttpApplication、HttpContext、Page 和 UserControl 类的 Response 属性公开。

仅在回发方案（不包括异步回发方案）下才支持 HttpResponse 类的以下方法：

  • BinaryWrite

  • Clear

  • ClearContent

  • ClearHeaders

  • Close

  • End

  • Flush

  • TransmitFile

  • Write

  • WriteFile

  • WriteSubstitution

在使用 UpdatePanel 控件时，允许进行部分页更新，即只使用回发更新页面的选定区域而不是更新整个页面。有关更多信息，请参见UpdatePanel 控件概述和 部分页呈现概述。 在使用 UpdatePanel 控件时，允许进行部分页更新，即只使用回发更新页面的选定区域而不是更新整个页面。有关更多信息，请参见UpdatePanel 控件概述和 部分页呈现概述。

下面的示例在请求该页时将绘制三个重叠的矩形。该代码首先将 ContentType 属性设置为 image/jpeg，以便将整个页呈现为一幅 JPEG 图像。接下来，这些代码调用 Clear 方法来确保不会将无关的内容与此响应一同发送。第三步，该代码将 BufferOutput 属性设置为 true，从而使该页在完全处理之后再发送到请求客户端。第四步，创建两个用于绘制矩形的对象，即 Bitmap 和 Graphics 对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。 下面的示例在请求该页时将绘制三个重叠的矩形。该代码首先将 ContentType 属性设置为 image/jpeg，以便将整个页呈现为一幅 JPEG 图像。接下来，这些代码调用 Clear 方法来确保不会将无关的内容与此响应一同发送。第三步，该代码将 BufferOutput 属性设置为 true，从而使该页在完全处理之后再发送到请求客户端。第四步，创建两个用于绘制矩形的对象，即 Bitmap 和 Graphics 对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。 下面的示例在请求该页时将绘制三个重叠的矩形。该代码首先将 ContentType 属性设置为 image/jpeg，以便将整个页呈现为一幅 JPEG 图像。接下来，这些代码调用 Clear 方法来确保不会将无关的内容与此响应一同发送。第三步，该代码将 BufferOutput 属性设置为 true，从而使该页在完全处理之后再发送到请求客户端。第四步，创建两个用于绘制矩形的对象，即 Bitmap 和 Graphics 对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。 下面的示例在请求该页时将绘制三个重叠的矩形。该代码首先将 ContentType 属性设置为 image/jpeg，以便将整个页呈现为一幅 JPEG 图像。接下来，这些代码调用 Clear 方法来确保不会将无关的内容与此响应一同发送。第三步，该代码将 BufferOutput 属性设置为 true，从而使该页在完全处理之后再发送到请求客户端。第四步，创建两个用于绘制矩形的对象，即 Bitmap 和 Graphics 对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。 下面的示例在请求该页时将绘制三个重叠的矩形。该代码首先将 ContentType 属性设置为 image/jpeg，以便将整个页呈现为一幅 JPEG 图像。接下来，这些代码调用 Clear 方法来确保不会将无关的内容与此响应一同发送。第三步，该代码将 BufferOutput 属性设置为 true，从而使该页在完全处理之后再发送到请求客户端。第四步，创建两个用于绘制矩形的对象，即 Bitmap 和 Graphics 对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。 下面的示例在请求该页时将绘制三个重叠的矩形。该代码首先将 ContentType 属性设置为 image/jpeg，以便将整个页呈现为一幅 JPEG 图像。接下来，这些代码调用 Clear 方法来确保不会将无关的内容与此响应一同发送。第三步，该代码将 BufferOutput 属性设置为 true，从而使该页在完全处理之后再发送到请求客户端。第四步，创建两个用于绘制矩形的对象，即 Bitmap 和 Graphics 对象。在该页中创建的变量将作为绘制矩形的坐标和在最大的矩形中显示的字符串。

在绘制三个矩形和在矩形中显示的字符串时，将 Bitmap 保存到与 OutputStream 属性关联的 Stream 对象，并将其格式设置为 JPEG。该代码调用 Dispose 和 Dispose 方法来释放资源，这些资源为两个绘制对象所使用。最后，该代码调用 Flush 方法将缓冲的响应发送到请求客户端。 在绘制三个矩形和在矩形中显示的字符串时，将 Bitmap 保存到与 OutputStream 属性关联的 Stream 对象，并将其格式设置为 JPEG。该代码调用 Dispose 和 Dispose 方法来释放资源，这些资源为两个绘制对象所使用。最后，该代码调用 Flush 方法将缓冲的响应发送到请求客户端。 在绘制三个矩形和在矩形中显示的字符串时，将 Bitmap 保存到与 OutputStream 属性关联的 Stream 对象，并将其格式设置为 JPEG。该代码调用 Dispose 和 Dispose 方法来释放资源，这些资源为两个绘制对象所使用。最后，该代码调用 Flush 方法将缓冲的响应发送到请求客户端。

说明 说明

在代码中，HttpResponse 对象是通过关键字 Response 引用的。例如，Response.Clear() 涉及 HttpResponse..::.Clear 方法。Page 类具有名为 Response 的属性，该属性公开了 HttpResponse 的当前实例。 在代码中，HttpResponse 对象是通过关键字 Response 引用的。例如，Response.Clear() 涉及 HttpResponse..::.Clear 方法。Page 类具有名为 Response 的属性，该属性公开了 HttpResponse 的当前实例。 在代码中，HttpResponse 对象是通过关键字 Response 引用的。例如，Response.Clear() 涉及 HttpResponse..::.Clear 方法。Page 类具有名为 Response 的属性，该属性公开了 HttpResponse 的当前实例。

<%@ Page Language="VB" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

   Private Sub Page_Load(sender As Object, e As EventArgs)
      ' Set the page's content type to JPEG files
      ' and clear all response headers.
      Response.ContentType = "image/jpeg"
      Response.Clear()

      ' Buffer response so that page is sent
      ' after processing is complete.
      Response.BufferOutput = True

      ' Create a font style.
      Dim rectangleFont As New Font( _
          "Arial", 10, FontStyle.Bold)

      ' Create integer variables.
      Dim height As Integer = 100
      Dim width As Integer = 200

      ' Create a random number generator and create
      ' variable values based on it.
      Dim r As New Random()
      Dim x As Integer = r.Next(75)
      Dim a As Integer = r.Next(155)
      Dim x1 As Integer = r.Next(100)

      ' Create a bitmap and use it to create a
      ' Graphics object.
      Dim bmp As New Bitmap( _
          width, height, PixelFormat.Format24bppRgb)
      Dim g As Graphics = Graphics.FromImage(bmp)

      g.SmoothingMode = SmoothingMode.AntiAlias
      g.Clear(Color.LightGray)

      ' Use the Graphics object to draw three rectangles.
      g.DrawRectangle(Pens.White, 1, 1, width - 3, height - 3)
      g.DrawRectangle(Pens.Aquamarine, 2, 2, width - 3, height - 3)
      g.DrawRectangle(Pens.Black, 0, 0, width, height)

      ' Use the Graphics object to write a string
      ' on the rectangles.
      g.DrawString("ASP.NET Samples", rectangleFont, SystemBrushes.WindowText, New PointF(10, 40))

      ' Apply color to two of the rectangles.
      g.FillRectangle( _
          New SolidBrush( _
              Color.FromArgb(a, 255, 128, 255)), _
          x, 20, 100, 50)

      g.FillRectangle( _
          New LinearGradientBrush( _
              New Point(x, 10), _
              New Point(x1 + 75, 50 + 30), _
              Color.FromArgb(128, 0, 0, 128), _
              Color.FromArgb(255, 255, 255, 240)), _
          x1, 50, 75, 30)

      ' Save the bitmap to the response stream and
      ' convert it to JPEG format.
      bmp.Save(Response.OutputStream, ImageFormat.Jpeg)

      ' Release memory used by the Graphics object
      ' and the bitmap.
      g.Dispose()
      bmp.Dispose()

      ' Send the output to the client.
      Response.Flush()
   End Sub 'Page_Load

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Set the page's content type to JPEG files
        // and clear all response headers.
        Response.ContentType = "image/jpeg";
        Response.Clear();

        // Buffer response so that page is sent
        // after processing is complete.
        Response.BufferOutput = true;

        // Create a font style.
        Font rectangleFont = new Font(
            "Arial", 10, FontStyle.Bold);

        // Create integer variables.
        int height = 100;
        int width = 200;

        // Create a random number generator and create
        // variable values based on it.
        Random r = new Random();
        int x = r.Next(75);
        int a = r.Next(155);
        int x1 = r.Next(100);

        // Create a bitmap and use it to create a
        // Graphics object.
        Bitmap bmp = new Bitmap(
            width, height, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmp);

        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.Clear(Color.LightGray);

        // Use the Graphics object to draw three rectangles.
        g.DrawRectangle(Pens.White, 1, 1, width-3, height-3);
        g.DrawRectangle(Pens.Aquamarine, 2, 2, width-3, height-3);
        g.DrawRectangle(Pens.Black, 0, 0, width, height);

        // Use the Graphics object to write a string
        // on the rectangles.
        g.DrawString(
            "ASP.NET Samples", rectangleFont,
            SystemBrushes.WindowText, new PointF(10, 40));

        // Apply color to two of the rectangles.
        g.FillRectangle(
            new SolidBrush(
                Color.FromArgb(a, 255, 128, 255)),
            x, 20, 100, 50);

        g.FillRectangle(
            new LinearGradientBrush(
                new Point(x, 10),
                new Point(x1 + 75, 50 + 30),
                Color.FromArgb(128, 0, 0, 128),
                Color.FromArgb(255, 255, 255, 240)),
            x1, 50, 75, 30);

        // Save the bitmap to the response stream and
        // convert it to JPEG format.
        bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

        // Release memory used by the Graphics object
        // and the bitmap.
        g.Dispose();
        bmp.Dispose();

        // Send the output to the client.
        Response.Flush();
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

System.Web System.Web..::.HttpResponseHttpResponse
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 成员
System.Web 命名空间


HttpResponse 成员

HttpResponse 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

封装来自 ASP.NET 操作的 HTTP 响应信息。

HttpResponse 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpResponse 类
System.Web 命名空间


HttpResponse 构造函数

HttpResponse 构造函数
HttpResponse 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 HttpResponse 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    writer As TextWriter _
)
public HttpResponse(
    TextWriter writer
)
public:
HttpResponse(
    TextWriter^ writer
)
new :
        writer:TextWriter -> HttpResponse

参数

writer
类型： System.IO TextWriter
一个实现自定义 HTTP 输出的 TextWriter 对象。

该成员支持 .NET Framework 结构，不应从代码直接使用。

HttpResponse 类的方法和属性通过 ASP.NET 中的内部 Response 对象公开。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse 方法

HttpResponse 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

HttpResponse 类型公开以下成员。

名称 说明
页首

参考

HttpResponse 类
System.Web 命名空间


HttpResponse ..::.AddCacheDependency 方法

HttpResponse
.
.
::
.
AddCacheDependency 方法
HttpResponse 类

将一组缓存依赖项与响应关联，这样，如果响应存储在输出缓存中并且指定的依赖项发生变化，就可以使该响应失效。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddCacheDependency ( _
    ParamArray dependencies As CacheDependency() _
)
public void AddCacheDependency(
    params CacheDependency[] dependencies
)
public:
void AddCacheDependency(
    ... array<CacheDependency^>^ dependencies
)
member AddCacheDependency :
        dependencies:CacheDependency[] -> unit

参数

dependencies
类型：
array<
System.Web.Caching CacheDependency
>
[]
()
[]

要添加到应用程序依赖项列表的文件、缓存键或 CacheDependency。
异常 | 条件
ArgumentNullException | dependencies 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 在缓存处理管线中调用此方法太迟，已经在创建了缓存响应之后。

使用 AddCacheDependency 方法，可以在缓存响应与一个 CacheDependency 对象之间创建依赖项。

下面的示例演示如何使用 AddCacheDependency 方法和 CacheDependency 对象创建缓存依赖项。

<%@ Page Language="VB" %>
<%@ outputcache duration="30" varybyparam="none" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="Server">
    Sub Page_Load()
        ' Create a Cache Dependency
        ' using a CacheDependency object.
        Dim authorsDependency("authors.xml") As CacheDependency

        ' Make the page invalid if either of the
        ' cached items change or expire.
        Response.AddCacheDependency(authorsDependency)

        ' Display the current time for cache reference
        lblOutputCacheMsg.Text = DateTime.Now.ToString()

    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Cache Dependencies</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <table>
            <tbody>
                <tr>
                    <td style="WIDTH: 118px">
                        The page was generated at:</td>
                    <td>
                        <asp:Label id="lblOutputCacheMsg" runat="server"></asp:Label>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ outputcache duration="30" varybyparam="none" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="Server">
    private void Page_Load(object sender, System.EventArgs e)
    {
        // Create a Cache Dependency
        // using a CacheDependency object.
        CacheDependency authorsDependency = new CacheDependency("authors.xml");

        // Make the page invalid if either of the
        // cached items change or expire.
        Response.AddCacheDependency(authorsDependency);

        // Display the current time for cache reference
        lblOutputCacheMsg.Text = DateTime.Now.ToString();
    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Cache Dependencies</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <table>
            <tbody>
                <tr>
                    <td style="WIDTH: 118px">
                        The page was generated at:</td>
                    <td>
                        <asp:Label id="lblOutputCacheMsg" runat="server"></asp:Label>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
CacheDependency

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddCacheItemDependencies 方法

HttpResponse
.
.
::
.
AddCacheItemDependencies 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

使缓存响应的有效性依赖于缓存中的其他项。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.AddCacheItemDependencies 方法 (ArrayList)

HttpResponse
.
.
::
.
AddCacheItemDependencies 方法 (ArrayList)
HttpResponse 类

使缓存响应的有效性依赖于缓存中的其他项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddCacheItemDependencies ( _
    cacheKeys As ArrayList _
)
public void AddCacheItemDependencies(
    ArrayList cacheKeys
)
public:
void AddCacheItemDependencies(
    ArrayList^ cacheKeys
)
member AddCacheItemDependencies :
        cacheKeys:ArrayList -> unit

参数

cacheKeys
类型： System.Collections ArrayList
ArrayList，其中包含当前缓存的响应所依赖的项的键。

当从缓存中移除 cacheKeys 参数中引用的项时，当前项的已缓存响应将失效。

下面的示例演示如何使用对输出进行缓存的 ASP.NET 页。该页的代码创建一个键的 ArrayList 对象，这些键与存储在 Cache 对象中的项关联。然后，该代码在调用 AddCacheItemDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，就会使输出缓存响应失效。 下面的示例演示如何使用对输出进行缓存的 ASP.NET 页。该页的代码创建一个键的 ArrayList 对象，这些键与存储在 Cache 对象中的项关联。然后，该代码在调用 AddCacheItemDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，就会使输出缓存响应失效。 下面的示例演示如何使用对输出进行缓存的 ASP.NET 页。该页的代码创建一个键的 ArrayList 对象，这些键与存储在 Cache 对象中的项关联。然后，该代码在调用 AddCacheItemDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，就会使输出缓存响应失效。 下面的示例演示如何使用对输出进行缓存的 ASP.NET 页。该页的代码创建一个键的 ArrayList 对象，这些键与存储在 Cache 对象中的项关联。然后，该代码在调用 AddCacheItemDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，就会使输出缓存响应失效。

<%@ Page Language="vb" %>
<%@ outputcache duration="30" varybyparam="none" %>
<%@ Import namespace="Samples.AspNet.VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Private Sub Page_Load(sender As Object, e As System.EventArgs)
       ' Create an array list that
       ' contains the keys for two
       ' items stored in the Cache object.
       Dim deps As New ArrayList()
       deps.Add("bookData")
       deps.Add("authorData")

       ' Make the page invalid if either of the
       ' cached items change or expire.
       Response.AddCacheItemDependencies(deps)

       ' Populate the DataGrids.
       dgAuthors.DataSource = DataHelper.GetAuthorData()
       dgAuthors.DataBind()

       dgBooks.DataSource = DataHelper.GetBookData()
       dgBooks.DataBind()

       lblOutputCacheMsg.Text = DateTime.Now.ToString()
    End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Cache Item Dependencies</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <table>
            <tbody>
                <tr>
                    <th style="WIDTH: 118px">
                        Authors</th>
                    <td>
                        <asp:DataGrid id="dgAuthors" runat="server"></asp:DataGrid>
                    </td>
                </tr>
                <tr>
                    <th style="WIDTH: 118px">
                        Books</th>
                    <td>
                        <asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
                    </td>
                </tr>
                <tr>
                    <td style="WIDTH: 118px">
                        The page was generated at:</td>
                    <td>
                        <asp:Label id="lblOutputCacheMsg" runat="server"></asp:Label>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ outputcache duration="30" varybyparam="none" %>
<%@ Import namespace="Samples.AspNet.CS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="Server">
    private void Page_Load(object sender, System.EventArgs e)
    {

        // Create an array list that
        // contains the keys for two
        // items stored in the Cache object.
        ArrayList deps = new ArrayList();
        deps.Add("bookData");
        deps.Add("authorData");

        // Make the page invalid if either of the
        // cached items change or expire.
        Response.AddCacheItemDependencies(deps);

        // Populate the DataGrids.
        dgAuthors.DataSource = DataHelper.GetAuthorData();
        dgAuthors.DataBind();

        dgBooks.DataSource = DataHelper.GetBookData();
        dgBooks.DataBind();

        lblOutputCacheMsg.Text = DateTime.Now.ToString();

    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Cache Item Dependencies</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <table>
            <tbody>
                <tr>
                    <th style="WIDTH: 118px">
                        Authors</th>
                    <td>
                        <asp:DataGrid id="dgAuthors" runat="server"></asp:DataGrid>
                    </td>
                </tr>
                <tr>
                    <th style="WIDTH: 118px">
                        Books</th>
                    <td>
                        <asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
                    </td>
                </tr>
                <tr>
                    <td style="WIDTH: 118px">
                        The page was generated at:</td>
                    <td>
                        <asp:Label id="lblOutputCacheMsg" runat="server"></asp:Label>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
AddCacheItemDependencies 重载
System.Web 命名空间
CacheDependency

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddCacheItemDependencies 方法 ( array<String >[]()[])

HttpResponse
.
.
::
.
AddCacheItemDependencies 方法 (
array<
String
>
[]
()
[]
)
HttpResponse 类

使缓存项的有效性依赖于缓存中的另一项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddCacheItemDependencies ( _
    cacheKeys As String() _
)
public void AddCacheItemDependencies(
    string[] cacheKeys
)
public:
void AddCacheItemDependencies(
    array<String^>^ cacheKeys
)
member AddCacheItemDependencies :
        cacheKeys:string[] -> unit

参数

cacheKeys
类型：
array<
System String
>
[]
()
[]

一个项键的数组，缓存响应依赖于这些项键。

从缓存中移除任何一个 cacheKey 以后，当前项的缓存响应就会失效。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
AddCacheItemDependencies 重载
System.Web 命名空间
CacheDependency

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddCacheItemDependency 方法

HttpResponse
.
.
::
.
AddCacheItemDependency 方法
HttpResponse 类

使缓存响应的有效性依赖于缓存中的其他项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddCacheItemDependency ( _
    cacheKey As String _
)
public void AddCacheItemDependency(
    string cacheKey
)
public:
void AddCacheItemDependency(
    String^ cacheKey
)
member AddCacheItemDependency :
        cacheKey:string -> unit

参数

cacheKey
类型： System String
缓存的响应所依赖的项的键。

当从缓存中移除与 cacheKey 参数对应的项时，当前项的已缓存响应将失效。

下面的示例是一个对输出进行缓存的 ASP.NET 用户控件。该控件的代码调用 AddCacheItemDependency 方法，并将存储在 Cache 对象中的某个项的键作为参数传递。如果缓存中不存在该项，则该控件存储在输出缓存中的响应将会失效。这意味着在后续请求中，会将新版本的控件响应添加到输出缓存。 下面的示例是一个对输出进行缓存的 ASP.NET 用户控件。该控件的代码调用 AddCacheItemDependency 方法，并将存储在 Cache 对象中的某个项的键作为参数传递。如果缓存中不存在该项，则该控件存储在输出缓存中的响应将会失效。这意味着在后续请求中，会将新版本的控件响应添加到输出缓存。 下面的示例是一个对输出进行缓存的 ASP.NET 用户控件。该控件的代码调用 AddCacheItemDependency 方法，并将存储在 Cache 对象中的某个项的键作为参数传递。如果缓存中不存在该项，则该控件存储在输出缓存中的响应将会失效。这意味着在后续请求中，会将新版本的控件响应添加到输出缓存。 下面的示例是一个对输出进行缓存的 ASP.NET 用户控件。该控件的代码调用 AddCacheItemDependency 方法，并将存储在 Cache 对象中的某个项的键作为参数传递。如果缓存中不存在该项，则该控件存储在输出缓存中的响应将会失效。这意味着在后续请求中，会将新版本的控件响应添加到输出缓存。

其次，这些代码检查与 bookData 键关联的某个项是否存储在 Cache 对象中，并根据检查结果显示两行文本中的一行。然后，这些代码通过调用自定义 DataHelper 类的 GetBookData 共享方法，设置名为 dgBooks 的 DataGrid 控件的 DataSource 属性，并使用 DataBind 方法填充 DataGrid。 其次，这些代码检查与 bookData 键关联的某个项是否存储在 Cache 对象中，并根据检查结果显示两行文本中的一行。然后，这些代码通过调用自定义 DataHelper 类的 GetBookData 共享方法，设置名为 dgBooks 的 DataGrid 控件的 DataSource 属性，并使用 DataBind 方法填充 DataGrid。

<%@ Control Language="vb" %>
<%@ Outputcache duration="10" varybyparam="none" shared="True" %>
<%@ Import Namespace="Samples.AspNet.VB" %>
<%@ Import Namespace="System.Data" %>
<script runat="server">

    Private Sub Page_Load(sender As Object, e As System.EventArgs)

        ' Make user control invalid if the
        ' cache item changes or expires.
        Response.AddCacheItemDependency("bookData")

        ' Create a DataView object.
        Dim source As DataView = Cache("bookData")

        ' Check if the view is stored in the cache
        ' and generate the right label text
        ' dependent upon what is returned.
        If source Is Nothing Then

           source = DataHelper.GetBookData()
           lblCacheMsg.Text = "Data generated explicitly."
        Else
           lblCacheMsg.Text = "Data retrieved from application cache."
        End If

        dgBooks.DataSource = source
        dgBooks.DataBind()

        lblOutputMessage.Text = DateTime.Now.ToString()
    End Sub

</script>

    <table>
        <tbody>
            <tr>
                <th>
                    Books</th>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label id="lblCacheMsg" runat="server"></asp:Label>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    The control was created at:
                </td>
                <td>
                    <asp:Label id="lblOutputMessage" runat="server"></asp:Label>
                </td>
            </tr>
        </tbody>
    </table>

    <%@ Control Language="c#" %>
    <%@ Outputcache duration="10" varybyparam="none" shared="True" %>
    <%@ Import Namespace = "Samples.AspNet.CS" %>
    <%@ Import Namespace = "System.Data" %>

<script runat="server">

    private void Page_Load(object sender, System.EventArgs e)
    {

        // Make user control invalid if the
        // cache item changes or expires.
        Response.AddCacheItemDependency("bookData");

        // Create a DataView object.
        DataView source = (DataView)Cache["bookData"];

        // Check if the view is stored in the cache
        // and generate the right label text
        // dependent upon what is returned.
        if (source == null)
        {
            source = DataHelper.GetBookData();
            lblCacheMsg.Text = "Data generated explicitly.";
        }
        else
        {
            lblCacheMsg.Text = "Data retrieved from application cache.";
        }

        dgBooks.DataSource = source;
        dgBooks.DataBind();

        lblOutputMessage.Text = DateTime.Now.ToString();
    }

</script>
    <table>
        <tbody>
            <tr>
                <th>
                    Books</th>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Label id="lblCacheMsg" runat="server"></asp:Label>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    The control was created at:
                </td>
                <td>
                    <asp:Label id="lblOutputMessage" runat="server"></asp:Label>
                </td>
            </tr>
        </tbody>
    </table>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
AddCacheItemDependency

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddFileDependencies 方法

HttpResponse
.
.
::
.
AddFileDependencies 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

使缓存响应的有效性依赖于缓存中的其他项。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.AddFileDependencies 方法 (ArrayList)

HttpResponse
.
.
::
.
AddFileDependencies 方法 (ArrayList)
HttpResponse 类

将一组文件名添加到文件名集合中，当前响应依赖于该集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddFileDependencies ( _
    filenames As ArrayList _
)
public void AddFileDependencies(
    ArrayList filenames
)
public:
void AddFileDependencies(
    ArrayList^ filenames
)
member AddFileDependencies :
        filenames:ArrayList -> unit

参数

filenames
类型： System.Collections ArrayList
要添加的文件集合。

下面的示例是一个对输出进行缓存的 ASP.NET 页。该页的代码创建一个包含文件路径的 ArrayList，然后在调用 AddFileDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，这就会使输出缓存响应失效。 下面的示例是一个对输出进行缓存的 ASP.NET 页。该页的代码创建一个包含文件路径的 ArrayList，然后在调用 AddFileDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，这就会使输出缓存响应失效。 下面的示例是一个对输出进行缓存的 ASP.NET 页。该页的代码创建一个包含文件路径的 ArrayList，然后在调用 AddFileDependencies 方法时将 ArrayList 作为参数传递。只要 ArrayList 中指定的任何文件发生变化，这就会使输出缓存响应失效。

<%@ Page Language="vb" %>
<%@ outputcache duration="30" varybyparam="none" %>
<%@ Import Namespace="Samples.AspNet.VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    Private Sub Page_Load(sender As Object, e As System.EventArgs)

       ' Create variable and assign file paths to them.
       Dim file1 As String = Server.MapPath("authors.xml")
       Dim file2 As String = Server.MapPath("books.xml")

       ' Create an array list to contain the file paths.
       Dim fileList As New ArrayList()
       fileList.Add(file1)
       fileList.Add(file2)

       ' Use the AddFileDependencies method to
       ' invalidate the output cached page if
       ' one of the files changes.
       Response.AddFileDependencies(fileList)

       ' Populate the DataGrids.
       dgAuthors.DataSource = DataHelper.GetAuthorData()
       dgAuthors.DataBind()

       dgBooks.DataSource = DataHelper.GetBookData()
       dgBooks.DataBind()

       lblOutputCacheMsg.Text = DateTime.Now.ToString()
    End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>PageDataDisplay</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <table>
            <tbody>
                <tr>
                    <th style="WIDTH: 118px">
                        Authors</th>
                    <td>
                        <asp:DataGrid id="dgAuthors" runat="server"></asp:DataGrid>
                    </td>
                </tr>
                <tr>
                    <th style="WIDTH: 118px">
                        Books</th>
                    <td>
                        <asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
                    </td>
                </tr>
                <tr>
                    <td style="WIDTH: 118px">
                        The page was generated at:</td>
                    <td>
                        <asp:Label id="lblOutputCacheMsg" runat="server"></asp:Label>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>

<%@ Page Language="c#" %>
<%@ outputcache duration="30" varybyparam="none" %>
<%@ Import Namespace="Samples.AspNet.CS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, System.EventArgs e)
    {

        // Create variables and assign file paths to them.
        string file1 = Server.MapPath("authors.xml");
        string file2 = Server.MapPath("books.xml");

        // Create an array list to contain the file paths.
        ArrayList fileList = new ArrayList();
        fileList.Add(file1);
    fileList.Add(file2);

        // Make the page dependent upon the arrayList.
        Response.AddFileDependencies(fileList);

        // Populate the DataGrids.
        dgAuthors.DataSource = DataHelper.GetAuthorData();
        dgAuthors.DataBind();

        dgBooks.DataSource = DataHelper.GetBookData();
        dgBooks.DataBind();

        lblOutputCacheMsg.Text = DateTime.Now.ToString();

    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>PageDataDisplay</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">
      <table>
        <tr>
          <th style="WIDTH: 118px">
            Authors
          </th>
          <td>
            <asp:DataGrid id="dgAuthors" runat="server"></asp:DataGrid>
          </td>
        </tr>
        <tr>
          <th style="WIDTH: 118px">
            Books
          </th>
          <td>
            <asp:DataGrid id="dgBooks" runat="server"></asp:DataGrid>
          </td>
        </tr>
        <tr>
          <td style="WIDTH: 118px">
            The page was generated at:
          </td>
          <td>
            <asp:Label id="lblOutputCacheMsg" runat="server"></asp:Label>
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
AddFileDependencies 重载
System.Web 命名空间
CacheDependency

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddFileDependencies 方法 ( array<String >[]()[])

HttpResponse
.
.
::
.
AddFileDependencies 方法 (
array<
String
>
[]
()
[]
)
HttpResponse 类

将一个文件名数组添加到当前响应依赖的文件名集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddFileDependencies ( _
    filenames As String() _
)
public void AddFileDependencies(
    string[] filenames
)
public:
void AddFileDependencies(
    array<String^>^ filenames
)
member AddFileDependencies :
        filenames:string[] -> unit

参数

filenames
类型：
array<
System String
>
[]
()
[]

要添加的文件数组。

下面的示例将一个文件名数组添加到 AddFileDependencies 文件依赖项列表中。如果这些文件发生变化，缓存响应将会失效。 下面的示例将一个文件名数组添加到 AddFileDependencies 文件依赖项列表中。如果这些文件发生变化，缓存响应将会失效。

<%@ Page Language="VB" %>
<%@ Import namespace="System.IO" %>

<script runat="server">

    Sub Page_Load()
        Dim FileNames(2) As String
        FileNames(0) = "Test.txt"
        FileNames(1) = "Test2.txt"
        FileNames(2) = "Test3.txt"
        Response.AddFileDependencies(FileNames)
        Response.Write("File Dependencies sucessfully added!")
    End Sub

</script>

<%@ Page Language="C#" %>
<%@ Import namespace="System.IO" %>

<script runat="server">
    private void Page_Load()
    {
        String[] FileNames = new String[3];
        FileNames[0] = "Test.txt";
        FileNames[1] = "Test2.txt";
        FileNames[2] = "Test3.txt";
        Response.AddFileDependencies(FileNames);
        Response.Write("File Dependencies sucessfully added!");
    }

</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
AddFileDependencies 重载
System.Web 命名空间

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddFileDependency 方法

HttpResponse
.
.
::
.
AddFileDependency 方法
HttpResponse 类

将单个文件名添加到文件名集合中，当前响应依赖于该集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddFileDependency ( _
    filename As String _
)
public void AddFileDependency(
    string filename
)
public:
void AddFileDependency(
    String^ filename
)
member AddFileDependency :
        filename:string -> unit

参数

filename
类型： System String
要添加的文件名。

在使用 AddFileDependency 方法添加文件依赖项时，还必须以声明方式或以编程方式指定输出缓存。例如，若要以声明方式指定输出缓存，请使用 @ OutputCache 指令。有关更多信息，请参见如何：使用文件依赖项缓存页输出。 在使用 AddFileDependency 方法添加文件依赖项时，还必须以声明方式或以编程方式指定输出缓存。例如，若要以声明方式指定输出缓存，请使用 @ OutputCache 指令。有关更多信息，请参见如何：使用文件依赖项缓存页输出。 在使用 AddFileDependency 方法添加文件依赖项时，还必须以声明方式或以编程方式指定输出缓存。例如，若要以声明方式指定输出缓存，请使用 @ OutputCache 指令。有关更多信息，请参见如何：使用文件依赖项缓存页输出。

下面的示例演示如何将单个文件名添加到 AddFileDependency 文件依赖项列表中。如果该文件发生变化，缓存响应将会失效。 下面的示例演示如何将单个文件名添加到 AddFileDependency 文件依赖项列表中。如果该文件发生变化，缓存响应将会失效。

Dim FileName As String
 FileName = "C:\Files\F1.txt"
 Response.AddFileDependency(FileName)

String FileName;
 FileName = "C:\\Files\\F1.txt";
 Response.AddFileDependency(FileName);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间

其他资源

缓存 ASP.NET 页


HttpResponse ..::.AddHeader 方法

HttpResponse
.
.
::
.
AddHeader 方法
HttpResponse 类

将 HTTP 头添加到输出流。提供 AddHeader 是为了与 ASP 的早期版本兼容。 将 HTTP 头添加到输出流。提供 AddHeader 是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddHeader ( _
    name As String, _
    value As String _
)
public void AddHeader(
    string name,
    string value
)
public:
void AddHeader(
    String^ name,
    String^ value
)
member AddHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要添加 value 的 HTTP 头名称。
value
类型： System String
要添加到头中的字符串。

AddHeader 与 AppendHeader 一样，提供它只是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中，使用 AppendHeader。 AddHeader 与 AppendHeader 一样，提供它只是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中，使用 AppendHeader。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.AppendCookie 方法

HttpResponse
.
.
::
.
AppendCookie 方法
HttpResponse 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将一个 HTTP Cookie 添加到内部 Cookie 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AppendCookie ( _
    cookie As HttpCookie _
)
public void AppendCookie(
    HttpCookie cookie
)
public:
void AppendCookie(
    HttpCookie^ cookie
)
member AppendCookie :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
要添加到输出流的 HttpCookie。
异常 | 条件
HttpException | 在发送了 HTTP 标头之后将追加一个 Cookie。

下面的示例创建一个名为 LastVisit 的新 Cookie，将该 Cookie 的值设置为当前日期和时间，并将它追加到当前 Cookie 集合的末尾。Cookie 集合中的所有 Cookie 均通过 HTTP 输出流在 Set-Cookie 头中发送到客户端。 下面的示例创建一个名为 LastVisit 的新 Cookie，将该 Cookie 的值设置为当前日期和时间，并将它追加到当前 Cookie 集合的末尾。Cookie 集合中的所有 Cookie 均通过 HTTP 输出流在 Set-Cookie 头中发送到客户端。

Dim MyCookie As New HttpCookie("LastVisit")
 MyCookie.Value = CStr(DateTime.Now())
 Response.AppendCookie(MyCookie)

HttpCookie MyCookie = new HttpCookie("LastVisit");
 MyCookie.Value = DateTime.Now.ToString();
 Response.AppendCookie(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.AppendHeader 方法

HttpResponse
.
.
::
.
AppendHeader 方法
HttpResponse 类

将 HTTP 头添加到输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AppendHeader ( _
    name As String, _
    value As String _
)
public void AppendHeader(
    string name,
    string value
)
public:
void AppendHeader(
    String^ name,
    String^ value
)
member AppendHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要添加到输出流的 HTTP 头的名称。
value
类型： System String
要追加到头中的字符串。
异常 | 条件
HttpException | 在发送了 HTTP 标头之后追加该标头。

如果使用 AppendHeader 方法发送缓存特定的标头，并同时使用缓存对象模型 (Cache) 来设置缓存策略，则与缓存有关的 HTTP 响应标头（Cache-Control、Expires、Last-Modified、Pragma 和 Vary）在使用缓存对象模型时可能会被删除。此行为使 ASP.NET 能够维持限制性最强的设置。例如，假设有一个包含用户控件的页。如果这些控件具有相互冲突的缓存策略，则将使用限制性最强的缓存策略。如果一个用户控件设置了“Cache-Control: Public”标头，而另一个用户控件通过调用 SetCacheability 设置了限制性更强的“Cache-Control: Private”标头，则“Cache-Control: Private”标头将与响应一起发送。 如果使用 AppendHeader 方法发送缓存特定的标头，并同时使用缓存对象模型 (Cache) 来设置缓存策略，则与缓存有关的 HTTP 响应标头（Cache-Control、Expires、Last-Modified、Pragma 和 Vary）在使用缓存对象模型时可能会被删除。此行为使 ASP.NET 能够维持限制性最强的设置。例如，假设有一个包含用户控件的页。如果这些控件具有相互冲突的缓存策略，则将使用限制性最强的缓存策略。如果一个用户控件设置了“Cache-Control: Public”标头，而另一个用户控件通过调用 SetCacheability 设置了限制性更强的“Cache-Control: Private”标头，则“Cache-Control: Private”标头将与响应一起发送。 如果使用 AppendHeader 方法发送缓存特定的标头，并同时使用缓存对象模型 (Cache) 来设置缓存策略，则与缓存有关的 HTTP 响应标头（Cache-Control、Expires、Last-Modified、Pragma 和 Vary）在使用缓存对象模型时可能会被删除。此行为使 ASP.NET 能够维持限制性最强的设置。例如，假设有一个包含用户控件的页。如果这些控件具有相互冲突的缓存策略，则将使用限制性最强的缓存策略。如果一个用户控件设置了“Cache-Control: Public”标头，而另一个用户控件通过调用 SetCacheability 设置了限制性更强的“Cache-Control: Private”标头，则“Cache-Control: Private”标头将与响应一起发送。 如果使用 AppendHeader 方法发送缓存特定的标头，并同时使用缓存对象模型 (Cache) 来设置缓存策略，则与缓存有关的 HTTP 响应标头（Cache-Control、Expires、Last-Modified、Pragma 和 Vary）在使用缓存对象模型时可能会被删除。此行为使 ASP.NET 能够维持限制性最强的设置。例如，假设有一个包含用户控件的页。如果这些控件具有相互冲突的缓存策略，则将使用限制性最强的缓存策略。如果一个用户控件设置了“Cache-Control: Public”标头，而另一个用户控件通过调用 SetCacheability 设置了限制性更强的“Cache-Control: Private”标头，则“Cache-Control: Private”标头将与响应一起发送。 如果使用 AppendHeader 方法发送缓存特定的标头，并同时使用缓存对象模型 (Cache) 来设置缓存策略，则与缓存有关的 HTTP 响应标头（Cache-Control、Expires、Last-Modified、Pragma 和 Vary）在使用缓存对象模型时可能会被删除。此行为使 ASP.NET 能够维持限制性最强的设置。例如，假设有一个包含用户控件的页。如果这些控件具有相互冲突的缓存策略，则将使用限制性最强的缓存策略。如果一个用户控件设置了“Cache-Control: Public”标头，而另一个用户控件通过调用 SetCacheability 设置了限制性更强的“Cache-Control: Private”标头，则“Cache-Control: Private”标头将与响应一起发送。

有关标准 HTTP/1.1 标头的列表，请参见万维网 (W3C) 网站上超文本传输协议 -- HTTP/1.1 规范的第 14 节“Header Field Definitions”（标头字段定义）。

下面的示例调用 AppendHeader 方法将一个自定义标头添加到发送至请求客户端的 HttpResponse 对象中。

Response.AppendHeader("CustomAspNetHeader", "Value1")

Response.AppendHeader("CustomAspNetHeader", "Value1");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.AppendToLog 方法

HttpResponse
.
.
::
.
AppendToLog 方法
HttpResponse 类

将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.Medium)> _
Public Sub AppendToLog ( _
    param As String _
)
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Medium)]
public void AppendToLog(
    string param
)
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::Medium)]
public:
void AppendToLog(
    String^ param
)
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Medium)>]
member AppendToLog :
        param:string -> unit

参数

param
类型： System String
要添加到日志文件的文本。

为了将指定的字符串记录在日志文件中，对于希望在 IIS 中记录其活动的网站，必须先启用“扩展日志记录属性”对话框的“URI 查询”选项。

若要在 IIS 6.0 中自定义扩展日志记录，请遵照以下步骤操作：

  1. 在 IIS 管理器中，展开本地计算机节点，展开“Web 或 FTP 站点”文件夹，右击 Web 或 FTP 站点，然后单击“属性”。

  2. 单击“Web 或 FTP 站点”选项卡，然后选中“启用日志记录”复选框（如果尚未选中）。

  3. 在“活动日志格式”框中，单击“W3C 扩展日志文件格式”。

  4. 单击“属性”。

  5. 单击“高级”选项卡，选择要记录的属性，然后单击“确定”。

下面的示例演示如何向日志追加字符串。

Response.AppendToLog("Page delivered")

Response.AppendToLog("Page delivered");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间

其他资源

Windows Server 2003 产品帮助


HttpResponse ..::.ApplyAppPathModifier 方法

HttpResponse
.
.
::
.
ApplyAppPathModifier 方法
HttpResponse 类

如果会话使用 Cookieless 会话状态，则将该会话 ID 添加到虚拟路径中，并返回组合路径。如果不使用 Cookieless 会话状态，则 ApplyAppPathModifier 返回原始的虚拟路径。 如果会话使用 Cookieless 会话状态，则将该会话 ID 添加到虚拟路径中，并返回组合路径。如果不使用 Cookieless 会话状态，则 ApplyAppPathModifier 返回原始的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function ApplyAppPathModifier ( _
    virtualPath As String _
) As String
public string ApplyAppPathModifier(
    string virtualPath
)
public:
String^ ApplyAppPathModifier(
    String^ virtualPath
)
member ApplyAppPathModifier :
        virtualPath:string -> string

参数

virtualPath
类型： System String
资源的虚拟路径。

返回值

类型： System String
已插入会话 ID 的 virtualPath。

ApplyAppPathModifier 只与无 Cookie 的会话一起使用，以构造绝对 HREF。

下面的示例声明一个名为 urlConverted 的字符串变量，并将它设置为 ApplyAppPathModifier 方法调用的结果。然后，该代码将变量的值传递给 HyperLink 控件的 NavigateUrl 属性。 下面的示例声明一个名为 urlConverted 的字符串变量，并将它设置为 ApplyAppPathModifier 方法调用的结果。然后，该代码将变量的值传递给 HyperLink 控件的 NavigateUrl 属性。

' Declare a string variable and set it to the result
' of a call to the ApplyAppPathModifier method.
' Then set the NavigateUrl property of a Hyperlink control
' to the string's value.
Dim urlConverted As String = Response.ApplyAppPathModifier("TestPage.aspx")
hlTest1.NavigateUrl = urlConverted

// Declare a string variable and set it to the result
// of a call to the ApplyAppPathModifier method.
// Then set the NavigateUrl property of a Hyperlink control
// to the string's value.
string urlConverted = Response.ApplyAppPathModifier("TestPage.aspx");
hlTest1.NavigateUrl = urlConverted;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.BinaryWrite 方法

HttpResponse
.
.
::
.
BinaryWrite 方法
HttpResponse 类

将一个二进制字符串写入 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub BinaryWrite ( _
    buffer As Byte() _
)
public void BinaryWrite(
    byte[] buffer
)
public:
void BinaryWrite(
    array<unsigned char>^ buffer
)
member BinaryWrite :
        buffer:byte[] -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

要写入输出流的字节。

下面的示例将一个文本文件读入缓冲区，然后将该缓冲区写入 HTTP 输出流。

Dim MyFileStream As FileStream
 Dim FileSize As Long

 MyFileStream = New FileStream("sometext.txt", FileMode.Open)
 FileSize = MyFileStream.Length

 Dim Buffer(CInt(FileSize)) As Byte
 MyFileStream.Read(Buffer, 0, CInt(FileSize))
 MyFileStream.Close()

 Response.Write("<b>File Contents: </b>")
 Response.BinaryWrite(Buffer)

FileStream MyFileStream;
 long FileSize;

 MyFileStream = new FileStream("sometext.txt", FileMode.Open);
 FileSize = MyFileStream.Length;

 byte[] Buffer = new byte[(int)FileSize];
 MyFileStream.Read(Buffer, 0, (int)FileSize);
 MyFileStream.Close();

 Response.Write("<b>File Contents: </b>");
 Response.BinaryWrite(Buffer);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Clear 方法

HttpResponse
.
.
::
.
Clear 方法
HttpResponse 类

清除缓冲区流中的所有内容输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Clear
public void Clear()
public:
void Clear()
member Clear : unit -> unit

Clear 方法不清除标头信息。

下面的示例将响应的 ContentType 属性设置为 image/jpeg，调用 Clear 方法以移除可能附加到响应的其他内容，然后将 BufferOutput 属性设置为 true，这样就可以在将任何内容发送到请求客户端之前先处理整个页。

有关完整示例，请参见 HttpResponse 类。

' Set the page's content type to JPEG files
' and clear all response headers.
Response.ContentType = "image/jpeg"
Response.Clear()

' Buffer response so that page is sent
' after processing is complete.
Response.BufferOutput = True

// Set the page's content type to JPEG files
// and clear all response headers.
Response.ContentType = "image/jpeg";
Response.Clear();

// Buffer response so that page is sent
// after processing is complete.
Response.BufferOutput = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
ClearHeaders


HttpResponse ..::.ClearContent 方法

HttpResponse
.
.
::
.
ClearContent 方法
HttpResponse 类

清除缓冲区流中的所有内容输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub ClearContent
public void ClearContent()
public:
void ClearContent()
member ClearContent : unit -> unit

ClearContent 方法不清除标头信息。

下面的示例清除缓冲区流中的所有内容。

Response.ClearContent()

Response.ClearContent();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
ClearHeaders


HttpResponse ..::.ClearHeaders 方法

HttpResponse
.
.
::
.
ClearHeaders 方法
HttpResponse 类

清除缓冲区流中的所有头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub ClearHeaders
public void ClearHeaders()
public:
void ClearHeaders()
member ClearHeaders : unit -> unit

异常 | 条件
HttpException | 在发送了 HTTP 头之后清除头。

下面的示例调用 ClearHeaders 方法，以确保不会随当前响应一起发送任何标头。如果 ASP.NET 响应要生成图像（如 JPEG 文件），则此项技术可能特别重要。在此示例中，ContentType 属性设置为 image/jpeg。 下面的示例调用 ClearHeaders 方法，以确保不会随当前响应一起发送任何标头。如果 ASP.NET 响应要生成图像（如 JPEG 文件），则此项技术可能特别重要。在此示例中，ContentType 属性设置为 image/jpeg。 下面的示例调用 ClearHeaders 方法，以确保不会随当前响应一起发送任何标头。如果 ASP.NET 响应要生成图像（如 JPEG 文件），则此项技术可能特别重要。在此示例中，ContentType 属性设置为 image/jpeg。

' Clear headers to ensure none
' are sent to the requesting browser
' and set the content type.
Response.ClearHeaders()
Response.ContentType = "image/jpeg"

// Clear headers to ensure none
// are sent to the requesting browser
// and set the content type.
Response.ClearHeaders();
Response.ContentType = "image/jpeg";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
ClearContent


HttpResponse ..::.Close 方法

HttpResponse
.
.
::
.
Close 方法
HttpResponse 类

关闭到客户端的套接字连接。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Close
public void Close()
public:
void Close()
member Close : unit -> unit

下面的示例在要取消内容时关闭套接字连接。

If Response.SuppressContent Then Response.Close()

if (Response.SuppressContent) Response.Close();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.DisableKernelCache 方法

HttpResponse
.
.
::
.
DisableKernelCache 方法
HttpResponse 类

禁用当前响应的内核缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub DisableKernelCache
public void DisableKernelCache()
public:
void DisableKernelCache()
member DisableKernelCache : unit -> unit

如果不支持内核缓存，则此方法将不起作用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.End 方法

HttpResponse
.
.
::
.
End 方法
HttpResponse 类

将当前所有缓冲的输出发送到客户端，停止该页的执行，并引发 EndRequest 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub End
public void End()
public:
void End()
member End : unit -> unit

异常 | 条件
ThreadAbortException | 对 End 的调用已经终止当前请求。

对 End、Redirect 和 Transfer 方法的调用在当前响应提前结束时会引发一个 ThreadAbortException 异常。

下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。 下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。 下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Private Sub Page_Load(sender As Object, e As EventArgs)

        ' Check whether the browser remains
        ' connected to the server.
        If (Response.IsClientConnected) Then

            ' If still connected, redirect
            ' to another page.
            Response.Redirect("Page2VB.aspx", false)
        Else
            ' If the browser is not connected
            ' stop all response processing.
            Response.End()
        End If
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Check whether the browser remains
        // connected to the server.
        if (Response.IsClientConnected)
        {
            // If still connected, redirect
            // to another page.
            Response.Redirect("Page2CS.aspx", false);
        }
        else
        {
            // If the browser is not connected
            // stop all response processing.
            Response.End();
        }
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Flush 方法

HttpResponse
.
.
::
.
Flush 方法
HttpResponse 类

向客户端发送当前所有缓冲的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Flush
public void Flush()
public:
void Flush()
member Flush : unit -> unit

异常 | 条件
HttpException | 在发送了响应之后刷新缓存。

将当前缓冲的所有输出强制发送到客户端。在请求处理期间，可以多次调用 Flush 方法。 将当前缓冲的所有输出强制发送到客户端。在请求处理期间，可以多次调用 Flush 方法。

下面的示例调用 Save 方法将一个 Bitmap 对象保存到 OutputStream 属性中，并将图像转换为 JPEG 格式。然后，代码调用 Bitmap 对象和 Graphics 对象的 Dispose 方法，释放它们正在使用的资源。最后，该代码调用 Flush 方法将响应的内容发送到请求客户端。 下面的示例调用 Save 方法将一个 Bitmap 对象保存到 OutputStream 属性中，并将图像转换为 JPEG 格式。然后，代码调用 Bitmap 对象和 Graphics 对象的 Dispose 方法，释放它们正在使用的资源。最后，该代码调用 Flush 方法将响应的内容发送到请求客户端。 下面的示例调用 Save 方法将一个 Bitmap 对象保存到 OutputStream 属性中，并将图像转换为 JPEG 格式。然后，代码调用 Bitmap 对象和 Graphics 对象的 Dispose 方法，释放它们正在使用的资源。最后，该代码调用 Flush 方法将响应的内容发送到请求客户端。

有关完整示例，请参见 HttpResponse 类。

<%@ Page Language="VB" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

   Private Sub Page_Load(sender As Object, e As EventArgs)
      ' Set the page's content type to JPEG files
      ' and clear all response headers.
      Response.ContentType = "image/jpeg"
      Response.Clear()

      ' Buffer response so that page is sent
      ' after processing is complete.
      Response.BufferOutput = True

      ' Create a font style.
      Dim rectangleFont As New Font( _
          "Arial", 10, FontStyle.Bold)

      ' Create integer variables.
      Dim height As Integer = 100
      Dim width As Integer = 200

      ' Create a random number generator and create
      ' variable values based on it.
      Dim r As New Random()
      Dim x As Integer = r.Next(75)
      Dim a As Integer = r.Next(155)
      Dim x1 As Integer = r.Next(100)

      ' Create a bitmap and use it to create a
      ' Graphics object.
      Dim bmp As New Bitmap( _
          width, height, PixelFormat.Format24bppRgb)
      Dim g As Graphics = Graphics.FromImage(bmp)

      g.SmoothingMode = SmoothingMode.AntiAlias
      g.Clear(Color.LightGray)

      ' Use the Graphics object to draw three rectangles.
      g.DrawRectangle(Pens.White, 1, 1, width - 3, height - 3)
      g.DrawRectangle(Pens.Aquamarine, 2, 2, width - 3, height - 3)
      g.DrawRectangle(Pens.Black, 0, 0, width, height)

      ' Use the Graphics object to write a string
      ' on the rectangles.
      g.DrawString("ASP.NET Samples", rectangleFont, SystemBrushes.WindowText, New PointF(10, 40))

      ' Apply color to two of the rectangles.
      g.FillRectangle( _
          New SolidBrush( _
              Color.FromArgb(a, 255, 128, 255)), _
          x, 20, 100, 50)

      g.FillRectangle( _
          New LinearGradientBrush( _
              New Point(x, 10), _
              New Point(x1 + 75, 50 + 30), _
              Color.FromArgb(128, 0, 0, 128), _
              Color.FromArgb(255, 255, 255, 240)), _
          x1, 50, 75, 30)

      ' Save the bitmap to the response stream and
      ' convert it to JPEG format.
      bmp.Save(Response.OutputStream, ImageFormat.Jpeg)

      ' Release memory used by the Graphics object
      ' and the bitmap.
      g.Dispose()
      bmp.Dispose()

      ' Send the output to the client.
      Response.Flush()
   End Sub 'Page_Load

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Set the page's content type to JPEG files
        // and clear all response headers.
        Response.ContentType = "image/jpeg";
        Response.Clear();

        // Buffer response so that page is sent
        // after processing is complete.
        Response.BufferOutput = true;

        // Create a font style.
        Font rectangleFont = new Font(
            "Arial", 10, FontStyle.Bold);

        // Create integer variables.
        int height = 100;
        int width = 200;

        // Create a random number generator and create
        // variable values based on it.
        Random r = new Random();
        int x = r.Next(75);
        int a = r.Next(155);
        int x1 = r.Next(100);

        // Create a bitmap and use it to create a
        // Graphics object.
        Bitmap bmp = new Bitmap(
            width, height, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmp);

        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.Clear(Color.LightGray);

        // Use the Graphics object to draw three rectangles.
        g.DrawRectangle(Pens.White, 1, 1, width-3, height-3);
        g.DrawRectangle(Pens.Aquamarine, 2, 2, width-3, height-3);
        g.DrawRectangle(Pens.Black, 0, 0, width, height);

        // Use the Graphics object to write a string
        // on the rectangles.
        g.DrawString(
            "ASP.NET Samples", rectangleFont,
            SystemBrushes.WindowText, new PointF(10, 40));

        // Apply color to two of the rectangles.
        g.FillRectangle(
            new SolidBrush(
                Color.FromArgb(a, 255, 128, 255)),
            x, 20, 100, 50);

        g.FillRectangle(
            new LinearGradientBrush(
                new Point(x, 10),
                new Point(x1 + 75, 50 + 30),
                Color.FromArgb(128, 0, 0, 128),
                Color.FromArgb(255, 255, 255, 240)),
            x1, 50, 75, 30);

        // Save the bitmap to the response stream and
        // convert it to JPEG format.
        bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

        // Release memory used by the Graphics object
        // and the bitmap.
        g.Dispose();
        bmp.Dispose();

        // Send the output to the client.
        Response.Flush();
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Pics 方法

HttpResponse
.
.
::
.
Pics 方法
HttpResponse 类

将一个 HTTP PICS-Label 标头追加到输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Pics ( _
    value As String _
)
public void Pics(
    string value
)
public:
void Pics(
    String^ value
)
member Pics :
        value:string -> unit

参数

value
类型： System String
要添加到 PICS-Label 标头的字符串。

Internet 内容选择平台 (PICS) 是万维网联合会 (W3C) 内容标签标准。PICS 本质上是一种创建分级系统的语言。 Internet 内容选择平台 (PICS) 是万维网联合会 (W3C) 内容标签标准。PICS 本质上是一种创建分级系统的语言。

任何值都可以是 PICS 标签；ASP.NET 不验证该标签。字符串的最大长度是 255 个字符。有关 PICS 标准和语法的更多信息，请参见万维网联合会网站。 任何值都可以是 PICS 标签；ASP.NET 不验证该标签。字符串的最大长度是 255 个字符。有关 PICS 标准和语法的更多信息，请参见万维网联合会网站。 任何值都可以是 PICS 标签；ASP.NET 不验证该标签。字符串的最大长度是 255 个字符。有关 PICS 标准和语法的更多信息，请参见万维网联合会网站。

下面的示例是一个显示图像的 ASP.NET 页。该页的代码调用 Pics 方法来设置响应的 HTTP PICS-Label 标头。作为参数传递给 Pics 方法的字符串表示从 Internet 内容分级协会 (ICRA) 网站生成的分级标签。 下面的示例是一个显示图像的 ASP.NET 页。该页的代码调用 Pics 方法来设置响应的 HTTP PICS-Label 标头。作为参数传递给 Pics 方法的字符串表示从 Internet 内容分级协会 (ICRA) 网站生成的分级标签。 下面的示例是一个显示图像的 ASP.NET 页。该页的代码调用 Pics 方法来设置响应的 HTTP PICS-Label 标头。作为参数传递给 Pics 方法的字符串表示从 Internet 内容分级协会 (ICRA) 网站生成的分级标签。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    ' When this page is loaded, the Pics method
    ' sets the PICS-Label header for the response.
    Private Sub Page_Load(sender As Object, e As EventArgs)
        Response.PICS( _
          "(pics-1.1 <http://www.icra.org/ratingsv02.html> " & _
          "comment <ICRAonline EN v2.0> " & _
          "l r (nz 1 vz 1 lz 1 oz 1 cz 1) " & _
          "<http://www.rsac.org/ratingsv01.html> " & _
          "l r (n 0 s 0 v 0 l 0))")
    End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <img height="75%" src="animated.gif" width="100%" alt="An animated GIF"/>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    // When this page is loaded, the Pics method
    // sets the PICS-Label header for the response.
    private void Page_Load(object sender, EventArgs e)
    {
        Response.Pics(
          "(pics-1.1 <http://www.icra.org/ratingsv02.html> " +
          "comment <ICRAonline EN v2.0> " +
          "l r (nz 1 vz 1 lz 1 oz 1 cz 1) " +
          "<http://www.rsac.org/ratingsv01.html> " +
          " l r (n 0 s 0 v 0 l 0))");
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <img height="75%" src="animated.gif" width="100%" alt="An animated GIF"/>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Redirect 方法

HttpResponse
.
.
::
.
Redirect 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

将客户端重定向到新的 URL。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Redirect 方法 (String)

HttpResponse
.
.
::
.
Redirect 方法 (String)
HttpResponse 类

将请求重定向到新 URL 并指定该新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Redirect ( _
    url As String _
)
public void Redirect(
    string url
)
public:
void Redirect(
    String^ url
)
member Redirect :
        url:string -> unit

参数

url
类型： System String
目标位置。
异常 | 条件
HttpException | 在发送了 HTTP 头之后尝试重定向。

调用 Redirect 等效于在将第二个参数设置为 true 的情况下调用 Redirect。

Redirect 调用 End，后者在完成时引发 ThreadAbortException 异常。

说明 说明

仅对于移动页而言，如果应用程序依赖于无 Cookie 的会话或者可能收到来自需要无 Cookie 会话的移动设备的请求，则在路径中使用波形符 (~) 会导致创建新会话并且可能丢失会话数据。要设置具有诸如“~/path”之类的路径的移动控件属性，请在将该路径分配给属性之前使用 ResolveUrl“~/path”解析该路径。 仅对于移动页而言，如果应用程序依赖于无 Cookie 的会话或者可能收到来自需要无 Cookie 会话的移动设备的请求，则在路径中使用波形符 (~) 会导致创建新会话并且可能丢失会话数据。要设置具有诸如“~/path”之类的路径的移动控件属性，请在将该路径分配给属性之前使用 ResolveUrl“~/path”解析该路径。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例强制无条件重定向到另一个网站。

Response.Redirect("http://www.microsoft.com/gohere/look.htm")

Response.Redirect("http://www.microsoft.com/gohere/look.htm");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
Redirect 重载
System.Web 命名空间


HttpResponse ..::.Redirect 方法 (String, Boolean)

HttpResponse
.
.
::
.
Redirect 方法 (String, Boolean)
HttpResponse 类

将客户端重定向到新的 URL。指定新的 URL 并指定当前页的执行是否应终止。 将客户端重定向到新的 URL。指定新的 URL 并指定当前页的执行是否应终止。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Redirect ( _
    url As String, _
    endResponse As Boolean _
)
public void Redirect(
    string url,
    bool endResponse
)
public:
void Redirect(
    String^ url,
    bool endResponse
)
member Redirect :
        url:string *
        endResponse:bool -> unit

参数

url
类型： System String
目标的位置。
endResponse
类型： System Boolean
指示当前页的执行是否应终止。
异常 | 条件
ArgumentNullException | url 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | url 包含换行符。
HttpException | 在发送了 HTTP 头之后尝试重定向。
ApplicationException | 页请求是回调的结果。

可为目标位置指定一个绝对 URL（例如 http://www.contoso.com/default.aspx）或相对 URL（例如 default.aspx），但有些浏览器可能不接受相对 URL。

当您在页处理程序中使用此方法终止一个页面的请求并启动另一页面的请求时，请将 endResponse 设置为 true 或调用 Redirect 方法重载。此方法为原始请求调用 End，在完成时引发 ThreadAbortException 异常。 当您在页处理程序中使用此方法终止一个页面的请求并启动另一页面的请求时，请将 endResponse 设置为 true 或调用 Redirect 方法重载。此方法为原始请求调用 End，在完成时引发 ThreadAbortException 异常。

当您在 HTTP 处理程序中调用此方法并且希望重定向到另一页而不终止请求时，请将 endResponse 设置为 false。

说明 说明

对于移动页而言，如果应用程序依赖于无 Cookie 的会话或者可能收到来自需要无 Cookie 会话的移动设备的请求，则在路径中使用波形符 (~) 会导致创建新会话并且可能丢失会话数据。要设置具有诸如“~/path”之类的路径的移动控件属性，请在将该路径分配给属性之前使用 ResolveUrl“~/path”解析该路径。 对于移动页而言，如果应用程序依赖于无 Cookie 的会话或者可能收到来自需要无 Cookie 会话的移动设备的请求，则在路径中使用波形符 (~) 会导致创建新会话并且可能丢失会话数据。要设置具有诸如“~/path”之类的路径的移动控件属性，请在将该路径分配给属性之前使用 ResolveUrl“~/path”解析该路径。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。 下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。 下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Private Sub Page_Load(sender As Object, e As EventArgs)

        ' Check whether the browser remains
        ' connected to the server.
        If (Response.IsClientConnected) Then

            ' If still connected, redirect
            ' to another page.
            Response.Redirect("Page2VB.aspx", false)
        Else
            ' If the browser is not connected
            ' stop all response processing.
            Response.End()
        End If
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Check whether the browser remains
        // connected to the server.
        if (Response.IsClientConnected)
        {
            // If still connected, redirect
            // to another page.
            Response.Redirect("Page2CS.aspx", false);
        }
        else
        {
            // If the browser is not connected
            // stop all response processing.
            Response.End();
        }
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
Redirect 重载
System.Web 命名空间


HttpResponse ..::.RedirectPermanent 方法

HttpResponse
.
.
::
.
RedirectPermanent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

执行从所请求 URL 到所指定 URL 的永久重定向。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.RedirectPermanent 方法 (String)

HttpResponse
.
.
::
.
RedirectPermanent 方法 (String)
HttpResponse 类

执行从所请求 URL 到所指定 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectPermanent ( _
    url As String _
)
public void RedirectPermanent(
    string url
)
public:
void RedirectPermanent(
    String^ url
)
member RedirectPermanent :
        url:string -> unit

参数

url
类型： System String
要将请求重定向至的位置。
异常 | 条件
ArgumentNullException | url 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | url 包括一个换行符 (\n)。

RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。

调用 RedirectPermanent(String) 方法重载会终止响应。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectPermanent 重载
System.Web 命名空间


HttpResponse ..::.RedirectPermanent 方法 (String, Boolean)

HttpResponse
.
.
::
.
RedirectPermanent 方法 (String, Boolean)
HttpResponse 类

执行从所请求 URL 到所指定 URL 的永久重定向，并提供用于完成响应的选项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectPermanent ( _
    url As String, _
    endResponse As Boolean _
)
public void RedirectPermanent(
    string url,
    bool endResponse
)
public:
void RedirectPermanent(
    String^ url,
    bool endResponse
)
member RedirectPermanent :
        url:string *
        endResponse:bool -> unit

参数

url
类型： System String
要将请求重定向至的位置。
endResponse
类型： System Boolean
若为 true，则终止响应；否则为 false。默认值为 false。 若为 true，则终止响应；否则为 false。默认值为 false。
异常 | 条件
ArgumentNullException | url 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | url 包括一个换行符 (\n)。

RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此方法重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此方法重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此方法重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此方法重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectPermanent 重载
System.Web 命名空间


HttpResponse ..::.RedirectToRoute 方法

HttpResponse
.
.
::
.
RedirectToRoute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

使用路由参数值和/或路由名称将请求重定向到新 URL。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.RedirectToRoute 方法 (Object)

HttpResponse
.
.
::
.
RedirectToRoute 方法 (Object)
HttpResponse 类

使用路由参数值将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoute ( _
    routeValues As Object _
)
public void RedirectToRoute(
    Object routeValues
)
public:
void RedirectToRoute(
    Object^ routeValues
)
member RedirectToRoute :
        routeValues:Object -> unit

参数

routeValues
类型： System Object
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。 此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoute(
  New With {.productid = "1", .category = "widgets"})
Response.RedirectToRoute(
  new { productid = "1", category = "widgets" });

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoute 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoute 方法 (RouteValueDictionary)

HttpResponse
.
.
::
.
RedirectToRoute 方法 (RouteValueDictionary)
HttpResponse 类

使用路由参数值将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoute ( _
    routeValues As RouteValueDictionary _
)
public void RedirectToRoute(
    RouteValueDictionary routeValues
)
public:
void RedirectToRoute(
    RouteValueDictionary^ routeValues
)
member RedirectToRoute :
        routeValues:RouteValueDictionary -> unit

参数

routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

此方法调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoute(
  new RouteValueDictionary {productId="1", category="widgets"})
Response.RedirectToRoute(
  (new RouteValueDictionary {productId="1", category="widgets"});

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoute 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoute 方法 (String)

HttpResponse
.
.
::
.
RedirectToRoute 方法 (String)
HttpResponse 类

使用路由名称将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoute ( _
    routeName As String _
)
public void RedirectToRoute(
    string routeName
)
public:
void RedirectToRoute(
    String^ routeName
)
member RedirectToRoute :
        routeName:string -> unit

参数

routeName
类型： System String
路由的名称。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

此方法使用 RouteCollection..::.GetVirtualPath 方法将 routeName 中传递的路由名称转换为 URL。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到名为 Products 的路由。

Response.RedirectToRoute("Products")
Response.RedirectToRoute("Products");

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoute 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoute 方法 (String, Object)

HttpResponse
.
.
::
.
RedirectToRoute 方法 (String, Object)
HttpResponse 类

使用路由参数值和路由名称将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoute ( _
    routeName As String, _
    routeValues As Object _
)
public void RedirectToRoute(
    string routeName,
    Object routeValues
)
public:
void RedirectToRoute(
    String^ routeName,
    Object^ routeValues
)
member RedirectToRoute :
        routeName:string *
        routeValues:Object -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System Object
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。 此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到名为 Product 并且具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoute("Product",
  New With {.productid = "1", .category = "widgets"})
Response.RedirectToRoute("Product",
  new { productid = "1", category = "widgets" });

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoute 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoute 方法 (String, RouteValueDictionary)

HttpResponse
.
.
::
.
RedirectToRoute 方法 (String, RouteValueDictionary)
HttpResponse 类

使用路由参数值和路由名称将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoute ( _
    routeName As String, _
    routeValues As RouteValueDictionary _
)
public void RedirectToRoute(
    string routeName,
    RouteValueDictionary routeValues
)
public:
void RedirectToRoute(
    String^ routeName,
    RouteValueDictionary^ routeValues
)
member RedirectToRoute :
        routeName:string *
        routeValues:RouteValueDictionary -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 302 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到名为 Product 并且具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoute("Product",
  new RouteValueDictionary {productId="1", category="widgets"})
Response.RedirectToRoute("Product",
  (new RouteValueDictionary {productId="1", category="widgets"});

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoute 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoutePermanent 方法

HttpResponse
.
.
::
.
RedirectToRoutePermanent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

使用路由参数值和/或路由名称执行从所请求 URL 到新 URL 的永久重定向。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.RedirectToRoutePermanent 方法 (Object)

HttpResponse
.
.
::
.
RedirectToRoutePermanent 方法 (Object)
HttpResponse 类

使用路由参数值执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoutePermanent ( _
    routeValues As Object _
)
public void RedirectToRoutePermanent(
    Object routeValues
)
public:
void RedirectToRoutePermanent(
    Object^ routeValues
)
member RedirectToRoutePermanent :
        routeValues:Object -> unit

参数

routeValues
类型： System Object
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 RedirectPermanent(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 RedirectPermanent(String, Boolean) 方法并将第二个参数设置为 false。

此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。 此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 301 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoutePermanent(
  New With {.productid = "1", .category = "widgets"})
Response.RedirectToRoutePermanent(
  new { productid = "1", category = "widgets" });

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoutePermanent 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoutePermanent 方法 (RouteValueDictionary)

HttpResponse
.
.
::
.
RedirectToRoutePermanent 方法 (RouteValueDictionary)
HttpResponse 类

使用路由参数值执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoutePermanent ( _
    routeValues As RouteValueDictionary _
)
public void RedirectToRoutePermanent(
    RouteValueDictionary routeValues
)
public:
void RedirectToRoutePermanent(
    RouteValueDictionary^ routeValues
)
member RedirectToRoutePermanent :
        routeValues:RouteValueDictionary -> unit

参数

routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

此方法调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 301 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoutePermanent(
  new RouteValueDictionary {productId="1", category="widgets"})
Response.RedirectToRoutePermanent(
  new RouteValueDictionary {productId="1", category="widgets"});

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoutePermanent 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoutePermanent 方法 (String)

HttpResponse
.
.
::
.
RedirectToRoutePermanent 方法 (String)
HttpResponse 类

使用路由名称执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoutePermanent ( _
    routeName As String _
)
public void RedirectToRoutePermanent(
    string routeName
)
public:
void RedirectToRoutePermanent(
    String^ routeName
)
member RedirectToRoutePermanent :
        routeName:string -> unit

参数

routeName
类型： System String
路由的名称。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 RedirectPermanent(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 RedirectPermanent(String, Boolean) 方法并将第二个参数设置为 false。

此方法使用 RouteCollection..::.GetVirtualPath 方法将 routeName 中传递的路由名称转换为 URL。

ASP.NET 通过返回 301 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到名为 Products 的路由。

[Visual Basic]

Response.RedirectToRoutePermanent("Products")

[C#]

Response.RedirectToRoutePermanent("Products");

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoutePermanent 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoutePermanent 方法 (String, Object)

HttpResponse
.
.
::
.
RedirectToRoutePermanent 方法 (String, Object)
HttpResponse 类

使用路由参数值以及与新 URL 对应的路由的名称执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoutePermanent ( _
    routeName As String, _
    routeValues As Object _
)
public void RedirectToRoutePermanent(
    string routeName,
    Object routeValues
)
public:
void RedirectToRoutePermanent(
    String^ routeName,
    Object^ routeValues
)
member RedirectToRoutePermanent :
        routeName:string *
        routeValues:Object -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System Object
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 RedirectPermanent 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 RedirectPermanent 方法并将第二个参数设置为 false。

此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。 此方法使用 RouteValueDictionary..::.RouteValueDictionary(Object) 构造函数将 routeValues 中传递的对象转换为 System.Web.Routing..::.RouteValueDictionary 对象。然后，调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 301 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到名为 Product 并且具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoutePermanent("Product",
  New With {.productid = "1", .category = "widgets"})
Response.RedirectToRoutePermanent("Product",
  new { productid = "1", category = "widgets" });

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoutePermanent 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RedirectToRoutePermanent 方法 (String, RouteValueDictionary)

HttpResponse
.
.
::
.
RedirectToRoutePermanent 方法 (String, RouteValueDictionary)
HttpResponse 类

使用路由参数值和路由名称执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub RedirectToRoutePermanent ( _
    routeName As String, _
    routeValues As RouteValueDictionary _
)
public void RedirectToRoutePermanent(
    string routeName,
    RouteValueDictionary routeValues
)
public:
void RedirectToRoutePermanent(
    String^ routeName,
    RouteValueDictionary^ routeValues
)
member RedirectToRoutePermanent :
        routeName:string *
        routeValues:RouteValueDictionary -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
InvalidOperationException | 没有与指定路由参数对应的路由。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。 提供此方法是为了方便编码。它等效于调用 Redirect(String, Boolean) 方法并将第二个参数设置为 false。

此方法调用 RouteCollection..::.GetVirtualPath 方法来确定 URL。

ASP.NET 通过返回 301 HTTP 状态代码执行重定向。

下面的示例演示如何调用此方法来重定向到名为 Product 并且具有名为 productid 和 category 的参数的路由。

Response.RedirectToRoutePermanent("Product",
  new RouteValueDictionary {productId="1", category="widgets"})
Response.RedirectToRoutePermanent("Product",
  new RouteValueDictionary {productId="1", category="widgets"});

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RedirectToRoutePermanent 重载
System.Web 命名空间

其他资源

ASP.NET 路由


HttpResponse ..::.RemoveOutputCacheItem 方法

HttpResponse
.
.
::
.
RemoveOutputCacheItem 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

使用默认的输出缓存提供程序从输出缓存中删除缓存项。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.RemoveOutputCacheItem 方法 (String)

HttpResponse
.
.
::
.
RemoveOutputCacheItem 方法 (String)
HttpResponse 类

从缓存中移除与默认输出缓存提供程序关联的所有缓存项。此方法是静态的。 从缓存中移除与默认输出缓存提供程序关联的所有缓存项。此方法是静态的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Sub RemoveOutputCacheItem ( _
    path As String _
)
public static void RemoveOutputCacheItem(
    string path
)
public:
static void RemoveOutputCacheItem(
    String^ path
)
static member RemoveOutputCacheItem :
        path:string -> unit

参数

path
类型： System String
已从缓存中移除的项的虚拟绝对路径。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 并非绝对虚拟路径。

调用此方法删除与默认输出缓存提供程序关联的输出缓存项。调用 RemoveOutputCacheItem 方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。 调用此方法删除与默认输出缓存提供程序关联的输出缓存项。调用 RemoveOutputCacheItem 方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
RemoveOutputCacheItem 重载
System.Web 命名空间


HttpResponse ..::.RemoveOutputCacheItem 方法 (String, String)

HttpResponse
.
.
::
.
RemoveOutputCacheItem 方法 (String, String)
HttpResponse 类

使用指定的输出缓存提供程序移除与指定路径关联的所有输出缓存项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Sub RemoveOutputCacheItem ( _
    path As String, _
    providerName As String _
)
public static void RemoveOutputCacheItem(
    string path,
    string providerName
)
public:
static void RemoveOutputCacheItem(
    String^ path,
    String^ providerName
)
static member RemoveOutputCacheItem :
        path:string *
        providerName:string -> unit

参数

path
类型： System String
从缓存中删除的项的虚拟绝对路径。
providerName
类型： System String
用于删除与指定路径关联的输出缓存项的提供程序。
异常 | 条件
ArgumentNullException | path 为 null。
ArgumentException | path 为无效路径。

调用此方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。若要删除与默认输出缓存提供程序关联的输出缓存项，请调用 RemoveOutputCacheItem(String) 方法重载。 调用此方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。若要删除与默认输出缓存提供程序关联的输出缓存项，请调用 RemoveOutputCacheItem(String) 方法重载。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponse 类
HttpResponse 成员
RemoveOutputCacheItem 重载
System.Web 命名空间


HttpResponse ..::.SetCookie 方法

HttpResponse
.
.
::
.
SetCookie 方法
HttpResponse 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

更新 Cookie 集合中的一个现有 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetCookie ( _
    cookie As HttpCookie _
)
public void SetCookie(
    HttpCookie cookie
)
public:
void SetCookie(
    HttpCookie^ cookie
)
member SetCookie :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
集合中要更新的 Cookie。
异常 | 条件
HttpException | 发送 HTTP 标头之后设置 Cookie。
HttpException | 已尝试在发送 HTTP 标头之后设置 Cookie。
HttpException | 发送 HTTP 标头之后设置 Cookie。
HttpException | 已尝试在发送 HTTP 标头之后设置 Cookie。

下面的示例更新现有 Cookie 的值。

MyCookie.Value = CStr(DateTime.Now())
 Response.SetCookie(MyCookie)

MyCookie.Value = DateTime.Now.ToString();
 Response.Cookies.Add(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
Cookie
HttpCookie
HttpCookieMode


HttpResponse ..::.TransmitFile 方法

HttpResponse
.
.
::
.
TransmitFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

将指定的文件直接写入 HTTP 响应输出流，而不在内存中缓冲该文件。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.TransmitFile 方法 (String)

HttpResponse
.
.
::
.
TransmitFile 方法 (String)
HttpResponse 类

将指定的文件直接写入 HTTP 响应输出流，而不在内存中缓冲该文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub TransmitFile ( _
    filename As String _
)
public void TransmitFile(
    string filename
)
public:
void TransmitFile(
    String^ filename
)
member TransmitFile :
        filename:string -> unit

参数

filename
类型： System String
要写入 HTTP 输出的文件名。
异常 | 条件
ArgumentNullException | filename 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
TransmitFile 重载
System.Web 命名空间


HttpResponse ..::.TransmitFile 方法 (String, Int64, Int64)

HttpResponse
.
.
::
.
TransmitFile 方法 (String, Int64, Int64)
HttpResponse 类

将文件的指定部分直接写入 HTTP 响应输出流，而不在内存中缓冲它。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub TransmitFile ( _
    filename As String, _
    offset As Long, _
    length As Long _
)
public void TransmitFile(
    string filename,
    long offset,
    long length
)
public:
void TransmitFile(
    String^ filename,
    long long offset,
    long long length
)
member TransmitFile :
        filename:string *
        offset:int64 *
        length:int64 -> unit

参数

filename
类型： System String
要写入 HTTP 输出的文件名。
offset
类型： System Int64
文件中的位置，将从该位置开始将内容写入到 HTTP 输出中。
length
类型： System Int64
要传输的字节数。
异常 | 条件
ArgumentNullException | offset 参数小于零。 - 或 - length 参数小于 -1。 - 或 - length 参数指定的字节数大于文件包含的字节数减去偏移值得到的数值。
PlatformNotSupportedException | 不支持进程外辅助请求。 - 或 - 响应没有使用 HttpWriter 对象。
ArgumentException | offset 参数小于零或大于文件大小。 - 或 - length 参数小于 -1 或大于 offset 参数加上文件大小的值。

如果将 offset 参数指定为 0 并将 length 参数指定为 -1，则会发送整个文件。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpResponse 类
HttpResponse 成员
TransmitFile 重载
System.Web 命名空间


HttpResponse ..::.Write 方法

HttpResponse
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

将信息写入 HTTP 响应输出流。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Write 方法 (Char)

HttpResponse
.
.
::
.
Write 方法 (Char)
HttpResponse 类

将一个字符写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    ch As Char _
)
public void Write(
    char ch
)
public:
void Write(
    wchar_t ch
)
member Write :
        ch:char -> unit

参数

ch
类型： System Char
要写入 HTTP 输出流的字符。

下面的示例创建一系列使用 Write 方法写入 ASP.NET 页的常数。该代码调用此版本的 Write 方法将单独的字符常数写入该页。 下面的示例创建一系列使用 Write 方法写入 ASP.NET 页的常数。该代码调用此版本的 Write 方法将单独的字符常数写入该页。

      <%
         Dim charArray As Char() = {"H"c, "e"c, "l"c, "l"c, "o"c, ","c, " "c, _
                                 "w"c, "o"c, "r"c, "l"c, "d"c}
         ' Write a character array to the client.
         Response.Write(charArray, 0, charArray.Length)

         ' Write a single character.
         Response.Write(";"c)

         ' Write a sub-section of a character array to the client.
         Response.Write(charArray, 0, 5)
         ' Write an object to the client.
         Dim obj As Object
         obj = CType(13, Object)
         Response.Write(obj)
      %>

<%

    // Create a character array.
char[] charArray = {'H', 'e', 'l', 'l', 'o', ',', ' ',
                       'w', 'o', 'r', 'l', 'd'};

    // Write a character array to the client.
    Response.Write(charArray, 0, charArray.Length);

    // Write a single characher.
    Response.Write(';');

    // Write a sub-section of a character array to the client.
    Response.Write(charArray, 0, 5);
    // Write an object to the client.
    object obj = (object)13;
    Response.Write(obj);

%>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
Write 重载
System.Web 命名空间


HttpResponse ..::.Write 方法 (Object)

HttpResponse
.
.
::
.
Write 方法 (Object)
HttpResponse 类

将 Object 写入 HTTP 响应流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    obj As Object _
)
public void Write(
    Object obj
)
public:
void Write(
    Object^ obj
)
member Write :
        obj:Object -> unit

参数

obj
类型： System Object
要写入 HTTP 输出流的 Object。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
Write 重载
System.Web 命名空间


HttpResponse ..::.Write 方法 (String)

HttpResponse
.
.
::
.
Write 方法 (String)
HttpResponse 类

将一个字符串写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    s As String _
)
public void Write(
    string s
)
public:
void Write(
    String^ s
)
member Write :
        s:string -> unit

参数

s
类型： System String
要写入 HTTP 输出流的字符串。

如果从 Web 客户端收到的输入在从客户端接收或传递回客户端时未进行验证，则动态生成的 HTML 页可能引发安全风险。嵌入到输入中的恶意脚本（提交到网站并且随后写回客户端）可以看起来像是来自受信任的源。这种安全性风险被称为跨网站脚本攻击。在将接收自客户端的数据从您的网站传送到客户端浏览器时，应总是对其进行验证。 如果从 Web 客户端收到的输入在从客户端接收或传递回客户端时未进行验证，则动态生成的 HTML 页可能引发安全风险。嵌入到输入中的恶意脚本（提交到网站并且随后写回客户端）可以看起来像是来自受信任的源。这种安全性风险被称为跨网站脚本攻击。在将接收自客户端的数据从您的网站传送到客户端浏览器时，应总是对其进行验证。 如果从 Web 客户端收到的输入在从客户端接收或传递回客户端时未进行验证，则动态生成的 HTML 页可能引发安全风险。嵌入到输入中的恶意脚本（提交到网站并且随后写回客户端）可以看起来像是来自受信任的源。这种安全性风险被称为跨网站脚本攻击。在将接收自客户端的数据从您的网站传送到客户端浏览器时，应总是对其进行验证。 如果从 Web 客户端收到的输入在从客户端接收或传递回客户端时未进行验证，则动态生成的 HTML 页可能引发安全风险。嵌入到输入中的恶意脚本（提交到网站并且随后写回客户端）可以看起来像是来自受信任的源。这种安全性风险被称为跨网站脚本攻击。在将接收自客户端的数据从您的网站传送到客户端浏览器时，应总是对其进行验证。

而且，每当将收到的任何输入数据作为 HTML 写出时，都应使用 HtmlEncode 或 UrlEncode 等技术对其进行编码，以防运行恶意脚本。这种技术很适合处理在接收时未经验证的数据。 而且，每当将收到的任何输入数据作为 HTML 写出时，都应使用 HtmlEncode 或 UrlEncode 等技术对其进行编码，以防运行恶意脚本。这种技术很适合处理在接收时未经验证的数据。

对数据进行编码或筛选时，必须为网页指定字符集，以便筛选器可识别并移除所有不属于该字符集并可能嵌入了恶意脚本的字节序列（例如非字母数字序列）。

有关跨网站脚本攻击的更多信息，请参见位于 Microsoft 知识库网站上的文章 Q252985“How to Prevent Cross-Site Scripting Security Issues”（如何防范跨网站脚本安全问题）。

下面的示例将客户端的名称回显在客户端浏览器中。HtmlEncode 方法可剥离出在 UserName 输入字段中提交的任何恶意脚本和无效字符。 下面的示例将客户端的名称回显在客户端浏览器中。HtmlEncode 方法可剥离出在 UserName 输入字段中提交的任何恶意脚本和无效字符。

Response.Write("Hello " & Server.HtmlEncode(Request.QueryString("UserName")) & "<br>")

Response.Write("Hello " + Server.HtmlEncode(Request.QueryString["UserName"]) + "<br>");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
Write 重载
System.Web 命名空间


HttpResponse ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

HttpResponse
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
HttpResponse 类

将一个字符数组写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public void Write(
    char[] buffer,
    int index,
    int count
)
public:
void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
)
member Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

要写入的字符数组。
index
类型： System Int32
字符数组中开始进行写入的位置。
count
类型： System Int32
从 index 开始写入的字符数。

下面的示例创建一系列使用 Write 方法写入 ASP.NET 页的常数。该代码调用此版本的 Write 方法将单独的字符常数写入该页。 下面的示例创建一系列使用 Write 方法写入 ASP.NET 页的常数。该代码调用此版本的 Write 方法将单独的字符常数写入该页。

      <%
         Dim charArray As Char() = {"H"c, "e"c, "l"c, "l"c, "o"c, ","c, " "c, _
                                 "w"c, "o"c, "r"c, "l"c, "d"c}
         ' Write a character array to the client.
         Response.Write(charArray, 0, charArray.Length)

         ' Write a single character.
         Response.Write(";"c)

         ' Write a sub-section of a character array to the client.
         Response.Write(charArray, 0, 5)
         ' Write an object to the client.
         Dim obj As Object
         obj = CType(13, Object)
         Response.Write(obj)
      %>

<%

    // Create a character array.
char[] charArray = {'H', 'e', 'l', 'l', 'o', ',', ' ',
                       'w', 'o', 'r', 'l', 'd'};

    // Write a character array to the client.
    Response.Write(charArray, 0, charArray.Length);

    // Write a single characher.
    Response.Write(';');

    // Write a sub-section of a character array to the client.
    Response.Write(charArray, 0, 5);
    // Write an object to the client.
    object obj = (object)13;
    Response.Write(obj);

%>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
Write 重载
System.Web 命名空间


HttpResponse ..::.WriteFile 方法

HttpResponse
.
.
::
.
WriteFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

将指定的文件直接写入 HTTP 响应输出流。

名称 说明
页首

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.WriteFile 方法 (String)

HttpResponse
.
.
::
.
WriteFile 方法 (String)
HttpResponse 类

将指定文件的内容作为文件块直接写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub WriteFile ( _
    filename As String _
)
public void WriteFile(
    string filename
)
public:
void WriteFile(
    String^ filename
)
member WriteFile :
        filename:string -> unit

参数

filename
类型： System String
要写入 HTTP 输出的文件名。
异常 | 条件
ArgumentNullException | filename 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。

下面的示例将名为 Login.txt 的文本文件（可能包含 HTML 文本和输入控件）的所有内容直接写入输出流。

Response.Write("Please Login: <br>")
 Response.WriteFile("login.txt")

Response.Write("Please Login: <br>");
 Response.WriteFile("login.txt");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
WriteFile 重载
System.Web 命名空间


HttpResponse ..::.WriteFile 方法 (String, Boolean)

HttpResponse
.
.
::
.
WriteFile 方法 (String, Boolean)
HttpResponse 类

将指定文件的内容作为内存块直接写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub WriteFile ( _
    filename As String, _
    readIntoMemory As Boolean _
)
public void WriteFile(
    string filename,
    bool readIntoMemory
)
public:
void WriteFile(
    String^ filename,
    bool readIntoMemory
)
member WriteFile :
        filename:string *
        readIntoMemory:bool -> unit

参数

filename
类型： System String
要写入内存块的文件名。
readIntoMemory
类型： System Boolean
指示是否将把文件写入内存块。
异常 | 条件
ArgumentNullException | filename 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。

下面的示例将文件写入内存。

Response.WriteFile("login.txt", True)

Response.WriteFile("login.txt", true);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
WriteFile 重载
System.Web 命名空间


HttpResponse ..::.WriteFile 方法 (IntPtr, Int64, Int64)

HttpResponse
.
.
::
.
WriteFile 方法 (IntPtr, Int64, Int64)
HttpResponse 类

将指定的文件直接写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode := True)> _
Public Sub WriteFile ( _
    fileHandle As IntPtr, _
    offset As Long, _
    size As Long _
)
[SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)]
public void WriteFile(
    IntPtr fileHandle,
    long offset,
    long size
)
[SecurityPermissionAttribute(SecurityAction::Demand, UnmanagedCode = true)]
public:
void WriteFile(
    IntPtr fileHandle,
    long long offset,
    long long size
)
[<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)>]
member WriteFile :
        fileHandle:IntPtr *
        offset:int64 *
        size:int64 -> unit

参数

fileHandle
类型： System IntPtr
要写入 HTTP 输出流的文件的文件句柄。
offset
类型： System Int64
文件中将开始进行写入的字节位置。
size
类型： System Int64
要写入输出流的字节数。
异常 | 条件
ArgumentNullException | fileHandler 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | offset 小于 0。 - 或 - size 大于文件大小减去 offset。

对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。

下面的示例将名为 Login.txt 的文本文件（可能包含 HTML 文本和输入控件）的所有内容直接写入输出流。

Dim FileName As String
Dim MyFileStream As FileStream
Dim FileHandle As IntPtr
Dim StartPos As Long = 0
Dim FileSize As Long

FileName = "c:\\temp\\Login.txt"

MyFileStream = New FileStream(FileName, FileMode.Open)
FileHandle = MyFileStream.Handle
FileSize = MyFileStream.Length

Response.Write("<b>Login: </b>")
Response.Write("<input type=text id=user /> ")
Response.Write("<input type=submit value=Submit /><br><br>")

Response.WriteFile(FileHandle, StartPos, FileSize)

MyFileStream.Close()

String FileName;
 FileStream MyFileStream;
 IntPtr FileHandle;
 long StartPos = 0, FileSize;

 FileName = "c:\\temp\\Login.txt";

 MyFileStream = new FileStream(FileName, FileMode.Open);
 FileHandle = MyFileStream.Handle;
 FileSize = MyFileStream.Length;

 Response.Write("<b>Login: </b>");
 Response.Write("<input type=text id=user /> ");
 Response.Write("<input type=submit value=Submit /><br><br>");

 Response.WriteFile(FileHandle, StartPos, FileSize);

 MyFileStream.Close();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
WriteFile 重载
System.Web 命名空间


HttpResponse ..::.WriteFile 方法 (String, Int64, Int64)

HttpResponse
.
.
::
.
WriteFile 方法 (String, Int64, Int64)
HttpResponse 类

将指定的文件直接写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub WriteFile ( _
    filename As String, _
    offset As Long, _
    size As Long _
)
public void WriteFile(
    string filename,
    long offset,
    long size
)
public:
void WriteFile(
    String^ filename,
    long long offset,
    long long size
)
member WriteFile :
        filename:string *
        offset:int64 *
        size:int64 -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
offset
类型： System Int64
文件中将开始进行写入的字节位置。
size
类型： System Int64
要写入输出流的字节数。
异常 | 条件
HttpException | offset 小于 0。 - 或 - size 大于文件大小减去 offset。
ArgumentNullException | filename 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。 对大型文件使用此方法时，调用此方法可能会引发异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置。有关更多信息，请参见位于 Microsoft 知识库网站上的文章 812406“PRB：Response.WriteFile 无法下载大型文件”。

下面的示例将名为 Login.txt 的文本文件（可能包含 HTML 文本和输入控件）的所有内容直接写入输出流。

Dim FileName As String
 Dim MyFileInfo As FileInfo
 Dim StartPos, FileSize As Long

 FileName = "c:\\temp\\login.txt"
 MyFileInfo = New FileInfo(FileName)
 FileSize = MyFileInfo.Length

 Response.Write("Please Login: <br>")
 Response.WriteFile(FileName, StartPos, FileSize)

String FileName;
 FileInfo MyFileInfo;
 long StartPos = 0, FileSize;

 FileName = "c:\\temp\\login.txt";
 MyFileInfo = new FileInfo(FileName);
 FileSize = MyFileInfo.Length;

 Response.Write("Please Login: <br>");
 Response.WriteFile(FileName, StartPos, FileSize);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
WriteFile 重载
System.Web 命名空间


HttpResponse ..::.WriteSubstitution 方法

HttpResponse
.
.
::
.
WriteSubstitution 方法
HttpResponse 类

允许将响应替换块插入响应，从而允许为缓存的输出响应动态生成指定的响应区域。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub WriteSubstitution ( _
    callback As HttpResponseSubstitutionCallback _
)
public void WriteSubstitution(
    HttpResponseSubstitutionCallback callback
)
public:
void WriteSubstitution(
    HttpResponseSubstitutionCallback^ callback
)
member WriteSubstitution :
        callback:HttpResponseSubstitutionCallback -> unit

参数

callback
类型： System.Web HttpResponseSubstitutionCallback
要替换的方法、用户控件或对象。
异常 | 条件
ArgumentException | callback 参数的目标为 Control 类型。

您可以在缓存输出的页中使用 WriteSubstitution 方法进行缓存后替换。通过将一个 HttpContext 对象传递给具有规定的 HttpResponseSubstitutionCallback 签名的回调方法，您可以替换页缓存中的任何给定位置的缓存输出内容。若要开始替换，请调用 WriteSubstitution 方法，并向它传递回调方法，该回调方法必须是线程安全的，可以是以下方法之一： 您可以在缓存输出的页中使用 WriteSubstitution 方法进行缓存后替换。通过将一个 HttpContext 对象传递给具有规定的 HttpResponseSubstitutionCallback 签名的回调方法，您可以替换页缓存中的任何给定位置的缓存输出内容。若要开始替换，请调用 WriteSubstitution 方法，并向它传递回调方法，该回调方法必须是线程安全的，可以是以下方法之一： 您可以在缓存输出的页中使用 WriteSubstitution 方法进行缓存后替换。通过将一个 HttpContext 对象传递给具有规定的 HttpResponseSubstitutionCallback 签名的回调方法，您可以替换页缓存中的任何给定位置的缓存输出内容。若要开始替换，请调用 WriteSubstitution 方法，并向它传递回调方法，该回调方法必须是线程安全的，可以是以下方法之一：

  • 容器页或用户控件上的静态方法。

  • 其他任意对象上的静态方法或实例方法。

在第一次请求该页时，WriteSubstitution 调用 HttpResponseSubstitutionCallback 委托来产生输出。然后，它将替换缓冲区添加到响应，响应保留该委托以便在以后的请求中调用。最后，它将客户端缓存能力从“公共”降级到“仅服务器”，从而通过不在客户端进行缓存来确保以后对该页的请求将重新调用该委托。 在第一次请求该页时，WriteSubstitution 调用 HttpResponseSubstitutionCallback 委托来产生输出。然后，它将替换缓冲区添加到响应，响应保留该委托以便在以后的请求中调用。最后，它将客户端缓存能力从“公共”降级到“仅服务器”，从而通过不在客户端进行缓存来确保以后对该页的请求将重新调用该委托。 在第一次请求该页时，WriteSubstitution 调用 HttpResponseSubstitutionCallback 委托来产生输出。然后，它将替换缓冲区添加到响应，响应保留该委托以便在以后的请求中调用。最后，它将客户端缓存能力从“公共”降级到“仅服务器”，从而通过不在客户端进行缓存来确保以后对该页的请求将重新调用该委托。

说明 说明

对于在用户控件级别应用输出缓存的缓存用户控件，不支持缓存后替换。这也称为片段缓存。有关更多信息，请参见缓存 ASP.NET 页的某些部分。 对于在用户控件级别应用输出缓存的缓存用户控件，不支持缓存后替换。这也称为片段缓存。有关更多信息，请参见缓存 ASP.NET 页的某些部分。 对于在用户控件级别应用输出缓存的缓存用户控件，不支持缓存后替换。这也称为片段缓存。有关更多信息，请参见缓存 ASP.NET 页的某些部分。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
HttpResponseSubstitutionCallback
Substitution

其他资源

设置页的可缓存性
缓存 ASP.NET 页的某些部分
动态更新缓存页的部分


HttpResponse 属性

HttpResponse 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponse 类

HttpResponse 类型公开以下成员。

名称 说明
页首

参考

HttpResponse 类
System.Web 命名空间


HttpResponse ..::.Buffer 属性

HttpResponse
.
.
::
.
Buffer 属性
HttpResponse 类

获取或设置一个值，该值指示是否缓冲输出并在处理完整个响应之后发送它。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Buffer As Boolean
    Get
    Set
public bool Buffer { get; set; }
public:
property bool Buffer {
    bool get ();
    void set (bool value);
}
member Buffer : bool with get, set

属性值

类型： System Boolean
如果缓冲了发送给客户端的输出，则为 true；否则为 false。

Buffer 属性已被否决，并被 BufferOutput 属性取代，提供它仅是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中，使用 BufferOutput。 Buffer 属性已被否决，并被 BufferOutput 属性取代，提供它仅是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中，使用 BufferOutput。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.BufferOutput 属性

HttpResponse
.
.
::
.
BufferOutput 属性
HttpResponse 类

获取或设置一个值，该值指示是否缓冲输出并在处理完整个页之后发送它。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property BufferOutput As Boolean
    Get
    Set
public bool BufferOutput { get; set; }
public:
property bool BufferOutput {
    bool get ();
    void set (bool value);
}
member BufferOutput : bool with get, set

属性值

类型： System Boolean
如果缓冲发送给客户端的输出，则为 true；否则为 false。默认值为 true。 如果缓冲发送给客户端的输出，则为 true；否则为 false。默认值为 true。

下面的示例将响应的 ContentType 属性设置为 image/jpeg，调用 Clear 方法以移除可能附加到响应的其他内容，然后将 BufferOutput 属性设置为 true，这样就可以在将任何内容发送到请求客户端之前先处理整个页。

有关完整示例，请参见 HttpResponse 类。

' Set the page's content type to JPEG files
' and clear all response headers.
Response.ContentType = "image/jpeg"
Response.Clear()

' Buffer response so that page is sent
' after processing is complete.
Response.BufferOutput = True

// Set the page's content type to JPEG files
// and clear all response headers.
Response.ContentType = "image/jpeg";
Response.Clear();

// Buffer response so that page is sent
// after processing is complete.
Response.BufferOutput = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Cache 属性

HttpResponse
.
.
::
.
Cache 属性
HttpResponse 类

获取网页的缓存策略（例如：过期时间、保密性设置和变化条款）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Cache As HttpCachePolicy
    Get
public HttpCachePolicy Cache { get; }
public:
property HttpCachePolicy^ Cache {
    HttpCachePolicy^ get ();
}
member Cache : HttpCachePolicy

属性值

类型： System.Web HttpCachePolicy
包含与当前响应的缓存策略有关的信息的 HttpCachePolicy 对象。

下面的示例将当前缓存策略的属性写入 HTTP 输出流。

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Public)
Response.Cache.SetValidUntilExpires(False)
Response.Cache.VaryByParams("Category") = True

If Response.Cache.VaryByParams("Category") Then
   '...
End If

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(false);
Response.Cache.VaryByParams["Category"] = true;

if (Response.Cache.VaryByParams["Category"])
{
   //...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.CacheControl 属性

HttpResponse
.
.
::
.
CacheControl 属性
HttpResponse 类

获取或设置与 HttpCacheability 枚举值之一匹配的 Cache-Control HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property CacheControl As String
    Get
    Set
public string CacheControl { get; set; }
public:
property String^ CacheControl {
    String^ get ();
    void set (String^ value);
}
member CacheControl : string with get, set

属性值

类型： System String
HttpCacheability 枚举值的字符串表示形式。
异常 | 条件
ArgumentException | 设置的字符串值与 HttpCacheability 枚举值之一不匹配。

Private、Public 和 No-Cache 的值是字符串，而且必须包括在引号 (" ") 中。如果 CacheControl 属性的设置值与 HttpCacheability 枚举值之一不匹配，便会引发 ArgumentException。如果未设置 CacheControl 属性，响应的可缓存性将设置为 NoCache。 Private、Public 和 No-Cache 的值是字符串，而且必须包括在引号 (" ") 中。如果 CacheControl 属性的设置值与 HttpCacheability 枚举值之一不匹配，便会引发 ArgumentException。如果未设置 CacheControl 属性，响应的可缓存性将设置为 NoCache。 Private、Public 和 No-Cache 的值是字符串，而且必须包括在引号 (" ") 中。如果 CacheControl 属性的设置值与 HttpCacheability 枚举值之一不匹配，便会引发 ArgumentException。如果未设置 CacheControl 属性，响应的可缓存性将设置为 NoCache。

CacheControl, Expires 和 ExpiresAbsolute 属性已被否决。可以改为通过 Cache 内部对象，使用 HttpCachePolicy 类的方法来控制 Internet 信息服务 (IIS) 输出缓存和客户端缓存。 CacheControl, Expires 和 ExpiresAbsolute 属性已被否决。可以改为通过 Cache 内部对象，使用 HttpCachePolicy 类的方法来控制 Internet 信息服务 (IIS) 输出缓存和客户端缓存。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Charset 属性

HttpResponse
.
.
::
.
Charset 属性
HttpResponse 类

获取或设置输出流的 HTTP 字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Charset As String
    Get
    Set
public string Charset { get; set; }
public:
property String^ Charset {
    String^ get ();
    void set (String^ value);
}
member Charset : string with get, set

属性值

类型： System String
输出流的 HTTP 字符集。
异常 | 条件
HttpException | Charset 属性在标头发送后设置。

Charset 属性可以设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），以禁止 HTTP Content-Type 标头。

下面的示例检查输出流的字符集是否为中欧字符 (ISO)。

If Response.Charset = "iso-8859-2" Then
    '...
End If

if (Response.Charset == "iso-8859-2")
{
    // ...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.ContentEncoding 属性

HttpResponse
.
.
::
.
ContentEncoding 属性
HttpResponse 类

获取或设置输出流的 HTTP 字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ContentEncoding As Encoding
    Get
    Set
public Encoding ContentEncoding { get; set; }
public:
property Encoding^ ContentEncoding {
    Encoding^ get ();
    void set (Encoding^ value);
}
member ContentEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
Encoding 对象，包含与当前响应的字符集有关的信息。
异常 | 条件
ArgumentNullException | 尝试将 ContentEncoding 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在 ASP.NET 配置文件的 globalization 元素（ASP.NET 设置架构） 节中可以指定默认的 ContentEncoding。如果客户端指定了 ContentEncoding，则将重写默认配置设置。 在 ASP.NET 配置文件的 globalization 元素（ASP.NET 设置架构） 节中可以指定默认的 ContentEncoding。如果客户端指定了 ContentEncoding，则将重写默认配置设置。

下面的示例将字符集编码的可读说明写入输出流。

Response.Write (Response.ContentEncoding.EncodingName)

Response.Write (Response.ContentEncoding.EncodingName);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.ContentType 属性

HttpResponse
.
.
::
.
ContentType 属性
HttpResponse 类

获取或设置输出流的 HTTP MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ContentType As String
    Get
    Set
public string ContentType { get; set; }
public:
property String^ ContentType {
    String^ get ();
    void set (String^ value);
}
member ContentType : string with get, set

属性值

类型： System String
输出流的 HTTP MIME 类型。默认值为“text/html”。 输出流的 HTTP MIME 类型。默认值为“text/html”。
异常 | 条件
HttpException | ContentType 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的示例将响应的 ContentType 属性设置为 image/jpeg，调用 Clear 方法以移除可能附加到响应的其他内容，然后将 BufferOutput 属性设置为 true，这样就可以在将任何内容发送到请求客户端之前先处理整个页。

有关完整示例，请参见 HttpResponse 类。

' Set the page's content type to JPEG files
' and clear all response headers.
Response.ContentType = "image/jpeg"
Response.Clear()

' Buffer response so that page is sent
' after processing is complete.
Response.BufferOutput = True

// Set the page's content type to JPEG files
// and clear all response headers.
Response.ContentType = "image/jpeg";
Response.Clear();

// Buffer response so that page is sent
// after processing is complete.
Response.BufferOutput = true;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Cookies 属性

HttpResponse
.
.
::
.
Cookies 属性
HttpResponse 类

获取响应 Cookie 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Cookies As HttpCookieCollection
    Get
public HttpCookieCollection Cookies { get; }
public:
property HttpCookieCollection^ Cookies {
    HttpCookieCollection^ get ();
}
member Cookies : HttpCookieCollection

属性值

类型： System.Web HttpCookieCollection
响应 Cookie 集合。

ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。 ASP.NET 包含两个内部 Cookie 集合。通过 HttpRequest 的 Cookies 集合访问的集合包含以 Cookie 标头形式由客户端传输到服务器的 Cookie。通过 HttpResponse 的 Cookies 集合访问的集合包含一些新 Cookie，这些 Cookie 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。

在通过使用 HttpResponse..::.Cookies 集合添加 cookie 后，该 cookie 将立即可在 HttpRequest..::.Cookies 集合中使用，即使该响应尚未发送至客户端。

下面的示例创建一个名为 LastVisit 的新 Cookie，将该 Cookie 的值设置为当前日期和时间，并将它添加到当前 Cookie 集合中。Cookie 集合中的所有 Cookie 均通过 HTTP 输出流在 Set-Cookie 头中发送到客户端。 下面的示例创建一个名为 LastVisit 的新 Cookie，将该 Cookie 的值设置为当前日期和时间，并将它添加到当前 Cookie 集合中。Cookie 集合中的所有 Cookie 均通过 HTTP 输出流在 Set-Cookie 头中发送到客户端。

Dim MyCookie As New HttpCookie("LastVisit")
Dim now As DateTime = DateTime.Now

MyCookie.Value = now.ToString()
MyCookie.Expires = now.AddHours(1)

Response.Cookies.Add(MyCookie)

HttpCookie MyCookie = new HttpCookie("LastVisit");
DateTime now = DateTime.Now;

MyCookie.Value = now.ToString();
MyCookie.Expires = now.AddHours(1);

Response.Cookies.Add(MyCookie);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Expires 属性

HttpResponse
.
.
::
.
Expires 属性
HttpResponse 类

获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。提供 Expires 是为了与 ASP 的早期版本兼容。 获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。提供 Expires 是为了与 ASP 的早期版本兼容。 获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。提供 Expires 是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Expires As Integer
    Get
    Set
public int Expires { get; set; }
public:
property int Expires {
    int get ();
    void set (int value);
}
member Expires : int with get, set

属性值

类型： System Int32
在页过期之前的分钟数。

Expires、ExpiresAbsolute 和 CacheControl 属性已被否决，可改为通过 Cache 内部对象，使用 HttpCachePolicy 类的方法来控制 Internet 信息服务 (IIS) 输出缓存和客户端缓存。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.ExpiresAbsolute 属性

HttpResponse
.
.
::
.
ExpiresAbsolute 属性
HttpResponse 类

获取或设置从缓存中移除缓存信息的绝对日期和时间。提供 ExpiresAbsolute 是为了与 ASP 的早期版本兼容。 获取或设置从缓存中移除缓存信息的绝对日期和时间。提供 ExpiresAbsolute 是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ExpiresAbsolute As DateTime
    Get
    Set
public DateTime ExpiresAbsolute { get; set; }
public:
property DateTime ExpiresAbsolute {
    DateTime get ();
    void set (DateTime value);
}
member ExpiresAbsolute : DateTime with get, set

属性值

类型： System DateTime
该页过期时的日期和时间。

ExpiresAbsolute、Expires 和 CacheControl 属性已被否决，可改为通过 Cache 内部对象，使用 HttpCachePolicy 类的方法来控制 Internet 信息服务 (IIS) 输出缓存和客户端缓存。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Filter 属性

HttpResponse
.
.
::
.
Filter 属性
HttpResponse 类

获取或设置一个包装筛选器对象，该对象用于在传输之前修改 HTTP 实体主体。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Filter As Stream
    Get
    Set
public Stream Filter { get; set; }
public:
property Stream^ Filter {
    Stream^ get ();
    void set (Stream^ value);
}
member Filter : Stream with get, set

属性值

类型： System.IO Stream
作为输出筛选器的 Stream 对象。
异常 | 条件
HttpException | 不允许对实体进行筛选。

当创建 Stream 对象并将 Filter 属性设置为 Stream 对象时，所有由 Write 发送的 HTTP 输出将通过筛选器。

下面的示例是一个 ASP.NET 页，其中 Filter 属性设置为 UpperCaseFilter 类的新实例，该类是一个自定义 Stream 类，用于将通过它的所有文本转换为大写。有关请求的信息保存在一个文本文件中，然后设置 Filter 属性。在响应筛选器准备就绪之后，代码调用 MapPath 方法以获取名为 TestFile.txt 的文本文件的绝对路径，该文件是响应内容的来源。然后，该代码新建一个 StreamReader 对象以便从头至尾读取该文本文件，最后调用 Write 方法在相应页上显示该文件的内容。 下面的示例是一个 ASP.NET 页，其中 Filter 属性设置为 UpperCaseFilter 类的新实例，该类是一个自定义 Stream 类，用于将通过它的所有文本转换为大写。有关请求的信息保存在一个文本文件中，然后设置 Filter 属性。在响应筛选器准备就绪之后，代码调用 MapPath 方法以获取名为 TestFile.txt 的文本文件的绝对路径，该文件是响应内容的来源。然后，该代码新建一个 StreamReader 对象以便从头至尾读取该文本文件，最后调用 Write 方法在相应页上显示该文件的内容。 下面的示例是一个 ASP.NET 页，其中 Filter 属性设置为 UpperCaseFilter 类的新实例，该类是一个自定义 Stream 类，用于将通过它的所有文本转换为大写。有关请求的信息保存在一个文本文件中，然后设置 Filter 属性。在响应筛选器准备就绪之后，代码调用 MapPath 方法以获取名为 TestFile.txt 的文本文件的绝对路径，该文件是响应内容的来源。然后，该代码新建一个 StreamReader 对象以便从头至尾读取该文本文件，最后调用 Write 方法在相应页上显示该文件的内容。 下面的示例是一个 ASP.NET 页，其中 Filter 属性设置为 UpperCaseFilter 类的新实例，该类是一个自定义 Stream 类，用于将通过它的所有文本转换为大写。有关请求的信息保存在一个文本文件中，然后设置 Filter 属性。在响应筛选器准备就绪之后，代码调用 MapPath 方法以获取名为 TestFile.txt 的文本文件的绝对路径，该文件是响应内容的来源。然后，该代码新建一个 StreamReader 对象以便从头至尾读取该文本文件，最后调用 Write 方法在相应页上显示该文件的内容。

<%@ Page Language="VB" Debug="true"%>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="Samples.AspNet.VB.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    ' Filter the text to be rendered as all uppercase.
    Response.Filter = New UpperCaseFilterStream(Response.Filter)

    ' Convert a virtual path to a fully qualified physical path.
    Dim fullpath As String = Request.MapPath("~\\TestFile.txt")

    Try

      Dim sr As StreamReader = New StreamReader(fullpath)

      Do While sr.Peek() >= 0
        Response.Write(Convert.ToChar(sr.Read()))
      Loop
      sr.Close()
      Message.Text = "Reading the file was successful."

    Catch ex As Exception

      Message.Text = "The process failed."

    End Try

  End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpResponse.MapPath Example</title>
  </head>
  <body>
    <form id="Form1" runat="server">

      <asp:Label id="Message"
                 runat="server"/>

    </form>
  </body>
</html>

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ import Namespace="Samples.AspNet.CS.Controls"  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {

      // Filter the text to be rendered as all uppercase.
      Response.Filter = new UpperCaseFilterStream(Response.Filter);

      // Convert a virtual path to a fully qualified physical path.
      string fullpath = Request.MapPath("~\\TestFile.txt");

      try
      {
        // Read the contents of the file using a StreamReader.
        using (StreamReader sr = new StreamReader(fullpath))
        while (sr.Peek() >= 0)
        {
          Response.Write((char)sr.Read());
        }
        Message.Text = "Reading the file was successful.";

      }
      catch (Exception ex)
      {
        Message.Text = "The process failed.";
      }
     }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpResponse.MapPath Example</title>
  </head>
  <body>
    <form id="form1" runat="server">

      <asp:Label id="Message"
                 runat="server"/>

    </form>
  </body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.HeaderEncoding 属性

HttpResponse
.
.
::
.
HeaderEncoding 属性
HttpResponse 类

获取或设置一个 Encoding 对象，该对象表示当前标头输出流的编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property HeaderEncoding As Encoding
    Get
    Set
public Encoding HeaderEncoding { get; set; }
public:
property Encoding^ HeaderEncoding {
    Encoding^ get ();
    void set (Encoding^ value);
}
member HeaderEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
一个 Encoding，包含与当前标头的字符集有关的信息。
异常 | 条件
ArgumentNullException | 编码值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | 编码值为 Unicode。 - 或 - 已发送标头。

HeaderEncoding 属性使您能够使用以下对象中的任何一个来禁用或更改响应标头的 Encoding 对象：ASCIIEncoding、UnicodeEncoding、UTF7Encoding 或 UTF8Encoding 对象。默认编码值为 UTF8Encoding 类。 HeaderEncoding 属性使您能够使用以下对象中的任何一个来禁用或更改响应标头的 Encoding 对象：ASCIIEncoding、UnicodeEncoding、UTF7Encoding 或 UTF8Encoding 对象。默认编码值为 UTF8Encoding 类。

更改 HeaderEncoding 属性的类型可能会增加遭受某些恶意攻击的风险，或导致通过响应标头发送敏感数据。通过将响应的 HeaderEncoding 属性保留为默认设置，可以避免标头注入攻击。针对脆弱的应用程序的攻击可能导致将受信任数据作为响应标头的一部分回送。如果由于标头中对连续行的要求而禁用了 HeaderEncoding，或者所有标头都是根据不可信数据的结果构造的，则在将标头数据发送到响应流之前应首先验证标头数据。 更改 HeaderEncoding 属性的类型可能会增加遭受某些恶意攻击的风险，或导致通过响应标头发送敏感数据。通过将响应的 HeaderEncoding 属性保留为默认设置，可以避免标头注入攻击。针对脆弱的应用程序的攻击可能导致将受信任数据作为响应标头的一部分回送。如果由于标头中对连续行的要求而禁用了 HeaderEncoding，或者所有标头都是根据不可信数据的结果构造的，则在将标头数据发送到响应流之前应首先验证标头数据。 更改 HeaderEncoding 属性的类型可能会增加遭受某些恶意攻击的风险，或导致通过响应标头发送敏感数据。通过将响应的 HeaderEncoding 属性保留为默认设置，可以避免标头注入攻击。针对脆弱的应用程序的攻击可能导致将受信任数据作为响应标头的一部分回送。如果由于标头中对连续行的要求而禁用了 HeaderEncoding，或者所有标头都是根据不可信数据的结果构造的，则在将标头数据发送到响应流之前应首先验证标头数据。 更改 HeaderEncoding 属性的类型可能会增加遭受某些恶意攻击的风险，或导致通过响应标头发送敏感数据。通过将响应的 HeaderEncoding 属性保留为默认设置，可以避免标头注入攻击。针对脆弱的应用程序的攻击可能导致将受信任数据作为响应标头的一部分回送。如果由于标头中对连续行的要求而禁用了 HeaderEncoding，或者所有标头都是根据不可信数据的结果构造的，则在将标头数据发送到响应流之前应首先验证标头数据。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Headers 属性

HttpResponse
.
.
::
.
Headers 属性
HttpResponse 类

获取响应标头的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Headers As NameValueCollection
    Get
public NameValueCollection Headers { get; }
public:
property NameValueCollection^ Headers {
    NameValueCollection^ get ();
}
member Headers : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
响应标头的 NameValueCollection。
异常 | 条件
PlatformNotSupportedException | 操作要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。

只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时，才支持 Headers 属性。如果您尝试访问 Headers 属性并且不满足上述两个条件中的任何一个条件，则会引发 PlatformNotSupportedException。 只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时，才支持 Headers 属性。如果您尝试访问 Headers 属性并且不满足上述两个条件中的任何一个条件，则会引发 PlatformNotSupportedException。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间

其他资源

将 ASP.NET 应用程序升级到 IIS 7.0：IIS 7.0 集成模式和经典模式间的差异


HttpResponse ..::.IsClientConnected 属性

HttpResponse
.
.
::
.
IsClientConnected 属性
HttpResponse 类

获取一个值，通过该值指示客户端是否仍连接在服务器上。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsClientConnected As Boolean
    Get
public bool IsClientConnected { get; }
public:
property bool IsClientConnected {
    bool get ();
}
member IsClientConnected : bool

属性值

类型： System Boolean
如果客户端当前仍在连接，则为 true；否则为 false。

IsClientConnected 属性在满足下列条件时返回 false：

  • 终止了与客户端的连接。如果调用了 Close 方法或者客户端停止执行网页或浏览到另一页，就会发生这种情况。 终止了与客户端的连接。如果调用了 Close 方法或者客户端停止执行网页或浏览到另一页，就会发生这种情况。

  • 正在处理请求的 HttpWorkerRequest 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），或者 HttpWorkerRequest..::.IsClientConnected 方法返回 false。如果由自定义 HttpWorkerRequest 对象处理请求，可能基于自定义条件来设置 HttpWorkerRequest..::.IsClientConnected 方法。例如，自定义辅助请求可能在一段时间后强加超时。 正在处理请求的 HttpWorkerRequest 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），或者 HttpWorkerRequest..::.IsClientConnected 方法返回 false。如果由自定义 HttpWorkerRequest 对象处理请求，可能基于自定义条件来设置 HttpWorkerRequest..::.IsClientConnected 方法。例如，自定义辅助请求可能在一段时间后强加超时。 正在处理请求的 HttpWorkerRequest 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），或者 HttpWorkerRequest..::.IsClientConnected 方法返回 false。如果由自定义 HttpWorkerRequest 对象处理请求，可能基于自定义条件来设置 HttpWorkerRequest..::.IsClientConnected 方法。例如，自定义辅助请求可能在一段时间后强加超时。

下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。 下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。 下面的示例使用 IsClientConnected 属性来检查请求页的客户端是否仍与服务器连接。如果 IsClientConnected 为 true，此代码将调用 Redirect 方法，因此客户端将可以查看另一页。如果 IsClientConnected 为 false，代码将调用 End 方法，并且所有页处理都将终止。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Private Sub Page_Load(sender As Object, e As EventArgs)

        ' Check whether the browser remains
        ' connected to the server.
        If (Response.IsClientConnected) Then

            ' If still connected, redirect
            ' to another page.
            Response.Redirect("Page2VB.aspx", false)
        Else
            ' If the browser is not connected
            ' stop all response processing.
            Response.End()
        End If
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Check whether the browser remains
        // connected to the server.
        if (Response.IsClientConnected)
        {
            // If still connected, redirect
            // to another page.
            Response.Redirect("Page2CS.aspx", false);
        }
        else
        {
            // If the browser is not connected
            // stop all response processing.
            Response.End();
        }
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.IsRequestBeingRedirected 属性

HttpResponse
.
.
::
.
IsRequestBeingRedirected 属性
HttpResponse 类

获取一个布尔值，该值指示客户端是否正在被传输到新的位置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsRequestBeingRedirected As Boolean
    Get
public bool IsRequestBeingRedirected { get; }
public:
property bool IsRequestBeingRedirected {
    bool get ();
}
member IsRequestBeingRedirected : bool

属性值

类型： System Boolean
如果位置响应标头的值与当前位置不同，则为 true；否则为 false。

将 RedirectLocation 属性与 IsRequestBeingRedirected 属性一起使用来测试并确定在 HTTP Location 标头中传送到客户端的绝对 URI 是否与当前 URI 不同，以及当前要传输的新的目标 URI 是什么。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Output 属性

HttpResponse
.
.
::
.
Output 属性
HttpResponse 类

启用到输出 HTTP 响应流的文本输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Output As TextWriter
    Get
public TextWriter Output { get; }
public:
property TextWriter^ Output {
    TextWriter^ get ();
}
member Output : TextWriter

属性值

类型： System.IO TextWriter
支持到客户端的自定义输出的 TextWriter 对象。

下面的示例是一个包含 TextBox 控件的 ASP.NET 页，该控件的 TextMode 属性设置为 MultiLine。该页的代码接受用户在 TextMode 中输入的文本，然后使用 HtmlEncode 方法对这些文本进行 HTML 编码，再使用 Output 属性将编码后的字符串显示到该页中。 下面的示例是一个包含 TextBox 控件的 ASP.NET 页，该控件的 TextMode 属性设置为 MultiLine。该页的代码接受用户在 TextMode 中输入的文本，然后使用 HtmlEncode 方法对这些文本进行 HTML 编码，再使用 Output 属性将编码后的字符串显示到该页中。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    ' When the page is posted back, the text box's
    ' Text property value is HTML encoded and sent
    ' sent to the current response.
    Private Sub btnSubmit_Click(sender As Object, e As EventArgs)
        If (IsPostBack = True)
            Server.HtmlEncode(txtSubmitString.Text, Response.Output)
        End If
    End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p style="font-family:Tahoma; font-size:12">
            Enter your comments here:
        </p>
        <p>
            <asp:TextBox id="txtSubmitString" runat="server" Width="181px" TextMode="MultiLine"></asp:TextBox>
        </p>
        <p>
            <asp:Button id="btnSubmit" onclick="btnSubmit_Click" runat="server" Text="Submit"></asp:Button>
        </p>
        <p>
            <asp:Label id="lblEncodedString" runat="server"></asp:Label>
        </p>

    </form>
</body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    // When the page is posted back, the text box's
    // Text property value is HTML encoded and sent
    // sent to the current Response.
    void btnSubmit_Click(object sender, EventArgs e) {

        if (IsPostBack)
        {
            Server.HtmlEncode(txtSubmitString.Text, Response.Output);
        }
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p style="font-family:Tahoma; font-size:12">
            Enter your comments here:
        </p>
        <p>
            <asp:TextBox id="txtSubmitString" runat="server" Width="181px" TextMode="MultiLine"></asp:TextBox>
        </p>
        <p>
            <asp:Button id="btnSubmit" onclick="btnSubmit_Click" runat="server" Text="Submit"></asp:Button>
        </p>
        <p>
            <asp:Label id="lblEncodedString" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.OutputStream 属性

HttpResponse
.
.
::
.
OutputStream 属性
HttpResponse 类

启用到输出 HTTP 内容主体的二进制输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property OutputStream As Stream
    Get
public Stream OutputStream { get; }
public:
property Stream^ OutputStream {
    Stream^ get ();
}
member OutputStream : Stream

属性值

类型： System.IO Stream
表示输出 HTTP 内容主体的原始内容的 IO Stream。
异常 | 条件
HttpException | OutputStream 不可用。

从 .NET Framework 2.0 版本开始，如果使用 OutputStream 属性返回的 IO 流的 Stream..::.Write(array<Byte>[]()[], Int32, Int32) 方法，可能会引发以下异常：

  • ArgumentOutOfRangeException（如果 offset 或 count 参数为负值或者 buffer 参数的长度减去 offset 参数得到的值小于或等于 0）。

  • ArgumentNullException（如果 buffer 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing））。

下面的示例调用 Save 方法将一个 Bitmap 对象保存到 OutputStream 属性中，并将图像转换为 JPEG 格式。然后，代码调用 Bitmap 对象和 Graphics 对象的 Dispose 方法，释放它们正在使用的资源。最后，代码调用 Flush 方法将响应的内容发送到请求客户端。 下面的示例调用 Save 方法将一个 Bitmap 对象保存到 OutputStream 属性中，并将图像转换为 JPEG 格式。然后，代码调用 Bitmap 对象和 Graphics 对象的 Dispose 方法，释放它们正在使用的资源。最后，代码调用 Flush 方法将响应的内容发送到请求客户端。 下面的示例调用 Save 方法将一个 Bitmap 对象保存到 OutputStream 属性中，并将图像转换为 JPEG 格式。然后，代码调用 Bitmap 对象和 Graphics 对象的 Dispose 方法，释放它们正在使用的资源。最后，代码调用 Flush 方法将响应的内容发送到请求客户端。

有关完整示例，请参见 HttpResponse 类。

<%@ Page Language="VB" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

   Private Sub Page_Load(sender As Object, e As EventArgs)
      ' Set the page's content type to JPEG files
      ' and clear all response headers.
      Response.ContentType = "image/jpeg"
      Response.Clear()

      ' Buffer response so that page is sent
      ' after processing is complete.
      Response.BufferOutput = True

      ' Create a font style.
      Dim rectangleFont As New Font( _
          "Arial", 10, FontStyle.Bold)

      ' Create integer variables.
      Dim height As Integer = 100
      Dim width As Integer = 200

      ' Create a random number generator and create
      ' variable values based on it.
      Dim r As New Random()
      Dim x As Integer = r.Next(75)
      Dim a As Integer = r.Next(155)
      Dim x1 As Integer = r.Next(100)

      ' Create a bitmap and use it to create a
      ' Graphics object.
      Dim bmp As New Bitmap( _
          width, height, PixelFormat.Format24bppRgb)
      Dim g As Graphics = Graphics.FromImage(bmp)

      g.SmoothingMode = SmoothingMode.AntiAlias
      g.Clear(Color.LightGray)

      ' Use the Graphics object to draw three rectangles.
      g.DrawRectangle(Pens.White, 1, 1, width - 3, height - 3)
      g.DrawRectangle(Pens.Aquamarine, 2, 2, width - 3, height - 3)
      g.DrawRectangle(Pens.Black, 0, 0, width, height)

      ' Use the Graphics object to write a string
      ' on the rectangles.
      g.DrawString("ASP.NET Samples", rectangleFont, SystemBrushes.WindowText, New PointF(10, 40))

      ' Apply color to two of the rectangles.
      g.FillRectangle( _
          New SolidBrush( _
              Color.FromArgb(a, 255, 128, 255)), _
          x, 20, 100, 50)

      g.FillRectangle( _
          New LinearGradientBrush( _
              New Point(x, 10), _
              New Point(x1 + 75, 50 + 30), _
              Color.FromArgb(128, 0, 0, 128), _
              Color.FromArgb(255, 255, 255, 240)), _
          x1, 50, 75, 30)

      ' Save the bitmap to the response stream and
      ' convert it to JPEG format.
      bmp.Save(Response.OutputStream, ImageFormat.Jpeg)

      ' Release memory used by the Graphics object
      ' and the bitmap.
      g.Dispose()
      bmp.Dispose()

      ' Send the output to the client.
      Response.Flush()
   End Sub 'Page_Load

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    private void Page_Load(object sender, EventArgs e)
    {
        // Set the page's content type to JPEG files
        // and clear all response headers.
        Response.ContentType = "image/jpeg";
        Response.Clear();

        // Buffer response so that page is sent
        // after processing is complete.
        Response.BufferOutput = true;

        // Create a font style.
        Font rectangleFont = new Font(
            "Arial", 10, FontStyle.Bold);

        // Create integer variables.
        int height = 100;
        int width = 200;

        // Create a random number generator and create
        // variable values based on it.
        Random r = new Random();
        int x = r.Next(75);
        int a = r.Next(155);
        int x1 = r.Next(100);

        // Create a bitmap and use it to create a
        // Graphics object.
        Bitmap bmp = new Bitmap(
            width, height, PixelFormat.Format24bppRgb);
        Graphics g = Graphics.FromImage(bmp);

        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.Clear(Color.LightGray);

        // Use the Graphics object to draw three rectangles.
        g.DrawRectangle(Pens.White, 1, 1, width-3, height-3);
        g.DrawRectangle(Pens.Aquamarine, 2, 2, width-3, height-3);
        g.DrawRectangle(Pens.Black, 0, 0, width, height);

        // Use the Graphics object to write a string
        // on the rectangles.
        g.DrawString(
            "ASP.NET Samples", rectangleFont,
            SystemBrushes.WindowText, new PointF(10, 40));

        // Apply color to two of the rectangles.
        g.FillRectangle(
            new SolidBrush(
                Color.FromArgb(a, 255, 128, 255)),
            x, 20, 100, 50);

        g.FillRectangle(
            new LinearGradientBrush(
                new Point(x, 10),
                new Point(x1 + 75, 50 + 30),
                Color.FromArgb(128, 0, 0, 128),
                Color.FromArgb(255, 255, 255, 240)),
            x1, 50, 75, 30);

        // Save the bitmap to the response stream and
        // convert it to JPEG format.
        bmp.Save(Response.OutputStream, ImageFormat.Jpeg);

        // Release memory used by the Graphics object
        // and the bitmap.
        g.Dispose();
        bmp.Dispose();

        // Send the output to the client.
        Response.Flush();
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.RedirectLocation 属性

HttpResponse
.
.
::
.
RedirectLocation 属性
HttpResponse 类

获取或设置 Http Location 标头的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property RedirectLocation As String
    Get
    Set
public string RedirectLocation { get; set; }
public:
property String^ RedirectLocation {
    String^ get ();
    void set (String^ value);
}
member RedirectLocation : string with get, set

属性值

类型： System String
通过 HTTP Location 标头传输到客户端的绝对 URI。
异常 | 条件
HttpException | 已编写 HTTP 标头。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.Status 属性

HttpResponse
.
.
::
.
Status 属性
HttpResponse 类

设置返回到客户端的 Status 栏。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Status As String
    Get
    Set
public string Status { get; set; }
public:
property String^ Status {
    String^ get ();
    void set (String^ value);
}
member Status : string with get, set

属性值

类型： System String
设置状态代码会使描述 HTTP 输出状态的字符串返回到客户端。默认值为 200 (OK)。 设置状态代码会使描述 HTTP 输出状态的字符串返回到客户端。默认值为 200 (OK)。
异常 | 条件
HttpException | 状态设置为无效的状态代码。

Status 已被否决，而代之以 StatusDescription，提供它只是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中，改用 StatusDescription。 Status 已被否决，而代之以 StatusDescription，提供它只是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中，改用 StatusDescription。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.StatusCode 属性

HttpResponse
.
.
::
.
StatusCode 属性
HttpResponse 类

获取或设置返回给客户端的输出的 HTTP 状态代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property StatusCode As Integer
    Get
    Set
public int StatusCode { get; set; }
public:
property int StatusCode {
    int get ();
    void set (int value);
}
member StatusCode : int with get, set

属性值

类型： System Int32
表示返回到客户端的 HTTP 输出状态的整数。默认值为 200 (OK)。有关有效状态代码的列表，请参见 Http Status Codes（Http 状态代码）。 表示返回到客户端的 HTTP 输出状态的整数。默认值为 200 (OK)。有关有效状态代码的列表，请参见 Http Status Codes（Http 状态代码）。 表示返回到客户端的 HTTP 输出状态的整数。默认值为 200 (OK)。有关有效状态代码的列表，请参见 Http Status Codes（Http 状态代码）。
异常 | 条件
HttpException | 发送 HTTP 头之后设置 StatusCode。

下面的示例检查输出流的状态代码。如果该状态代码不等于 200，则执行附加代码。 下面的示例检查输出流的状态代码。如果该状态代码不等于 200，则执行附加代码。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    ' Show success or failure of page load.
    If Response.StatusCode <> 200 Then
        Response.Write("There was a problem accessing the web resource." & _
            "<br />" & Response.StatusDescription)
    End If

End Sub

protected void Page_Load(object sender, EventArgs e)
{
    // Show success or failure of page load.
    if (Response.StatusCode != 200)
    {
        Response.Write("There was a problem accessing the web resource" +
            "<br />" + Response.StatusDescription);
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
SubStatusCode


HttpResponse ..::.StatusDescription 属性

HttpResponse
.
.
::
.
StatusDescription 属性
HttpResponse 类

获取或设置返回给客户端的输出的 HTTP 状态字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property StatusDescription As String
    Get
    Set
public string StatusDescription { get; set; }
public:
property String^ StatusDescription {
    String^ get ();
    void set (String^ value);
}
member StatusDescription : string with get, set

属性值

类型： System String
一个字符串，描述返回给客户端的 HTTP 输出的状态。默认值为“OK”。有关有效状态代码的列表，请参见 Http Status Codes（Http 状态代码）。 一个字符串，描述返回给客户端的 HTTP 输出的状态。默认值为“OK”。有关有效状态代码的列表，请参见 Http Status Codes（Http 状态代码）。 一个字符串，描述返回给客户端的 HTTP 输出的状态。默认值为“OK”。有关有效状态代码的列表，请参见 Http Status Codes（Http 状态代码）。
异常 | 条件
HttpException | 发送 HTTP 头之后设置 StatusDescription。
ArgumentOutOfRangeException | 所选值的长度大于 512。

下面的示例检查输出流的状态字符串。如果该状态不等于“OK”，则执行附加代码。 下面的示例检查输出流的状态字符串。如果该状态不等于“OK”，则执行附加代码。

If Response.StatusDescription <> "OK" Then
    '...
End If

if (Response.StatusDescription != "OK")
{
    // ...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.SubStatusCode 属性

HttpResponse
.
.
::
.
SubStatusCode 属性
HttpResponse 类

获取或设置一个限定响应的状态代码的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property SubStatusCode As Integer
    Get
    Set
public int SubStatusCode { get; set; }
public:
property int SubStatusCode {
    int get ();
    void set (int value);
}
member SubStatusCode : int with get, set

属性值

类型： System Int32
一个整数值，表示 IIS 7.0 子状态代码。
异常 | 条件
PlatformNotSupportedException | 操作要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。
HttpException | 状态代码在发送完所有 HTTP 标头之后设置。

只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时，才支持 SubStatusCode 属性。在设置了 SubStatusCode 属性时，如果配置了“跟踪失败请求”选项，会在 IIS 7.0 中记录状态。无论是否配置了跟踪选项，都不会在请求的最终响应中发送该代码。有关更多信息，请参见 Troubleshooting Failed Requests Using Failed Request Tracing in IIS 7.0（在 IIS 7.0 中使用跟踪失败请求选项排除请求失败故障）。 只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时，才支持 SubStatusCode 属性。在设置了 SubStatusCode 属性时，如果配置了“跟踪失败请求”选项，会在 IIS 7.0 中记录状态。无论是否配置了跟踪选项，都不会在请求的最终响应中发送该代码。有关更多信息，请参见 Troubleshooting Failed Requests Using Failed Request Tracing in IIS 7.0（在 IIS 7.0 中使用跟踪失败请求选项排除请求失败故障）。 只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时，才支持 SubStatusCode 属性。在设置了 SubStatusCode 属性时，如果配置了“跟踪失败请求”选项，会在 IIS 7.0 中记录状态。无论是否配置了跟踪选项，都不会在请求的最终响应中发送该代码。有关更多信息，请参见 Troubleshooting Failed Requests Using Failed Request Tracing in IIS 7.0（在 IIS 7.0 中使用跟踪失败请求选项排除请求失败故障）。 只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时，才支持 SubStatusCode 属性。在设置了 SubStatusCode 属性时，如果配置了“跟踪失败请求”选项，会在 IIS 7.0 中记录状态。无论是否配置了跟踪选项，都不会在请求的最终响应中发送该代码。有关更多信息，请参见 Troubleshooting Failed Requests Using Failed Request Tracing in IIS 7.0（在 IIS 7.0 中使用跟踪失败请求选项排除请求失败故障）。

下面的示例在用于 PostAuthenticateRequest 事件的 HttpApplication 实例的事件处理程序中设置 SubStatusCode 属性。将代码文件放在 Web 应用程序的 App_Code 文件夹中，并且将 Web.config 文件配置为注册该模块。有关更多信息，请参见演练：创建和注册自定义 HTTP 模块。 下面的示例在用于 PostAuthenticateRequest 事件的 HttpApplication 实例的事件处理程序中设置 SubStatusCode 属性。将代码文件放在 Web 应用程序的 App_Code 文件夹中，并且将 Web.config 文件配置为注册该模块。有关更多信息，请参见演练：创建和注册自定义 HTTP 模块。 下面的示例在用于 PostAuthenticateRequest 事件的 HttpApplication 实例的事件处理程序中设置 SubStatusCode 属性。将代码文件放在 Web 应用程序的 App_Code 文件夹中，并且将 Web.config 文件配置为注册该模块。有关更多信息，请参见演练：创建和注册自定义 HTTP 模块。

Imports System
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports Microsoft.VisualBasic

' Module that sets Response.SubStatusCode in PostAuthenticateRequest event handler.
Namespace Samples

    Public Class ModuleExampleTestVB
        Implements IHttpModule

        Public Sub New()
            ' Constructor
        End Sub

        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.PostAuthenticateRequest, AddressOf Me.PostAuthenticateRequest_Handler
        End Sub

        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub

        Public Sub PostAuthenticateRequest_Handler(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim context As HttpContext = app.Context

            ' Set a SubStatusCode for Failed Request Tracing in IIS7.
            context.Response.SubStatusCode = 99
        End Sub
    End Class

End Namespace

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;

// Module that sets Response.SubStatusCode in PostAuthenticateRequest event handler.
namespace Samples
{
    public class ModuleExampleTestCS : IHttpModule
    {
        public ModuleExampleTestCS()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.PostAuthenticateRequest += new EventHandler(PostAuthenticateRequest_Handler);
        }
        public void Dispose()
        {
        }
        public void PostAuthenticateRequest_Handler(object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpContext context = app.Context;

            // Set a SubStatusCode for Failed Request Tracing in IIS7
            context.Response.SubStatusCode = 99;
        }

    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间
StatusCode


HttpResponse ..::.SuppressContent 属性

HttpResponse
.
.
::
.
SuppressContent 属性
HttpResponse 类

获取或设置一个值，该值指示是否将 HTTP 内容发送到客户端。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property SuppressContent As Boolean
    Get
    Set
public bool SuppressContent { get; set; }
public:
property bool SuppressContent {
    bool get ();
    void set (bool value);
}
member SuppressContent : bool with get, set

属性值

类型： System Boolean
如果取消输出，则为 true；否则为 false。

下面的示例检查 IsSecureConnection 属性是否设置为 false。如果是，SuppressContent 属性就会被设置为 true，以停止发送响应。 下面的示例检查 IsSecureConnection 属性是否设置为 false。如果是，SuppressContent 属性就会被设置为 true，以停止发送响应。

' Check whether the request is sent
' over HTTPS. If not, do not return
' content to the client.
If (Request.IsSecureConnection = False) Then
    Response.SuppressContent = True
End If

// Check whether the request is sent
// over HTTPS. If not, do not send
// content to the client.
if (!Request.IsSecureConnection)
{
    Response.SuppressContent = true;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponse ..::.TrySkipIisCustomErrors 属性

HttpResponse
.
.
::
.
TrySkipIisCustomErrors 属性
HttpResponse 类

获取或设置一个值，该值指定是否禁用 IIS 7.0 自定义错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property TrySkipIisCustomErrors As Boolean
    Get
    Set
public bool TrySkipIisCustomErrors { get; set; }
public:
property bool TrySkipIisCustomErrors {
    bool get ();
    void set (bool value);
}
member TrySkipIisCustomErrors : bool with get, set

属性值

类型： System Boolean
如果禁用 IIS 自定义错误，则为 true；否则为 false。

只有当应用程序承载于 IIS 7.0 中时，才使用 TrySkipIisCustomErrors 属性。在 IIS 7.0 的传统模式中运行时，TrySkipIisCustomErrors 属性的默认值为 true。在集成模式中运行时，TrySkipIisCustomErrors 属性的默认值为 false。 只有当应用程序承载于 IIS 7.0 中时，才使用 TrySkipIisCustomErrors 属性。在 IIS 7.0 的传统模式中运行时，TrySkipIisCustomErrors 属性的默认值为 true。在集成模式中运行时，TrySkipIisCustomErrors 属性的默认值为 false。 只有当应用程序承载于 IIS 7.0 中时，才使用 TrySkipIisCustomErrors 属性。在 IIS 7.0 的传统模式中运行时，TrySkipIisCustomErrors 属性的默认值为 true。在集成模式中运行时，TrySkipIisCustomErrors 属性的默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpResponse 类
HttpResponse 成员
System.Web 命名空间


HttpResponseBase 类

HttpResponseBase 类
成员

用作一些类的基类，可提供来自 ASP.NET 操作的 HTTP 响应信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpResponseBase
public abstract class HttpResponseBase
public ref class HttpResponseBase abstract
[<AbstractClassAttribute>]
type HttpResponseBase =  class end

HttpResponseBase 类为抽象类，该类包含的成员与 HttpResponse 类相同。使用 HttpResponseBase 类可以创建一些派生类，这些派生类与 HttpResponse 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpResponseBase 类为抽象类，该类包含的成员与 HttpResponse 类相同。使用 HttpResponseBase 类可以创建一些派生类，这些派生类与 HttpResponse 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpResponseBase 类为抽象类，该类包含的成员与 HttpResponse 类相同。使用 HttpResponseBase 类可以创建一些派生类，这些派生类与 HttpResponse 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpResponseWrapper 类是从 HttpResponseBase 类派生的。HttpResponseWrapper 类用作 HttpResponse 类的包装。在运行时，通常使用 HttpResponseWrapper 类的实例调用 HttpResponse 对象的成员。 HttpResponseWrapper 类是从 HttpResponseBase 类派生的。HttpResponseWrapper 类用作 HttpResponse 类的包装。在运行时，通常使用 HttpResponseWrapper 类的实例调用 HttpResponse 对象的成员。 HttpResponseWrapper 类是从 HttpResponseBase 类派生的。HttpResponseWrapper 类用作 HttpResponse 类的包装。在运行时，通常使用 HttpResponseWrapper 类的实例调用 HttpResponse 对象的成员。

System.Web System.Web..::.HttpResponseBaseHttpResponseBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase 成员

HttpResponseBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

用作一些类的基类，可提供来自 ASP.NET 操作的 HTTP 响应信息。

HttpResponseBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpResponseBase 类
System.Web 命名空间


HttpResponseBase 构造函数

HttpResponseBase 构造函数
HttpResponseBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpResponseBase()
protected:
HttpResponseBase()
new : unit -> HttpResponseBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase 方法

HttpResponseBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

HttpResponseBase 类型公开以下成员。

名称 说明
页首

参考

HttpResponseBase 类
System.Web 命名空间


HttpResponseBase ..::.AddCacheDependency 方法

HttpResponseBase
.
.
::
.
AddCacheDependency 方法
HttpResponseBase 类

在派生类中重写时，将缓存依赖项与响应进行关联，这些依赖项使响应可以在进行缓存和指定依赖项更改时失效。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddCacheDependency ( _
    ParamArray dependencies As CacheDependency() _
)
public virtual void AddCacheDependency(
    params CacheDependency[] dependencies
)
public:
virtual void AddCacheDependency(
    ... array<CacheDependency^>^ dependencies
)
abstract AddCacheDependency :
        dependencies:CacheDependency[] -> unit
override AddCacheDependency :
        dependencies:CacheDependency[] -> unit

参数

dependencies
类型：
array<
System.Web.Caching CacheDependency
>
[]
()
[]

要添加到应用程序依赖项列表的文件、缓存键或 CacheDependency 对象。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AddCacheItemDependencies 方法

HttpResponseBase
.
.
::
.
AddCacheItemDependencies 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，使缓存的响应的有效性依赖于缓存中的其他项。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AddCacheItemDependencies 方法 (ArrayList)

HttpResponseBase
.
.
::
.
AddCacheItemDependencies 方法 (ArrayList)
HttpResponseBase 类

在派生类中重写时，使缓存的响应的有效性依赖于缓存中的指定项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddCacheItemDependencies ( _
    cacheKeys As ArrayList _
)
public virtual void AddCacheItemDependencies(
    ArrayList cacheKeys
)
public:
virtual void AddCacheItemDependencies(
    ArrayList^ cacheKeys
)
abstract AddCacheItemDependencies :
        cacheKeys:ArrayList -> unit
override AddCacheItemDependencies :
        cacheKeys:ArrayList -> unit

参数

cacheKeys
类型： System.Collections ArrayList
一个集合，包含缓存的响应所依赖的项的键。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
AddCacheItemDependencies 重载
System.Web 命名空间


HttpResponseBase ..::.AddCacheItemDependencies 方法 ( array<String >[]()[])

HttpResponseBase
.
.
::
.
AddCacheItemDependencies 方法 (
array<
String
>
[]
()
[]
)
HttpResponseBase 类

在派生类中重写时，使缓存的项的有效性依赖于缓存中的指定项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddCacheItemDependencies ( _
    cacheKeys As String() _
)
public virtual void AddCacheItemDependencies(
    string[] cacheKeys
)
public:
virtual void AddCacheItemDependencies(
    array<String^>^ cacheKeys
)
abstract AddCacheItemDependencies :
        cacheKeys:string[] -> unit
override AddCacheItemDependencies :
        cacheKeys:string[] -> unit

参数

cacheKeys
类型：
array<
System String
>
[]
()
[]

一个数组，包含缓存的响应所依赖的项的键。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
AddCacheItemDependencies 重载
System.Web 命名空间


HttpResponseBase ..::.AddCacheItemDependency 方法

HttpResponseBase
.
.
::
.
AddCacheItemDependency 方法
HttpResponseBase 类

在派生类中重写时，使缓存的响应的有效性依赖于缓存中的指定项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddCacheItemDependency ( _
    cacheKey As String _
)
public virtual void AddCacheItemDependency(
    string cacheKey
)
public:
virtual void AddCacheItemDependency(
    String^ cacheKey
)
abstract AddCacheItemDependency :
        cacheKey:string -> unit
override AddCacheItemDependency :
        cacheKey:string -> unit

参数

cacheKey
类型： System String
缓存的响应所依赖的项的键。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AddFileDependencies 方法

HttpResponseBase
.
.
::
.
AddFileDependencies 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，使缓存的响应的有效性依赖于指定的一个或多个文件。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AddFileDependencies 方法 (ArrayList)

HttpResponseBase
.
.
::
.
AddFileDependencies 方法 (ArrayList)
HttpResponseBase 类

在派生类中重写时，将文件名添加到当前响应所依赖的文件名的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddFileDependencies ( _
    filenames As ArrayList _
)
public virtual void AddFileDependencies(
    ArrayList filenames
)
public:
virtual void AddFileDependencies(
    ArrayList^ filenames
)
abstract AddFileDependencies :
        filenames:ArrayList -> unit
override AddFileDependencies :
        filenames:ArrayList -> unit

参数

filenames
类型： System.Collections ArrayList
要添加的文件的文件名。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
AddFileDependencies 重载
System.Web 命名空间


HttpResponseBase ..::.AddFileDependencies 方法 ( array<String >[]()[])

HttpResponseBase
.
.
::
.
AddFileDependencies 方法 (
array<
String
>
[]
()
[]
)
HttpResponseBase 类

在派生类中重写时，将文件名的数组添加到当前响应所依赖的文件名的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddFileDependencies ( _
    filenames As String() _
)
public virtual void AddFileDependencies(
    string[] filenames
)
public:
virtual void AddFileDependencies(
    array<String^>^ filenames
)
abstract AddFileDependencies :
        filenames:string[] -> unit
override AddFileDependencies :
        filenames:string[] -> unit

参数

filenames
类型：
array<
System String
>
[]
()
[]

要添加的文件名的数组。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
AddFileDependencies 重载
System.Web 命名空间


HttpResponseBase ..::.AddFileDependency 方法

HttpResponseBase
.
.
::
.
AddFileDependency 方法
HttpResponseBase 类

在派生类中重写时，将单个文件名添加到当前响应所依赖的文件名的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddFileDependency ( _
    filename As String _
)
public virtual void AddFileDependency(
    string filename
)
public:
virtual void AddFileDependency(
    String^ filename
)
abstract AddFileDependency :
        filename:string -> unit
override AddFileDependency :
        filename:string -> unit

参数

filename
类型： System String
要添加的文件名。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AddHeader 方法

HttpResponseBase
.
.
::
.
AddHeader 方法
HttpResponseBase 类

在派生类中重写时，将 HTTP 标头添加到当前响应。提供此方法是为了与 ASP 的早期版本兼容。 在派生类中重写时，将 HTTP 标头添加到当前响应。提供此方法是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddHeader ( _
    name As String, _
    value As String _
)
public virtual void AddHeader(
    string name,
    string value
)
public:
virtual void AddHeader(
    String^ name,
    String^ value
)
abstract AddHeader :
        name:string *
        value:string -> unit
override AddHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要添加 value 的 HTTP 头名称。
value
类型： System String
要添加到头中的字符串。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AppendCookie 方法

HttpResponseBase
.
.
::
.
AppendCookie 方法
HttpResponseBase 类

在派生类中重写时，将 HTTP Cookie 添加到 HTTP 响应 Cookie 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AppendCookie ( _
    cookie As HttpCookie _
)
public virtual void AppendCookie(
    HttpCookie cookie
)
public:
virtual void AppendCookie(
    HttpCookie^ cookie
)
abstract AppendCookie :
        cookie:HttpCookie -> unit
override AppendCookie :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
要添加到响应的 Cookie。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AppendHeader 方法

HttpResponseBase
.
.
::
.
AppendHeader 方法
HttpResponseBase 类

在派生类中重写时，将 HTTP 标头添加到当前响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AppendHeader ( _
    name As String, _
    value As String _
)
public virtual void AppendHeader(
    string name,
    string value
)
public:
virtual void AppendHeader(
    String^ name,
    String^ value
)
abstract AppendHeader :
        name:string *
        value:string -> unit
override AppendHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要添加到当前响应的 HTTP 标头的名称。
value
类型： System String
标头的值。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.AppendToLog 方法

HttpResponseBase
.
.
::
.
AppendToLog 方法
HttpResponseBase 类

在派生类中重写时，将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AppendToLog ( _
    param As String _
)
public virtual void AppendToLog(
    string param
)
public:
virtual void AppendToLog(
    String^ param
)
abstract AppendToLog :
        param:string -> unit
override AppendToLog :
        param:string -> unit

参数

param
类型： System String
要添加到日志文件的文本。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.ApplyAppPathModifier 方法

HttpResponseBase
.
.
::
.
ApplyAppPathModifier 方法
HttpResponseBase 类

在派生类中重写时，如果会话使用的是 Cookieless 会话状态，则将会话 ID 添加到虚拟路径，并返回组合后的路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function ApplyAppPathModifier ( _
    virtualPath As String _
) As String
public virtual string ApplyAppPathModifier(
    string virtualPath
)
public:
virtual String^ ApplyAppPathModifier(
    String^ virtualPath
)
abstract ApplyAppPathModifier :
        virtualPath:string -> string
override ApplyAppPathModifier :
        virtualPath:string -> string

参数

virtualPath
类型： System String
资源的虚拟路径。

返回值

类型： System String
插入了会话 ID 的虚拟路径。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.BinaryWrite 方法

HttpResponseBase
.
.
::
.
BinaryWrite 方法
HttpResponseBase 类

在派生类中重写时，将二进制字符的字符串写入 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub BinaryWrite ( _
    buffer As Byte() _
)
public virtual void BinaryWrite(
    byte[] buffer
)
public:
virtual void BinaryWrite(
    array<unsigned char>^ buffer
)
abstract BinaryWrite :
        buffer:byte[] -> unit
override BinaryWrite :
        buffer:byte[] -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

要写入当前响应的二进制字符。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Clear 方法

HttpResponseBase
.
.
::
.
Clear 方法
HttpResponseBase 类

在派生类中重写时，从当前响应中清除所有标头和内容输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Clear
public virtual void Clear()
public:
virtual void Clear()
abstract Clear : unit -> unit
override Clear : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.ClearContent 方法

HttpResponseBase
.
.
::
.
ClearContent 方法
HttpResponseBase 类

在派生类中重写时，从当前响应中清除所有内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub ClearContent
public virtual void ClearContent()
public:
virtual void ClearContent()
abstract ClearContent : unit -> unit
override ClearContent : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.ClearHeaders 方法

HttpResponseBase
.
.
::
.
ClearHeaders 方法
HttpResponseBase 类

在派生类中重写时，从当前响应中清除所有标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub ClearHeaders
public virtual void ClearHeaders()
public:
virtual void ClearHeaders()
abstract ClearHeaders : unit -> unit
override ClearHeaders : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Close 方法

HttpResponseBase
.
.
::
.
Close 方法
HttpResponseBase 类

在派生类中重写时，关闭到客户端的套接字连接。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Close
public virtual void Close()
public:
virtual void Close()
abstract Close : unit -> unit
override Close : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.DisableKernelCache 方法

HttpResponseBase
.
.
::
.
DisableKernelCache 方法
HttpResponseBase 类

在派生类中重写时，对当前响应禁用内核缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub DisableKernelCache
public virtual void DisableKernelCache()
public:
virtual void DisableKernelCache()
abstract DisableKernelCache : unit -> unit
override DisableKernelCache : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.End 方法

HttpResponseBase
.
.
::
.
End 方法
HttpResponseBase 类

在派生类中重写时，将当前缓冲的所有输出发送至客户端，停止执行请求的进程，并引发 EndRequest 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub End
public virtual void End()
public:
virtual void End()
abstract End : unit -> unit
override End : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Flush 方法

HttpResponseBase
.
.
::
.
Flush 方法
HttpResponseBase 类

在派生类中重写时，将当前缓冲的所有输出发送至客户端。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Flush
public virtual void Flush()
public:
virtual void Flush()
abstract Flush : unit -> unit
override Flush : unit -> unit
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Pics 方法

HttpResponseBase
.
.
::
.
Pics 方法
HttpResponseBase 类

在派生类中重写时，将 HTTP PICS-Label 标头追加到当前响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Pics ( _
    value As String _
)
public virtual void Pics(
    string value
)
public:
virtual void Pics(
    String^ value
)
abstract Pics :
        value:string -> unit
override Pics :
        value:string -> unit

参数

value
类型： System String
要添加到 PICS-Label 标头的字符串。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Redirect 方法

HttpResponseBase
.
.
::
.
Redirect 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，将请求重定向至另一个 URL。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Redirect 方法 (String)

HttpResponseBase
.
.
::
.
Redirect 方法 (String)
HttpResponseBase 类

在派生类中重写时，将请求重定向至指定的 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Redirect ( _
    url As String _
)
public virtual void Redirect(
    string url
)
public:
virtual void Redirect(
    String^ url
)
abstract Redirect :
        url:string -> unit
override Redirect :
        url:string -> unit

参数

url
类型： System String
目标位置。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
Redirect 重载
System.Web 命名空间


HttpResponseBase ..::.Redirect 方法 (String, Boolean)

HttpResponseBase
.
.
::
.
Redirect 方法 (String, Boolean)
HttpResponseBase 类

在派生类中重写时，将请求重定向至指定的 URL，并指定是否应终止当前进程的执行。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Redirect ( _
    url As String, _
    endResponse As Boolean _
)
public virtual void Redirect(
    string url,
    bool endResponse
)
public:
virtual void Redirect(
    String^ url,
    bool endResponse
)
abstract Redirect :
        url:string *
        endResponse:bool -> unit
override Redirect :
        url:string *
        endResponse:bool -> unit

参数

url
类型： System String
目标位置。
endResponse
类型： System Boolean
如果为 true，则终止当前进程。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
Redirect 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectPermanent 方法

HttpResponseBase
.
.
::
.
RedirectPermanent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，执行从所请求 URL 到指定 URL 的永久重定向。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.RedirectPermanent 方法 (String)

HttpResponseBase
.
.
::
.
RedirectPermanent 方法 (String)
HttpResponseBase 类

在派生类中重写时，执行从所请求 URL 到指定 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectPermanent ( _
    url As String _
)
public virtual void RedirectPermanent(
    string url
)
public:
virtual void RedirectPermanent(
    String^ url
)
abstract RedirectPermanent :
        url:string -> unit
override RedirectPermanent :
        url:string -> unit

参数

url
类型： System String
将请求重定向至的位置。
异常 | 条件
NotImplementedException | 始终为 。

RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。

调用 RedirectPermanent(String) 方法将终止其余响应。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectPermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectPermanent 方法 (String, Boolean)

HttpResponseBase
.
.
::
.
RedirectPermanent 方法 (String, Boolean)
HttpResponseBase 类

在派生类中重写时，执行从所请求 URL 到指定 URL 的永久重定向，并提供用于完成响应的选项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectPermanent ( _
    url As String, _
    endResponse As Boolean _
)
public virtual void RedirectPermanent(
    string url,
    bool endResponse
)
public:
virtual void RedirectPermanent(
    String^ url,
    bool endResponse
)
abstract RedirectPermanent :
        url:string *
        endResponse:bool -> unit
override RedirectPermanent :
        url:string *
        endResponse:bool -> unit

参数

url
类型： System String
将请求重定向至的位置。
endResponse
类型： System Boolean
若为 true，则终止响应；否则为 false。默认值为 false。 若为 true，则终止响应；否则为 false。默认值为 false。
异常 | 条件
NotImplementedException | 始终为 。

RedirectPermanent(String, Boolean) 重载方法在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 重载方法在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 重载方法在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 重载方法在响应中提供一个 301 HTTP 状态代码，并且包含将请求重定向到的 URL。此重载还提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectPermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoute 方法

HttpResponseBase
.
.
::
.
RedirectToRoute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，使用路由参数值和/或路由名称将请求重定向到新 URL。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoute 方法 (Object)

HttpResponseBase
.
.
::
.
RedirectToRoute 方法 (Object)
HttpResponseBase 类

在派生类中重写时，使用路由参数值将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoute ( _
    routeValues As Object _
)
public virtual void RedirectToRoute(
    Object routeValues
)
public:
virtual void RedirectToRoute(
    Object^ routeValues
)
abstract RedirectToRoute :
        routeValues:Object -> unit
override RedirectToRoute :
        routeValues:Object -> unit

参数

routeValues
类型： System Object
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoute(Object)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoute 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoute 方法 (RouteValueDictionary)

HttpResponseBase
.
.
::
.
RedirectToRoute 方法 (RouteValueDictionary)
HttpResponseBase 类

在派生类中重写时，使用路由参数值将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoute ( _
    routeValues As RouteValueDictionary _
)
public virtual void RedirectToRoute(
    RouteValueDictionary routeValues
)
public:
virtual void RedirectToRoute(
    RouteValueDictionary^ routeValues
)
abstract RedirectToRoute :
        routeValues:RouteValueDictionary -> unit
override RedirectToRoute :
        routeValues:RouteValueDictionary -> unit

参数

routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoute(RouteValueDictionary)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoute 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoute 方法 (String)

HttpResponseBase
.
.
::
.
RedirectToRoute 方法 (String)
HttpResponseBase 类

在派生类中重写时，使用路由名称将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoute ( _
    routeName As String _
)
public virtual void RedirectToRoute(
    string routeName
)
public:
virtual void RedirectToRoute(
    String^ routeName
)
abstract RedirectToRoute :
        routeName:string -> unit
override RedirectToRoute :
        routeName:string -> unit

参数

routeName
类型： System String
路由的名称。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoute(String)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoute 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoute 方法 (String, Object)

HttpResponseBase
.
.
::
.
RedirectToRoute 方法 (String, Object)
HttpResponseBase 类

在派生类中重写时，使用路由参数值和路由名称将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoute ( _
    routeName As String, _
    routeValues As Object _
)
public virtual void RedirectToRoute(
    string routeName,
    Object routeValues
)
public:
virtual void RedirectToRoute(
    String^ routeName,
    Object^ routeValues
)
abstract RedirectToRoute :
        routeName:string *
        routeValues:Object -> unit
override RedirectToRoute :
        routeName:string *
        routeValues:Object -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System Object
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoute(String, Object)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoute 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoute 方法 (String, RouteValueDictionary)

HttpResponseBase
.
.
::
.
RedirectToRoute 方法 (String, RouteValueDictionary)
HttpResponseBase 类

在派生类中重写时，使用路由参数值和路由名称将请求重定向到新 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoute ( _
    routeName As String, _
    routeValues As RouteValueDictionary _
)
public virtual void RedirectToRoute(
    string routeName,
    RouteValueDictionary routeValues
)
public:
virtual void RedirectToRoute(
    String^ routeName,
    RouteValueDictionary^ routeValues
)
abstract RedirectToRoute :
        routeName:string *
        routeValues:RouteValueDictionary -> unit
override RedirectToRoute :
        routeName:string *
        routeValues:RouteValueDictionary -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoute(String, RouteValueDictionary)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoute 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoutePermanent 方法

HttpResponseBase
.
.
::
.
RedirectToRoutePermanent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，使用路由参数值和/或路由名称执行从所请求 URL 到新 URL 的永久重定向。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoutePermanent 方法 (Object)

HttpResponseBase
.
.
::
.
RedirectToRoutePermanent 方法 (Object)
HttpResponseBase 类

在派生类中重写时，使用路由参数值执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoutePermanent ( _
    routeValues As Object _
)
public virtual void RedirectToRoutePermanent(
    Object routeValues
)
public:
virtual void RedirectToRoutePermanent(
    Object^ routeValues
)
abstract RedirectToRoutePermanent :
        routeValues:Object -> unit
override RedirectToRoutePermanent :
        routeValues:Object -> unit

参数

routeValues
类型： System Object
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoutePermanent(Object)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoutePermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoutePermanent 方法 (RouteValueDictionary)

HttpResponseBase
.
.
::
.
RedirectToRoutePermanent 方法 (RouteValueDictionary)
HttpResponseBase 类

在派生类中重写时，使用路由参数值执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoutePermanent ( _
    routeValues As RouteValueDictionary _
)
public virtual void RedirectToRoutePermanent(
    RouteValueDictionary routeValues
)
public:
virtual void RedirectToRoutePermanent(
    RouteValueDictionary^ routeValues
)
abstract RedirectToRoutePermanent :
        routeValues:RouteValueDictionary -> unit
override RedirectToRoutePermanent :
        routeValues:RouteValueDictionary -> unit

参数

routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoutePermanent(RouteValueDictionary)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoutePermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoutePermanent 方法 (String)

HttpResponseBase
.
.
::
.
RedirectToRoutePermanent 方法 (String)
HttpResponseBase 类

在派生类中重写时，使用路由名称执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoutePermanent ( _
    routeName As String _
)
public virtual void RedirectToRoutePermanent(
    string routeName
)
public:
virtual void RedirectToRoutePermanent(
    String^ routeName
)
abstract RedirectToRoutePermanent :
        routeName:string -> unit
override RedirectToRoutePermanent :
        routeName:string -> unit

参数

routeName
类型： System String
路由的名称。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoutePermanent(String)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoutePermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoutePermanent 方法 (String, Object)

HttpResponseBase
.
.
::
.
RedirectToRoutePermanent 方法 (String, Object)
HttpResponseBase 类

在派生类中重写时，使用路由参数值以及与新 URL 对应的路由的名称执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoutePermanent ( _
    routeName As String, _
    routeValues As Object _
)
public virtual void RedirectToRoutePermanent(
    string routeName,
    Object routeValues
)
public:
virtual void RedirectToRoutePermanent(
    String^ routeName,
    Object^ routeValues
)
abstract RedirectToRoutePermanent :
        routeName:string *
        routeValues:Object -> unit
override RedirectToRoutePermanent :
        routeName:string *
        routeValues:Object -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System Object
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoutePermanent(String, Object)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoutePermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RedirectToRoutePermanent 方法 (String, RouteValueDictionary)

HttpResponseBase
.
.
::
.
RedirectToRoutePermanent 方法 (String, RouteValueDictionary)
HttpResponseBase 类

在派生类中重写时，使用路由参数值和路由名称执行从所请求 URL 到新 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RedirectToRoutePermanent ( _
    routeName As String, _
    routeValues As RouteValueDictionary _
)
public virtual void RedirectToRoutePermanent(
    string routeName,
    RouteValueDictionary routeValues
)
public:
virtual void RedirectToRoutePermanent(
    String^ routeName,
    RouteValueDictionary^ routeValues
)
abstract RedirectToRoutePermanent :
        routeName:string *
        routeValues:RouteValueDictionary -> unit
override RedirectToRoutePermanent :
        routeName:string *
        routeValues:RouteValueDictionary -> unit

参数

routeName
类型： System String
路由的名称。
routeValues
类型： System.Web.Routing RouteValueDictionary
路由参数值。
异常 | 条件
NotImplementedException | 始终为 。

有关此成员的信息，请参见 HttpResponse..::.RedirectToRoutePermanent(String, RouteValueDictionary)。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RedirectToRoutePermanent 重载
System.Web 命名空间


HttpResponseBase ..::.RemoveOutputCacheItem 方法

HttpResponseBase
.
.
::
.
RemoveOutputCacheItem 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，使用默认的输出缓存提供程序从输出缓存中移除缓存项。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.RemoveOutputCacheItem 方法 (String)

HttpResponseBase
.
.
::
.
RemoveOutputCacheItem 方法 (String)
HttpResponseBase 类

在派生类中重写时，从缓存中移除与指定的路径关联的所有缓存项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveOutputCacheItem ( _
    path As String _
)
public virtual void RemoveOutputCacheItem(
    string path
)
public:
virtual void RemoveOutputCacheItem(
    String^ path
)
abstract RemoveOutputCacheItem :
        path:string -> unit
override RemoveOutputCacheItem :
        path:string -> unit

参数

path
类型： System String
要从缓存中移除的项的虚拟绝对路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
RemoveOutputCacheItem 重载
System.Web 命名空间


HttpResponseBase ..::.RemoveOutputCacheItem 方法 (String, String)

HttpResponseBase
.
.
::
.
RemoveOutputCacheItem 方法 (String, String)
HttpResponseBase 类

在派生类中重写时，使用指定的输出缓存提供程序移除与指定路径关联的所有输出缓存项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveOutputCacheItem ( _
    path As String, _
    providerName As String _
)
public virtual void RemoveOutputCacheItem(
    string path,
    string providerName
)
public:
virtual void RemoveOutputCacheItem(
    String^ path,
    String^ providerName
)
abstract RemoveOutputCacheItem :
        path:string *
        providerName:string -> unit
override RemoveOutputCacheItem :
        path:string *
        providerName:string -> unit

参数

path
类型： System String
从缓存中删除的项的虚拟绝对路径。
providerName
类型： System String
用于删除与指定路径关联的输出缓存项的提供程序。
异常 | 条件
NotImplementedException | 始终为 。

调用此方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。若要删除与默认输出缓存提供程序关联的输出缓存项，请调用 RemoveOutputCacheItem(String) 方法重载。 调用此方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。若要删除与默认输出缓存提供程序关联的输出缓存项，请调用 RemoveOutputCacheItem(String) 方法重载。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseBase 类
HttpResponseBase 成员
RemoveOutputCacheItem 重载
System.Web 命名空间


HttpResponseBase ..::.SetCookie 方法

HttpResponseBase
.
.
::
.
SetCookie 方法
HttpResponseBase 类

在派生类中重写时，更新 Cookie 集合中的现有 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetCookie ( _
    cookie As HttpCookie _
)
public virtual void SetCookie(
    HttpCookie cookie
)
public:
virtual void SetCookie(
    HttpCookie^ cookie
)
abstract SetCookie :
        cookie:HttpCookie -> unit
override SetCookie :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
集合中要更新的 Cookie。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.TransmitFile 方法

HttpResponseBase
.
.
::
.
TransmitFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，将指定文件写入 HTTP 响应输出流（不在内存中进行缓冲）。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.TransmitFile 方法 (String)

HttpResponseBase
.
.
::
.
TransmitFile 方法 (String)
HttpResponseBase 类

在派生类中重写时，将指定文件写入 HTTP 响应输出流（不在内存中进行缓冲）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub TransmitFile ( _
    filename As String _
)
public virtual void TransmitFile(
    string filename
)
public:
virtual void TransmitFile(
    String^ filename
)
abstract TransmitFile :
        filename:string -> unit
override TransmitFile :
        filename:string -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
TransmitFile 重载
System.Web 命名空间


HttpResponseBase ..::.TransmitFile 方法 (String, Int64, Int64)

HttpResponseBase
.
.
::
.
TransmitFile 方法 (String, Int64, Int64)
HttpResponseBase 类

在派生类中重写时，将文件的指定部分写入 HTTP 响应输出流（不在内存中进行缓冲）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub TransmitFile ( _
    filename As String, _
    offset As Long, _
    length As Long _
)
public virtual void TransmitFile(
    string filename,
    long offset,
    long length
)
public:
virtual void TransmitFile(
    String^ filename,
    long long offset,
    long long length
)
abstract TransmitFile :
        filename:string *
        offset:int64 *
        length:int64 -> unit
override TransmitFile :
        filename:string *
        offset:int64 *
        length:int64 -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
offset
类型： System Int64
文件中开始写入的位置。
length
类型： System Int64
要从 offset 开始写入的字节数。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
TransmitFile 重载
System.Web 命名空间


HttpResponseBase ..::.Write 方法

HttpResponseBase
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，将信息写入 HTTP 响应输出流。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Write 方法 (Char)

HttpResponseBase
.
.
::
.
Write 方法 (Char)
HttpResponseBase 类

在派生类中重写时，将字符写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Write ( _
    ch As Char _
)
public virtual void Write(
    char ch
)
public:
virtual void Write(
    wchar_t ch
)
abstract Write :
        ch:char -> unit
override Write :
        ch:char -> unit

参数

ch
类型： System Char
要写入 HTTP 输出流的字符。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
Write 重载
System.Web 命名空间


HttpResponseBase ..::.Write 方法 (Object)

HttpResponseBase
.
.
::
.
Write 方法 (Object)
HttpResponseBase 类

在派生类中重写时，将指定对象写入 HTTP 响应流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Write ( _
    obj As Object _
)
public virtual void Write(
    Object obj
)
public:
virtual void Write(
    Object^ obj
)
abstract Write :
        obj:Object -> unit
override Write :
        obj:Object -> unit

参数

obj
类型： System Object
要写入 HTTP 输出流的对象。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
Write 重载
System.Web 命名空间


HttpResponseBase ..::.Write 方法 (String)

HttpResponseBase
.
.
::
.
Write 方法 (String)
HttpResponseBase 类

在派生类中重写时，将指定字符串写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Write ( _
    s As String _
)
public virtual void Write(
    string s
)
public:
virtual void Write(
    String^ s
)
abstract Write :
        s:string -> unit
override Write :
        s:string -> unit

参数

s
类型： System String
要写入 HTTP 输出流的字符串。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
Write 重载
System.Web 命名空间


HttpResponseBase ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

HttpResponseBase
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
HttpResponseBase 类

在派生类中重写时，将指定字符数组写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public virtual void Write(
    char[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
)
abstract Write :
        buffer:char[] *
        index:int *
        count:int -> unit
override Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

要写入的字符数组。
index
类型： System Int32
字符数组中开始进行写入的位置。
count
类型： System Int32
要从 index 开始写入的字符数。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
Write 重载
System.Web 命名空间


HttpResponseBase ..::.WriteFile 方法

HttpResponseBase
.
.
::
.
WriteFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

在派生类中重写时，将指定文件写入 HTTP 响应输出流。

名称 说明
页首

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.WriteFile 方法 (String)

HttpResponseBase
.
.
::
.
WriteFile 方法 (String)
HttpResponseBase 类

在派生类中重写时，将指定文件的内容作为文件块写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub WriteFile ( _
    filename As String _
)
public virtual void WriteFile(
    string filename
)
public:
virtual void WriteFile(
    String^ filename
)
abstract WriteFile :
        filename:string -> unit
override WriteFile :
        filename:string -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
WriteFile 重载
System.Web 命名空间


HttpResponseBase ..::.WriteFile 方法 (String, Boolean)

HttpResponseBase
.
.
::
.
WriteFile 方法 (String, Boolean)
HttpResponseBase 类

在派生类中重写时，将指定文件的内容写入 HTTP 响应输出流，并指定是否以内存块的形式写入内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub WriteFile ( _
    filename As String, _
    readIntoMemory As Boolean _
)
public virtual void WriteFile(
    string filename,
    bool readIntoMemory
)
public:
virtual void WriteFile(
    String^ filename,
    bool readIntoMemory
)
abstract WriteFile :
        filename:string *
        readIntoMemory:bool -> unit
override WriteFile :
        filename:string *
        readIntoMemory:bool -> unit

参数

filename
类型： System String
要写入当前响应的文件的名称。
readIntoMemory
类型： System Boolean
如果为 true，则将文件写入内存块。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
WriteFile 重载
System.Web 命名空间


HttpResponseBase ..::.WriteFile 方法 (IntPtr, Int64, Int64)

HttpResponseBase
.
.
::
.
WriteFile 方法 (IntPtr, Int64, Int64)
HttpResponseBase 类

在派生类中重写时，将指定文件写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub WriteFile ( _
    fileHandle As IntPtr, _
    offset As Long, _
    size As Long _
)
public virtual void WriteFile(
    IntPtr fileHandle,
    long offset,
    long size
)
public:
virtual void WriteFile(
    IntPtr fileHandle,
    long long offset,
    long long size
)
abstract WriteFile :
        fileHandle:IntPtr *
        offset:int64 *
        size:int64 -> unit
override WriteFile :
        fileHandle:IntPtr *
        offset:int64 *
        size:int64 -> unit

参数

fileHandle
类型： System IntPtr
要写入 HTTP 输出流的文件的文件句柄。
offset
类型： System Int64
文件中开始写入的位置。
size
类型： System Int64
要从 offset 开始写入的字节数。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
WriteFile 重载
System.Web 命名空间


HttpResponseBase ..::.WriteFile 方法 (String, Int64, Int64)

HttpResponseBase
.
.
::
.
WriteFile 方法 (String, Int64, Int64)
HttpResponseBase 类

在派生类中重写时，将指定文件写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub WriteFile ( _
    filename As String, _
    offset As Long, _
    size As Long _
)
public virtual void WriteFile(
    string filename,
    long offset,
    long size
)
public:
virtual void WriteFile(
    String^ filename,
    long long offset,
    long long size
)
abstract WriteFile :
        filename:string *
        offset:int64 *
        size:int64 -> unit
override WriteFile :
        filename:string *
        offset:int64 *
        size:int64 -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
offset
类型： System Int64
文件中开始写入的位置。
size
类型： System Int64
要从 offset 开始写入的字节数。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
WriteFile 重载
System.Web 命名空间


HttpResponseBase ..::.WriteSubstitution 方法

HttpResponseBase
.
.
::
.
WriteSubstitution 方法
HttpResponseBase 类

在派生类中重写时，将替换块插入响应中，这样可以动态生成缓存的输出响应的区域。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub WriteSubstitution ( _
    callback As HttpResponseSubstitutionCallback _
)
public virtual void WriteSubstitution(
    HttpResponseSubstitutionCallback callback
)
public:
virtual void WriteSubstitution(
    HttpResponseSubstitutionCallback^ callback
)
abstract WriteSubstitution :
        callback:HttpResponseSubstitutionCallback -> unit
override WriteSubstitution :
        callback:HttpResponseSubstitutionCallback -> unit

参数

callback
类型： System.Web HttpResponseSubstitutionCallback
要替换的方法、用户控件或对象。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase 属性

HttpResponseBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseBase 类

HttpResponseBase 类型公开以下成员。

名称 说明
页首

参考

HttpResponseBase 类
System.Web 命名空间


HttpResponseBase ..::.Buffer 属性

HttpResponseBase
.
.
::
.
Buffer 属性
HttpResponseBase 类

在派生类中重写时，获取或设置一个值，该值指示是否缓冲输出并在整个响应结束处理后发送该输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Buffer As Boolean
    Get
    Set
public virtual bool Buffer { get; set; }
public:
virtual property bool Buffer {
    bool get ();
    void set (bool value);
}
abstract Buffer : bool with get, set
override Buffer : bool with get, set

属性值

类型： System Boolean
如果缓冲输出，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 总是。

HttpResponseBase 类的 Buffer 属性已否决（改为使用 BufferOutput 属性），且该属性仅为与早期版本的 ASP 兼容而提供。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.BufferOutput 属性

HttpResponseBase
.
.
::
.
BufferOutput 属性
HttpResponseBase 类

在派生类中重写时，获取或设置一个值，该值指示是否缓冲输出并在整个页面结束处理后发送该输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property BufferOutput As Boolean
    Get
    Set
public virtual bool BufferOutput { get; set; }
public:
virtual property bool BufferOutput {
    bool get ();
    void set (bool value);
}
abstract BufferOutput : bool with get, set
override BufferOutput : bool with get, set

属性值

类型： System Boolean
如果缓冲输出，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Cache 属性

HttpResponseBase
.
.
::
.
Cache 属性
HttpResponseBase 类

在派生类中重写时，获取当前网页的缓存策略（如过期时间、隐私设置和 vary 子句）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Cache As HttpCachePolicyBase
    Get
public virtual HttpCachePolicyBase Cache { get; }
public:
virtual property HttpCachePolicyBase^ Cache {
    HttpCachePolicyBase^ get ();
}
abstract Cache : HttpCachePolicyBase
override Cache : HttpCachePolicyBase

属性值

类型： System.Web HttpCachePolicyBase
当前响应的缓存策略。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.CacheControl 属性

HttpResponseBase
.
.
::
.
CacheControl 属性
HttpResponseBase 类

在派生类中重写时，获取或设置与 HttpCacheability 枚举值之一匹配的 Cache-Control HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property CacheControl As String
    Get
    Set
public virtual string CacheControl { get; set; }
public:
virtual property String^ CacheControl {
    String^ get ();
    void set (String^ value);
}
abstract CacheControl : string with get, set
override CacheControl : string with get, set

属性值

类型： System String
当前响应的缓存策略。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Charset 属性

HttpResponseBase
.
.
::
.
Charset 属性
HttpResponseBase 类

在派生类中重写时，获取或设置当前响应的 HTTP 字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Charset As String
    Get
    Set
public virtual string Charset { get; set; }
public:
virtual property String^ Charset {
    String^ get ();
    void set (String^ value);
}
abstract Charset : string with get, set
override Charset : string with get, set

属性值

类型： System String
当前响应的 HTTP 字符集。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.ContentEncoding 属性

HttpResponseBase
.
.
::
.
ContentEncoding 属性
HttpResponseBase 类

在派生类中重写时，获取或设置当前响应的内容编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ContentEncoding As Encoding
    Get
    Set
public virtual Encoding ContentEncoding { get; set; }
public:
virtual property Encoding^ ContentEncoding {
    Encoding^ get ();
    void set (Encoding^ value);
}
abstract ContentEncoding : Encoding with get, set
override ContentEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
有关当前响应的内容编码的信息。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.ContentType 属性

HttpResponseBase
.
.
::
.
ContentType 属性
HttpResponseBase 类

在派生类中重写时，获取或设置当前响应的 HTTP MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ContentType As String
    Get
    Set
public virtual string ContentType { get; set; }
public:
virtual property String^ ContentType {
    String^ get ();
    void set (String^ value);
}
abstract ContentType : string with get, set
override ContentType : string with get, set

属性值

类型： System String
当前响应的 HTTP MIME 类型。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Cookies 属性

HttpResponseBase
.
.
::
.
Cookies 属性
HttpResponseBase 类

在派生类中重写时，获取响应 Cookie 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Cookies As HttpCookieCollection
    Get
public virtual HttpCookieCollection Cookies { get; }
public:
virtual property HttpCookieCollection^ Cookies {
    HttpCookieCollection^ get ();
}
abstract Cookies : HttpCookieCollection
override Cookies : HttpCookieCollection

属性值

类型： System.Web HttpCookieCollection
响应 Cookie 集合。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Expires 属性

HttpResponseBase
.
.
::
.
Expires 属性
HttpResponseBase 类

在派生类中重写时，获取或设置在客户端或代理上缓存的页面过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。为兼容 Active Server Pages (ASP) 的早期版本，提供了 Expires。 在派生类中重写时，获取或设置在客户端或代理上缓存的页面过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。为兼容 Active Server Pages (ASP) 的早期版本，提供了 Expires。 在派生类中重写时，获取或设置在客户端或代理上缓存的页面过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。为兼容 Active Server Pages (ASP) 的早期版本，提供了 Expires。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Expires As Integer
    Get
    Set
public virtual int Expires { get; set; }
public:
virtual property int Expires {
    int get ();
    void set (int value);
}
abstract Expires : int with get, set
override Expires : int with get, set

属性值

类型： System Int32
在页过期之前的分钟数。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.ExpiresAbsolute 属性

HttpResponseBase
.
.
::
.
ExpiresAbsolute 属性
HttpResponseBase 类

在派生类中重写时，获取或设置缓存信息在缓存中过期的绝对日期和时间。为兼容 Active Server Pages (ASP) 的早期版本，提供了 ExpiresAbsolute。 在派生类中重写时，获取或设置缓存信息在缓存中过期的绝对日期和时间。为兼容 Active Server Pages (ASP) 的早期版本，提供了 ExpiresAbsolute。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ExpiresAbsolute As DateTime
    Get
    Set
public virtual DateTime ExpiresAbsolute { get; set; }
public:
virtual property DateTime ExpiresAbsolute {
    DateTime get ();
    void set (DateTime value);
}
abstract ExpiresAbsolute : DateTime with get, set
override ExpiresAbsolute : DateTime with get, set

属性值

类型： System DateTime
该页过期时的日期和时间。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Filter 属性

HttpResponseBase
.
.
::
.
Filter 属性
HttpResponseBase 类

在派生类中重写时，获取或设置用于在传输之前修改 HTTP 实体正文的筛选器对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Filter As Stream
    Get
    Set
public virtual Stream Filter { get; set; }
public:
virtual property Stream^ Filter {
    Stream^ get ();
    void set (Stream^ value);
}
abstract Filter : Stream with get, set
override Filter : Stream with get, set

属性值

类型： System.IO Stream
用作输出筛选器的对象。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.HeaderEncoding 属性

HttpResponseBase
.
.
::
.
HeaderEncoding 属性
HttpResponseBase 类

在派生类中重写时，获取或设置当前响应的标头的编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property HeaderEncoding As Encoding
    Get
    Set
public virtual Encoding HeaderEncoding { get; set; }
public:
virtual property Encoding^ HeaderEncoding {
    Encoding^ get ();
    void set (Encoding^ value);
}
abstract HeaderEncoding : Encoding with get, set
override HeaderEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
有关当前标头的编码的信息。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Headers 属性

HttpResponseBase
.
.
::
.
Headers 属性
HttpResponseBase 类

在派生类中重写时，获取响应标头的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Headers As NameValueCollection
    Get
public virtual NameValueCollection Headers { get; }
public:
virtual property NameValueCollection^ Headers {
    NameValueCollection^ get ();
}
abstract Headers : NameValueCollection
override Headers : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
响应标头。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.IsClientConnected 属性

HttpResponseBase
.
.
::
.
IsClientConnected 属性
HttpResponseBase 类

在派生类中重写时，获取一个值，该值指示客户端是否连接至服务器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsClientConnected As Boolean
    Get
public virtual bool IsClientConnected { get; }
public:
virtual property bool IsClientConnected {
    bool get ();
}
abstract IsClientConnected : bool
override IsClientConnected : bool

属性值

类型： System Boolean
如果客户端当前仍在连接，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.IsRequestBeingRedirected 属性

HttpResponseBase
.
.
::
.
IsRequestBeingRedirected 属性
HttpResponseBase 类

在派生类中重写时，获取一个值，该值指示客户端是否重定向至新位置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsRequestBeingRedirected As Boolean
    Get
public virtual bool IsRequestBeingRedirected { get; }
public:
virtual property bool IsRequestBeingRedirected {
    bool get ();
}
abstract IsRequestBeingRedirected : bool
override IsRequestBeingRedirected : bool

属性值

类型： System Boolean
如果位置响应标头的值与当前位置不同，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Output 属性

HttpResponseBase
.
.
::
.
Output 属性
HttpResponseBase 类

在派生类中重写时，获取实现到 HTTP 响应流的文本输出的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Output As TextWriter
    Get
public virtual TextWriter Output { get; }
public:
virtual property TextWriter^ Output {
    TextWriter^ get ();
}
abstract Output : TextWriter
override Output : TextWriter

属性值

类型： System.IO TextWriter
实现到客户端的输出的对象。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.OutputStream 属性

HttpResponseBase
.
.
::
.
OutputStream 属性
HttpResponseBase 类

在派生类中重写时，启用到传出 HTTP 内容主体的二进制输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property OutputStream As Stream
    Get
public virtual Stream OutputStream { get; }
public:
virtual property Stream^ OutputStream {
    Stream^ get ();
}
abstract OutputStream : Stream
override OutputStream : Stream

属性值

类型： System.IO Stream
一个表示传出 HTTP 内容主体的原始内容的对象。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.RedirectLocation 属性

HttpResponseBase
.
.
::
.
RedirectLocation 属性
HttpResponseBase 类

在派生类中重写时，获取或设置 HTTP Location 标头的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property RedirectLocation As String
    Get
    Set
public virtual string RedirectLocation { get; set; }
public:
virtual property String^ RedirectLocation {
    String^ get ();
    void set (String^ value);
}
abstract RedirectLocation : string with get, set
override RedirectLocation : string with get, set

属性值

类型： System String
HTTP Location 标头的绝对 URL。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.Status 属性

HttpResponseBase
.
.
::
.
Status 属性
HttpResponseBase 类

在派生类中重写时，获取或设置返回到客户端的 Status 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Status As String
    Get
    Set
public virtual string Status { get; set; }
public:
virtual property String^ Status {
    String^ get ();
    void set (String^ value);
}
abstract Status : string with get, set
override Status : string with get, set

属性值

类型： System String
HTTP 输出的状态。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 HTTP 输出的状态。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.StatusCode 属性

HttpResponseBase
.
.
::
.
StatusCode 属性
HttpResponseBase 类

在派生类中重写时，获取或设置返回到客户端的输出的 HTTP 状态代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property StatusCode As Integer
    Get
    Set
public virtual int StatusCode { get; set; }
public:
virtual property int StatusCode {
    int get ();
    void set (int value);
}
abstract StatusCode : int with get, set
override StatusCode : int with get, set

属性值

类型： System Int32
返回到客户端的 HTTP 输出的状态代码。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 返回到客户端的 HTTP 输出的状态代码。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.StatusDescription 属性

HttpResponseBase
.
.
::
.
StatusDescription 属性
HttpResponseBase 类

在派生类中重写时，获取或设置返回到客户端的输出的 HTTP 状态消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property StatusDescription As String
    Get
    Set
public virtual string StatusDescription { get; set; }
public:
virtual property String^ StatusDescription {
    String^ get ();
    void set (String^ value);
}
abstract StatusDescription : string with get, set
override StatusDescription : string with get, set

属性值

类型： System String
返回到客户端的 HTTP 输出的状态消息。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 返回到客户端的 HTTP 输出的状态消息。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.SubStatusCode 属性

HttpResponseBase
.
.
::
.
SubStatusCode 属性
HttpResponseBase 类

在派生类中重写时，获取或设一个值，该值限定响应的状态代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property SubStatusCode As Integer
    Get
    Set
public virtual int SubStatusCode { get; set; }
public:
virtual property int SubStatusCode {
    int get ();
    void set (int value);
}
abstract SubStatusCode : int with get, set
override SubStatusCode : int with get, set

属性值

类型： System Int32
IIS 7.0 子状态代码。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.SuppressContent 属性

HttpResponseBase
.
.
::
.
SuppressContent 属性
HttpResponseBase 类

在派生类中重写时，获取或设置一个值，该值指示是否将 HTTP 内容发送至客户端。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property SuppressContent As Boolean
    Get
    Set
public virtual bool SuppressContent { get; set; }
public:
virtual property bool SuppressContent {
    bool get ();
    void set (bool value);
}
abstract SuppressContent : bool with get, set
override SuppressContent : bool with get, set

属性值

类型： System Boolean
如果取消输出，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseBase ..::.TrySkipIisCustomErrors 属性

HttpResponseBase
.
.
::
.
TrySkipIisCustomErrors 属性
HttpResponseBase 类

在派生类中重写时，获取或设置一个值，该值指定是否禁用 IIS 7.0 自定义错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property TrySkipIisCustomErrors As Boolean
    Get
    Set
public virtual bool TrySkipIisCustomErrors { get; set; }
public:
virtual property bool TrySkipIisCustomErrors {
    bool get ();
    void set (bool value);
}
abstract TrySkipIisCustomErrors : bool with get, set
override TrySkipIisCustomErrors : bool with get, set

属性值

类型： System Boolean
如果禁用 IIS 自定义错误，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 总是。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseBase 类
HttpResponseBase 成员
System.Web 命名空间


HttpResponseSubstitutionCallback 委托

HttpResponseSubstitutionCallback 委托

表示处理缓存后替换的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Function HttpResponseSubstitutionCallback ( _
    context As HttpContext _
) As String
public delegate string HttpResponseSubstitutionCallback(
    HttpContext context
)
public delegate String^ HttpResponseSubstitutionCallback(
    HttpContext^ context
)
type HttpResponseSubstitutionCallback =
    delegate of
        context:HttpContext -> string

参数

context
类型： System.Web HttpContext
包含对页的 HTTP 请求信息的 HttpContext，该页带有需要缓存后替换的控件。

返回值

类型： System String
在发送到客户端之前插入到缓存的响应的内容。

将 HttpResponseSubstitutionCallback 委托用于 WriteSubstitution 方法，可呈现 Substitution 和 AdRotator 控件缓存后内容。

对于 Substitution 控件，则使用 MethodName 属性来指定要在 Substitution 控件执行时调用的回调方法的名称。您指定的回调方法必须是包含 Substitution 控件的页或用户控件上的静态方法。回调方法的签名必须与接受 HttpResponseSubstitutionCallback 参数并返回字符串的 HttpContext 委托的签名匹配。 对于 Substitution 控件，则使用 MethodName 属性来指定要在 Substitution 控件执行时调用的回调方法的名称。您指定的回调方法必须是包含 Substitution 控件的页或用户控件上的静态方法。回调方法的签名必须与接受 HttpResponseSubstitutionCallback 参数并返回字符串的 HttpContext 委托的签名匹配。 对于 Substitution 控件，则使用 MethodName 属性来指定要在 Substitution 控件执行时调用的回调方法的名称。您指定的回调方法必须是包含 Substitution 控件的页或用户控件上的静态方法。回调方法的签名必须与接受 HttpResponseSubstitutionCallback 参数并返回字符串的 HttpContext 委托的签名匹配。

对于 AdRotator 控件，除非为 AdCreated 事件提供了事件处理程序，否则该控件的呈现不受页缓存的影响。如果未提供 AdCreated 事件处理程序，则使用缓存后替换来呈现 AdRotator 内容。 对于 AdRotator 控件，除非为 AdCreated 事件提供了事件处理程序，否则该控件的呈现不受页缓存的影响。如果未提供 AdCreated 事件处理程序，则使用缓存后替换来呈现 AdRotator 内容。

下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。 下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。 下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。 下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。 下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。 下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。 下面的代码示例演示如何以编程方式将 Substitution 控件添加到输出缓存网页。加载页面时，将在一个标签中向用户显示当前的日期和时间。页面中的此区域每 60 秒缓存并更新一次。当 Substitution 控件执行时，它调用 GetCurrentDateTime 方法，该方法必须匹配 HttpResponseSubstitutionCallback 委托的签名。GetCurrentDateTime 方法返回的字符串将显示给用户。每次刷新页时，都不会缓存和更新页中的这一部分。Substitution 控件的 MethodName 属性获取或设置回调方法的名称。

<%@ outputcache duration="60" varybyparam="none" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server" language="VB">

  Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    ' Programmatically create a Substitution control.
    Dim Substitution1 As New Substitution

    ' Specify the callback method.
    Substitution1.MethodName = "GetCurrentDateTime"

    ' Add the Substitution control to the controls
    ' collection of PlaceHolder1.
    PlaceHolder1.Controls.Add(Substitution1)

    ' Display the current date and time in the label.
    ' Output caching applies to this section of the page.
    CachedDateLabel.Text = DateTime.Now.ToString()
  End Sub

  ' The Substitution control calls this method to retrieve
  ' the current date and time. This section of the page
  ' is exempt from output caching.
  Shared Function GetCurrentDateTime(ByVal context As HttpContext) As String
    Return DateTime.Now.ToString()
  End Function

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
  <title>Substitution Constructor Example</title>
</head>
<body>
  <form id="Form1" runat="server">

    <h3>Substitution Constructor Example</h3>

    <p>This section of the page is not cached:</p>
    <asp:placeholder id="PlaceHolder1"
      runat="Server">
    </asp:placeholder>

    <br />

    <p>This section of the page is cached:</p>

    <asp:label id="CachedDateLabel"
      runat="Server">
    </asp:label>

    <br /><br />

    <asp:button id="RefreshButton"
      text="Refresh Page"
      runat="Server">
    </asp:button>

  </form>
</body>
</html>

<%@ outputcache duration="60" varybyparam="none" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server" language="C#">

  void Page_Load(object sender, System.EventArgs e)
  {
    // Programmatically create a Substitution control.
    Substitution Substitution1 = new Substitution();

    // Specify the callback method.
    Substitution1.MethodName = "GetCurrentDateTime";

    // Add the Substitution control to the controls
    // collection of PlaceHolder1.
    PlaceHolder1.Controls.Add (Substitution1);

    // Display the current date and time in the label.
    // Output caching applies to this section of the page.
    CachedDateLabel.Text = DateTime.Now.ToString();
  }

  // The Substitution control calls this method to retrieve
  // the current date and time. This section of the page
  // is exempt from output caching.
  public static string GetCurrentDateTime (HttpContext context)
  {
    return DateTime.Now.ToString ();
  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
  <title>Substitution Class Example</title>
</head>
<body>
  <form id="Form1" runat="server">

    <h3>Substitution Constructor Example</h3>

    <p>This section of the page is not cached:</p>
    <asp:placeholder id="PlaceHolder1"
      runat="Server">
    </asp:placeholder>

    <br />

    <p>This section of the page is cached:</p>

    <asp:label id="CachedDateLabel"
      runat="Server">
    </asp:label>

    <br /><br />

    <asp:button id="RefreshButton"
      text="Refresh Page"
      runat="Server">
    </asp:button>

  </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

System.Web 命名空间
Substitution
MethodName
AdRotator
AdCreated
WriteSubstitution

其他资源

事件和委托
缓存 ASP.NET 页的某些部分


HttpResponseWrapper 类

HttpResponseWrapper 类
成员

封装 HTTP 内部对象，该对象提供来自 ASP.NET 操作的 HTTP 响应信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpResponseWrapper _
    Inherits HttpResponseBase
public class HttpResponseWrapper : HttpResponseBase
public ref class HttpResponseWrapper : public HttpResponseBase
type HttpResponseWrapper =
    class
        inherit HttpResponseBase
    end

HttpResponseWrapper 类从 HttpResponseBase 类派生，并用作 HttpResponse 类的包装。此类公开 HttpResponse 类的功能，同时还公开 HttpResponseBase 类型。使用 HttpResponseBase 类可以将应用程序中 HttpResponse 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpResponseWrapper 类从 HttpResponseBase 类派生，并用作 HttpResponse 类的包装。此类公开 HttpResponse 类的功能，同时还公开 HttpResponseBase 类型。使用 HttpResponseBase 类可以将应用程序中 HttpResponse 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpResponseWrapper 类从 HttpResponseBase 类派生，并用作 HttpResponse 类的包装。此类公开 HttpResponse 类的功能，同时还公开 HttpResponseBase 类型。使用 HttpResponseBase 类可以将应用程序中 HttpResponse 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpResponseWrapperHttpResponseWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper 成员

HttpResponseWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

封装 HTTP 内部对象，该对象提供来自 ASP.NET 操作的 HTTP 响应信息。

HttpResponseWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpResponseWrapper 类
System.Web 命名空间


HttpResponseWrapper 构造函数

HttpResponseWrapper 构造函数
HttpResponseWrapper 类

初始化 HttpResponseWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpResponse As HttpResponse _
)
public HttpResponseWrapper(
    HttpResponse httpResponse
)
public:
HttpResponseWrapper(
    HttpResponse^ httpResponse
)
new :
        httpResponse:HttpResponse -> HttpResponseWrapper

参数

httpResponse
类型： System.Web HttpResponse
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpResponse 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper 方法

HttpResponseWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

HttpResponseWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpResponseWrapper 类
System.Web 命名空间


HttpResponseWrapper ..::.AddCacheDependency 方法

HttpResponseWrapper
.
.
::
.
AddCacheDependency 方法
HttpResponseWrapper 类

在派生类中重写时，将缓存依赖项与响应进行关联，这些依赖项使响应可以在进行缓存和指定依赖项更改时失效。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddCacheDependency ( _
    ParamArray dependencies As CacheDependency() _
)
public override void AddCacheDependency(
    params CacheDependency[] dependencies
)
public:
virtual void AddCacheDependency(
    ... array<CacheDependency^>^ dependencies
) override
abstract AddCacheDependency :
        dependencies:CacheDependency[] -> unit
override AddCacheDependency :
        dependencies:CacheDependency[] -> unit

参数

dependencies
类型：
array<
System.Web.Caching CacheDependency
>
[]
()
[]

要添加到应用程序依赖项列表的文件、缓存键或 CacheDependency 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AddCacheItemDependencies 方法

HttpResponseWrapper
.
.
::
.
AddCacheItemDependencies 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

使缓存响应的有效性依赖于缓存中的其他项。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AddCacheItemDependencies 方法 (ArrayList)

HttpResponseWrapper
.
.
::
.
AddCacheItemDependencies 方法 (ArrayList)
HttpResponseWrapper 类

使缓存的响应的有效性依赖于缓存中的指定项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddCacheItemDependencies ( _
    cacheKeys As ArrayList _
)
public override void AddCacheItemDependencies(
    ArrayList cacheKeys
)
public:
virtual void AddCacheItemDependencies(
    ArrayList^ cacheKeys
) override
abstract AddCacheItemDependencies :
        cacheKeys:ArrayList -> unit
override AddCacheItemDependencies :
        cacheKeys:ArrayList -> unit

参数

cacheKeys
类型： System.Collections ArrayList
一个集合，包含缓存的响应所依赖的项的键。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
AddCacheItemDependencies 重载
System.Web 命名空间


HttpResponseWrapper ..::.AddCacheItemDependencies 方法 ( array<String >[]()[])

HttpResponseWrapper
.
.
::
.
AddCacheItemDependencies 方法 (
array<
String
>
[]
()
[]
)
HttpResponseWrapper 类

使缓存的项的有效性依赖于缓存中的指定项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddCacheItemDependencies ( _
    cacheKeys As String() _
)
public override void AddCacheItemDependencies(
    string[] cacheKeys
)
public:
virtual void AddCacheItemDependencies(
    array<String^>^ cacheKeys
) override
abstract AddCacheItemDependencies :
        cacheKeys:string[] -> unit
override AddCacheItemDependencies :
        cacheKeys:string[] -> unit

参数

cacheKeys
类型：
array<
System String
>
[]
()
[]

一个数组，包含缓存的响应所依赖的项的键。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
AddCacheItemDependencies 重载
System.Web 命名空间


HttpResponseWrapper ..::.AddCacheItemDependency 方法

HttpResponseWrapper
.
.
::
.
AddCacheItemDependency 方法
HttpResponseWrapper 类

使缓存的响应的有效性依赖于缓存中的指定项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddCacheItemDependency ( _
    cacheKey As String _
)
public override void AddCacheItemDependency(
    string cacheKey
)
public:
virtual void AddCacheItemDependency(
    String^ cacheKey
) override
abstract AddCacheItemDependency :
        cacheKey:string -> unit
override AddCacheItemDependency :
        cacheKey:string -> unit

参数

cacheKey
类型： System String
缓存的响应所依赖的项的键。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AddFileDependencies 方法

HttpResponseWrapper
.
.
::
.
AddFileDependencies 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

使缓存的响应的有效性依赖于指定的一个或多个文件。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AddFileDependencies 方法 (ArrayList)

HttpResponseWrapper
.
.
::
.
AddFileDependencies 方法 (ArrayList)
HttpResponseWrapper 类

将文件名添加到当前响应所依赖的文件名的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddFileDependencies ( _
    filenames As ArrayList _
)
public override void AddFileDependencies(
    ArrayList filenames
)
public:
virtual void AddFileDependencies(
    ArrayList^ filenames
) override
abstract AddFileDependencies :
        filenames:ArrayList -> unit
override AddFileDependencies :
        filenames:ArrayList -> unit

参数

filenames
类型： System.Collections ArrayList
要添加的文件的文件名。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
AddFileDependencies 重载
System.Web 命名空间


HttpResponseWrapper ..::.AddFileDependencies 方法 ( array<String >[]()[])

HttpResponseWrapper
.
.
::
.
AddFileDependencies 方法 (
array<
String
>
[]
()
[]
)
HttpResponseWrapper 类

将一个文件名数组添加到当前响应依赖的文件名集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddFileDependencies ( _
    filenames As String() _
)
public override void AddFileDependencies(
    string[] filenames
)
public:
virtual void AddFileDependencies(
    array<String^>^ filenames
) override
abstract AddFileDependencies :
        filenames:string[] -> unit
override AddFileDependencies :
        filenames:string[] -> unit

参数

filenames
类型：
array<
System String
>
[]
()
[]

要添加的文件名的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
AddFileDependencies 重载
System.Web 命名空间


HttpResponseWrapper ..::.AddFileDependency 方法

HttpResponseWrapper
.
.
::
.
AddFileDependency 方法
HttpResponseWrapper 类

将单个文件名添加到文件名集合中，当前响应依赖于该集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddFileDependency ( _
    filename As String _
)
public override void AddFileDependency(
    string filename
)
public:
virtual void AddFileDependency(
    String^ filename
) override
abstract AddFileDependency :
        filename:string -> unit
override AddFileDependency :
        filename:string -> unit

参数

filename
类型： System String
要添加的文件名。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AddHeader 方法

HttpResponseWrapper
.
.
::
.
AddHeader 方法
HttpResponseWrapper 类

将 HTTP 标头添加到当前响应中。提供此方法是为了与 ASP 的早期版本兼容。 将 HTTP 标头添加到当前响应中。提供此方法是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AddHeader ( _
    name As String, _
    value As String _
)
public override void AddHeader(
    string name,
    string value
)
public:
virtual void AddHeader(
    String^ name,
    String^ value
) override
abstract AddHeader :
        name:string *
        value:string -> unit
override AddHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要添加 value 的 HTTP 头名称。
value
类型： System String
要添加到头中的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AppendCookie 方法

HttpResponseWrapper
.
.
::
.
AppendCookie 方法
HttpResponseWrapper 类

将一个 HTTP Cookie 添加到 HTTP 响应 Cookie 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AppendCookie ( _
    cookie As HttpCookie _
)
public override void AppendCookie(
    HttpCookie cookie
)
public:
virtual void AppendCookie(
    HttpCookie^ cookie
) override
abstract AppendCookie :
        cookie:HttpCookie -> unit
override AppendCookie :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
要添加到响应的 Cookie。
异常 | 条件
HttpException | 在发送 HTTP 标头之后添加 Cookie。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AppendHeader 方法

HttpResponseWrapper
.
.
::
.
AppendHeader 方法
HttpResponseWrapper 类

将 HTTP 标头添加到当前响应中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AppendHeader ( _
    name As String, _
    value As String _
)
public override void AppendHeader(
    string name,
    string value
)
public:
virtual void AppendHeader(
    String^ name,
    String^ value
) override
abstract AppendHeader :
        name:string *
        value:string -> unit
override AppendHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要添加到当前响应的 HTTP 标头的名称。
value
类型： System String
标头的值。
异常 | 条件
HttpException | 在发送 HTTP 标头之后追加该标头。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.AppendToLog 方法

HttpResponseWrapper
.
.
::
.
AppendToLog 方法
HttpResponseWrapper 类

将自定义日志信息添加到 Internet 信息服务 (IIS) 日志文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub AppendToLog ( _
    param As String _
)
public override void AppendToLog(
    string param
)
public:
virtual void AppendToLog(
    String^ param
) override
abstract AppendToLog :
        param:string -> unit
override AppendToLog :
        param:string -> unit

参数

param
类型： System String
要添加到日志文件的文本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.ApplyAppPathModifier 方法

HttpResponseWrapper
.
.
::
.
ApplyAppPathModifier 方法
HttpResponseWrapper 类

如果会话正在使用 Cookieless 会话状态，则将会话 ID 添加到虚拟路径中，并返回组合路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function ApplyAppPathModifier ( _
    virtualPath As String _
) As String
public override string ApplyAppPathModifier(
    string virtualPath
)
public:
virtual String^ ApplyAppPathModifier(
    String^ virtualPath
) override
abstract ApplyAppPathModifier :
        virtualPath:string -> string
override ApplyAppPathModifier :
        virtualPath:string -> string

参数

virtualPath
类型： System String
资源的虚拟路径。

返回值

类型： System String
插入了会话 ID 的虚拟路径。如果未使用 Cookieless 会话状态，则返回原始 virtualpath 值。 插入了会话 ID 的虚拟路径。如果未使用 Cookieless 会话状态，则返回原始 virtualpath 值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.BinaryWrite 方法

HttpResponseWrapper
.
.
::
.
BinaryWrite 方法
HttpResponseWrapper 类

将一个二进制字符串写入 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub BinaryWrite ( _
    buffer As Byte() _
)
public override void BinaryWrite(
    byte[] buffer
)
public:
virtual void BinaryWrite(
    array<unsigned char>^ buffer
) override
abstract BinaryWrite :
        buffer:byte[] -> unit
override BinaryWrite :
        buffer:byte[] -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

要写入当前响应的二进制字符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Clear 方法

HttpResponseWrapper
.
.
::
.
Clear 方法
HttpResponseWrapper 类

清除当前响应中的所有标头和内容输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Clear
public override void Clear()
public:
virtual void Clear() override
abstract Clear : unit -> unit
override Clear : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.ClearContent 方法

HttpResponseWrapper
.
.
::
.
ClearContent 方法
HttpResponseWrapper 类

清除当前响应中的所有内容输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub ClearContent
public override void ClearContent()
public:
virtual void ClearContent() override
abstract ClearContent : unit -> unit
override ClearContent : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.ClearHeaders 方法

HttpResponseWrapper
.
.
::
.
ClearHeaders 方法
HttpResponseWrapper 类

清除当前响应中的所有标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub ClearHeaders
public override void ClearHeaders()
public:
virtual void ClearHeaders() override
abstract ClearHeaders : unit -> unit
override ClearHeaders : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Close 方法

HttpResponseWrapper
.
.
::
.
Close 方法
HttpResponseWrapper 类

关闭到客户端的套接字连接。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.DisableKernelCache 方法

HttpResponseWrapper
.
.
::
.
DisableKernelCache 方法
HttpResponseWrapper 类

禁用当前响应的内核缓存。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub DisableKernelCache
public override void DisableKernelCache()
public:
virtual void DisableKernelCache() override
abstract DisableKernelCache : unit -> unit
override DisableKernelCache : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.End 方法

HttpResponseWrapper
.
.
::
.
End 方法
HttpResponseWrapper 类

将当前缓冲的所有输出发送至客户端，停止执行请求的进程，并引发 EndRequest 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub End
public override void End()
public:
virtual void End() override
abstract End : unit -> unit
override End : unit -> unit
异常 | 条件
ThreadAbortException | 对 End 的调用已经终止当前请求。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Flush 方法

HttpResponseWrapper
.
.
::
.
Flush 方法
HttpResponseWrapper 类

向客户端发送当前所有缓冲的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit
异常 | 条件
HttpException | 在完成响应之后调用该方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Pics 方法

HttpResponseWrapper
.
.
::
.
Pics 方法
HttpResponseWrapper 类

将 HTTP PICS-Label 标头追加到当前响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Pics ( _
    value As String _
)
public override void Pics(
    string value
)
public:
virtual void Pics(
    String^ value
) override
abstract Pics :
        value:string -> unit
override Pics :
        value:string -> unit

参数

value
类型： System String
要添加到 PICS-Label 标头的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Redirect 方法

HttpResponseWrapper
.
.
::
.
Redirect 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

将请求重定向到另一个 URL。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Redirect 方法 (String)

HttpResponseWrapper
.
.
::
.
Redirect 方法 (String)
HttpResponseWrapper 类

将请求重定向到指定的 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Redirect ( _
    url As String _
)
public override void Redirect(
    string url
)
public:
virtual void Redirect(
    String^ url
) override
abstract Redirect :
        url:string -> unit
override Redirect :
        url:string -> unit

参数

url
类型： System String
目标位置。
异常 | 条件
HttpException | 在发送 HTTP 标头之后尝试进行重定向。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
Redirect 重载
System.Web 命名空间


HttpResponseWrapper ..::.Redirect 方法 (String, Boolean)

HttpResponseWrapper
.
.
::
.
Redirect 方法 (String, Boolean)
HttpResponseWrapper 类

将请求重定向到指定的 URL，并指定是否应终止当前进程的执行。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Redirect ( _
    url As String, _
    endResponse As Boolean _
)
public override void Redirect(
    string url,
    bool endResponse
)
public:
virtual void Redirect(
    String^ url,
    bool endResponse
) override
abstract Redirect :
        url:string *
        endResponse:bool -> unit
override Redirect :
        url:string *
        endResponse:bool -> unit

参数

url
类型： System String
目标位置。
endResponse
类型： System Boolean
如果为 true，则终止当前进程。
异常 | 条件
ArgumentNullException | url 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | url 包含换行符。
HttpException | 在发送 HTTP 标头之后尝试进行重定向。
ApplicationException | 请求是回调的结果。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
Redirect 重载
System.Web 命名空间


HttpResponseWrapper ..::.RedirectPermanent 方法

HttpResponseWrapper
.
.
::
.
RedirectPermanent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

执行从所请求 URL 到所指定 URL 的永久重定向。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.RedirectPermanent 方法 (String)

HttpResponseWrapper
.
.
::
.
RedirectPermanent 方法 (String)
HttpResponseWrapper 类

执行从所请求 URL 到所指定 URL 的永久重定向。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RedirectPermanent ( _
    url As String _
)
public override void RedirectPermanent(
    string url
)
public:
virtual void RedirectPermanent(
    String^ url
) override
abstract RedirectPermanent :
        url:string -> unit
override RedirectPermanent :
        url:string -> unit

参数

url
类型： System String
要向其重定向请求的 URL。
异常 | 条件
ArgumentNullException | url 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | url 包括一个换行符 (\n)。

RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。

调用 RedirectPermanent(String) 方法将终止其余响应。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
RedirectPermanent 重载
System.Web 命名空间


HttpResponseWrapper ..::.RedirectPermanent 方法 (String, Boolean)

HttpResponseWrapper
.
.
::
.
RedirectPermanent 方法 (String, Boolean)
HttpResponseWrapper 类

执行从所请求 URL 到所指定 URL 的永久重定向，并提供用于完成响应的选项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RedirectPermanent ( _
    url As String, _
    endResponse As Boolean _
)
public override void RedirectPermanent(
    string url,
    bool endResponse
)
public:
virtual void RedirectPermanent(
    String^ url,
    bool endResponse
) override
abstract RedirectPermanent :
        url:string *
        endResponse:bool -> unit
override RedirectPermanent :
        url:string *
        endResponse:bool -> unit

参数

url
类型： System String
要向其重定向请求的 URL。
endResponse
类型： System Boolean
若为 true，则终止响应；否则为 false。默认值为 false。 若为 true，则终止响应；否则为 false。默认值为 false。
异常 | 条件
ArgumentNullException | url 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | url 包括一个换行符 (\n)。

RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。此方法重载提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。此方法重载提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。此方法重载提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。 RedirectPermanent(String, Boolean) 方法重载在响应中提供一个 301 HTTP 状态代码，并且也包含将请求重定向到的 URL。此方法重载提供了相应选项，用于指定在执行重定向后是否终止或完成响应。301 HTTP 状态代码是 HTTP 响应中的标准代码。它指明存在永久重定向，而且它提供重定向位置。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
RedirectPermanent 重载
System.Web 命名空间


HttpResponseWrapper ..::.RedirectToRoute 方法

HttpResponseWrapper
.
.
::
.
RedirectToRoute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

在派生类中重写时，使用路由参数值和/或路由名称将请求重定向到新 URL。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.RedirectToRoutePermanent 方法

HttpResponseWrapper
.
.
::
.
RedirectToRoutePermanent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

在派生类中重写时，使用路由参数值和/或路由名称执行从所请求 URL 到新 URL 的永久重定向。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.RemoveOutputCacheItem 方法

HttpResponseWrapper
.
.
::
.
RemoveOutputCacheItem 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

使用默认的输出缓存提供程序从输出缓存中删除缓存项。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.RemoveOutputCacheItem 方法 (String)

HttpResponseWrapper
.
.
::
.
RemoveOutputCacheItem 方法 (String)
HttpResponseWrapper 类

从缓存中移除与指定路径关联的所有缓存项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemoveOutputCacheItem ( _
    path As String _
)
public override void RemoveOutputCacheItem(
    string path
)
public:
virtual void RemoveOutputCacheItem(
    String^ path
) override
abstract RemoveOutputCacheItem :
        path:string -> unit
override RemoveOutputCacheItem :
        path:string -> unit

参数

path
类型： System String
要从缓存中移除的项的虚拟绝对路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
RemoveOutputCacheItem 重载
System.Web 命名空间


HttpResponseWrapper ..::.RemoveOutputCacheItem 方法 (String, String)

HttpResponseWrapper
.
.
::
.
RemoveOutputCacheItem 方法 (String, String)
HttpResponseWrapper 类

使用指定的输出缓存提供程序删除与指定路径关联的所有输出缓存项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemoveOutputCacheItem ( _
    path As String, _
    providerName As String _
)
public override void RemoveOutputCacheItem(
    string path,
    string providerName
)
public:
virtual void RemoveOutputCacheItem(
    String^ path,
    String^ providerName
) override
abstract RemoveOutputCacheItem :
        path:string *
        providerName:string -> unit
override RemoveOutputCacheItem :
        path:string *
        providerName:string -> unit

参数

path
类型： System String
从缓存中删除的项的虚拟绝对路径。
providerName
类型： System String
用于删除与指定路径关联的输出缓存项的提供程序。
异常 | 条件
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 为无效路径。

调用此方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。若要删除与默认输出缓存提供程序关联的输出缓存项，请调用 RemoveOutputCacheItem(String) 方法重载。 调用此方法以移除与在网站配置文件中指定的自定义输出缓存提供程序相关联的输出缓存项。若要删除与默认输出缓存提供程序关联的输出缓存项，请调用 RemoveOutputCacheItem(String) 方法重载。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
RemoveOutputCacheItem 重载
System.Web 命名空间


HttpResponseWrapper ..::.SetCookie 方法

HttpResponseWrapper
.
.
::
.
SetCookie 方法
HttpResponseWrapper 类

更新 Cookie 集合中的一个现有 Cookie。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub SetCookie ( _
    cookie As HttpCookie _
)
public override void SetCookie(
    HttpCookie cookie
)
public:
virtual void SetCookie(
    HttpCookie^ cookie
) override
abstract SetCookie :
        cookie:HttpCookie -> unit
override SetCookie :
        cookie:HttpCookie -> unit

参数

cookie
类型： System.Web HttpCookie
集合中要更新的 Cookie。
异常 | 条件
HttpException | 在发送 HTTP 标头之后设置 Cookie。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.TransmitFile 方法

HttpResponseWrapper
.
.
::
.
TransmitFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

将指定文件写入 HTTP 响应输出流（不在内存中进行缓冲）。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.TransmitFile 方法 (String)

HttpResponseWrapper
.
.
::
.
TransmitFile 方法 (String)
HttpResponseWrapper 类

将指定文件写入 HTTP 响应输出流（不在内存中进行缓冲）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TransmitFile ( _
    filename As String _
)
public override void TransmitFile(
    string filename
)
public:
virtual void TransmitFile(
    String^ filename
) override
abstract TransmitFile :
        filename:string -> unit
override TransmitFile :
        filename:string -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
异常 | 条件
ArgumentNullException | filename 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
TransmitFile 重载
System.Web 命名空间


HttpResponseWrapper ..::.TransmitFile 方法 (String, Int64, Int64)

HttpResponseWrapper
.
.
::
.
TransmitFile 方法 (String, Int64, Int64)
HttpResponseWrapper 类

将文件的指定部分写入 HTTP 响应输出流（不在内存中进行缓冲）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TransmitFile ( _
    filename As String, _
    offset As Long, _
    length As Long _
)
public override void TransmitFile(
    string filename,
    long offset,
    long length
)
public:
virtual void TransmitFile(
    String^ filename,
    long long offset,
    long long length
) override
abstract TransmitFile :
        filename:string *
        offset:int64 *
        length:int64 -> unit
override TransmitFile :
        filename:string *
        offset:int64 *
        length:int64 -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
offset
类型： System Int64
文件中开始写入的位置。
length
类型： System Int64
要从 offset 开始写入的字节数。
异常 | 条件
ArgumentNullException | offset 参数小于零。 - 或 - length 参数小于 -1。 - 或 - length 参数大于文件大小减去 offset。
PlatformNotSupportedException | 不支持进程外辅助请求。 - 或 - 响应没有使用 HttpWriter 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
TransmitFile 重载
System.Web 命名空间


HttpResponseWrapper ..::.Write 方法

HttpResponseWrapper
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

将信息写入 HTTP 响应输出流。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Write 方法 (Char)

HttpResponseWrapper
.
.
::
.
Write 方法 (Char)
HttpResponseWrapper 类

将一个字符写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    ch As Char _
)
public override void Write(
    char ch
)
public:
virtual void Write(
    wchar_t ch
) override
abstract Write :
        ch:char -> unit
override Write :
        ch:char -> unit

参数

ch
类型： System Char
要写入 HTTP 输出流的字符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
Write 重载
System.Web 命名空间


HttpResponseWrapper ..::.Write 方法 (Object)

HttpResponseWrapper
.
.
::
.
Write 方法 (Object)
HttpResponseWrapper 类

将指定对象写入 HTTP 响应流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    obj As Object _
)
public override void Write(
    Object obj
)
public:
virtual void Write(
    Object^ obj
) override
abstract Write :
        obj:Object -> unit
override Write :
        obj:Object -> unit

参数

obj
类型： System Object
要写入 HTTP 输出流的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
Write 重载
System.Web 命名空间


HttpResponseWrapper ..::.Write 方法 (String)

HttpResponseWrapper
.
.
::
.
Write 方法 (String)
HttpResponseWrapper 类

将指定字符串写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    s As String _
)
public override void Write(
    string s
)
public:
virtual void Write(
    String^ s
) override
abstract Write :
        s:string -> unit
override Write :
        s:string -> unit

参数

s
类型： System String
要写入 HTTP 输出流的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
Write 重载
System.Web 命名空间


HttpResponseWrapper ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

HttpResponseWrapper
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
HttpResponseWrapper 类

将指定字符数组写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public override void Write(
    char[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
) override
abstract Write :
        buffer:char[] *
        index:int *
        count:int -> unit
override Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

要写入的字符数组。
index
类型： System Int32
字符数组中开始进行写入的位置。
count
类型： System Int32
要从 index 开始写入的字符数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
Write 重载
System.Web 命名空间


HttpResponseWrapper ..::.WriteFile 方法

HttpResponseWrapper
.
.
::
.
WriteFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

将指定文件写入 HTTP 响应输出流。

名称 说明
页首

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.WriteFile 方法 (String)

HttpResponseWrapper
.
.
::
.
WriteFile 方法 (String)
HttpResponseWrapper 类

将指定文件的内容作为文件块写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteFile ( _
    filename As String _
)
public override void WriteFile(
    string filename
)
public:
virtual void WriteFile(
    String^ filename
) override
abstract WriteFile :
        filename:string -> unit
override WriteFile :
        filename:string -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
异常 | 条件
ArgumentNullException | filename 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
WriteFile 重载
System.Web 命名空间


HttpResponseWrapper ..::.WriteFile 方法 (String, Boolean)

HttpResponseWrapper
.
.
::
.
WriteFile 方法 (String, Boolean)
HttpResponseWrapper 类

将指定文件的内容写入 HTTP 响应输出流，并指定是否以内存块的形式写入内容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteFile ( _
    filename As String, _
    readIntoMemory As Boolean _
)
public override void WriteFile(
    string filename,
    bool readIntoMemory
)
public:
virtual void WriteFile(
    String^ filename,
    bool readIntoMemory
) override
abstract WriteFile :
        filename:string *
        readIntoMemory:bool -> unit
override WriteFile :
        filename:string *
        readIntoMemory:bool -> unit

参数

filename
类型： System String
要写入当前响应的文件的名称。
readIntoMemory
类型： System Boolean
如果为 true，则将文件写入内存块。
异常 | 条件
ArgumentNullException | filename 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
WriteFile 重载
System.Web 命名空间


HttpResponseWrapper ..::.WriteFile 方法 (IntPtr, Int64, Int64)

HttpResponseWrapper
.
.
::
.
WriteFile 方法 (IntPtr, Int64, Int64)
HttpResponseWrapper 类

将指定文件写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteFile ( _
    fileHandle As IntPtr, _
    offset As Long, _
    size As Long _
)
public override void WriteFile(
    IntPtr fileHandle,
    long offset,
    long size
)
public:
virtual void WriteFile(
    IntPtr fileHandle,
    long long offset,
    long long size
) override
abstract WriteFile :
        fileHandle:IntPtr *
        offset:int64 *
        size:int64 -> unit
override WriteFile :
        fileHandle:IntPtr *
        offset:int64 *
        size:int64 -> unit

参数

fileHandle
类型： System IntPtr
要写入 HTTP 输出流的文件的文件句柄。
offset
类型： System Int64
文件中开始写入的位置。
size
类型： System Int64
要从 offset 开始写入的字节数。
异常 | 条件
ArgumentNullException | fileHandle 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | offset 小于 0。 - 或 - size 大于文件大小减去 offset。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
WriteFile 重载
System.Web 命名空间


HttpResponseWrapper ..::.WriteFile 方法 (String, Int64, Int64)

HttpResponseWrapper
.
.
::
.
WriteFile 方法 (String, Int64, Int64)
HttpResponseWrapper 类

将指定文件写入 HTTP 响应输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteFile ( _
    filename As String, _
    offset As Long, _
    size As Long _
)
public override void WriteFile(
    string filename,
    long offset,
    long size
)
public:
virtual void WriteFile(
    String^ filename,
    long long offset,
    long long size
) override
abstract WriteFile :
        filename:string *
        offset:int64 *
        size:int64 -> unit
override WriteFile :
        filename:string *
        offset:int64 *
        size:int64 -> unit

参数

filename
类型： System String
要写入 HTTP 输出流的文件名。
offset
类型： System Int64
文件中开始写入的位置。
size
类型： System Int64
要从 offset 开始写入的字节数。
异常 | 条件
HttpException | offset 小于 0。 - 或 - size 大于文件大小减去 offset。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
WriteFile 重载
System.Web 命名空间


HttpResponseWrapper ..::.WriteSubstitution 方法

HttpResponseWrapper
.
.
::
.
WriteSubstitution 方法
HttpResponseWrapper 类

将替换块插入到响应中，这样可以动态生成缓存的输出响应的区域。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteSubstitution ( _
    callback As HttpResponseSubstitutionCallback _
)
public override void WriteSubstitution(
    HttpResponseSubstitutionCallback callback
)
public:
virtual void WriteSubstitution(
    HttpResponseSubstitutionCallback^ callback
) override
abstract WriteSubstitution :
        callback:HttpResponseSubstitutionCallback -> unit
override WriteSubstitution :
        callback:HttpResponseSubstitutionCallback -> unit

参数

callback
类型： System.Web HttpResponseSubstitutionCallback
要替换的方法、用户控件或对象。
异常 | 条件
ArgumentException | callback 参数的目标为 Control 类型。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper 属性

HttpResponseWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpResponseWrapper 类

HttpResponseWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpResponseWrapper 类
System.Web 命名空间


HttpResponseWrapper ..::.Buffer 属性

HttpResponseWrapper
.
.
::
.
Buffer 属性
HttpResponseWrapper 类

获取或设置一个值，该值指示是否缓冲输出并在整个响应结束处理后发送该输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Buffer As Boolean
    Get
    Set
public override bool Buffer { get; set; }
public:
virtual property bool Buffer {
    bool get () override;
    void set (bool value) override;
}
abstract Buffer : bool with get, set
override Buffer : bool with get, set

属性值

类型： System Boolean
如果缓冲输出，则为 true；否则为 false。

HttpResponseWrapper 类的 Buffer 属性已否决（改为使用 BufferOutput 属性），且该属性仅为与早期版本的 ASP 兼容而提供。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.BufferOutput 属性

HttpResponseWrapper
.
.
::
.
BufferOutput 属性
HttpResponseWrapper 类

获取或设置一个值，该值指示是否缓冲输出并在整个页面结束处理后发送该输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property BufferOutput As Boolean
    Get
    Set
public override bool BufferOutput { get; set; }
public:
virtual property bool BufferOutput {
    bool get () override;
    void set (bool value) override;
}
abstract BufferOutput : bool with get, set
override BufferOutput : bool with get, set

属性值

类型： System Boolean
如果缓冲输出，则为 true；否则为 false。默认值为 true。 如果缓冲输出，则为 true；否则为 false。默认值为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Cache 属性

HttpResponseWrapper
.
.
::
.
Cache 属性
HttpResponseWrapper 类

获取当前网页的缓存策略（如过期时间、隐私设置和 vary 子句）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Cache As HttpCachePolicyBase
    Get
public override HttpCachePolicyBase Cache { get; }
public:
virtual property HttpCachePolicyBase^ Cache {
    HttpCachePolicyBase^ get () override;
}
abstract Cache : HttpCachePolicyBase
override Cache : HttpCachePolicyBase

属性值

类型： System.Web HttpCachePolicyBase
当前响应的缓存策略。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.CacheControl 属性

HttpResponseWrapper
.
.
::
.
CacheControl 属性
HttpResponseWrapper 类

获取或设置与 HttpCacheability 枚举值之一匹配的 Cache-Control HTTP 标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property CacheControl As String
    Get
    Set
public override string CacheControl { get; set; }
public:
virtual property String^ CacheControl {
    String^ get () override;
    void set (String^ value) override;
}
abstract CacheControl : string with get, set
override CacheControl : string with get, set

属性值

类型： System String
当前响应的缓存策略。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Charset 属性

HttpResponseWrapper
.
.
::
.
Charset 属性
HttpResponseWrapper 类

获取或设置当前响应的 HTTP 字符集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Charset As String
    Get
    Set
public override string Charset { get; set; }
public:
virtual property String^ Charset {
    String^ get () override;
    void set (String^ value) override;
}
abstract Charset : string with get, set
override Charset : string with get, set

属性值

类型： System String
当前响应的 HTTP 字符集。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.ContentEncoding 属性

HttpResponseWrapper
.
.
::
.
ContentEncoding 属性
HttpResponseWrapper 类

获取或设置当前响应的内容编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ContentEncoding As Encoding
    Get
    Set
public override Encoding ContentEncoding { get; set; }
public:
virtual property Encoding^ ContentEncoding {
    Encoding^ get () override;
    void set (Encoding^ value) override;
}
abstract ContentEncoding : Encoding with get, set
override ContentEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
有关当前响应的内容编码的信息。
异常 | 条件
ArgumentNullException | 尝试将 ContentEncoding 设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.ContentType 属性

HttpResponseWrapper
.
.
::
.
ContentType 属性
HttpResponseWrapper 类

获取或设置当前响应的 HTTP MIME 类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ContentType As String
    Get
    Set
public override string ContentType { get; set; }
public:
virtual property String^ ContentType {
    String^ get () override;
    void set (String^ value) override;
}
abstract ContentType : string with get, set
override ContentType : string with get, set

属性值

类型： System String
当前响应的 HTTP MIME 类型。默认值为“text/html”。 当前响应的 HTTP MIME 类型。默认值为“text/html”。
异常 | 条件
HttpException | ContentType 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Cookies 属性

HttpResponseWrapper
.
.
::
.
Cookies 属性
HttpResponseWrapper 类

获取响应 Cookie 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Cookies As HttpCookieCollection
    Get
public override HttpCookieCollection Cookies { get; }
public:
virtual property HttpCookieCollection^ Cookies {
    HttpCookieCollection^ get () override;
}
abstract Cookies : HttpCookieCollection
override Cookies : HttpCookieCollection

属性值

类型： System.Web HttpCookieCollection
响应 Cookie 集合。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Expires 属性

HttpResponseWrapper
.
.
::
.
Expires 属性
HttpResponseWrapper 类

获取或设置在客户端或代理上缓存的页面过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。提供 Expires 是为了与 ASP 的早期版本兼容。 获取或设置在客户端或代理上缓存的页面过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。提供 Expires 是为了与 ASP 的早期版本兼容。 获取或设置在客户端或代理上缓存的页面过期之前的分钟数。如果用户在页面过期之前返回到该页，则显示缓存的版本。提供 Expires 是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Expires As Integer
    Get
    Set
public override int Expires { get; set; }
public:
virtual property int Expires {
    int get () override;
    void set (int value) override;
}
abstract Expires : int with get, set
override Expires : int with get, set

属性值

类型： System Int32
在页过期之前的分钟数。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.ExpiresAbsolute 属性

HttpResponseWrapper
.
.
::
.
ExpiresAbsolute 属性
HttpResponseWrapper 类

获取或设置一个绝对日期和时间，该时间点之后，缓存信息在缓存中过期。提供 ExpiresAbsolute 是为了与 ASP 的早期版本兼容。 获取或设置一个绝对日期和时间，该时间点之后，缓存信息在缓存中过期。提供 ExpiresAbsolute 是为了与 ASP 的早期版本兼容。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ExpiresAbsolute As DateTime
    Get
    Set
public override DateTime ExpiresAbsolute { get; set; }
public:
virtual property DateTime ExpiresAbsolute {
    DateTime get () override;
    void set (DateTime value) override;
}
abstract ExpiresAbsolute : DateTime with get, set
override ExpiresAbsolute : DateTime with get, set

属性值

类型： System DateTime
该页过期时的日期和时间。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Filter 属性

HttpResponseWrapper
.
.
::
.
Filter 属性
HttpResponseWrapper 类

获取或设置用于在传输之前修改 HTTP 实体正文的筛选器对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Filter As Stream
    Get
    Set
public override Stream Filter { get; set; }
public:
virtual property Stream^ Filter {
    Stream^ get () override;
    void set (Stream^ value) override;
}
abstract Filter : Stream with get, set
override Filter : Stream with get, set

属性值

类型： System.IO Stream
用作输出筛选器的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.HeaderEncoding 属性

HttpResponseWrapper
.
.
::
.
HeaderEncoding 属性
HttpResponseWrapper 类

获取或设置当前响应的标头的编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property HeaderEncoding As Encoding
    Get
    Set
public override Encoding HeaderEncoding { get; set; }
public:
virtual property Encoding^ HeaderEncoding {
    Encoding^ get () override;
    void set (Encoding^ value) override;
}
abstract HeaderEncoding : Encoding with get, set
override HeaderEncoding : Encoding with get, set

属性值

类型： System.Text Encoding
有关当前标头的编码的信息。
异常 | 条件
ArgumentNullException | 编码值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
HttpException | 编码值为 Unicode。 - 或 - 已发送标头。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Headers 属性

HttpResponseWrapper
.
.
::
.
Headers 属性
HttpResponseWrapper 类

获取响应标头的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Headers As NameValueCollection
    Get
public override NameValueCollection Headers { get; }
public:
virtual property NameValueCollection^ Headers {
    NameValueCollection^ get () override;
}
abstract Headers : NameValueCollection
override Headers : NameValueCollection

属性值

类型： System.Collections.Specialized NameValueCollection
响应标头。
异常 | 条件
PlatformNotSupportedException | 操作要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.IsClientConnected 属性

HttpResponseWrapper
.
.
::
.
IsClientConnected 属性
HttpResponseWrapper 类

获取一个值，该值指示客户端是否连接至服务器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsClientConnected As Boolean
    Get
public override bool IsClientConnected { get; }
public:
virtual property bool IsClientConnected {
    bool get () override;
}
abstract IsClientConnected : bool
override IsClientConnected : bool

属性值

类型： System Boolean
如果客户端当前仍在连接，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.IsRequestBeingRedirected 属性

HttpResponseWrapper
.
.
::
.
IsRequestBeingRedirected 属性
HttpResponseWrapper 类

获取一个值，该值指示客户端是否重定向至新位置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsRequestBeingRedirected As Boolean
    Get
public override bool IsRequestBeingRedirected { get; }
public:
virtual property bool IsRequestBeingRedirected {
    bool get () override;
}
abstract IsRequestBeingRedirected : bool
override IsRequestBeingRedirected : bool

属性值

类型： System Boolean
如果位置响应标头的值与当前位置不同，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Output 属性

HttpResponseWrapper
.
.
::
.
Output 属性
HttpResponseWrapper 类

获取实现到传出的 HTTP 响应流的文本输出的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Output As TextWriter
    Get
public override TextWriter Output { get; }
public:
virtual property TextWriter^ Output {
    TextWriter^ get () override;
}
abstract Output : TextWriter
override Output : TextWriter

属性值

类型： System.IO TextWriter
实现到客户端的自定义输出的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.OutputStream 属性

HttpResponseWrapper
.
.
::
.
OutputStream 属性
HttpResponseWrapper 类

向传出 HTTP 内容主体提供二进制输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property OutputStream As Stream
    Get
public override Stream OutputStream { get; }
public:
virtual property Stream^ OutputStream {
    Stream^ get () override;
}
abstract OutputStream : Stream
override OutputStream : Stream

属性值

类型： System.IO Stream
一个表示传出 HTTP 内容主体的原始内容的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.RedirectLocation 属性

HttpResponseWrapper
.
.
::
.
RedirectLocation 属性
HttpResponseWrapper 类

获取或设置 HTTP Location 标头的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property RedirectLocation As String
    Get
    Set
public override string RedirectLocation { get; set; }
public:
virtual property String^ RedirectLocation {
    String^ get () override;
    void set (String^ value) override;
}
abstract RedirectLocation : string with get, set
override RedirectLocation : string with get, set

属性值

类型： System String
HTTP Location 标头的绝对 URL。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.Status 属性

HttpResponseWrapper
.
.
::
.
Status 属性
HttpResponseWrapper 类

设置返回到客户端的 Status 值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Status As String
    Get
    Set
public override string Status { get; set; }
public:
virtual property String^ Status {
    String^ get () override;
    void set (String^ value) override;
}
abstract Status : string with get, set
override Status : string with get, set

属性值

类型： System String
HTTP 输出的状态。默认值为“200 (OK)”。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 HTTP 输出的状态。默认值为“200 (OK)”。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 HTTP 输出的状态。默认值为“200 (OK)”。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。
异常 | 条件
HttpException | Status 设置为无效的状态代码。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.StatusCode 属性

HttpResponseWrapper
.
.
::
.
StatusCode 属性
HttpResponseWrapper 类

获取或设置返回到客户端的输出的 HTTP 状态代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property StatusCode As Integer
    Get
    Set
public override int StatusCode { get; set; }
public:
virtual property int StatusCode {
    int get () override;
    void set (int value) override;
}
abstract StatusCode : int with get, set
override StatusCode : int with get, set

属性值

类型： System Int32
返回到客户端的 HTTP 输出的状态代码。默认值为 200。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 返回到客户端的 HTTP 输出的状态代码。默认值为 200。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 返回到客户端的 HTTP 输出的状态代码。默认值为 200。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。
异常 | 条件
HttpException | 在发送 HTTP 标头之后设置 StatusCode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.StatusDescription 属性

HttpResponseWrapper
.
.
::
.
StatusDescription 属性
HttpResponseWrapper 类

获取或设置返回到客户端的输出的 HTTP 状态消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property StatusDescription As String
    Get
    Set
public override string StatusDescription { get; set; }
public:
virtual property String^ StatusDescription {
    String^ get () override;
    void set (String^ value) override;
}
abstract StatusDescription : string with get, set
override StatusDescription : string with get, set

属性值

类型： System String
返回到客户端的 HTTP 输出的状态消息。默认值为“OK”。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 返回到客户端的 HTTP 输出的状态消息。默认值为“OK”。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。 返回到客户端的 HTTP 输出的状态消息。默认值为“OK”。有关有效状态代码的信息，请参见 MSDN 网站上的 HTTP Status Codes（HTTP 状态代码）。
异常 | 条件
HttpException | 在发送 HTTP 标头之后设置 StatusDescription。
ArgumentOutOfRangeException | 状态值的长度大于 512 个字符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.SubStatusCode 属性

HttpResponseWrapper
.
.
::
.
SubStatusCode 属性
HttpResponseWrapper 类

获取或设置一个值，该值限定响应的状态代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property SubStatusCode As Integer
    Get
    Set
public override int SubStatusCode { get; set; }
public:
virtual property int SubStatusCode {
    int get () override;
    void set (int value) override;
}
abstract SubStatusCode : int with get, set
override SubStatusCode : int with get, set

属性值

类型： System Int32
IIS 7.0 子状态代码。
异常 | 条件
PlatformNotSupportedException | 操作要求 IIS 7.0 处于集成管线模式，并且要求 .NET Framework 至少为 3.0 版本。
HttpException | 在发送所有 HTTP 标头之后设置状态代码。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.SuppressContent 属性

HttpResponseWrapper
.
.
::
.
SuppressContent 属性
HttpResponseWrapper 类

获取或设置一个值，该值指示是否将 HTTP 内容发送至客户端。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property SuppressContent As Boolean
    Get
    Set
public override bool SuppressContent { get; set; }
public:
virtual property bool SuppressContent {
    bool get () override;
    void set (bool value) override;
}
abstract SuppressContent : bool with get, set
override SuppressContent : bool with get, set

属性值

类型： System Boolean
如果取消输出，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpResponseWrapper ..::.TrySkipIisCustomErrors 属性

HttpResponseWrapper
.
.
::
.
TrySkipIisCustomErrors 属性
HttpResponseWrapper 类

获取或设置一个值，该值指定是否禁用 IIS 7.0 自定义错误。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property TrySkipIisCustomErrors As Boolean
    Get
    Set
public override bool TrySkipIisCustomErrors { get; set; }
public:
virtual property bool TrySkipIisCustomErrors {
    bool get () override;
    void set (bool value) override;
}
abstract TrySkipIisCustomErrors : bool with get, set
override TrySkipIisCustomErrors : bool with get, set

属性值

类型： System Boolean
如果禁用 IIS 自定义错误，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpResponseWrapper 类
HttpResponseWrapper 成员
System.Web 命名空间


HttpRuntime 类

HttpRuntime 类
成员

为当前应用程序提供一组 ASP.NET 运行时服务。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpRuntime
public sealed class HttpRuntime
public ref class HttpRuntime sealed
[<SealedAttribute>]
type HttpRuntime =  class end

HttpRuntime 对象在处理 HTTP 请求的 ASP.NET 管线模型的开头使用。ProcessRequest 方法驱动所有后续的 ASP.NET Web 处理。 HttpRuntime 对象在处理 HTTP 请求的 ASP.NET 管线模型的开头使用。ProcessRequest 方法驱动所有后续的 ASP.NET Web 处理。

网页开发人员可以使用 HttpRuntime 类属性来查找关于当前应用程序域的信息，例如用于诊断目的。创建自定义进程管线或自定义宿主环境的开发人员应该在从 HttpWorkerRequest 或 SimpleWorkerRequest 类派生的类中调用 ProcessRequest 方法。 网页开发人员可以使用 HttpRuntime 类属性来查找关于当前应用程序域的信息，例如用于诊断目的。创建自定义进程管线或自定义宿主环境的开发人员应该在从 HttpWorkerRequest 或 SimpleWorkerRequest 类派生的类中调用 ProcessRequest 方法。

下面的示例演示如何获取表示当前应用程序域的 HttpRuntime 类的属性并将它们显示到浏览器中。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim sb As New StringBuilder()
    Dim nl As String = "<br />"

    sb.Append("AppDomainAppId = " & _
      HttpRuntime.AppDomainAppId & nl)
    sb.Append("AppDomainAppPath = " & _
      HttpRuntime.AppDomainAppPath & nl)
    sb.Append("AppDomainAppVirtualPath = " & _
      HttpRuntime.AppDomainAppVirtualPath & nl)
    sb.Append("AppDomainId = " & _
      HttpRuntime.AppDomainId & nl)
    sb.Append("AspInstallDirectory = " & _
      HttpRuntime.AspInstallDirectory & nl)
    sb.Append("BinDirectory = " & _
      HttpRuntime.BinDirectory & nl)
    sb.Append("ClrInstallDirectory = " & _
      HttpRuntime.ClrInstallDirectory & nl)
    sb.Append("CodegenDir = " & _
      HttpRuntime.CodegenDir & nl)
    sb.Append("IsOnUNCShare = " & _
      HttpRuntime.IsOnUNCShare.ToString() & nl)
    sb.Append("MachineConfigurationDirectory = " & _
      HttpRuntime.MachineConfigurationDirectory & nl)

    label1.Text = sb.ToString()

  End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpRuntime Example</title>
  </head>
  <body>
    <form id="Form1" runat="server">
      <asp:label id="label1" runat="server"/>
    </form>
  </body>
</html>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  void Page_Load(Object sender, System.EventArgs e)
  {
    StringBuilder sb = new StringBuilder();
    String nl = "<br />";

    sb.Append("AppDomainAppId = " +
      HttpRuntime.AppDomainAppId + nl);
    sb.Append("AppDomainAppPath = " +
      HttpRuntime.AppDomainAppPath + nl);
    sb.Append("AppDomainAppVirtualPath = " +
      HttpRuntime.AppDomainAppVirtualPath + nl);
    sb.Append("AppDomainId = " +
      HttpRuntime.AppDomainId + nl);
    sb.Append("AspInstallDirectory = " +
      HttpRuntime.AspInstallDirectory + nl);
    sb.Append("BinDirectory = " +
      HttpRuntime.BinDirectory + nl);
    sb.Append("ClrInstallDirectory = " +
      HttpRuntime.ClrInstallDirectory + nl);
    sb.Append("CodegenDir = " +
      HttpRuntime.CodegenDir + nl);
    sb.Append("IsOnUNCShare = " +
      HttpRuntime.IsOnUNCShare.ToString() + nl);
    sb.Append("MachineConfigurationDirectory = " +
      HttpRuntime.MachineConfigurationDirectory + nl);

    label1.Text = sb.ToString();
  }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>HttpRuntime Example</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:label id="label1" runat="server"/>
    </form>
  </body>
</html>

System.Web System.Web..::.HttpRuntimeHttpRuntime
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 成员
System.Web 命名空间
ProcessRequest
HttpWorkerRequest
SimpleWorkerRequest

其他资源

ASP.NET Web 应用程序中的页和应用程序上下文


HttpRuntime 成员

HttpRuntime 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRuntime 类

为当前应用程序提供一组 ASP.NET 运行时服务。

HttpRuntime 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpRuntime 类
System.Web 命名空间


HttpRuntime 构造函数

HttpRuntime 构造函数
HttpRuntime 类

初始化 HttpRuntime 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpRuntime()
public:
HttpRuntime()
new : unit -> HttpRuntime

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime 方法

HttpRuntime 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRuntime 类

HttpRuntime 类型公开以下成员。

名称 说明
页首

参考

HttpRuntime 类
System.Web 命名空间


HttpRuntime ..::.Close 方法

HttpRuntime
.
.
::
.
Close 方法
HttpRuntime 类

从缓存中移除所有项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted := True)> _
Public Shared Sub Close
[SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
public static void Close()
[SecurityPermissionAttribute(SecurityAction::Demand, Unrestricted = true)]
public:
static void Close()
[<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)>]
static member Close : unit -> unit

提供此方法是为了在代码实现自己的宿主环境时使用。在正常请求处理过程中，不需要调用该方法。 提供此方法是为了在代码实现自己的宿主环境时使用。在正常请求处理过程中，不需要调用该方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.GetNamedPermissionSet 方法

HttpRuntime
.
.
::
.
GetNamedPermissionSet 方法
HttpRuntime 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回与代码组关联的权限集。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.Unrestricted)> _
Public Shared Function GetNamedPermissionSet As NamedPermissionSet
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Unrestricted)]
public static NamedPermissionSet GetNamedPermissionSet()
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::Unrestricted)]
public:
static NamedPermissionSet^ GetNamedPermissionSet()
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Unrestricted)>]
static member GetNamedPermissionSet : unit -> NamedPermissionSet

返回值

类型： System.Security NamedPermissionSet
包含权限名称和说明的 NamedPermissionSet 对象；如果不存在任何权限，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

GetNamedPermissionSet 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 GetNamedPermissionSet 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.ProcessRequest 方法

HttpRuntime
.
.
::
.
ProcessRequest 方法
HttpRuntime 类

驱动所有 ASP.NET Web 处理执行。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.Medium)> _
Public Shared Sub ProcessRequest ( _
    wr As HttpWorkerRequest _
)
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Medium)]
public static void ProcessRequest(
    HttpWorkerRequest wr
)
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::Medium)]
public:
static void ProcessRequest(
    HttpWorkerRequest^ wr
)
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Medium)>]
static member ProcessRequest :
        wr:HttpWorkerRequest -> unit

参数

wr
类型： System.Web HttpWorkerRequest
当前应用程序的 HttpWorkerRequest。
异常 | 条件
ArgumentNullException | wr 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
PlatformNotSupportedException | Web 应用程序正在 IIS 7 的“集成”模式下运行。

提供此方法是为了在代码实现自己的宿主环境时使用。在代码实现自己的 HttpWorkerRequest 时，该方法还可用于执行子请求。 提供此方法是为了在代码实现自己的宿主环境时使用。在代码实现自己的 HttpWorkerRequest 时，该方法还可用于执行子请求。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.UnloadAppDomain 方法

HttpRuntime
.
.
::
.
UnloadAppDomain 方法
HttpRuntime 类

终止当前应用程序。应用程序在下次接收到请求时重新启动。 终止当前应用程序。应用程序在下次接收到请求时重新启动。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted := True)> _
Public Shared Sub UnloadAppDomain
[SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
public static void UnloadAppDomain()
[SecurityPermissionAttribute(SecurityAction::Demand, Unrestricted = true)]
public:
static void UnloadAppDomain()
[<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)>]
static member UnloadAppDomain : unit -> unit

UnloadAppDomain 对于具有大量很少接收请求的应用程序的服务器非常有用。UnloadAppDomain 并不是在进程的整个生存期内都使应用程序资源处于活动状态，而是允许编程关闭不使用的应用程序。 UnloadAppDomain 对于具有大量很少接收请求的应用程序的服务器非常有用。UnloadAppDomain 并不是在进程的整个生存期内都使应用程序资源处于活动状态，而是允许编程关闭不使用的应用程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime 属性

HttpRuntime 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpRuntime 类

HttpRuntime 类型公开以下成员。

名称 说明
页首

参考

HttpRuntime 类
System.Web 命名空间


HttpRuntime ..::.AppDomainAppId 属性

HttpRuntime
.
.
::
.
AppDomainAppId 属性
HttpRuntime 类

获取 HttpRuntime 所在的应用程序域的应用程序标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AppDomainAppId As String
    Get
public static string AppDomainAppId { get; }
public:
static property String^ AppDomainAppId {
    String^ get ();
}
static member AppDomainAppId : string

属性值

类型： System String
HttpRuntime 所在的应用程序域的应用程序标识。

AppDomainAppID 唯一标识应用程序。它不会在重新启动应用程序和创建新的应用程序域之后发生更改。 AppDomainAppID 唯一标识应用程序。它不会在重新启动应用程序和创建新的应用程序域之后发生更改。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.AppDomainAppPath 属性

HttpRuntime
.
.
::
.
AppDomainAppPath 属性
HttpRuntime 类

获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AppDomainAppPath As String
    Get
public static string AppDomainAppPath { get; }
public:
static property String^ AppDomainAppPath {
    String^ get ();
}
static member AppDomainAppPath : string

属性值

类型： System String
承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.AppDomainAppVirtualPath 属性

HttpRuntime
.
.
::
.
AppDomainAppVirtualPath 属性
HttpRuntime 类

获取包含承载在当前应用程序域中的应用程序的目录的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AppDomainAppVirtualPath As String
    Get
public static string AppDomainAppVirtualPath { get; }
public:
static property String^ AppDomainAppVirtualPath {
    String^ get ();
}
static member AppDomainAppVirtualPath : string

属性值

类型： System String
包含承载在当前应用程序域中的应用程序的目录的虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.AppDomainId 属性

HttpRuntime
.
.
::
.
AppDomainId 属性
HttpRuntime 类

获取 HttpRuntime 实例所在应用程序域的域标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AppDomainId As String
    Get
public static string AppDomainId { get; }
public:
static property String^ AppDomainId {
    String^ get ();
}
static member AppDomainId : string

属性值

类型： System String
唯一应用程序域标识符。

只要应用程序重新启动并且创建了新的应用程序域，AppDomainID 都会发生更改。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.AspClientScriptPhysicalPath 属性

HttpRuntime
.
.
::
.
AspClientScriptPhysicalPath 属性
HttpRuntime 类

获取 ASP.NET 客户端脚本文件的文件夹路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AspClientScriptPhysicalPath As String
    Get
public static string AspClientScriptPhysicalPath { get; }
public:
static property String^ AspClientScriptPhysicalPath {
    String^ get ();
}
static member AspClientScriptPhysicalPath : string

属性值

类型： System String
ASP.NET 客户端脚本文件的文件夹路径。
异常 | 条件
HttpException | 未安装 ASP.NET。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.AspClientScriptVirtualPath 属性

HttpRuntime
.
.
::
.
AspClientScriptVirtualPath 属性
HttpRuntime 类

获取 ASP.NET 客户端脚本文件的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AspClientScriptVirtualPath As String
    Get
public static string AspClientScriptVirtualPath { get; }
public:
static property String^ AspClientScriptVirtualPath {
    String^ get ();
}
static member AspClientScriptVirtualPath : string

属性值

类型： System String
ASP.NET 客户端脚本文件的虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.AspInstallDirectory 属性

HttpRuntime
.
.
::
.
AspInstallDirectory 属性
HttpRuntime 类

获取安装 ASP.NET 可执行文件的目录的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property AspInstallDirectory As String
    Get
public static string AspInstallDirectory { get; }
public:
static property String^ AspInstallDirectory {
    String^ get ();
}
static member AspInstallDirectory : string

属性值

类型： System String
ASP.NET 可执行文件的物理路径。
异常 | 条件
HttpException | 此计算机上未安装 ASP.NET。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.BinDirectory 属性

HttpRuntime
.
.
::
.
BinDirectory 属性
HttpRuntime 类

获取当前应用程序的 /bin 目录的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property BinDirectory As String
    Get
public static string BinDirectory { get; }
public:
static property String^ BinDirectory {
    String^ get ();
}
static member BinDirectory : string

属性值

类型： System String
当前应用程序的 /bin 目录的路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.Cache 属性

HttpRuntime
.
.
::
.
Cache 属性
HttpRuntime 类

获取当前应用程序的 Cache。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property Cache As Cache
    Get
public static Cache Cache { get; }
public:
static property Cache^ Cache {
    Cache^ get ();
}
static member Cache : Cache

属性值

类型： System.Web.Caching Cache
当前的 Cache。
异常 | 条件
HttpException | 未安装 ASP.NET。

有关更多信息，请参见 System.Web.Caching..::.Cache 类。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.ClrInstallDirectory 属性

HttpRuntime
.
.
::
.
ClrInstallDirectory 属性
HttpRuntime 类

获取安装公共语言运行时可执行文件的目录的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property ClrInstallDirectory As String
    Get
public static string ClrInstallDirectory { get; }
public:
static property String^ ClrInstallDirectory {
    String^ get ();
}
static member ClrInstallDirectory : string

属性值

类型： System String
公共语言运行时可执行文件的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.CodegenDir 属性

HttpRuntime
.
.
::
.
CodegenDir 属性
HttpRuntime 类

获取 ASP.NET 存储当前应用程序的临时文件（生成的源、编译了的程序集等）的目录的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property CodegenDir As String
    Get
public static string CodegenDir { get; }
public:
static property String^ CodegenDir {
    String^ get ();
}
static member CodegenDir : string

属性值

类型： System String
应用程序的临时文件存储目录的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.IsOnUNCShare 属性

HttpRuntime
.
.
::
.
IsOnUNCShare 属性
HttpRuntime 类

获取一个值，该值指示应用程序是否映射到通用命名约定 (UNC) 共享。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property IsOnUNCShare As Boolean
    Get
public static bool IsOnUNCShare { get; }
public:
static property bool IsOnUNCShare {
    bool get ();
}
static member IsOnUNCShare : bool

属性值

类型： System Boolean
如果应用程序映射到 UNC 共享，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.MachineConfigurationDirectory 属性

HttpRuntime
.
.
::
.
MachineConfigurationDirectory 属性
HttpRuntime 类

获取当前应用程序的 Machine.config 文件所在目录的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property MachineConfigurationDirectory As String
    Get
public static string MachineConfigurationDirectory { get; }
public:
static property String^ MachineConfigurationDirectory {
    String^ get ();
}
static member MachineConfigurationDirectory : string

属性值

类型： System String
当前应用程序的 Machine.config 文件的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpRuntime ..::.UsingIntegratedPipeline 属性

HttpRuntime
.
.
::
.
UsingIntegratedPipeline 属性
HttpRuntime 类

获取一个值，该值指示当前应用程序是否在 IIS 7.0 的集成管线模式下运行。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property UsingIntegratedPipeline As Boolean
    Get
public static bool UsingIntegratedPipeline { get; }
public:
static property bool UsingIntegratedPipeline {
    bool get ();
}
static member UsingIntegratedPipeline : bool

属性值

类型： System Boolean
如果应用程序在集成管线模式下运行，则为 true；否则为 false。

在 IIS 7.0 之前的 IIS 版本中，集成管线模式不可用。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP2、2.0 SP2

参考

HttpRuntime 类
HttpRuntime 成员
System.Web 命名空间


HttpServerUtility 类

HttpServerUtility 类
成员

提供用于处理 Web 请求的 Helper 方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpServerUtility
public sealed class HttpServerUtility
public ref class HttpServerUtility sealed
[<SealedAttribute>]
type HttpServerUtility =  class end

HttpServerUtility 类的方法和属性通过 ASP.NET 提供的内部 Server 对象公开。

下面的示例演示如何使用 HttpServerUtility 类的 HtmlEncode 方法和 UrlEncode 方法。HtmlEncode 方法有助于确保用户提供的所有字符串输入将作为静态文本显示在浏览器中，而不是作为可执行脚本或 HTML 元素进行呈现。UrlEncode 方法对 URL 进行编码，以便在 HTTP 流中正确传输它们。 下面的示例演示如何使用 HttpServerUtility 类的 HtmlEncode 方法和 UrlEncode 方法。HtmlEncode 方法有助于确保用户提供的所有字符串输入将作为静态文本显示在浏览器中，而不是作为可执行脚本或 HTML 元素进行呈现。UrlEncode 方法对 URL 进行编码，以便在 HTTP 流中正确传输它们。 下面的示例演示如何使用 HttpServerUtility 类的 HtmlEncode 方法和 UrlEncode 方法。HtmlEncode 方法有助于确保用户提供的所有字符串输入将作为静态文本显示在浏览器中，而不是作为可执行脚本或 HTML 元素进行呈现。UrlEncode 方法对 URL 进行编码，以便在 HTTP 流中正确传输它们。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        If (Not String.IsNullOrEmpty(TextBox1.Text)) Then

            ' Access the HttpServerUtility methods through
            ' the intrinsic Server object.
            Label1.Text = "Welcome, " & _
                Server.HtmlEncode(TextBox1.Text) & _
                ".<br/> The url is " & _
                Server.UrlEncode(Request.Url.ToString())
        End If

    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>HttpServerUtility Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Enter your name:<br />

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
        <br />
        <asp:Label ID="Label1" runat="server"/>
        </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(TextBox1.Text))
        {
            // Access the HttpServerUtility methods through
            // the intrinsic Server object.
            Label1.Text = "Welcome, " +
                Server.HtmlEncode(TextBox1.Text) +
                ".<br/> The url is " +
                Server.UrlEncode(Request.Url.ToString());
        }
    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpServerUtility Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        Enter your name:<br />

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
        <br />
        <asp:Label ID="Label1" runat="server"/>
        </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpServerUtilityHttpServerUtility
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 成员
System.Web 命名空间
HttpContext


HttpServerUtility 成员

HttpServerUtility 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

提供用于处理 Web 请求的 Helper 方法。

HttpServerUtility 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpServerUtility 类
System.Web 命名空间


HttpServerUtility 方法

HttpServerUtility 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

HttpServerUtility 类型公开以下成员。

名称 说明
页首

参考

HttpServerUtility 类
System.Web 命名空间


HttpServerUtility ..::.ClearError 方法

HttpServerUtility
.
.
::
.
ClearError 方法
HttpServerUtility 类

清除前一个异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub ClearError
public void ClearError()
public:
void ClearError()
member ClearError : unit -> unit

下面的示例清除上次引发的异常。

Server.ClearError()

Server.ClearError();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间
GetLastError


HttpServerUtility ..::.CreateObject 方法

HttpServerUtility
.
.
::
.
CreateObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

创建 COM 对象的一个服务器实例。

名称 说明
页首

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.CreateObject 方法 (String)

HttpServerUtility
.
.
::
.
CreateObject 方法 (String)
HttpServerUtility 类

创建 COM 对象的服务器实例，该 COM 对象由对象的程序标识符 (ProgID) 标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted := True)> _
Public Function CreateObject ( _
    progID As String _
) As Object
[SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
public Object CreateObject(
    string progID
)
[SecurityPermissionAttribute(SecurityAction::Demand, Unrestricted = true)]
public:
Object^ CreateObject(
    String^ progID
)
[<SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)>]
member CreateObject :
        progID:string -> Object

参数

progID
类型： System String
要创建其实例的对象的类或类型。

返回值

类型： System Object
新对象。
异常 | 条件
HttpException | 未能创建该对象的实例。

下面的示例使用对象的 ProgID 创建一个对象。

Dim MyObject As Object
MyObject = Server.CreateObject("Acme.Component.3")

Object MyObject;
MyObject = Server.CreateObject("Acme.Component.3");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
CreateObject 重载
System.Web 命名空间
CreateObjectFromClsid


HttpServerUtility ..::.CreateObject 方法 (Type)

HttpServerUtility
.
.
::
.
CreateObject 方法 (Type)
HttpServerUtility 类

创建由对象类型标识的 COM 对象的一个服务器实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode := True)> _
Public Function CreateObject ( _
    type As Type _
) As Object
[SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)]
public Object CreateObject(
    Type type
)
[SecurityPermissionAttribute(SecurityAction::Demand, UnmanagedCode = true)]
public:
Object^ CreateObject(
    Type^ type
)
[<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)>]
member CreateObject :
        type:Type -> Object

参数

type
类型： System Type
一个 Type，表示要创建的对象。

返回值

类型： System Object
新对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
CreateObject 重载
System.Web 命名空间


HttpServerUtility ..::.CreateObjectFromClsid 方法

HttpServerUtility
.
.
::
.
CreateObjectFromClsid 方法
HttpServerUtility 类

创建 COM 对象的服务器实例，该对象由对象的类标识符 (CLSID) 标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode := True)> _
Public Function CreateObjectFromClsid ( _
    clsid As String _
) As Object
[SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)]
public Object CreateObjectFromClsid(
    string clsid
)
[SecurityPermissionAttribute(SecurityAction::Demand, UnmanagedCode = true)]
public:
Object^ CreateObjectFromClsid(
    String^ clsid
)
[<SecurityPermissionAttribute(SecurityAction.Demand, UnmanagedCode = true)>]
member CreateObjectFromClsid :
        clsid:string -> Object

参数

clsid
类型： System String
要创建其实例的对象的类标识符。

返回值

类型： System Object
新对象。
异常 | 条件
HttpException | 未能创建该对象的实例。

下面的示例演示如何使用 CreateObjectFromClsid 方法创建 COM 对象的服务器实例。

Dim ClsidStr As String
Dim MyObject As Object

ClsidStr = "42754580-16b7-11ce-80eb-00aa003d7352"
MyObject = Server.CreateObject(ClsidStr)

String ClsidStr;
Object MyObject;

ClsidStr = "42754580-16b7-11ce-80eb-00aa003d7352";
MyObject = Server.CreateObject(ClsidStr);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间
CreateObject


HttpServerUtility ..::.Execute 方法

HttpServerUtility
.
.
::
.
Execute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

在当前请求的上下文中执行指定资源的处理程序，然后将执行返回给调用它的页。

名称 说明
页首

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.Execute 方法 (String)

HttpServerUtility
.
.
::
.
Execute 方法 (String)
HttpServerUtility 类

在当前请求的上下文中执行指定虚拟路径的处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Execute ( _
    path As String _
)
public void Execute(
    string path
)
public:
void Execute(
    String^ path
)
member Execute :
        path:string -> unit

参数

path
类型： System String
要执行的 URL 路径。
异常 | 条件
HttpException | 当前 HttpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 并非虚拟路径。

在执行完新页后，Execute 方法将继续执行原始页。Transfer 方法无条件地将执行转移到另一处理程序。 在执行完新页后，Execute 方法将继续执行原始页。Transfer 方法无条件地将执行转移到另一处理程序。

ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Execute 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

下面的示例显示当前目录中的 .aspx 页“Updateinfo.aspx”。在显示 Updateinfo.aspx 页后，程序执行将返回到起始页。 下面的示例显示当前目录中的 .aspx 页“Updateinfo.aspx”。在显示 Updateinfo.aspx 页后，程序执行将返回到起始页。

Server.Execute("updateinfo.aspx")

Server.Execute("updateinfo.aspx");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Execute 重载
System.Web 命名空间


HttpServerUtility ..::.Execute 方法 (String, Boolean)

HttpServerUtility
.
.
::
.
Execute 方法 (String, Boolean)
HttpServerUtility 类

在当前请求的上下文中执行指定虚拟路径的处理程序，并指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Execute ( _
    path As String, _
    preserveForm As Boolean _
)
public void Execute(
    string path,
    bool preserveForm
)
public:
void Execute(
    String^ path,
    bool preserveForm
)
member Execute :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的 URL 路径。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
HttpException | 当前 HttpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 并非虚拟路径。

下面的示例演示如何执行当前请求中的 .aspx 页 Updateinfo.aspx，以及如何保留 QueryString 和 Form 集合。在显示 Updateinfo.aspx 后，程序执行将返回到起始页。 下面的示例演示如何执行当前请求中的 .aspx 页 Updateinfo.aspx，以及如何保留 QueryString 和 Form 集合。在显示 Updateinfo.aspx 后，程序执行将返回到起始页。

Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs)
    Server.Execute("updateinfo.aspx", True)
End Sub

private void Page_Load(Object sender, EventArgs e)
{
    Server.Execute("updateinfo.aspx", true);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Execute 重载
System.Web 命名空间
Transfer


HttpServerUtility ..::.Execute 方法 (String, TextWriter)

HttpServerUtility
.
.
::
.
Execute 方法 (String, TextWriter)
HttpServerUtility 类

在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获执行的处理程序的输出。 在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获执行的处理程序的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Execute ( _
    path As String, _
    writer As TextWriter _
)
public void Execute(
    string path,
    TextWriter writer
)
public:
void Execute(
    String^ path,
    TextWriter^ writer
)
member Execute :
        path:string *
        writer:TextWriter -> unit

参数

path
类型： System String
要执行的 URL 路径。
writer
类型： System.IO TextWriter
要捕获输出的 TextWriter。
异常 | 条件
HttpException | 当前 HttpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 并非虚拟路径。

在执行完指定的虚拟路径后，Execute 方法将继续执行原始请求。Transfer 方法无条件地将执行转移到另一处理程序。 在执行完指定的虚拟路径后，Execute 方法将继续执行原始请求。Transfer 方法无条件地将执行转移到另一处理程序。

ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Execute 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

下面的示例在当前目录中执行服务器上的 Login.aspx，并通过 StringWriter 对象 writer 接收该页的输出。它将从 writer 接收的 HTML 流写入 HTTP 输出流。 下面的示例在当前目录中执行服务器上的 Login.aspx，并通过 StringWriter 对象 writer 接收该页的输出。它将从 writer 接收的 HTML 流写入 HTTP 输出流。

Dim writer As New StringWriter
Server.Execute("Login.aspx", writer)
Response.Write("<H3>Please Login:</H3><br>" & writer.ToString())

StringWriter writer = new StringWriter();
Server.Execute("Login.aspx", writer);
Response.Write("<H3>Please Login:</H3><br>"+ writer.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Execute 重载
System.Web 命名空间
Transfer


HttpServerUtility ..::.Execute 方法 (IHttpHandler, TextWriter, Boolean)

HttpServerUtility
.
.
::
.
Execute 方法 (IHttpHandler, TextWriter, Boolean)
HttpServerUtility 类

在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获执行的处理程序的输出，布尔参数则指定是否清除 QueryString 和 Form 集合。 在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获执行的处理程序的输出，布尔参数则指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Execute ( _
    handler As IHttpHandler, _
    writer As TextWriter, _
    preserveForm As Boolean _
)
public void Execute(
    IHttpHandler handler,
    TextWriter writer,
    bool preserveForm
)
public:
void Execute(
    IHttpHandler^ handler,
    TextWriter^ writer,
    bool preserveForm
)
member Execute :
        handler:IHttpHandler *
        writer:TextWriter *
        preserveForm:bool -> unit

参数

handler
类型： System.Web IHttpHandler
实现 IHttpHandler 以便向其传输当前请求的 HTTP 处理程序。
writer
类型： System.IO TextWriter
要捕获输出的 TextWriter。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
HttpException | 执行由 handler 指定的处理程序时发生错误。
ArgumentNullException | handler 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HTTP 处理程序类中定义的可执行代码，而不是常规的 ASP（又称经典 ASP）页或 ASP.NET 页中的代码。HTTP 处理程序为您提供一种方法，使您可以与运行 Internet 信息服务 (IIS) 的 Web 服务器的低级别请求和响应服务交互，同时提供类似于 ISAPI 扩展的功能，但编程模型更简单。 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HTTP 处理程序类中定义的可执行代码，而不是常规的 ASP（又称经典 ASP）页或 ASP.NET 页中的代码。HTTP 处理程序为您提供一种方法，使您可以与运行 Internet 信息服务 (IIS) 的 Web 服务器的低级别请求和响应服务交互，同时提供类似于 ISAPI 扩展的功能，但编程模型更简单。 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HTTP 处理程序类中定义的可执行代码，而不是常规的 ASP（又称经典 ASP）页或 ASP.NET 页中的代码。HTTP 处理程序为您提供一种方法，使您可以与运行 Internet 信息服务 (IIS) 的 Web 服务器的低级别请求和响应服务交互，同时提供类似于 ISAPI 扩展的功能，但编程模型更简单。

ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 IIS 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 IIS 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 IIS 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Execute 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Execute 重载
System.Web 命名空间
Transfer


HttpServerUtility ..::.Execute 方法 (String, TextWriter, Boolean)

HttpServerUtility
.
.
::
.
Execute 方法 (String, TextWriter, Boolean)
HttpServerUtility 类

在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获页面输出，布尔参数则指定是否清除 QueryString 和 Form 集合。 在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获页面输出，布尔参数则指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Execute ( _
    path As String, _
    writer As TextWriter, _
    preserveForm As Boolean _
)
public void Execute(
    string path,
    TextWriter writer,
    bool preserveForm
)
public:
void Execute(
    String^ path,
    TextWriter^ writer,
    bool preserveForm
)
member Execute :
        path:string *
        writer:TextWriter *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的 URL 路径。
writer
类型： System.IO TextWriter
要捕获输出的 TextWriter。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
HttpException | 当前 HttpContext 为 null 引用（Visual Basic 中为 Nothing）。 - 或 - path 以句点 (.) 结尾。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 并非虚拟路径。

在指定的虚拟路径执行完毕后，Execute 方法将继续执行原始请求。Transfer 方法无条件地将执行转移到另一处理程序。 在指定的虚拟路径执行完毕后，Execute 方法将继续执行原始请求。Transfer 方法无条件地将执行转移到另一处理程序。

ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Execute 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Execute 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Execute 方法强制再次授权。Redirect 执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Execute 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

下面的示例在当前目录中执行服务器上的 Login.aspx，并通过 StringWriter 对象 writer 接收该页的输出。它将从 writer 接收的 HTML 流写入 HTTP 输出流。Form 和 QueryString 集合的内容被保留。 下面的示例在当前目录中执行服务器上的 Login.aspx，并通过 StringWriter 对象 writer 接收该页的输出。它将从 writer 接收的 HTML 流写入 HTTP 输出流。Form 和 QueryString 集合的内容被保留。 下面的示例在当前目录中执行服务器上的 Login.aspx，并通过 StringWriter 对象 writer 接收该页的输出。它将从 writer 接收的 HTML 流写入 HTTP 输出流。Form 和 QueryString 集合的内容被保留。

Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs)
    Dim writer As System.IO.StringWriter = New System.IO.StringWriter()
    Server.Execute("Login.aspx", writer, True)
    Response.Write("<h3>Please Login:</h3><br />" + writer.ToString())
End Sub

private void Page_Load(Object sender, EventArgs e)
{
    System.IO.StringWriter writer = new System.IO.StringWriter();
    Server.Execute("Login.aspx", writer, true);
    Response.Write("<h3>Please Login:</h3><br />" + writer.ToString());
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Execute 重载
System.Web 命名空间
Transfer


HttpServerUtility ..::.GetLastError 方法

HttpServerUtility
.
.
::
.
GetLastError 方法
HttpServerUtility 类

返回前一个异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetLastError As Exception
public Exception GetLastError()
public:
Exception^ GetLastError()
member GetLastError : unit -> Exception

返回值

类型： System Exception
引发的前一个异常。

下面的示例将对应用程序的上一个错误的说明输出到 HTTP 输出流。若未遇到任何错误，则输出“No Errors”。 下面的示例将对应用程序的上一个错误的说明输出到 HTTP 输出流。若未遇到任何错误，则输出“No Errors”。

Dim LastError As Exception
Dim ErrMessage As String

LastError = Server.GetLastError()

If Not LastError Is Nothing Then
   ErrMessage = LastError.Message
Else
   ErrMessage = "No Errors"
End If

Response.Write("Last Error = " & ErrMessage)

Exception LastError;
String ErrMessage;

LastError = Server.GetLastError();

if (LastError != null)
   ErrMessage = LastError.Message;
else
   ErrMessage = "No Errors";

Response.Write("Last Error = " + ErrMessage);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间
ClearError


HttpServerUtility ..::.HtmlDecode 方法

HttpServerUtility
.
.
::
.
HtmlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

对已被编码以消除无效 HTML 字符的字符串进行解码。

名称 说明
页首

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.HtmlDecode 方法 (String)

HttpServerUtility
.
.
::
.
HtmlDecode 方法 (String)
HttpServerUtility 类

对 HTML 编码的字符串进行解码，并返回已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function HtmlDecode ( _
    s As String _
) As String
public string HtmlDecode(
    string s
)
public:
String^ HtmlDecode(
    String^ s
)
member HtmlDecode :
        s:string -> string

参数

s
类型： System String
要解码的 HTML 字符串。

返回值

类型： System String
已解码的文本。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

HtmlDecode 对已传输到服务器的文本进行解码。

HtmlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlDecode 方法。HtmlDecode 在内部使用 HttpUtility..::.HtmlDecode 对字符串进行解码。 HtmlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlDecode 方法。HtmlDecode 在内部使用 HttpUtility..::.HtmlDecode 对字符串进行解码。

下面的示例包含函数 LoadDecodedFile，该函数对文件中的数据进行解码，并将这些数据复制到一个字符串中。

<%@ PAGE LANGUAGE = "VB" %>
<%@ Import Namespace="System.IO" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<script runat = "server">

   Function LoadDecodedFile(file As String) As String
      Dim DecodedString As String
      Dim fs As New FileStream(file, FileMode.Open)
      Dim r As New StreamReader(fs)
      ' Position the file pointer at the beginning of the file.
      r.BaseStream.Seek(0, SeekOrigin.Begin)
      ' Read the entire file into a string and decode each chunk.
      Do While r.Peek() > -1
         DecodedString = DecodedString & _
            Server.HtmlDecode(r.ReadLine())
      Loop
      r.Close()
      LoadDecodedFile = DecodedString
   End Function

</script>
<head runat="server">
    <title> HttpServerUtility.HtmlDecode Example</title>
</head>
<body></body>
</html>

<%@ PAGE LANGUAGE = "C#" %>
 <%@ IMPORT NAMESPACE = "System.IO" %>

 <html xmlns="http://www.w3.org/1999/xhtml">
 <script runat ="server">

    String LoadDecodedFile(String file)
       {
       String DecodedString = "";
       FileStream fs = new FileStream(file, FileMode.Open);
       StreamReader r = new StreamReader(fs);

       // Position the file pointer at the beginning of the file.
       r.BaseStream.Seek(0, SeekOrigin.Begin);

       // Read the entire file into a string and decode each chunk.
       while (r.Peek() > -1)
          DecodedString += Server.HtmlDecode(r.ReadLine());

       r.Close();
       return DecodedString;
       }

 </script>
 <head runat="server">
 <title>HttpServerUtility.HtmlDecode Example</title>
 </head>
 <body></body>
 </html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
HtmlDecode 重载
System.Web 命名空间


HttpServerUtility ..::.HtmlDecode 方法 (String, TextWriter)

HttpServerUtility
.
.
::
.
HtmlDecode 方法 (String, TextWriter)
HttpServerUtility 类

对 HTML 编码的字符串进行解码，并将结果输出发送到 TextWriter 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub HtmlDecode ( _
    s As String, _
    output As TextWriter _
)
public void HtmlDecode(
    string s,
    TextWriter output
)
public:
void HtmlDecode(
    String^ s,
    TextWriter^ output
)
member HtmlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的 HTML 字符串。
output
类型： System.IO TextWriter
TextWriter 输出包含已解码字符串的流。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

HtmlDecode 对已传输到服务器的文本进行解码。

HtmlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlDecode 方法。HtmlDecode 在内部使用 HttpUtility..::.HtmlDecode 对字符串进行解码。 HtmlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlDecode 方法。HtmlDecode 在内部使用 HttpUtility..::.HtmlDecode 对字符串进行解码。

下面的示例对一个字符串进行解码，该字符串进行了 HTML 编码以便通过 HTTP 进行传输。该示例对提供的名为 EncodedString 字符串（包含文本“This is a &ltTest String&gt.”）进行解码，然后将解码后的内容“This is a <Test String>.”复制到名为 DecodedString 的字符串中。 下面的示例对一个字符串进行解码，该字符串进行了 HTML 编码以便通过 HTTP 进行传输。该示例对提供的名为 EncodedString 字符串（包含文本“This is a &ltTest String&gt.”）进行解码，然后将解码后的内容“This is a <Test String>.”复制到名为 DecodedString 的字符串中。

Dim EncodedString As String = "This is a &ltTest String&gt."
Dim writer As New StringWriter
Server.HtmlDecode(EncodedString, writer)
Dim DecodedString As String = writer.ToString()

String EncodedString = "This is a &ltTest String&gt.";
StringWriter writer = new StringWriter();
Server.HtmlDecode(EncodedString, writer);
String DecodedString = writer.ToString();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
HtmlDecode 重载
System.Web 命名空间


HttpServerUtility ..::.HtmlEncode 方法

HttpServerUtility
.
.
::
.
HtmlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

对要在浏览器中显示的字符串进行编码。

名称 说明
页首

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.HtmlEncode 方法 (String)

HttpServerUtility
.
.
::
.
HtmlEncode 方法 (String)
HttpServerUtility 类

对字符串进行 HTML 编码并返回已编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function HtmlEncode ( _
    s As String _
) As String
public string HtmlEncode(
    string s
)
public:
String^ HtmlEncode(
    String^ s
)
member HtmlEncode :
        s:string -> string

参数

s
类型： System String
要编码的文本字符串。

返回值

类型： System String
HTML 编码的文本。

HTML 编码确保文本能在浏览器中正确显示，而不是被浏览器解释为 HTML。例如，如果文本字符串包含小于号 (<) 或大于号 (>)，则浏览器会把这些字符解释为 HTML 标记的起始或结束括号。当字符为 HTML 编码时，它们将转换为字符串 &lt; 和 &gt;，以便浏览器能够正确显示小于号和大于号。 HTML 编码确保文本能在浏览器中正确显示，而不是被浏览器解释为 HTML。例如，如果文本字符串包含小于号 (<) 或大于号 (>)，则浏览器会把这些字符解释为 HTML 标记的起始或结束括号。当字符为 HTML 编码时，它们将转换为字符串 &lt; 和 &gt;，以便浏览器能够正确显示小于号和大于号。 HTML 编码确保文本能在浏览器中正确显示，而不是被浏览器解释为 HTML。例如，如果文本字符串包含小于号 (<) 或大于号 (>)，则浏览器会把这些字符解释为 HTML 标记的起始或结束括号。当字符为 HTML 编码时，它们将转换为字符串 &lt; 和 &gt;，以便浏览器能够正确显示小于号和大于号。

HtmlEncode 方法是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlEncode 方法。HtmlEncode 在内部使用 HttpUtility..::.HtmlEncode 对字符串进行编码。 HtmlEncode 方法是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlEncode 方法。HtmlEncode 在内部使用 HttpUtility..::.HtmlEncode 对字符串进行编码。

下面的示例对字符串进行编码以便通过 HTTP 传输。该示例对名为 TestString 且包含文本“This is a <Test String>.”的字符串进行编码，然后将其复制到名为 EncodedString 的字符串，新字符串的内容为“This is a &lt;Test String&gt;.”。 下面的示例对字符串进行编码以便通过 HTTP 传输。该示例对名为 TestString 且包含文本“This is a <Test String>.”的字符串进行编码，然后将其复制到名为 EncodedString 的字符串，新字符串的内容为“This is a &lt;Test String&gt;.”。

Dim TestString As String = "This is a <Test String>."
Dim EncodedString As String = Server.HtmlEncode(TestString)

String TestString = "This is a <Test String>.";
String EncodedString = Server.HtmlEncode(TestString);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
HtmlEncode 重载
System.Web 命名空间


HttpServerUtility ..::.HtmlEncode 方法 (String, TextWriter)

HttpServerUtility
.
.
::
.
HtmlEncode 方法 (String, TextWriter)
HttpServerUtility 类

对字符串进行 HTML 编码，并将结果输出发送到 TextWriter 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub HtmlEncode ( _
    s As String, _
    output As TextWriter _
)
public void HtmlEncode(
    string s,
    TextWriter output
)
public:
void HtmlEncode(
    String^ s,
    TextWriter^ output
)
member HtmlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串。
output
类型： System.IO TextWriter
TextWriter 输出包含已编码字符串的流。

HTML 编码确保文本能在浏览器中正确显示，而不是被浏览器解释为 HTML。例如，如果文本字符串包含小于号 (<) 或大于号 (>)，则浏览器会把这些字符解释为 HTML 标记的起始或结束括号。这两个字符的 HTML 编码分别为 &lt; 和 &gt;，以便浏览器能够正确显示小于号和大于号。 HTML 编码确保文本能在浏览器中正确显示，而不是被浏览器解释为 HTML。例如，如果文本字符串包含小于号 (<) 或大于号 (>)，则浏览器会把这些字符解释为 HTML 标记的起始或结束括号。这两个字符的 HTML 编码分别为 &lt; 和 &gt;，以便浏览器能够正确显示小于号和大于号。 HTML 编码确保文本能在浏览器中正确显示，而不是被浏览器解释为 HTML。例如，如果文本字符串包含小于号 (<) 或大于号 (>)，则浏览器会把这些字符解释为 HTML 标记的起始或结束括号。这两个字符的 HTML 编码分别为 &lt; 和 &gt;，以便浏览器能够正确显示小于号和大于号。

HtmlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlEncode 方法。HtmlEncode 在内部使用 HttpUtility..::.HtmlEncode 对字符串进行编码。 HtmlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.HtmlEncode 方法。HtmlEncode 在内部使用 HttpUtility..::.HtmlEncode 对字符串进行编码。

下面的示例对字符串进行编码以便通过 HTTP 传输。该示例对名为 TestString 且包含文本“This is a <Test String>.”的字符串进行编码，然后将其复制到名为 EncodedString 的字符串，新字符串的内容为“This is a &lt;Test String&gt;.”。 下面的示例对字符串进行编码以便通过 HTTP 传输。该示例对名为 TestString 且包含文本“This is a <Test String>.”的字符串进行编码，然后将其复制到名为 EncodedString 的字符串，新字符串的内容为“This is a &lt;Test String&gt;.”。

Dim TestString As String = "This is a <Test String>."
Dim writer As New StringWriter
Server.HtmlEncode(TestString, writer)
Dim EncodedString As String = writer.ToString()

String TestString = "This is a <Test String>.";
StringWriter writer = new StringWriter();
Server.HtmlEncode(TestString, writer);
String EncodedString = writer.ToString();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
HtmlEncode 重载
System.Web 命名空间


HttpServerUtility ..::.MapPath 方法

HttpServerUtility
.
.
::
.
MapPath 方法
HttpServerUtility 类

返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function MapPath ( _
    path As String _
) As String
public string MapPath(
    string path
)
public:
String^ MapPath(
    String^ path
)
member MapPath :
        path:string -> string

参数

path
类型： System String
Web 服务器的虚拟路径。

返回值

类型： System String
与 path 相对应的物理文件路径。
异常 | 条件
HttpException | 当前 HttpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果 path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），MapPath 方法将返回包含当前应用程序的目录的完整物理路径。

安全说明 安全说明

MapPath 方法很可能包含有关承载环境的敏感信息。不应向用户显示返回值。 MapPath 方法很可能包含有关承载环境的敏感信息。不应向用户显示返回值。

下面的示例返回包含指定网站的虚拟目录的物理路径。在此示例中，路径的开始处斜杠 (/) 指示该站点的绝对虚拟路径。 下面的示例返回包含指定网站的虚拟目录的物理路径。在此示例中，路径的开始处斜杠 (/) 指示该站点的绝对虚拟路径。

若要读取代码隐藏模块中的 MapPath，请使用 HttpContext.Current.Server.MapPath。

Dim FilePath As String
FilePath = Server.MapPath("/MyWebSite")

String FilePath;
FilePath = Server.MapPath("/MyWebSite");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.Transfer 方法

HttpServerUtility
.
.
::
.
Transfer 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

终止当前页的执行，并为当前请求开始执行新页。

名称 说明
页首

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.Transfer 方法 (String)

HttpServerUtility
.
.
::
.
Transfer 方法 (String)
HttpServerUtility 类

对于当前请求，终止当前页的执行，并使用指定的页 URL 路径来开始执行一个新页。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Transfer ( _
    path As String _
)
public void Transfer(
    string path
)
public:
void Transfer(
    String^ path
)
member Transfer :
        path:string -> unit

参数

path
类型： System String
服务器上要执行的新页的 URL 路径。

传输到的页也应该是 .aspx 页。例如，传输到 .asp 或 .asmx 页是无效的。Transfer 方法保留 QueryString 和 Form 集合。 传输到的页也应该是 .aspx 页。例如，传输到 .asp 或 .asmx 页是无效的。Transfer 方法保留 QueryString 和 Form 集合。 传输到的页也应该是 .aspx 页。例如，传输到 .asp 或 .asmx 页是无效的。Transfer 方法保留 QueryString 和 Form 集合。

Transfer 调用 End，后者在完成时引发 ThreadAbortException 异常。

ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Transfer 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Transfer 重载
System.Web 命名空间


HttpServerUtility ..::.Transfer 方法 (IHttpHandler, Boolean)

HttpServerUtility
.
.
::
.
Transfer 方法 (IHttpHandler, Boolean)
HttpServerUtility 类

终止当前页的执行，然后使用一个实现 IHttpHandler 接口的自定义 HTTP 处理程序开始新请求的执行，并指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Transfer ( _
    handler As IHttpHandler, _
    preserveForm As Boolean _
)
public void Transfer(
    IHttpHandler handler,
    bool preserveForm
)
public:
void Transfer(
    IHttpHandler^ handler,
    bool preserveForm
)
member Transfer :
        handler:IHttpHandler *
        preserveForm:bool -> unit

参数

handler
类型： System.Web IHttpHandler
实现 IHttpHandler 以便向其传输当前请求的 HTTP 处理程序。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
ApplicationException | 当前页请求为回调。

可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HTTP 处理程序类中定义的可执行代码，而不是传统 ASP（又称经典 ASP）页或 ASP.NET 页中的代码。HTTP 处理程序为您提供一种方法，使您可以与运行 Internet 信息服务 (IIS) 的 Web 服务器的低级别请求和响应服务交互，同时提供类似于 ISAPI 扩展的功能，但编程模型更简单。 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HTTP 处理程序类中定义的可执行代码，而不是传统 ASP（又称经典 ASP）页或 ASP.NET 页中的代码。HTTP 处理程序为您提供一种方法，使您可以与运行 Internet 信息服务 (IIS) 的 Web 服务器的低级别请求和响应服务交互，同时提供类似于 ISAPI 扩展的功能，但编程模型更简单。 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HTTP 处理程序类中定义的可执行代码，而不是传统 ASP（又称经典 ASP）页或 ASP.NET 页中的代码。HTTP 处理程序为您提供一种方法，使您可以与运行 Internet 信息服务 (IIS) 的 Web 服务器的低级别请求和响应服务交互，同时提供类似于 ISAPI 扩展的功能，但编程模型更简单。

如果将 preserveForm 设置为 true，而且 pages 配置元素的 enableViewStateMac 特性为 true，ASP.NET 将在执行 Transfer 方法时引发异常，因为调用 Transfer 方法的页的视图状态在目标页上无效。调用页上保留的窗体字段之一是隐藏的 __VIEWSTATE 窗体字段，该字段存放该页的视图状态。如果 enableViewStateMac 为 true，当目标页从客户端回发时 ASP.NET 将对该页的视图状态运行消息验证检查，而且检查将失败。 如果将 preserveForm 设置为 true，而且 pages 配置元素的 enableViewStateMac 特性为 true，ASP.NET 将在执行 Transfer 方法时引发异常，因为调用 Transfer 方法的页的视图状态在目标页上无效。调用页上保留的窗体字段之一是隐藏的 __VIEWSTATE 窗体字段，该字段存放该页的视图状态。如果 enableViewStateMac 为 true，当目标页从客户端回发时 ASP.NET 将对该页的视图状态运行消息验证检查，而且检查将失败。 如果将 preserveForm 设置为 true，而且 pages 配置元素的 enableViewStateMac 特性为 true，ASP.NET 将在执行 Transfer 方法时引发异常，因为调用 Transfer 方法的页的视图状态在目标页上无效。调用页上保留的窗体字段之一是隐藏的 __VIEWSTATE 窗体字段，该字段存放该页的视图状态。如果 enableViewStateMac 为 true，当目标页从客户端回发时 ASP.NET 将对该页的视图状态运行消息验证检查，而且检查将失败。

出于安全性的考虑，应将 enableViewStateMac 特性始终设置为 true。但是，还可以使用其他一些方法传输窗体数据。有关更多信息（包括建议的解决方案），请参见 Microsoft 知识库网站上的文章 Q316920“使用 Server.Transfer 时出现‘View State Is Invalid’（视图状态无效）错误消息”。 出于安全性的考虑，应将 enableViewStateMac 特性始终设置为 true。但是，还可以使用其他一些方法传输窗体数据。有关更多信息（包括建议的解决方案），请参见 Microsoft 知识库网站上的文章 Q316920“使用 Server.Transfer 时出现‘View State Is Invalid’（视图状态无效）错误消息”。 出于安全性的考虑，应将 enableViewStateMac 特性始终设置为 true。但是，还可以使用其他一些方法传输窗体数据。有关更多信息（包括建议的解决方案），请参见 Microsoft 知识库网站上的文章 Q316920“使用 Server.Transfer 时出现‘View State Is Invalid’（视图状态无效）错误消息”。

ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 IIS 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 IIS 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 IIS 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Transfer 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Transfer 重载
System.Web 命名空间


HttpServerUtility ..::.Transfer 方法 (String, Boolean)

HttpServerUtility
.
.
::
.
Transfer 方法 (String, Boolean)
HttpServerUtility 类

终止当前页的执行，并使用指定的页 URL 路径来开始执行一个新页。指定是否清除 QueryString 和 Form 集合。 终止当前页的执行，并使用指定的页 URL 路径来开始执行一个新页。指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Transfer ( _
    path As String, _
    preserveForm As Boolean _
)
public void Transfer(
    string path,
    bool preserveForm
)
public:
void Transfer(
    String^ path,
    bool preserveForm
)
member Transfer :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
服务器上要执行的新页的 URL 路径。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
ApplicationException | 当前页请求为回调。

传输到的页也应该是 .aspx 页。例如，传输到 .asp 或 .asmx 页是无效的。 传输到的页也应该是 .aspx 页。例如，传输到 .asp 或 .asmx 页是无效的。

Transfer 调用 End，后者在完成时引发 ThreadAbortException 异常。

如果将 preserveForm 设置为 true，而且 pages 配置元素的 enableViewStateMac 特性为 true，ASP.NET 将在执行 Transfer 时引发异常，因为调用 Transfer 的页的视图状态在目标页上无效。调用页上保留的窗体字段之一是隐藏的 __VIEWSTATE 窗体字段，该字段存放该页的视图状态。如果 enableViewStateMac 为 true，当目标页从客户端回发时 ASP.NET 将对该页的视图状态运行消息验证检查，而且检查将失败。 如果将 preserveForm 设置为 true，而且 pages 配置元素的 enableViewStateMac 特性为 true，ASP.NET 将在执行 Transfer 时引发异常，因为调用 Transfer 的页的视图状态在目标页上无效。调用页上保留的窗体字段之一是隐藏的 __VIEWSTATE 窗体字段，该字段存放该页的视图状态。如果 enableViewStateMac 为 true，当目标页从客户端回发时 ASP.NET 将对该页的视图状态运行消息验证检查，而且检查将失败。 如果将 preserveForm 设置为 true，而且 pages 配置元素的 enableViewStateMac 特性为 true，ASP.NET 将在执行 Transfer 时引发异常，因为调用 Transfer 的页的视图状态在目标页上无效。调用页上保留的窗体字段之一是隐藏的 __VIEWSTATE 窗体字段，该字段存放该页的视图状态。如果 enableViewStateMac 为 true，当目标页从客户端回发时 ASP.NET 将对该页的视图状态运行消息验证检查，而且检查将失败。

出于安全性考虑，应将 enableViewStateMac 特性始终设置为 true，但还可使用其他方法来传递窗体数据。有关更多信息（包括建议的解决方案），请参见 Microsoft 知识库网站上的文章 Q316920“使用 Server.Transfer 时出现‘View State Is Invalid’（视图状态无效）错误消息”。 出于安全性考虑，应将 enableViewStateMac 特性始终设置为 true，但还可使用其他方法来传递窗体数据。有关更多信息（包括建议的解决方案），请参见 Microsoft 知识库网站上的文章 Q316920“使用 Server.Transfer 时出现‘View State Is Invalid’（视图状态无效）错误消息”。

ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。 ASP.NET 不验证当前用户是否有权查看由 Transfer 方法提交的资源。虽然 ASP.NET 授权和身份验证逻辑运行于调用原始资源处理程序之前，但 ASP.NET 仍将直接调用 Transfer 方法指示的处理程序，并且不为新资源重新运行授权和身份验证逻辑。如果应用程序的安全策略要求客户端具有适当的授权才能访问相应的资源，则应用程序应强制再次授权或提供一种自定义访问控制机制。

您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。 您可以使用 Redirect 方法而不是 Transfer 方法强制再次授权。Redirect 方法执行客户端重定向，此时浏览器请求新资源。此重定向是一个进入系统的新请求，因此，需要接受 Internet 信息服务 (IIS) 和 ASP.NET 安全策略的所有身份验证和授权逻辑的检验。

您可以在应用程序调用 Transfer 方法之前，通过结合使用 IsInRole 方法的自定义授权方法来验证用户是否有权查看资源。

下面的示例执行与当前页同处一个目录下的新页。

Server.Transfer("Logon.aspx", true)

Server.Transfer("Logon.aspx", true);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
Transfer 重载
System.Web 命名空间


HttpServerUtility ..::.TransferRequest 方法

HttpServerUtility
.
.
::
.
TransferRequest 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

异步执行指定的 URL。

名称 说明
页首

TransferRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 TransferRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.TransferRequest 方法 (String)

HttpServerUtility
.
.
::
.
TransferRequest 方法 (String)
HttpServerUtility 类

异步执行指定的 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub TransferRequest ( _
    path As String _
)
public void TransferRequest(
    string path
)
public:
void TransferRequest(
    String^ path
)
member TransferRequest :
        path:string -> unit

参数

path
类型： System String
服务器上要执行的新页的 URL 路径。
异常 | 条件
PlatformNotSupportedException | 该请求要求 IIS 7.0 处于集成管线模式。
HttpException | 服务器无法用于处理请求。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此重载调用 TransferRequest 重载，并将 preserveForm 参数设置为 false，将 method 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），以及将 headers 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。有关更多信息，请参见 TransferRequest 重载的“备注”部分。 此重载调用 TransferRequest 重载，并将 preserveForm 参数设置为 false，将 method 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），以及将 headers 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。有关更多信息，请参见 TransferRequest 重载的“备注”部分。

TransferRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 TransferRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpServerUtility 类
HttpServerUtility 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtility ..::.TransferRequest 方法 (String, Boolean)

HttpServerUtility
.
.
::
.
TransferRequest 方法 (String, Boolean)
HttpServerUtility 类

异步执行指定的 URL 并保留查询字符串参数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub TransferRequest ( _
    path As String, _
    preserveForm As Boolean _
)
public void TransferRequest(
    string path,
    bool preserveForm
)
public:
void TransferRequest(
    String^ path,
    bool preserveForm
)
member TransferRequest :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
服务器上要执行的新页的 URL 路径。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
PlatformNotSupportedException | 该请求要求 IIS 7.0 处于集成管线模式。
HttpException | 服务器无法用于处理请求。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

此重载调用 TransferRequest 重载，并将 preserveForm 参数设置为传入的值，将 method 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），以及将 headers 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。有关更多信息，请参见 TransferRequest 重载的“备注”部分。 此重载调用 TransferRequest 重载，并将 preserveForm 参数设置为传入的值，将 method 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），以及将 headers 参数设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。有关更多信息，请参见 TransferRequest 重载的“备注”部分。

TransferRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。 TransferRequest 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见.NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpServerUtility 类
HttpServerUtility 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtility ..::.TransferRequest 方法 (String, Boolean, String, NameValueCollection)

HttpServerUtility
.
.
::
.
TransferRequest 方法 (String, Boolean, String, NameValueCollection)
HttpServerUtility 类

使用指定的 HTTP 方法和标头异步执行指定的 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub TransferRequest ( _
    path As String, _
    preserveForm As Boolean, _
    method As String, _
    headers As NameValueCollection _
)
public void TransferRequest(
    string path,
    bool preserveForm,
    string method,
    NameValueCollection headers
)
public:
void TransferRequest(
    String^ path,
    bool preserveForm,
    String^ method,
    NameValueCollection^ headers
)
member TransferRequest :
        path:string *
        preserveForm:bool *
        method:string *
        headers:NameValueCollection -> unit

参数

path
类型： System String
服务器上要执行的新页的 URL 路径。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
method
类型： System String
在执行新请求时使用的 HTTP 方法。
headers
类型： System.Collections.Specialized NameValueCollection
用于新请求的请求标头的 NameValueCollection。
异常 | 条件
PlatformNotSupportedException | 该请求要求 IIS 7.0 在集成模式下运行。
HttpException | 服务器无法用于处理请求。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

当 IIS 7.0 在集成管线模式下运行时使用此方法，以便请求处理能够从一个资源类型传输到另一个资源类型，并使用正确的请求上下文执行目标请求。例如，可以使用 TransferRequest 方法将对一个 ASPX 页的请求传输到对一个 XML 页的请求。 当 IIS 7.0 在集成管线模式下运行时使用此方法，以便请求处理能够从一个资源类型传输到另一个资源类型，并使用正确的请求上下文执行目标请求。例如，可以使用 TransferRequest 方法将对一个 ASPX 页的请求传输到对一个 XML 页的请求。

TransferRequest 方法执行指定 URL 的异步子执行并带有以下条件：

  • 如果 path 参数指定了一个查询字符串，它将用作新的查询字符串。如果没有包括查询字符串，将重复使用请求的查询字符串。 如果 path 参数指定了一个查询字符串，它将用作新的查询字符串。如果没有包括查询字符串，将重复使用请求的查询字符串。

  • 如果指定了 method 参数，则会使用此参数。如果它为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用原始请求的 HTTP 方法。 如果指定了 method 参数，则会使用此参数。如果它为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将使用原始请求的 HTTP 方法。

  • 如果 preserveForm 参数为 true，则请求的当前实体主体将可用于目标请求。这使得能够传输窗体发送和上载。 如果 preserveForm 参数为 true，则请求的当前实体主体将可用于目标请求。这使得能够传输窗体发送和上载。

  • 如果当前设置了原始请求的用户标识，则会将该标识传输到新请求。这使得通过身份验证的请求可以将身份验证的结果重新用于新请求。如果不希望传输用户，请在开始传输之前将原始请求的用户设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 如果当前设置了原始请求的用户标识，则会将该标识传输到新请求。这使得通过身份验证的请求可以将身份验证的结果重新用于新请求。如果不希望传输用户，请在开始传输之前将原始请求的用户设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 如果当前设置了原始请求的用户标识，则会将该标识传输到新请求。这使得通过身份验证的请求可以将身份验证的结果重新用于新请求。如果不希望传输用户，请在开始传输之前将原始请求的用户设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

  • 如果指定了 headers 参数，将使用指定的标头执行新请求。这可以用于修改新请求的请求标头和 Cookie，或者添加一个指定原始请求的接收位置的特殊标头。 如果指定了 headers 参数，将使用指定的标头执行新请求。这可以用于修改新请求的请求标头和 Cookie，或者添加一个指定原始请求的接收位置的特殊标头。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpServerUtility 类
HttpServerUtility 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtility ..::.UrlDecode 方法

HttpServerUtility
.
.
::
.
UrlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

对字符串进行解码，该字符串针对 HTTP 传输进行了编码并在 URL 中发送到服务器。

名称 说明
页首

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.UrlDecode 方法 (String)

HttpServerUtility
.
.
::
.
UrlDecode 方法 (String)
HttpServerUtility 类

对字符串进行 URL 解码并返回已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function UrlDecode ( _
    s As String _
) As String
public string UrlDecode(
    string s
)
public:
String^ UrlDecode(
    String^ s
)
member UrlDecode :
        s:string -> string

参数

s
类型： System String
要解码的文本字符串。

返回值

类型： System String
已解码的文本。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

UrlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlDecode 方法。UrlDecode 在内部使用 HttpUtility..::.UrlDecode 对字符串进行解码。 UrlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlDecode 方法。UrlDecode 在内部使用 HttpUtility..::.UrlDecode 对字符串进行解码。

下面的示例将在 URL 中收到的名为 EncodedString 的字符串解码到名为 DecodedString 的字符串中。

Dim DecodedString As String = Server.UrlDecode(EncodedString)

String DecodedString = Server.UrlDecode(EncodedString);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
UrlDecode 重载
System.Web 命名空间


HttpServerUtility ..::.UrlDecode 方法 (String, TextWriter)

HttpServerUtility
.
.
::
.
UrlDecode 方法 (String, TextWriter)
HttpServerUtility 类

对在 URL 中接收的 HTML 字符串进行解码，并将结果输出发送到 TextWriter 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub UrlDecode ( _
    s As String, _
    output As TextWriter _
)
public void UrlDecode(
    string s,
    TextWriter output
)
public:
void UrlDecode(
    String^ s,
    TextWriter^ output
)
member UrlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的 HTML 字符串。
output
类型： System.IO TextWriter
TextWriter 输出包含已解码字符串的流。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

UrlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlDecode 方法。UrlDecode 在内部使用 HttpUtility..::.UrlDecode 对字符串进行解码。 UrlDecode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlDecode 方法。UrlDecode 在内部使用 HttpUtility..::.UrlDecode 对字符串进行解码。

下面的示例将在 URL 中收到的名为 EncodedString 的字符串解码到名为 DecodedString 的字符串中。

Dim writer As New StringWriter
Server.UrlDecode(EncodedString, writer)
Dim DecodedString As String = writer.ToString()

StringWriter writer = new StringWriter();
Server.UrlDecode(EncodedString, writer);
String DecodedString = writer.ToString();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
UrlDecode 重载
System.Web 命名空间


HttpServerUtility ..::.UrlEncode 方法

HttpServerUtility
.
.
::
.
UrlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

编码字符串，以便通过 URL 从 Web 服务器到客户端进行可靠的 HTTP 传输。

名称 说明
页首

UrlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlEncode 方法。UrlEncode 在内部使用 HttpUtility..::.UrlEncode 对字符串进行编码。 UrlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlEncode 方法。UrlEncode 在内部使用 HttpUtility..::.UrlEncode 对字符串进行编码。

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.UrlEncode 方法 (String)

HttpServerUtility
.
.
::
.
UrlEncode 方法 (String)
HttpServerUtility 类

对字符串进行 URL 编码，并返回已编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function UrlEncode ( _
    s As String _
) As String
public string UrlEncode(
    string s
)
public:
String^ UrlEncode(
    String^ s
)
member UrlEncode :
        s:string -> string

参数

s
类型： System String
要进行 URL 编码的文本。

返回值

类型： System String
URL 编码的文本。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

UrlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlEncode 方法。UrlEncode 在内部使用 HttpUtility..::.UrlEncode 对字符串进行编码。 UrlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlEncode 方法。UrlEncode 在内部使用 HttpUtility..::.UrlEncode 对字符串进行编码。

下面的示例对字符串进行 URL 编码，然后将其发送到浏览器客户端。在此示例中，将字符串 MyURL 编码为“http://www.contoso.com/articles.aspx?title=ASP.NET+Examples”。 下面的示例对字符串进行 URL 编码，然后将其发送到浏览器客户端。在此示例中，将字符串 MyURL 编码为“http://www.contoso.com/articles.aspx?title=ASP.NET+Examples”。

Dim MyURL As String
MyURL = "http://www.contoso.com/articles.aspx?title=" & Server.UrlEncode("ASP.NET Examples")

Response.Write( "<a href=" & MyURL & "> ASP.NET Examples </a>")

String MyURL;
MyURL = "http://www.contoso.com/articles.aspx?title=" + Server.UrlEncode("ASP.NET Examples");

Response.Write("<a href=" + MyURL + "> ASP.NET Examples </a>");

有关其他示例，请参见HttpServerUtility。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
UrlEncode 重载
System.Web 命名空间


HttpServerUtility ..::.UrlEncode 方法 (String, TextWriter)

HttpServerUtility
.
.
::
.
UrlEncode 方法 (String, TextWriter)
HttpServerUtility 类

对字符串进行 URL 编码，并将结果输出发送到 TextWriter 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub UrlEncode ( _
    s As String, _
    output As TextWriter _
)
public void UrlEncode(
    string s,
    TextWriter output
)
public:
void UrlEncode(
    String^ s,
    TextWriter^ output
)
member UrlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的文本字符串。
output
类型： System.IO TextWriter
TextWriter 输出包含已编码字符串的流。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

UrlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlEncode 方法。UrlEncode 在内部使用 HttpUtility..::.UrlEncode 对字符串进行编码。 UrlEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlEncode 方法。UrlEncode 在内部使用 HttpUtility..::.UrlEncode 对字符串进行编码。

下面的示例对字符串进行编码以便通过 HTTP 传输。该示例对名为 TestString 且包含文本“This is a <Test String>.”的字符串进行编码，然后将其复制到名为 EncodedString 的字符串，新字符串的内容为“This+is+a+%3cTest+String%3e.”。 下面的示例对字符串进行编码以便通过 HTTP 传输。该示例对名为 TestString 且包含文本“This is a <Test String>.”的字符串进行编码，然后将其复制到名为 EncodedString 的字符串，新字符串的内容为“This+is+a+%3cTest+String%3e.”。

Dim TestString As String = "This is a <Test String>."
Dim writer As New StringWriter
Server.UrlEncode(TestString, writer)
Dim EncodedString As String = writer.ToString()

String TestString = "This is a <Test String>.";
StringWriter writer = new StringWriter();
Server.UrlEncode(TestString, writer);
String EncodedString = writer.ToString();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
UrlEncode 重载
System.Web 命名空间


HttpServerUtility ..::.UrlPathEncode 方法

HttpServerUtility
.
.
::
.
UrlPathEncode 方法
HttpServerUtility 类

对 URL 字符串的路径部分进行 URL 编码并返回编码后的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function UrlPathEncode ( _
    s As String _
) As String
public string UrlPathEncode(
    string s
)
public:
String^ UrlPathEncode(
    String^ s
)
member UrlPathEncode :
        s:string -> string

参数

s
类型： System String
要进行 URL 编码的文本。

返回值

类型： System String
URL 已编码的文本。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 <a> 标记或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

UrlPathEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlPathEncode 方法。UrlPathEncode 在内部使用 HttpUtility..::.UrlPathEncode 对字符串进行编码。 UrlPathEncode 是一种简便方式，用于在运行时从 ASP.NET 应用程序访问 HttpUtility..::.UrlPathEncode 方法。UrlPathEncode 在内部使用 HttpUtility..::.UrlPathEncode 对字符串进行编码。

下面的示例对字符串进行 URL 编码，然后将其发送到浏览器客户端。在此示例中，将字符串 MyURL 编码为“http%3a%2f%2fwww.contoso.com%2farticles.aspx?title = ASP.NET Examples”。 下面的示例对字符串进行 URL 编码，然后将其发送到浏览器客户端。在此示例中，将字符串 MyURL 编码为“http%3a%2f%2fwww.contoso.com%2farticles.aspx?title = ASP.NET Examples”。

Dim MyURL As String
MyURL = "http://www.contoso.com/articles.aspx?title = ASP.NET Examples"

Response.Write( "<A HREF = " & Server.UrlPathEncode(MyURL) & "> ASP.NET Examples <br>")

String MyURL;
MyURL = "http://www.contoso.com/articles.aspx?title = ASP.NET Examples";

Response.Write( "<A HREF = " + Server.UrlPathEncode(MyURL) +  "> ASP.NET Examples <br>" );

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.UrlTokenDecode 方法

HttpServerUtility
.
.
::
.
UrlTokenDecode 方法
HttpServerUtility 类

将 URL 字符串标记解码为使用 64 进制数字的等效字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlTokenDecode ( _
    input As String _
) As Byte()
public static byte[] UrlTokenDecode(
    string input
)
public:
static array<unsigned char>^ UrlTokenDecode(
    String^ input
)
static member UrlTokenDecode :
        input:string -> byte[]

参数

input
类型： System String
要解码的 URL 字符串标记。

返回值

类型：
array<
System Byte
>
[]
()
[]

包含解码后的 URL 字符串标记的字节数组。
异常 | 条件
ArgumentNullException | input 参数的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

UrlTokenDecode 方法将一个 URL 字符串标记转换为等效的字节数组表示形式，该字符串标记将二进制数据编码为 64 进制数字。使用 UrlTokenDecode 方法对标记进行解码，这些标记在 URL 中传输并使用 UrlTokenEncode 进行了编码。 UrlTokenDecode 方法将一个 URL 字符串标记转换为等效的字节数组表示形式，该字符串标记将二进制数据编码为 64 进制数字。使用 UrlTokenDecode 方法对标记进行解码，这些标记在 URL 中传输并使用 UrlTokenEncode 进行了编码。

如果 input 参数的长度小于 1，则 UrlTokenDecode 方法将返回一个空字节数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间
FromBase64CharArray
UrlTokenEncode


HttpServerUtility ..::.UrlTokenEncode 方法

HttpServerUtility
.
.
::
.
UrlTokenEncode 方法
HttpServerUtility 类

将一个字节数组编码为使用 Base 64 编码方案的等效字符串表示形式，Base 64 是一种适于通过 URL 传输数据的编码方案。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlTokenEncode ( _
    input As Byte() _
) As String
public static string UrlTokenEncode(
    byte[] input
)
public:
static String^ UrlTokenEncode(
    array<unsigned char>^ input
)
static member UrlTokenEncode :
        input:byte[] -> string

参数

input
类型：
array<
System Byte
>
[]
()
[]

要编码的字节数组。

返回值

类型： System String
如果字节数组的长度 大于 1，则为包含编码后的标记的字符串；否则为空字符串 ("")。
异常 | 条件
ArgumentNullException | input 参数的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

UrlTokenEncode 方法将字节数组转换为使用 64 进制数字编码的等效字符串表示形式。结果字符串标记可以在 URL 上传输。 UrlTokenEncode 方法将字节数组转换为使用 64 进制数字编码的等效字符串表示形式。结果字符串标记可以在 URL 上传输。

如果 input 参数的长度小于 1，则 UrlTokenEncode 将返回一个空字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间
ToBase64String
UrlTokenDecode


HttpServerUtility 属性

HttpServerUtility 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtility 类

HttpServerUtility 类型公开以下成员。

名称 说明
页首

参考

HttpServerUtility 类
System.Web 命名空间


HttpServerUtility ..::.MachineName 属性

HttpServerUtility
.
.
::
.
MachineName 属性
HttpServerUtility 类

获取服务器的计算机名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property MachineName As String
    Get
public string MachineName { get; }
public:
property String^ MachineName {
    String^ get ();
}
member MachineName : string

属性值

类型： System String
本地计算机的名称。
异常 | 条件
HttpException | 无法找到该计算机名称。

下面的示例将服务器的计算机名称存储为一个字符串变量。

Dim ThisMachine As String
ThisMachine = Server.MachineName

String ThisMachine;
ThisMachine = Server.MachineName;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间


HttpServerUtility ..::.ScriptTimeout 属性

HttpServerUtility
.
.
::
.
ScriptTimeout 属性
HttpServerUtility 类

获取和设置请求超时值（以秒计）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ScriptTimeout As Integer
    Get
    Set
public int ScriptTimeout { get; set; }
public:
property int ScriptTimeout {
    int get ();
    void set (int value);
}
member ScriptTimeout : int with get, set

属性值

类型： System Int32
请求的超时值设置。
异常 | 条件
HttpException | 当前 HttpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | 超时期限为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或者未能设置。

可以通过设置 httpRuntime 元素的 executionTimeout 特性，在 Web.config 文件中设置 ScriptTimeout 属性。使用 ScriptTimeout 属性以编程方式对超时值进行的设置优先于 Web.config 设置。 可以通过设置 httpRuntime 元素的 executionTimeout 特性，在 Web.config 文件中设置 ScriptTimeout 属性。使用 ScriptTimeout 属性以编程方式对超时值进行的设置优先于 Web.config 设置。

说明 说明

如果在 Web.config 文件中将编译元素的 debug 特性设置为 false，将忽略 ScriptTimeout 的值。

下面的示例将请求超时期限设置为 60 秒。

Server.ScriptTimeout = 60

Server.ScriptTimeout = 60;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpServerUtility 类
HttpServerUtility 成员
System.Web 命名空间

其他资源

httpRuntime 元素（ASP.NET 设置架构）
compilation 元素（ASP.NET 设置架构）


HttpServerUtilityBase 类

HttpServerUtilityBase 类
成员

用作提供帮助器方法以处理 Web 请求的类的基类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpServerUtilityBase
public abstract class HttpServerUtilityBase
public ref class HttpServerUtilityBase abstract
[<AbstractClassAttribute>]
type HttpServerUtilityBase =  class end

HttpServerUtilityBase 类为抽象类，该类包含的成员与 HttpServerUtility 类相同。使用 HttpServerUtilityBase 类可以创建一些派生类，这些派生类与 HttpServerUtility 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpServerUtilityBase 类为抽象类，该类包含的成员与 HttpServerUtility 类相同。使用 HttpServerUtilityBase 类可以创建一些派生类，这些派生类与 HttpServerUtility 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpServerUtilityBase 类为抽象类，该类包含的成员与 HttpServerUtility 类相同。使用 HttpServerUtilityBase 类可以创建一些派生类，这些派生类与 HttpServerUtility 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpServerUtilityWrapper 类是从 HttpServerUtilityBase 类派生的。HttpServerUtilityWrapper 类用作 HttpServerUtility 类的包装。在运行时，通常使用 HttpServerUtilityWrapper 类的实例调用 HttpServerUtility 对象的成员。 HttpServerUtilityWrapper 类是从 HttpServerUtilityBase 类派生的。HttpServerUtilityWrapper 类用作 HttpServerUtility 类的包装。在运行时，通常使用 HttpServerUtilityWrapper 类的实例调用 HttpServerUtility 对象的成员。 HttpServerUtilityWrapper 类是从 HttpServerUtilityBase 类派生的。HttpServerUtilityWrapper 类用作 HttpServerUtility 类的包装。在运行时，通常使用 HttpServerUtilityWrapper 类的实例调用 HttpServerUtility 对象的成员。

System.Web System.Web..::.HttpServerUtilityBaseHttpServerUtilityBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase 成员

HttpServerUtilityBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

用作提供帮助器方法以处理 Web 请求的类的基类。

HttpServerUtilityBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpServerUtilityBase 类
System.Web 命名空间


HttpServerUtilityBase 构造函数

HttpServerUtilityBase 构造函数
HttpServerUtilityBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpServerUtilityBase()
protected:
HttpServerUtilityBase()
new : unit -> HttpServerUtilityBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase 方法

HttpServerUtilityBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

HttpServerUtilityBase 类型公开以下成员。

名称 说明
页首

参考

HttpServerUtilityBase 类
System.Web 命名空间


HttpServerUtilityBase ..::.ClearError 方法

HttpServerUtilityBase
.
.
::
.
ClearError 方法
HttpServerUtilityBase 类

在派生类中重写时，清除最近的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub ClearError
public virtual void ClearError()
public:
virtual void ClearError()
abstract ClearError : unit -> unit
override ClearError : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.CreateObject 方法

HttpServerUtilityBase
.
.
::
.
CreateObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，创建 COM 对象的服务器实例。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.CreateObject 方法 (String)

HttpServerUtilityBase
.
.
::
.
CreateObject 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，创建 COM 对象的服务器实例，该对象由其编程标识符 (ProgID) 进行标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function CreateObject ( _
    progID As String _
) As Object
public virtual Object CreateObject(
    string progID
)
public:
virtual Object^ CreateObject(
    String^ progID
)
abstract CreateObject :
        progID:string -> Object
override CreateObject :
        progID:string -> Object

参数

progID
类型： System String
要创建其实例的对象的类或类型。

返回值

类型： System Object
新对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
CreateObject 重载
System.Web 命名空间


HttpServerUtilityBase ..::.CreateObject 方法 (Type)

HttpServerUtilityBase
.
.
::
.
CreateObject 方法 (Type)
HttpServerUtilityBase 类

在派生类中重写时，创建 COM 对象的服务器实例，该对象由其类型进行标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function CreateObject ( _
    type As Type _
) As Object
public virtual Object CreateObject(
    Type type
)
public:
virtual Object^ CreateObject(
    Type^ type
)
abstract CreateObject :
        type:Type -> Object
override CreateObject :
        type:Type -> Object

参数

type
类型： System Type
表示要创建的对象的类型。

返回值

类型： System Object
新对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
CreateObject 重载
System.Web 命名空间


HttpServerUtilityBase ..::.CreateObjectFromClsid 方法

HttpServerUtilityBase
.
.
::
.
CreateObjectFromClsid 方法
HttpServerUtilityBase 类

在派生类中重写时，创建 COM 对象的服务器实例，该对象由其类标识符 (CLSID) 进行标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function CreateObjectFromClsid ( _
    clsid As String _
) As Object
public virtual Object CreateObjectFromClsid(
    string clsid
)
public:
virtual Object^ CreateObjectFromClsid(
    String^ clsid
)
abstract CreateObjectFromClsid :
        clsid:string -> Object
override CreateObjectFromClsid :
        clsid:string -> Object

参数

clsid
类型： System String
要创建其实例的对象的类标识符。

返回值

类型： System Object
新对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.Execute 方法

HttpServerUtilityBase
.
.
::
.
Execute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，在当前请求的上下文中执行指定资源的处理程序，并将执行返回给调用该处理程序的进程。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.Execute 方法 (String)

HttpServerUtilityBase
.
.
::
.
Execute 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，在当前进程的上下文中执行指定虚拟路径的处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Execute ( _
    path As String _
)
public virtual void Execute(
    string path
)
public:
virtual void Execute(
    String^ path
)
abstract Execute :
        path:string -> unit
override Execute :
        path:string -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityBase ..::.Execute 方法 (String, Boolean)

HttpServerUtilityBase
.
.
::
.
Execute 方法 (String, Boolean)
HttpServerUtilityBase 类

在派生类中重写时，在当前进程的上下文中执行指定虚拟路径的处理程序，并指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Execute ( _
    path As String, _
    preserveForm As Boolean _
)
public virtual void Execute(
    string path,
    bool preserveForm
)
public:
virtual void Execute(
    String^ path,
    bool preserveForm
)
abstract Execute :
        path:string *
        preserveForm:bool -> unit
override Execute :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityBase ..::.Execute 方法 (String, TextWriter)

HttpServerUtilityBase
.
.
::
.
Execute 方法 (String, TextWriter)
HttpServerUtilityBase 类

在派生类中重写时，在当前进程的上下文中执行指定虚拟路径的处理程序，执行时使用 TextWriter 实例捕获执行的处理程序的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Execute ( _
    path As String, _
    writer As TextWriter _
)
public virtual void Execute(
    string path,
    TextWriter writer
)
public:
virtual void Execute(
    String^ path,
    TextWriter^ writer
)
abstract Execute :
        path:string *
        writer:TextWriter -> unit
override Execute :
        path:string *
        writer:TextWriter -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
writer
类型： System.IO TextWriter
用于捕获输出的对象。
异常 | 条件
NotImplementedException | 始终为 。

writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityBase ..::.Execute 方法 (IHttpHandler, TextWriter, Boolean)

HttpServerUtilityBase
.
.
::
.
Execute 方法 (IHttpHandler, TextWriter, Boolean)
HttpServerUtilityBase 类

在派生类中重写时，在当前进程的上下文中执行指定的处理程序，执行时使用 TextWriter 实例捕获执行的处理程序的输出，并使用一个值指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Execute ( _
    handler As IHttpHandler, _
    writer As TextWriter, _
    preserveForm As Boolean _
)
public virtual void Execute(
    IHttpHandler handler,
    TextWriter writer,
    bool preserveForm
)
public:
virtual void Execute(
    IHttpHandler^ handler,
    TextWriter^ writer,
    bool preserveForm
)
abstract Execute :
        handler:IHttpHandler *
        writer:TextWriter *
        preserveForm:bool -> unit
override Execute :
        handler:IHttpHandler *
        writer:TextWriter *
        preserveForm:bool -> unit

参数

handler
类型： System.Web IHttpHandler
实现将当前请求传输到的接口的 HTTP 处理程序。
writer
类型： System.IO TextWriter
用于捕获输出的对象。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
NotImplementedException | 始终为 。

writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityBase ..::.Execute 方法 (String, TextWriter, Boolean)

HttpServerUtilityBase
.
.
::
.
Execute 方法 (String, TextWriter, Boolean)
HttpServerUtilityBase 类

在派生类中重写时，在当前请求的上下文中执行指定虚拟路径的处理程序，执行时使用 TextWriter 实例捕获页的输出，并使用一个值指示是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Execute ( _
    path As String, _
    writer As TextWriter, _
    preserveForm As Boolean _
)
public virtual void Execute(
    string path,
    TextWriter writer,
    bool preserveForm
)
public:
virtual void Execute(
    String^ path,
    TextWriter^ writer,
    bool preserveForm
)
abstract Execute :
        path:string *
        writer:TextWriter *
        preserveForm:bool -> unit
override Execute :
        path:string *
        writer:TextWriter *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
writer
类型： System.IO TextWriter
用于捕获输出的对象。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
NotImplementedException | 始终为 。

writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityBase ..::.GetLastError 方法

HttpServerUtilityBase
.
.
::
.
GetLastError 方法
HttpServerUtilityBase 类

在派生类中重写时，返回最近的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetLastError As Exception
public virtual Exception GetLastError()
public:
virtual Exception^ GetLastError()
abstract GetLastError : unit -> Exception
override GetLastError : unit -> Exception

返回值

类型： System Exception
最近引发的异常。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.HtmlDecode 方法

HttpServerUtilityBase
.
.
::
.
HtmlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，对 HTML 编码的字符串进行解码。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.HtmlDecode 方法 (String)

HttpServerUtilityBase
.
.
::
.
HtmlDecode 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，对 HTML 编码的字符串进行解码，并返回已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function HtmlDecode ( _
    s As String _
) As String
public virtual string HtmlDecode(
    string s
)
public:
virtual String^ HtmlDecode(
    String^ s
)
abstract HtmlDecode :
        s:string -> string
override HtmlDecode :
        s:string -> string

参数

s
类型： System String
要解码的 HTML 字符串。

返回值

类型： System String
已解码的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
HtmlDecode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.HtmlDecode 方法 (String, TextWriter)

HttpServerUtilityBase
.
.
::
.
HtmlDecode 方法 (String, TextWriter)
HttpServerUtilityBase 类

在派生类中重写时，对 HTML 编码的字符串进行解码，并在流中返回结果。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub HtmlDecode ( _
    s As String, _
    output As TextWriter _
)
public virtual void HtmlDecode(
    string s,
    TextWriter output
)
public:
virtual void HtmlDecode(
    String^ s,
    TextWriter^ output
)
abstract HtmlDecode :
        s:string *
        output:TextWriter -> unit
override HtmlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的 HTML 字符串。
output
类型： System.IO TextWriter
包含已解码的字符串的流。
异常 | 条件
NotImplementedException | 始终为 。

output 参数通过引用传递给 HtmlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 HtmlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 HtmlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
HtmlDecode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.HtmlEncode 方法

HttpServerUtilityBase
.
.
::
.
HtmlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，对字符串进行 HTML 编码。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.HtmlEncode 方法 (String)

HttpServerUtilityBase
.
.
::
.
HtmlEncode 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，对字符串进行 HTML 编码，并返回已编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function HtmlEncode ( _
    s As String _
) As String
public virtual string HtmlEncode(
    string s
)
public:
virtual String^ HtmlEncode(
    String^ s
)
abstract HtmlEncode :
        s:string -> string
override HtmlEncode :
        s:string -> string

参数

s
类型： System String
要编码的字符串。

返回值

类型： System String
HTML 编码的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
HtmlEncode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.HtmlEncode 方法 (String, TextWriter)

HttpServerUtilityBase
.
.
::
.
HtmlEncode 方法 (String, TextWriter)
HttpServerUtilityBase 类

在派生类中重写时，对字符串进行 HTML 编码，并将得到的输出发送到输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub HtmlEncode ( _
    s As String, _
    output As TextWriter _
)
public virtual void HtmlEncode(
    string s,
    TextWriter output
)
public:
virtual void HtmlEncode(
    String^ s,
    TextWriter^ output
)
abstract HtmlEncode :
        s:string *
        output:TextWriter -> unit
override HtmlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串。
output
类型： System.IO TextWriter
包含已编码的字符串的流。
异常 | 条件
NotImplementedException | 始终为 。

output 参数通过引用传递给 HtmlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlEncode。 output 参数通过引用传递给 HtmlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlEncode。 output 参数通过引用传递给 HtmlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlEncode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
HtmlEncode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.MapPath 方法

HttpServerUtilityBase
.
.
::
.
MapPath 方法
HttpServerUtilityBase 类

在派生类中重写时，返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function MapPath ( _
    path As String _
) As String
public virtual string MapPath(
    string path
)
public:
virtual String^ MapPath(
    String^ path
)
abstract MapPath :
        path:string -> string
override MapPath :
        path:string -> string

参数

path
类型： System String
要为其获取物理路径的虚拟路径。

返回值

类型： System String
与 path 相对应的物理文件路径。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.Transfer 方法

HttpServerUtilityBase
.
.
::
.
Transfer 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，终止当前进程的执行，然后开始为当前请求执行另一个进程。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.Transfer 方法 (String)

HttpServerUtilityBase
.
.
::
.
Transfer 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，终止当前进程的执行，然后开始执行使用 URL 指定的页面或处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Transfer ( _
    path As String _
)
public virtual void Transfer(
    string path
)
public:
virtual void Transfer(
    String^ path
)
abstract Transfer :
        path:string -> unit
override Transfer :
        path:string -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Transfer 重载
System.Web 命名空间


HttpServerUtilityBase ..::.Transfer 方法 (IHttpHandler, Boolean)

HttpServerUtilityBase
.
.
::
.
Transfer 方法 (IHttpHandler, Boolean)
HttpServerUtilityBase 类

在派生类中重写时，通过使用自定义 HTTP 处理程序和一个指定是否清除 QueryString 和 Form 集合的值，终止当前进程的执行，然后开始执行新请求。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Transfer ( _
    handler As IHttpHandler, _
    preserveForm As Boolean _
)
public virtual void Transfer(
    IHttpHandler handler,
    bool preserveForm
)
public:
virtual void Transfer(
    IHttpHandler^ handler,
    bool preserveForm
)
abstract Transfer :
        handler:IHttpHandler *
        preserveForm:bool -> unit
override Transfer :
        handler:IHttpHandler *
        preserveForm:bool -> unit

参数

handler
类型： System.Web IHttpHandler
要将当前请求传输至的 HTTP 处理程序。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Transfer 重载
System.Web 命名空间


HttpServerUtilityBase ..::.Transfer 方法 (String, Boolean)

HttpServerUtilityBase
.
.
::
.
Transfer 方法 (String, Boolean)
HttpServerUtilityBase 类

在派生类中重写时，通过使用指定的 URL 以及一个指定是否清除 QueryString 和 Form 集合的值，终止当前页面的执行，然后开始执行另一个页面或处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Transfer ( _
    path As String, _
    preserveForm As Boolean _
)
public virtual void Transfer(
    string path,
    bool preserveForm
)
public:
virtual void Transfer(
    String^ path,
    bool preserveForm
)
abstract Transfer :
        path:string *
        preserveForm:bool -> unit
override Transfer :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
Transfer 重载
System.Web 命名空间


HttpServerUtilityBase ..::.TransferRequest 方法

HttpServerUtilityBase
.
.
::
.
TransferRequest 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，异步执行位于指定 URL 上的终结点。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.TransferRequest 方法 (String)

HttpServerUtilityBase
.
.
::
.
TransferRequest 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，异步执行位于指定 URL 上的终结点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub TransferRequest ( _
    path As String _
)
public virtual void TransferRequest(
    string path
)
public:
virtual void TransferRequest(
    String^ path
)
abstract TransferRequest :
        path:string -> unit
override TransferRequest :
        path:string -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtilityBase ..::.TransferRequest 方法 (String, Boolean)

HttpServerUtilityBase
.
.
::
.
TransferRequest 方法 (String, Boolean)
HttpServerUtilityBase 类

在派生类中重写时，异步执行位于指定 URL 上的终结点，并指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub TransferRequest ( _
    path As String, _
    preserveForm As Boolean _
)
public virtual void TransferRequest(
    string path,
    bool preserveForm
)
public:
virtual void TransferRequest(
    String^ path,
    bool preserveForm
)
abstract TransferRequest :
        path:string *
        preserveForm:bool -> unit
override TransferRequest :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtilityBase ..::.TransferRequest 方法 (String, Boolean, String, NameValueCollection)

HttpServerUtilityBase
.
.
::
.
TransferRequest 方法 (String, Boolean, String, NameValueCollection)
HttpServerUtilityBase 类

在派生类中重写时，使用指定的 HTTP 方法和标头异步执行位于指定 URL 上的终结点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub TransferRequest ( _
    path As String, _
    preserveForm As Boolean, _
    method As String, _
    headers As NameValueCollection _
)
public virtual void TransferRequest(
    string path,
    bool preserveForm,
    string method,
    NameValueCollection headers
)
public:
virtual void TransferRequest(
    String^ path,
    bool preserveForm,
    String^ method,
    NameValueCollection^ headers
)
abstract TransferRequest :
        path:string *
        preserveForm:bool *
        method:string *
        headers:NameValueCollection -> unit
override TransferRequest :
        path:string *
        preserveForm:bool *
        method:string *
        headers:NameValueCollection -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
method
类型： System String
要用于新请求的 HTTP 方法（GET、POST 等）。如果为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用原始请求的 HTTP 方法。 要用于新请求的 HTTP 方法（GET、POST 等）。如果为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用原始请求的 HTTP 方法。
headers
类型： System.Collections.Specialized NameValueCollection
新请求的请求标头的集合。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtilityBase ..::.UrlDecode 方法

HttpServerUtilityBase
.
.
::
.
UrlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，对编码为仅包含在 URL 中有效的字符的字符串进行解码。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.UrlDecode 方法 (String)

HttpServerUtilityBase
.
.
::
.
UrlDecode 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，对 URL 编码的字符串进行解码，并返回已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function UrlDecode ( _
    s As String _
) As String
public virtual string UrlDecode(
    string s
)
public:
virtual String^ UrlDecode(
    String^ s
)
abstract UrlDecode :
        s:string -> string
override UrlDecode :
        s:string -> string

参数

s
类型： System String
要解码的字符串。

返回值

类型： System String
已解码的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
UrlDecode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.UrlDecode 方法 (String, TextWriter)

HttpServerUtilityBase
.
.
::
.
UrlDecode 方法 (String, TextWriter)
HttpServerUtilityBase 类

在派生类中重写时，对 URL 编码的字符串进行解码，并将得到的输出发送到流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub UrlDecode ( _
    s As String, _
    output As TextWriter _
)
public virtual void UrlDecode(
    string s,
    TextWriter output
)
public:
virtual void UrlDecode(
    String^ s,
    TextWriter^ output
)
abstract UrlDecode :
        s:string *
        output:TextWriter -> unit
override UrlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的字符串。
output
类型： System.IO TextWriter
包含已解码的字符串的流。
异常 | 条件
NotImplementedException | 始终为 。

output 参数通过引用传递给 UrlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 UrlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 UrlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
UrlDecode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.UrlEncode 方法

HttpServerUtilityBase
.
.
::
.
UrlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

在派生类中重写时，将字符串编码为仅包含在 URL 中有效的字符。

名称 说明
页首

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.UrlEncode 方法 (String)

HttpServerUtilityBase
.
.
::
.
UrlEncode 方法 (String)
HttpServerUtilityBase 类

在派生类中重写时，对字符串进行 URL 编码，并返回已编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function UrlEncode ( _
    s As String _
) As String
public virtual string UrlEncode(
    string s
)
public:
virtual String^ UrlEncode(
    String^ s
)
abstract UrlEncode :
        s:string -> string
override UrlEncode :
        s:string -> string

参数

s
类型： System String
要进行 URL 编码的文本。

返回值

类型： System String
URL 编码的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
UrlEncode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.UrlEncode 方法 (String, TextWriter)

HttpServerUtilityBase
.
.
::
.
UrlEncode 方法 (String, TextWriter)
HttpServerUtilityBase 类

在派生类中重写时，对字符串进行 URL 编码，并将得到的输出发送到流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub UrlEncode ( _
    s As String, _
    output As TextWriter _
)
public virtual void UrlEncode(
    string s,
    TextWriter output
)
public:
virtual void UrlEncode(
    String^ s,
    TextWriter^ output
)
abstract UrlEncode :
        s:string *
        output:TextWriter -> unit
override UrlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串。
output
类型： System.IO TextWriter
包含已编码的字符串的流。
异常 | 条件
NotImplementedException | 始终为 。

output 参数通过引用传递给 UrlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见UrlEncode。 output 参数通过引用传递给 UrlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见UrlEncode。 output 参数通过引用传递给 UrlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见UrlEncode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
UrlEncode 重载
System.Web 命名空间


HttpServerUtilityBase ..::.UrlPathEncode 方法

HttpServerUtilityBase
.
.
::
.
UrlPathEncode 方法
HttpServerUtilityBase 类

在派生类中重写时，对 URL 字符串的路径部分进行 URL 编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function UrlPathEncode ( _
    s As String _
) As String
public virtual string UrlPathEncode(
    string s
)
public:
virtual String^ UrlPathEncode(
    String^ s
)
abstract UrlPathEncode :
        s:string -> string
override UrlPathEncode :
        s:string -> string

参数

s
类型： System String
要进行 URL 编码的字符串。

返回值

类型： System String
URL 编码的文本。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.UrlTokenDecode 方法

HttpServerUtilityBase
.
.
::
.
UrlTokenDecode 方法
HttpServerUtilityBase 类

在派生类中重写时，使用 base64 编码的数字将 URL 字符串标记解码到等效的字节数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function UrlTokenDecode ( _
    input As String _
) As Byte()
public virtual byte[] UrlTokenDecode(
    string input
)
public:
virtual array<unsigned char>^ UrlTokenDecode(
    String^ input
)
abstract UrlTokenDecode :
        input:string -> byte[]
override UrlTokenDecode :
        input:string -> byte[]

参数

input
类型： System String

返回值

类型：
array<
System Byte
>
[]
()
[]

包含解码后的 URL 标记的字节数组。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.UrlTokenEncode 方法

HttpServerUtilityBase
.
.
::
.
UrlTokenEncode 方法
HttpServerUtilityBase 类

在派生类中重写时，使用 base64 数字将一个字节数组编码为等效的字符串表示形式，这使得该字节数组适于通过 URL 传输。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function UrlTokenEncode ( _
    input As Byte() _
) As String
public virtual string UrlTokenEncode(
    byte[] input
)
public:
virtual String^ UrlTokenEncode(
    array<unsigned char>^ input
)
abstract UrlTokenEncode :
        input:byte[] -> string
override UrlTokenEncode :
        input:byte[] -> string

参数

input
类型：
array<
System Byte
>
[]
()
[]

返回值

类型： System String
如果 input 的长度大于 1，则为包含已编码数组的字符串；否则为空字符串 ("")
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase 属性

HttpServerUtilityBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityBase 类

HttpServerUtilityBase 类型公开以下成员。

名称 说明
页首

参考

HttpServerUtilityBase 类
System.Web 命名空间


HttpServerUtilityBase ..::.MachineName 属性

HttpServerUtilityBase
.
.
::
.
MachineName 属性
HttpServerUtilityBase 类

在派生类中重写时，获取服务器的计算机名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MachineName As String
    Get
public virtual string MachineName { get; }
public:
virtual property String^ MachineName {
    String^ get ();
}
abstract MachineName : string
override MachineName : string

属性值

类型： System String
服务器计算机的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityBase ..::.ScriptTimeout 属性

HttpServerUtilityBase
.
.
::
.
ScriptTimeout 属性
HttpServerUtilityBase 类

在派生类中重写时，获取或设置请求超时值（以秒为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ScriptTimeout As Integer
    Get
    Set
public virtual int ScriptTimeout { get; set; }
public:
virtual property int ScriptTimeout {
    int get ();
    void set (int value);
}
abstract ScriptTimeout : int with get, set
override ScriptTimeout : int with get, set

属性值

类型： System Int32
请求的超时值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityBase 类
HttpServerUtilityBase 成员
System.Web 命名空间


HttpServerUtilityWrapper 类

HttpServerUtilityWrapper 类
成员

封装 HTTP 内部对象，该对象提供帮助器方法用于处理 Web 请求。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpServerUtilityWrapper _
    Inherits HttpServerUtilityBase
public class HttpServerUtilityWrapper : HttpServerUtilityBase
public ref class HttpServerUtilityWrapper : public HttpServerUtilityBase
type HttpServerUtilityWrapper =
    class
        inherit HttpServerUtilityBase
    end

HttpServerUtilityWrapper 类从 HttpServerUtilityBase 类派生，并用作 HttpServerUtility 类的包装。此类公开 HttpServerUtility 类的功能，同时还公开 HttpServerUtilityBase 类型。使用 HttpServerUtilityBase 类可以将应用程序中 HttpServerUtility 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpServerUtilityWrapper 类从 HttpServerUtilityBase 类派生，并用作 HttpServerUtility 类的包装。此类公开 HttpServerUtility 类的功能，同时还公开 HttpServerUtilityBase 类型。使用 HttpServerUtilityBase 类可以将应用程序中 HttpServerUtility 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpServerUtilityWrapper 类从 HttpServerUtilityBase 类派生，并用作 HttpServerUtility 类的包装。此类公开 HttpServerUtility 类的功能，同时还公开 HttpServerUtilityBase 类型。使用 HttpServerUtilityBase 类可以将应用程序中 HttpServerUtility 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpServerUtilityWrapperHttpServerUtilityWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper 成员

HttpServerUtilityWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

封装 HTTP 内部对象，该对象提供帮助器方法用于处理 Web 请求。

HttpServerUtilityWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpServerUtilityWrapper 类
System.Web 命名空间


HttpServerUtilityWrapper 构造函数

HttpServerUtilityWrapper 构造函数
HttpServerUtilityWrapper 类

初始化 HttpServerUtilityWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpServerUtility As HttpServerUtility _
)
public HttpServerUtilityWrapper(
    HttpServerUtility httpServerUtility
)
public:
HttpServerUtilityWrapper(
    HttpServerUtility^ httpServerUtility
)
new :
        httpServerUtility:HttpServerUtility -> HttpServerUtilityWrapper

参数

httpServerUtility
类型： System.Web HttpServerUtility
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpServerUtility 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper 方法

HttpServerUtilityWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

HttpServerUtilityWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
System.Web 命名空间


HttpServerUtilityWrapper ..::.ClearError 方法

HttpServerUtilityWrapper
.
.
::
.
ClearError 方法
HttpServerUtilityWrapper 类

清除最近的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub ClearError
public override void ClearError()
public:
virtual void ClearError() override
abstract ClearError : unit -> unit
override ClearError : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.CreateObject 方法

HttpServerUtilityWrapper
.
.
::
.
CreateObject 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

创建 COM 对象的一个服务器实例。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.CreateObject 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
CreateObject 方法 (String)
HttpServerUtilityWrapper 类

创建 COM 对象的服务器实例，该对象由其编程标识符 (ProgID) 进行标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function CreateObject ( _
    progID As String _
) As Object
public override Object CreateObject(
    string progID
)
public:
virtual Object^ CreateObject(
    String^ progID
) override
abstract CreateObject :
        progID:string -> Object
override CreateObject :
        progID:string -> Object

参数

progID
类型： System String
要创建其实例的对象的类或类型。

返回值

类型： System Object
新对象。
异常 | 条件
HttpException | 未能创建该对象的实例。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
CreateObject 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.CreateObject 方法 (Type)

HttpServerUtilityWrapper
.
.
::
.
CreateObject 方法 (Type)
HttpServerUtilityWrapper 类

创建 COM 对象的服务器实例，该对象由其类型进行标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function CreateObject ( _
    type As Type _
) As Object
public override Object CreateObject(
    Type type
)
public:
virtual Object^ CreateObject(
    Type^ type
) override
abstract CreateObject :
        type:Type -> Object
override CreateObject :
        type:Type -> Object

参数

type
类型： System Type
表示要创建的对象的类型。

返回值

类型： System Object
新对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
CreateObject 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.CreateObjectFromClsid 方法

HttpServerUtilityWrapper
.
.
::
.
CreateObjectFromClsid 方法
HttpServerUtilityWrapper 类

创建 COM 对象的服务器实例，该对象由其类标识符 (CLSID) 进行标识。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function CreateObjectFromClsid ( _
    clsid As String _
) As Object
public override Object CreateObjectFromClsid(
    string clsid
)
public:
virtual Object^ CreateObjectFromClsid(
    String^ clsid
) override
abstract CreateObjectFromClsid :
        clsid:string -> Object
override CreateObjectFromClsid :
        clsid:string -> Object

参数

clsid
类型： System String
要创建其实例的对象的类标识符。

返回值

类型： System Object
新对象。
异常 | 条件
HttpException | 无法创建对象的实例。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.Execute 方法

HttpServerUtilityWrapper
.
.
::
.
Execute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

在当前请求的上下文中执行指定资源的处理程序，并将执行返回给调用该处理程序的进程。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.Execute 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
Execute 方法 (String)
HttpServerUtilityWrapper 类

在当前进程的上下文中执行指定虚拟路径的处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Execute ( _
    path As String _
)
public override void Execute(
    string path
)
public:
virtual void Execute(
    String^ path
) override
abstract Execute :
        path:string -> unit
override Execute :
        path:string -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
异常 | 条件
HttpException | 当前 HttpContext 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 并非虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.Execute 方法 (String, Boolean)

HttpServerUtilityWrapper
.
.
::
.
Execute 方法 (String, Boolean)
HttpServerUtilityWrapper 类

在当前进程的上下文中执行指定虚拟路径的处理程序，并指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Execute ( _
    path As String, _
    preserveForm As Boolean _
)
public override void Execute(
    string path,
    bool preserveForm
)
public:
virtual void Execute(
    String^ path,
    bool preserveForm
) override
abstract Execute :
        path:string *
        preserveForm:bool -> unit
override Execute :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
HttpException | 当前 HttpContext 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 并非虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.Execute 方法 (String, TextWriter)

HttpServerUtilityWrapper
.
.
::
.
Execute 方法 (String, TextWriter)
HttpServerUtilityWrapper 类

在当前进程的上下文中执行指定虚拟路径的处理程序，执行时使用 TextWriter 实例捕获执行的处理程序的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Execute ( _
    path As String, _
    writer As TextWriter _
)
public override void Execute(
    string path,
    TextWriter writer
)
public:
virtual void Execute(
    String^ path,
    TextWriter^ writer
) override
abstract Execute :
        path:string *
        writer:TextWriter -> unit
override Execute :
        path:string *
        writer:TextWriter -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
writer
类型： System.IO TextWriter
用于捕获输出的对象。
异常 | 条件
HttpException | 当前 HttpContext 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 并非虚拟路径。

writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。 writer 参数通过引用传递给 Execute 方法。若要在方法完成之后检索处理程序的输出，请使用 writer 对象的属性和方法。有关示例，请参见Execute。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.Execute 方法 (IHttpHandler, TextWriter, Boolean)

HttpServerUtilityWrapper
.
.
::
.
Execute 方法 (IHttpHandler, TextWriter, Boolean)
HttpServerUtilityWrapper 类

在当前进程的上下文中执行指定的处理程序，执行时使用 TextWriter 实例捕获执行的处理程序的输出，并使用一个值指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Execute ( _
    handler As IHttpHandler, _
    writer As TextWriter, _
    preserveForm As Boolean _
)
public override void Execute(
    IHttpHandler handler,
    TextWriter writer,
    bool preserveForm
)
public:
virtual void Execute(
    IHttpHandler^ handler,
    TextWriter^ writer,
    bool preserveForm
) override
abstract Execute :
        handler:IHttpHandler *
        writer:TextWriter *
        preserveForm:bool -> unit
override Execute :
        handler:IHttpHandler *
        writer:TextWriter *
        preserveForm:bool -> unit

参数

handler
类型： System.Web IHttpHandler
实现将当前请求传输到的接口的 HTTP 处理程序。
writer
类型： System.IO TextWriter
用于捕获输出的对象。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
HttpException | 执行由 handler 指定的处理程序时发生错误。
ArgumentNullException | handler 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.Execute 方法 (String, TextWriter, Boolean)

HttpServerUtilityWrapper
.
.
::
.
Execute 方法 (String, TextWriter, Boolean)
HttpServerUtilityWrapper 类

在当前请求的上下文中执行指定虚拟路径的处理程序，执行时使用 TextWriter 实例捕获页的输出，并使用一个值指示是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Execute ( _
    path As String, _
    writer As TextWriter, _
    preserveForm As Boolean _
)
public override void Execute(
    string path,
    TextWriter writer,
    bool preserveForm
)
public:
virtual void Execute(
    String^ path,
    TextWriter^ writer,
    bool preserveForm
) override
abstract Execute :
        path:string *
        writer:TextWriter *
        preserveForm:bool -> unit
override Execute :
        path:string *
        writer:TextWriter *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的处理程序的 URL。
writer
类型： System.IO TextWriter
用于捕获输出的对象。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
HttpException | 当前 HttpContext 实例为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - path 以句点 (.) 结尾。 - 或 - 执行由 path 指定的处理程序时发生错误。
ArgumentNullException | path 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | path 并非虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Execute 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.GetLastError 方法

HttpServerUtilityWrapper
.
.
::
.
GetLastError 方法
HttpServerUtilityWrapper 类

返回最近的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetLastError As Exception
public override Exception GetLastError()
public:
virtual Exception^ GetLastError() override
abstract GetLastError : unit -> Exception
override GetLastError : unit -> Exception

返回值

类型： System Exception
引发的前一个异常。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.HtmlDecode 方法

HttpServerUtilityWrapper
.
.
::
.
HtmlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

对 HTML 编码的字符串进行解码。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.HtmlDecode 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
HtmlDecode 方法 (String)
HttpServerUtilityWrapper 类

对 HTML 编码的字符串进行解码，并返回已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function HtmlDecode ( _
    s As String _
) As String
public override string HtmlDecode(
    string s
)
public:
virtual String^ HtmlDecode(
    String^ s
) override
abstract HtmlDecode :
        s:string -> string
override HtmlDecode :
        s:string -> string

参数

s
类型： System String
要解码的 HTML 字符串。

返回值

类型： System String
已解码的文本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
HtmlDecode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.HtmlDecode 方法 (String, TextWriter)

HttpServerUtilityWrapper
.
.
::
.
HtmlDecode 方法 (String, TextWriter)
HttpServerUtilityWrapper 类

对 HTML 编码的字符串进行解码，并在流中返回结果。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub HtmlDecode ( _
    s As String, _
    output As TextWriter _
)
public override void HtmlDecode(
    string s,
    TextWriter output
)
public:
virtual void HtmlDecode(
    String^ s,
    TextWriter^ output
) override
abstract HtmlDecode :
        s:string *
        output:TextWriter -> unit
override HtmlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的 HTML 字符串。
output
类型： System.IO TextWriter
包含已解码的字符串的流。

output 参数通过引用传递给 HtmlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 HtmlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 HtmlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
HtmlDecode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.HtmlEncode 方法

HttpServerUtilityWrapper
.
.
::
.
HtmlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

对要在浏览器中显示的字符串进行编码。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.HtmlEncode 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
HtmlEncode 方法 (String)
HttpServerUtilityWrapper 类

对字符串进行 HTML 编码并返回已编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function HtmlEncode ( _
    s As String _
) As String
public override string HtmlEncode(
    string s
)
public:
virtual String^ HtmlEncode(
    String^ s
) override
abstract HtmlEncode :
        s:string -> string
override HtmlEncode :
        s:string -> string

参数

s
类型： System String
要编码的字符串。

返回值

类型： System String
HTML 编码的文本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
HtmlEncode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.HtmlEncode 方法 (String, TextWriter)

HttpServerUtilityWrapper
.
.
::
.
HtmlEncode 方法 (String, TextWriter)
HttpServerUtilityWrapper 类

对字符串进行 HTML 编码，并将得到的输出发送至输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub HtmlEncode ( _
    s As String, _
    output As TextWriter _
)
public override void HtmlEncode(
    string s,
    TextWriter output
)
public:
virtual void HtmlEncode(
    String^ s,
    TextWriter^ output
) override
abstract HtmlEncode :
        s:string *
        output:TextWriter -> unit
override HtmlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串。
output
类型： System.IO TextWriter
包含已编码的字符串的流。

output 参数通过引用传递给 HtmlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlEncode。 output 参数通过引用传递给 HtmlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlEncode。 output 参数通过引用传递给 HtmlEncode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlEncode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
HtmlEncode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.MapPath 方法

HttpServerUtilityWrapper
.
.
::
.
MapPath 方法
HttpServerUtilityWrapper 类

返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function MapPath ( _
    path As String _
) As String
public override string MapPath(
    string path
)
public:
virtual String^ MapPath(
    String^ path
) override
abstract MapPath :
        path:string -> string
override MapPath :
        path:string -> string

参数

path
类型： System String
要为其获取物理路径的虚拟路径。

返回值

类型： System String
与 path 相对应的物理文件路径。
异常 | 条件
HttpException | 当前 HttpContext 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.Transfer 方法

HttpServerUtilityWrapper
.
.
::
.
Transfer 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

终止当前进程的执行，然后开始执行当前请求的另一个进程。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.Transfer 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
Transfer 方法 (String)
HttpServerUtilityWrapper 类

终止当前进程的执行，然后开始执行使用 URL 指定的页面或处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Transfer ( _
    path As String _
)
public override void Transfer(
    string path
)
public:
virtual void Transfer(
    String^ path
) override
abstract Transfer :
        path:string -> unit
override Transfer :
        path:string -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Transfer 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.Transfer 方法 (IHttpHandler, Boolean)

HttpServerUtilityWrapper
.
.
::
.
Transfer 方法 (IHttpHandler, Boolean)
HttpServerUtilityWrapper 类

通过使用自定义 HTTP 处理程序和一个指定是否清除 QueryString 和 Form 集合的值，终止当前进程的执行，然后开始执行新请求。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Transfer ( _
    handler As IHttpHandler, _
    preserveForm As Boolean _
)
public override void Transfer(
    IHttpHandler handler,
    bool preserveForm
)
public:
virtual void Transfer(
    IHttpHandler^ handler,
    bool preserveForm
) override
abstract Transfer :
        handler:IHttpHandler *
        preserveForm:bool -> unit
override Transfer :
        handler:IHttpHandler *
        preserveForm:bool -> unit

参数

handler
类型： System.Web IHttpHandler
要将当前请求传输至的 HTTP 处理程序。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
ApplicationException | 当前页请求为回调。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Transfer 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.Transfer 方法 (String, Boolean)

HttpServerUtilityWrapper
.
.
::
.
Transfer 方法 (String, Boolean)
HttpServerUtilityWrapper 类

通过使用指定的 URL 和一个指定是否清除 QueryString 和 Form 集合的值，终止当前页面的执行，然后开始执行另一个页面或处理程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Transfer ( _
    path As String, _
    preserveForm As Boolean _
)
public override void Transfer(
    string path,
    bool preserveForm
)
public:
virtual void Transfer(
    String^ path,
    bool preserveForm
) override
abstract Transfer :
        path:string *
        preserveForm:bool -> unit
override Transfer :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
ApplicationException | 当前页请求为回调。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
Transfer 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.TransferRequest 方法

HttpServerUtilityWrapper
.
.
::
.
TransferRequest 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

异步执行位于指定 URL 处的终结点

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.TransferRequest 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
TransferRequest 方法 (String)
HttpServerUtilityWrapper 类

异步执行位于指定 URL 处的终结点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TransferRequest ( _
    path As String _
)
public override void TransferRequest(
    string path
)
public:
virtual void TransferRequest(
    String^ path
) override
abstract TransferRequest :
        path:string -> unit
override TransferRequest :
        path:string -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
异常 | 条件
PlatformNotSupportedException | 该请求要求 IIS 7.0 处于集成管线模式。
HttpException | 服务器无法用于处理请求。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.TransferRequest 方法 (String, Boolean)

HttpServerUtilityWrapper
.
.
::
.
TransferRequest 方法 (String, Boolean)
HttpServerUtilityWrapper 类

异步执行位于指定 URL 处的终结点并指定是否清除 QueryString 和 Form 集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TransferRequest ( _
    path As String, _
    preserveForm As Boolean _
)
public override void TransferRequest(
    string path,
    bool preserveForm
)
public:
virtual void TransferRequest(
    String^ path,
    bool preserveForm
) override
abstract TransferRequest :
        path:string *
        preserveForm:bool -> unit
override TransferRequest :
        path:string *
        preserveForm:bool -> unit

参数

path
类型： System String
要执行的页面的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
异常 | 条件
PlatformNotSupportedException | 该请求要求 IIS 7.0 处于集成管线模式。
HttpException | 服务器无法用于处理请求。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.TransferRequest 方法 (String, Boolean, String, NameValueCollection)

HttpServerUtilityWrapper
.
.
::
.
TransferRequest 方法 (String, Boolean, String, NameValueCollection)
HttpServerUtilityWrapper 类

使用指定的 HTTP 方法和标头异步执行位于指定 URL 处的终结点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TransferRequest ( _
    path As String, _
    preserveForm As Boolean, _
    method As String, _
    headers As NameValueCollection _
)
public override void TransferRequest(
    string path,
    bool preserveForm,
    string method,
    NameValueCollection headers
)
public:
virtual void TransferRequest(
    String^ path,
    bool preserveForm,
    String^ method,
    NameValueCollection^ headers
) override
abstract TransferRequest :
        path:string *
        preserveForm:bool *
        method:string *
        headers:NameValueCollection -> unit
override TransferRequest :
        path:string *
        preserveForm:bool *
        method:string *
        headers:NameValueCollection -> unit

参数

path
类型： System String
要执行的页面或处理程序的 URL。
preserveForm
类型： System Boolean
为 true，则保留 QueryString 和 Form 集合；为 false，则清除 QueryString 和 Form 集合。
method
类型： System String
要用于新请求的 HTTP 方法（GET、POST 等）。如果为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用原始请求的 HTTP 方法。 要用于新请求的 HTTP 方法（GET、POST 等）。如果为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则使用原始请求的 HTTP 方法。
headers
类型： System.Collections.Specialized NameValueCollection
新请求的请求标头的集合。
异常 | 条件
PlatformNotSupportedException | 该请求要求 IIS 7.0 在集成模式下运行。
HttpException | 服务器无法用于处理请求。
ArgumentNullException | path 参数为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
TransferRequest 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlDecode 方法

HttpServerUtilityWrapper
.
.
::
.
UrlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

对编码为仅包含在 URL 中有效的字符的字符串进行解码。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlDecode 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
UrlDecode 方法 (String)
HttpServerUtilityWrapper 类

对 URL 编码的字符串进行解码，并返回已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function UrlDecode ( _
    s As String _
) As String
public override string UrlDecode(
    string s
)
public:
virtual String^ UrlDecode(
    String^ s
) override
abstract UrlDecode :
        s:string -> string
override UrlDecode :
        s:string -> string

参数

s
类型： System String
要解码的字符串。

返回值

类型： System String
已解码的文本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
UrlDecode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlDecode 方法 (String, TextWriter)

HttpServerUtilityWrapper
.
.
::
.
UrlDecode 方法 (String, TextWriter)
HttpServerUtilityWrapper 类

对 URL 编码的字符串进行解码，并将得到的输出发送至流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub UrlDecode ( _
    s As String, _
    output As TextWriter _
)
public override void UrlDecode(
    string s,
    TextWriter output
)
public:
virtual void UrlDecode(
    String^ s,
    TextWriter^ output
) override
abstract UrlDecode :
        s:string *
        output:TextWriter -> unit
override UrlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的 HTML 字符串。
output
类型： System.IO TextWriter
包含已解码的字符串的流。

output 参数通过引用传递给 UrlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 UrlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。 output 参数通过引用传递给 UrlDecode 方法。若要在方法完成之后检索处理程序的输出，请使用 output 对象的属性和方法。有关示例，请参见HtmlDecode。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
UrlDecode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlEncode 方法

HttpServerUtilityWrapper
.
.
::
.
UrlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

将字符串编码为仅包含在 URL 中有效的字符。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlEncode 方法 (String)

HttpServerUtilityWrapper
.
.
::
.
UrlEncode 方法 (String)
HttpServerUtilityWrapper 类

对字符串进行 URL 编码，并返回已编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function UrlEncode ( _
    s As String _
) As String
public override string UrlEncode(
    string s
)
public:
virtual String^ UrlEncode(
    String^ s
) override
abstract UrlEncode :
        s:string -> string
override UrlEncode :
        s:string -> string

参数

s
类型： System String
要进行 URL 编码的文本。

返回值

类型： System String
URL 编码的文本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
UrlEncode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlEncode 方法 (String, TextWriter)

HttpServerUtilityWrapper
.
.
::
.
UrlEncode 方法 (String, TextWriter)
HttpServerUtilityWrapper 类

对字符串进行 URL 编码，并将得到的输出发送至流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub UrlEncode ( _
    s As String, _
    output As TextWriter _
)
public override void UrlEncode(
    string s,
    TextWriter output
)
public:
virtual void UrlEncode(
    String^ s,
    TextWriter^ output
) override
abstract UrlEncode :
        s:string *
        output:TextWriter -> unit
override UrlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串。
output
类型： System.IO TextWriter
包含已编码的字符串的流。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
UrlEncode 重载
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlPathEncode 方法

HttpServerUtilityWrapper
.
.
::
.
UrlPathEncode 方法
HttpServerUtilityWrapper 类

对 URL 字符串的路径部分进行 URL 编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function UrlPathEncode ( _
    s As String _
) As String
public override string UrlPathEncode(
    string s
)
public:
virtual String^ UrlPathEncode(
    String^ s
) override
abstract UrlPathEncode :
        s:string -> string
override UrlPathEncode :
        s:string -> string

参数

s
类型： System String
要进行 URL 编码的字符串。

返回值

类型： System String
URL 编码的文本。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlTokenDecode 方法

HttpServerUtilityWrapper
.
.
::
.
UrlTokenDecode 方法
HttpServerUtilityWrapper 类

使用 base64 数字将 URL 字符串标记解码到等效的字节数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function UrlTokenDecode ( _
    input As String _
) As Byte()
public override byte[] UrlTokenDecode(
    string input
)
public:
virtual array<unsigned char>^ UrlTokenDecode(
    String^ input
) override
abstract UrlTokenDecode :
        input:string -> byte[]
override UrlTokenDecode :
        input:string -> byte[]

参数

input
类型： System String
要解码的 URL 字符串标记。

返回值

类型：
array<
System Byte
>
[]
()
[]

包含解码后的 URL 字符串标记的字节数组。
异常 | 条件
ArgumentNullException | input 参数的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.UrlTokenEncode 方法

HttpServerUtilityWrapper
.
.
::
.
UrlTokenEncode 方法
HttpServerUtilityWrapper 类

使用 base64 数字将一个字节数组编码为等效的字符串表示形式，这使得该字节数组适于通过 URL 传输。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function UrlTokenEncode ( _
    input As Byte() _
) As String
public override string UrlTokenEncode(
    byte[] input
)
public:
virtual String^ UrlTokenEncode(
    array<unsigned char>^ input
) override
abstract UrlTokenEncode :
        input:byte[] -> string
override UrlTokenEncode :
        input:byte[] -> string

参数

input
类型：
array<
System Byte
>
[]
()
[]

要编码的字节数组。

返回值

类型： System String
如果 input 的长度大于 1，则为包含已编码数组的字符串；否则，为空字符串 ("")。
异常 | 条件
ArgumentNullException | input 参数的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper 属性

HttpServerUtilityWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpServerUtilityWrapper 类

HttpServerUtilityWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpServerUtilityWrapper 类
System.Web 命名空间


HttpServerUtilityWrapper ..::.MachineName 属性

HttpServerUtilityWrapper
.
.
::
.
MachineName 属性
HttpServerUtilityWrapper 类

获取服务器的计算机名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property MachineName As String
    Get
public override string MachineName { get; }
public:
virtual property String^ MachineName {
    String^ get () override;
}
abstract MachineName : string
override MachineName : string

属性值

类型： System String
服务器计算机的名称。
异常 | 条件
HttpException | 无法找到该计算机名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpServerUtilityWrapper ..::.ScriptTimeout 属性

HttpServerUtilityWrapper
.
.
::
.
ScriptTimeout 属性
HttpServerUtilityWrapper 类

获取或设置请求超时值（以秒为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property ScriptTimeout As Integer
    Get
    Set
public override int ScriptTimeout { get; set; }
public:
virtual property int ScriptTimeout {
    int get () override;
    void set (int value) override;
}
abstract ScriptTimeout : int with get, set
override ScriptTimeout : int with get, set

属性值

类型： System Int32
请求的超时值。
异常 | 条件
HttpException | 当前 HttpContext 对象为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | 超时时间为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），或者其他无法进行设置的情况。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpServerUtilityWrapper 类
HttpServerUtilityWrapper 成员
System.Web 命名空间


HttpSessionStateBase 类

HttpSessionStateBase 类
成员

用作一些类的基类，可提供对会话状态值、会话级别设置以及生存期管理方法的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpSessionStateBase _
    Implements ICollection, IEnumerable
public abstract class HttpSessionStateBase : ICollection,
    IEnumerable
public ref class HttpSessionStateBase abstract : ICollection,
    IEnumerable
[<AbstractClassAttribute>]
type HttpSessionStateBase =
    class
        interface ICollection
        interface IEnumerable
    end

HttpSessionStateBase 类为抽象类，该类包含的成员与 HttpSessionState 类相同。使用 HttpSessionStateBase 类可以创建一些派生类，这些派生类与 HttpSessionState 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpSessionStateBase 类为抽象类，该类包含的成员与 HttpSessionState 类相同。使用 HttpSessionStateBase 类可以创建一些派生类，这些派生类与 HttpSessionState 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpSessionStateBase 类为抽象类，该类包含的成员与 HttpSessionState 类相同。使用 HttpSessionStateBase 类可以创建一些派生类，这些派生类与 HttpSessionState 类相似，但是可以进行自定义并在 ASP.NET 管道外部使用。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpSessionStateWrapper 类是从 HttpSessionStateBase 类派生的。HttpSessionStateWrapper 类用作 HttpSessionState 类的包装。在运行时，通常使用 HttpSessionStateWrapper 类的实例调用 HttpSessionState 对象的成员。 HttpSessionStateWrapper 类是从 HttpSessionStateBase 类派生的。HttpSessionStateWrapper 类用作 HttpSessionState 类的包装。在运行时，通常使用 HttpSessionStateWrapper 类的实例调用 HttpSessionState 对象的成员。 HttpSessionStateWrapper 类是从 HttpSessionStateBase 类派生的。HttpSessionStateWrapper 类用作 HttpSessionState 类的包装。在运行时，通常使用 HttpSessionStateWrapper 类的实例调用 HttpSessionState 对象的成员。

System.Web System.Web..::.HttpSessionStateBaseHttpSessionStateBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase 成员

HttpSessionStateBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateBase 类

用作一些类的基类，可提供对会话状态值、会话级别设置以及生存期管理方法的访问。

HttpSessionStateBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpSessionStateBase 类
System.Web 命名空间


HttpSessionStateBase 构造函数

HttpSessionStateBase 构造函数
HttpSessionStateBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpSessionStateBase()
protected:
HttpSessionStateBase()
new : unit -> HttpSessionStateBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase 方法

HttpSessionStateBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateBase 类

HttpSessionStateBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpSessionStateBase 类
System.Web 命名空间


HttpSessionStateBase ..::.Abandon 方法

HttpSessionStateBase
.
.
::
.
Abandon 方法
HttpSessionStateBase 类

在派生类中重写时，取消当前会话。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Abandon
public virtual void Abandon()
public:
virtual void Abandon()
abstract Abandon : unit -> unit
override Abandon : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Add 方法

HttpSessionStateBase
.
.
::
.
Add 方法
HttpSessionStateBase 类

在派生类中重写时，将一个项添加到会话状态集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Add ( _
    name As String, _
    value As Object _
)
public virtual void Add(
    string name,
    Object value
)
public:
virtual void Add(
    String^ name,
    Object^ value
)
abstract Add :
        name:string *
        value:Object -> unit
override Add :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要添加到会话状态集合的项的名称。
value
类型： System Object
要添加到会话状态集合的项的值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Clear 方法

HttpSessionStateBase
.
.
::
.
Clear 方法
HttpSessionStateBase 类

在派生类中重写时，从会话状态集合中移除所有键和值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Clear
public virtual void Clear()
public:
virtual void Clear()
abstract Clear : unit -> unit
override Clear : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.CopyTo 方法

HttpSessionStateBase
.
.
::
.
CopyTo 方法
HttpSessionStateBase 类

在派生类中重写时，从数组中的指定索引处开始，将会话状态值的集合复制到一个一维数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public virtual void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
)
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
要向其中复制会话值的数组。
index
类型： System Int32
array 中开始复制位置的从零开始的索引。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.GetEnumerator 方法

HttpSessionStateBase
.
.
::
.
GetEnumerator 方法
HttpSessionStateBase 类

在派生类中重写时，返回一个枚举数，该枚举数可用于读取当前会话中的所有会话状态变量名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetEnumerator As IEnumerator
public virtual IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
可以循环访问会话状态集合中的变量名称的枚举数。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Remove 方法

HttpSessionStateBase
.
.
::
.
Remove 方法
HttpSessionStateBase 类

在派生类中重写时，从会话状态集合中删除一个项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Remove ( _
    name As String _
)
public virtual void Remove(
    string name
)
public:
virtual void Remove(
    String^ name
)
abstract Remove :
        name:string -> unit
override Remove :
        name:string -> unit

参数

name
类型： System String
要从会话状态集合中删除的项的名称。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.RemoveAll 方法

HttpSessionStateBase
.
.
::
.
RemoveAll 方法
HttpSessionStateBase 类

在派生类中重写时，从会话状态集合中移除所有键和值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveAll
public virtual void RemoveAll()
public:
virtual void RemoveAll()
abstract RemoveAll : unit -> unit
override RemoveAll : unit -> unit
异常 | 条件
NotImplementedException | 始终为 。

此方法执行与 Clear 方法相同的功能。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.RemoveAt 方法

HttpSessionStateBase
.
.
::
.
RemoveAt 方法
HttpSessionStateBase 类

在派生类中重写时，从会话状态集合中删除位于指定索引处的项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveAt ( _
    index As Integer _
)
public virtual void RemoveAt(
    int index
)
public:
virtual void RemoveAt(
    int index
)
abstract RemoveAt :
        index:int -> unit
override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要从会话状态集合中移除的项的索引。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase 属性

HttpSessionStateBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateBase 类

HttpSessionStateBase 类型公开以下成员。

名称 说明
页首

参考

HttpSessionStateBase 类
System.Web 命名空间


HttpSessionStateBase ..::.CodePage 属性

HttpSessionStateBase
.
.
::
.
CodePage 属性
HttpSessionStateBase 类

在派生类中重写时，获取或设置当前会话的字符集标识符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property CodePage As Integer
    Get
    Set
public virtual int CodePage { get; set; }
public:
virtual property int CodePage {
    int get ();
    void set (int value);
}
abstract CodePage : int with get, set
override CodePage : int with get, set

属性值

类型： System Int32
当前会话的字符集标识符。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Contents 属性

HttpSessionStateBase
.
.
::
.
Contents 属性
HttpSessionStateBase 类

在派生类中重写时，获取对当前会话状态对象的引用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Contents As HttpSessionStateBase
    Get
public virtual HttpSessionStateBase Contents { get; }
public:
virtual property HttpSessionStateBase^ Contents {
    HttpSessionStateBase^ get ();
}
abstract Contents : HttpSessionStateBase
override Contents : HttpSessionStateBase

属性值

类型： System.Web HttpSessionStateBase
当前会话状态对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.CookieMode 属性

HttpSessionStateBase
.
.
::
.
CookieMode 属性
HttpSessionStateBase 类

在派生类中重写时，获取一个值，该值指示是否为无 Cookie 会话配置应用程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CookieMode As HttpCookieMode
    Get
public virtual HttpCookieMode CookieMode { get; }
public:
virtual property HttpCookieMode CookieMode {
    HttpCookieMode get ();
}
abstract CookieMode : HttpCookieMode
override CookieMode : HttpCookieMode

属性值

类型： System.Web HttpCookieMode
指示是否为无 Cookie 会话配置应用程序的 Cookie 模式值之一。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Count 属性

HttpSessionStateBase
.
.
::
.
Count 属性
HttpSessionStateBase 类

在派生类中重写时，获取会话状态集合中的项数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Count As Integer
    Get
public virtual int Count { get; }
public:
virtual property int Count {
    int get ();
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的项数。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.IsCookieless 属性

HttpSessionStateBase
.
.
::
.
IsCookieless 属性
HttpSessionStateBase 类

在派生类中重写时，获取一个值，该值指示会话 ID 是否嵌入在 URL 中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsCookieless As Boolean
    Get
public virtual bool IsCookieless { get; }
public:
virtual property bool IsCookieless {
    bool get ();
}
abstract IsCookieless : bool
override IsCookieless : bool

属性值

类型： System Boolean
如果会话 ID 嵌入在 URL 中，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.IsNewSession 属性

HttpSessionStateBase
.
.
::
.
IsNewSession 属性
HttpSessionStateBase 类

在派生类中重写时，获取一个值，该值指示会话是否是在当前请求过程中创建的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsNewSession As Boolean
    Get
public virtual bool IsNewSession { get; }
public:
virtual property bool IsNewSession {
    bool get ();
}
abstract IsNewSession : bool
override IsNewSession : bool

属性值

类型： System Boolean
如果会话是在当前请求过程中创建的，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.IsReadOnly 属性

HttpSessionStateBase
.
.
::
.
IsReadOnly 属性
HttpSessionStateBase 类

在派生类中重写时，获取一个值，该值指示会话是否为只读。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsReadOnly As Boolean
    Get
public virtual bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get ();
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
如果会话为只读，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.IsSynchronized 属性

HttpSessionStateBase
.
.
::
.
IsSynchronized 属性
HttpSessionStateBase 类

在派生类中重写时，获取一个值，该值指示对会话状态值集合的访问是否是同步的（线程安全）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsSynchronized As Boolean
    Get
public virtual bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get ();
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果对该集合的访问是同步的（线程安全），则为 true；否则，为 false。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Item 属性

HttpSessionStateBase
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateBase 类

在派生类中重写时，获取或设置单个会话值。

名称 说明
页首

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Item 属性 (Int32)

HttpSessionStateBase
.
.
::
.
Item 属性 (Int32)
HttpSessionStateBase 类

在派生类中重写时，通过使用指定的索引获取或设置会话值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Item ( _
    index As Integer _
) As Object
    Get
    Set
public virtual Object this[
    int index
] { get; set; }
public:
virtual property Object^ Item[int index] {
    Object^ get (int index);
    void set (int index, Object^ value);
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

index
类型： System Int32
会话值的索引。

属性值

类型： System Object
存储在指定的索引处的会话状态值。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
Item 重载
System.Web 命名空间


HttpSessionStateBase ..::.Item 属性 (String)

HttpSessionStateBase
.
.
::
.
Item 属性 (String)
HttpSessionStateBase 类

在派生类中重写时，通过使用指定的名称获取或设置会话值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Item ( _
    name As String _
) As Object
    Get
    Set
public virtual Object this[
    string name
] { get; set; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name);
    void set (String^ name, Object^ value);
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

name
类型： System String
会话值的键名。

属性值

类型： System Object
具有指定名称的会话状态值，如果该项不存在，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
Item 重载
System.Web 命名空间


HttpSessionStateBase ..::.Keys 属性

HttpSessionStateBase
.
.
::
.
Keys 属性
HttpSessionStateBase 类

在派生类中重写时，获取存储在会话状态集合中的所有值的密钥集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Keys As NameObjectCollectionBase..::..KeysCollection
    Get
public virtual NameObjectCollectionBase..::..KeysCollection Keys { get; }
public:
virtual property NameObjectCollectionBase..::..KeysCollection^ Keys {
    NameObjectCollectionBase..::..KeysCollection^ get ();
}
abstract Keys : NameObjectCollectionBase..::..KeysCollection
override Keys : NameObjectCollectionBase..::..KeysCollection

属性值

类型： System.Collections.Specialized NameObjectCollectionBase KeysCollection
会话密钥。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.LCID 属性

HttpSessionStateBase
.
.
::
.
LCID 属性
HttpSessionStateBase 类

在派生类中重写时，获取或设置当前会话的区域设置标识符 (LCID)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property LCID As Integer
    Get
    Set
public virtual int LCID { get; set; }
public:
virtual property int LCID {
    int get ();
    void set (int value);
}
abstract LCID : int with get, set
override LCID : int with get, set

属性值

类型： System Int32
当前会话的 LCID（区域性）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Mode 属性

HttpSessionStateBase
.
.
::
.
Mode 属性
HttpSessionStateBase 类

在派生类中重写时，获取当前会话状态模式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Mode As SessionStateMode
    Get
public virtual SessionStateMode Mode { get; }
public:
virtual property SessionStateMode Mode {
    SessionStateMode get ();
}
abstract Mode : SessionStateMode
override Mode : SessionStateMode

属性值

类型： System.Web.SessionState SessionStateMode
会话状态模式。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.SessionID 属性

HttpSessionStateBase
.
.
::
.
SessionID 属性
HttpSessionStateBase 类

在派生类中重写时，获取会话的唯一标识符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SessionID As String
    Get
public virtual string SessionID { get; }
public:
virtual property String^ SessionID {
    String^ get ();
}
abstract SessionID : string
override SessionID : string

属性值

类型： System String
唯一会话标识符。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.StaticObjects 属性

HttpSessionStateBase
.
.
::
.
StaticObjects 属性
HttpSessionStateBase 类

在派生类中重写时，获取由 object 元素声明的对象的集合，这些元素在应用程序的 Global.asax 文件中标记为服务器控件且范围限定为当前会话。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property StaticObjects As HttpStaticObjectsCollectionBase
    Get
public virtual HttpStaticObjectsCollectionBase StaticObjects { get; }
public:
virtual property HttpStaticObjectsCollectionBase^ StaticObjects {
    HttpStaticObjectsCollectionBase^ get ();
}
abstract StaticObjects : HttpStaticObjectsCollectionBase
override StaticObjects : HttpStaticObjectsCollectionBase

属性值

类型： System.Web HttpStaticObjectsCollectionBase
在 Global.asax 文件中声明的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.SyncRoot 属性

HttpSessionStateBase
.
.
::
.
SyncRoot 属性
HttpSessionStateBase 类

在派生类中重写时，获取一个对象，该对象可用于同步对会话状态值集合的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SyncRoot As Object
    Get
public virtual Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get ();
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateBase ..::.Timeout 属性

HttpSessionStateBase
.
.
::
.
Timeout 属性
HttpSessionStateBase 类

在派生类中重写时，获取和设置在会话状态提供程序结束会话之前在请求之间所允许间隔的时间量（以分钟为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Timeout As Integer
    Get
    Set
public virtual int Timeout { get; set; }
public:
virtual property int Timeout {
    int get ();
    void set (int value);
}
abstract Timeout : int with get, set
override Timeout : int with get, set

属性值

类型： System Int32
超时期限（以分钟为单位）。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateBase 类
HttpSessionStateBase 成员
System.Web 命名空间


HttpSessionStateWrapper 类

HttpSessionStateWrapper 类
成员

封装 HTTP 内部对象，该对象提供对会话状态值、会话级别设置和生存期管理方法的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpSessionStateWrapper _
    Inherits HttpSessionStateBase
public class HttpSessionStateWrapper : HttpSessionStateBase
public ref class HttpSessionStateWrapper : public HttpSessionStateBase
type HttpSessionStateWrapper =
    class
        inherit HttpSessionStateBase
    end

HttpSessionStateWrapper 类从 HttpSessionStateBase 类派生，并用作 HttpSessionState 类的包装。此类公开 HttpSessionState 类的功能并公开 HttpSessionStateBase 类型。使用 HttpSessionStateBase 类可以将应用程序中 HttpSessionState 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpSessionStateWrapper 类从 HttpSessionStateBase 类派生，并用作 HttpSessionState 类的包装。此类公开 HttpSessionState 类的功能并公开 HttpSessionStateBase 类型。使用 HttpSessionStateBase 类可以将应用程序中 HttpSessionState 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpSessionStateWrapper 类从 HttpSessionStateBase 类派生，并用作 HttpSessionState 类的包装。此类公开 HttpSessionState 类的功能并公开 HttpSessionStateBase 类型。使用 HttpSessionStateBase 类可以将应用程序中 HttpSessionState 类的原始实现替换为自定义实现（如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpSessionStateWrapperHttpSessionStateWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper 成员

HttpSessionStateWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateWrapper 类

封装 HTTP 内部对象，该对象提供对会话状态值、会话级别设置和生存期管理方法的访问。

HttpSessionStateWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpSessionStateWrapper 类
System.Web 命名空间


HttpSessionStateWrapper 构造函数

HttpSessionStateWrapper 构造函数
HttpSessionStateWrapper 类

初始化 HttpSessionStateWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpSessionState As HttpSessionState _
)
public HttpSessionStateWrapper(
    HttpSessionState httpSessionState
)
public:
HttpSessionStateWrapper(
    HttpSessionState^ httpSessionState
)
new :
        httpSessionState:HttpSessionState -> HttpSessionStateWrapper

参数

httpSessionState
类型： System.Web.SessionState HttpSessionState
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpSessionState 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper 方法

HttpSessionStateWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateWrapper 类

HttpSessionStateWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpSessionStateWrapper 类
System.Web 命名空间


HttpSessionStateWrapper ..::.Abandon 方法

HttpSessionStateWrapper
.
.
::
.
Abandon 方法
HttpSessionStateWrapper 类

取消当前会话。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Abandon
public override void Abandon()
public:
virtual void Abandon() override
abstract Abandon : unit -> unit
override Abandon : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Add 方法

HttpSessionStateWrapper
.
.
::
.
Add 方法
HttpSessionStateWrapper 类

将一个项添加到会话状态集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Add ( _
    name As String, _
    value As Object _
)
public override void Add(
    string name,
    Object value
)
public:
virtual void Add(
    String^ name,
    Object^ value
) override
abstract Add :
        name:string *
        value:Object -> unit
override Add :
        name:string *
        value:Object -> unit

参数

name
类型： System String
要添加到会话状态集合的项的名称。
value
类型： System Object
要添加到会话状态集合的项的值。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Clear 方法

HttpSessionStateWrapper
.
.
::
.
Clear 方法
HttpSessionStateWrapper 类

从会话状态集合中移除所有的键和值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Clear
public override void Clear()
public:
virtual void Clear() override
abstract Clear : unit -> unit
override Clear : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.CopyTo 方法

HttpSessionStateWrapper
.
.
::
.
CopyTo 方法
HttpSessionStateWrapper 类

将会话状态值的集合复制到一维数组中（从数组的指定索引处开始）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public override void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
) override
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
要向其中复制会话值的数组
index
类型： System Int32
array 中开始复制位置的从零开始的索引。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.GetEnumerator 方法

HttpSessionStateWrapper
.
.
::
.
GetEnumerator 方法
HttpSessionStateWrapper 类

返回一个枚举数，可用来读取当前会话中所有会话状态的变量名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
可以循环访问会话状态集合中的变量名称的枚举数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Remove 方法

HttpSessionStateWrapper
.
.
::
.
Remove 方法
HttpSessionStateWrapper 类

删除会话状态集合中的项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Remove ( _
    name As String _
)
public override void Remove(
    string name
)
public:
virtual void Remove(
    String^ name
) override
abstract Remove :
        name:string -> unit
override Remove :
        name:string -> unit

参数

name
类型： System String
要从会话状态集合中删除的项的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.RemoveAll 方法

HttpSessionStateWrapper
.
.
::
.
RemoveAll 方法
HttpSessionStateWrapper 类

从会话状态集合中移除所有的键和值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemoveAll
public override void RemoveAll()
public:
virtual void RemoveAll() override
abstract RemoveAll : unit -> unit
override RemoveAll : unit -> unit

此方法执行与 Clear 方法相同的功能。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.RemoveAt 方法

HttpSessionStateWrapper
.
.
::
.
RemoveAt 方法
HttpSessionStateWrapper 类

从会话状态集合中删除位于指定索引处的项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub RemoveAt ( _
    index As Integer _
)
public override void RemoveAt(
    int index
)
public:
virtual void RemoveAt(
    int index
) override
abstract RemoveAt :
        index:int -> unit
override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要从会话状态集合中移除的项的索引。
异常 | 条件
ArgumentOutOfRangeException | index 小于零。 - 或 - index 等于或大于 Count。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper 属性

HttpSessionStateWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateWrapper 类

HttpSessionStateWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpSessionStateWrapper 类
System.Web 命名空间


HttpSessionStateWrapper ..::.CodePage 属性

HttpSessionStateWrapper
.
.
::
.
CodePage 属性
HttpSessionStateWrapper 类

获取或设置当前会话的字符集标识符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property CodePage As Integer
    Get
    Set
public override int CodePage { get; set; }
public:
virtual property int CodePage {
    int get () override;
    void set (int value) override;
}
abstract CodePage : int with get, set
override CodePage : int with get, set

属性值

类型： System Int32
当前会话的字符集标识符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Contents 属性

HttpSessionStateWrapper
.
.
::
.
Contents 属性
HttpSessionStateWrapper 类

获取对当前会话状态对象的引用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Contents As HttpSessionStateBase
    Get
public override HttpSessionStateBase Contents { get; }
public:
virtual property HttpSessionStateBase^ Contents {
    HttpSessionStateBase^ get () override;
}
abstract Contents : HttpSessionStateBase
override Contents : HttpSessionStateBase

属性值

类型： System.Web HttpSessionStateBase
当前会话状态对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.CookieMode 属性

HttpSessionStateWrapper
.
.
::
.
CookieMode 属性
HttpSessionStateWrapper 类

获取一个值，该值指示是否为无 Cookie 会话配置应用程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property CookieMode As HttpCookieMode
    Get
public override HttpCookieMode CookieMode { get; }
public:
virtual property HttpCookieMode CookieMode {
    HttpCookieMode get () override;
}
abstract CookieMode : HttpCookieMode
override CookieMode : HttpCookieMode

属性值

类型： System.Web HttpCookieMode
指示是否为无 Cookie 会话配置应用程序的 Cookie 模式值之一。默认值为 HttpCookieMode..::.UseCookies。 指示是否为无 Cookie 会话配置应用程序的 Cookie 模式值之一。默认值为 HttpCookieMode..::.UseCookies。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Count 属性

HttpSessionStateWrapper
.
.
::
.
Count 属性
HttpSessionStateWrapper 类

获取会话状态集合中的项数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的项数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.IsCookieless 属性

HttpSessionStateWrapper
.
.
::
.
IsCookieless 属性
HttpSessionStateWrapper 类

获取一个值，该值指示会话 ID 是否嵌入 URL 中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsCookieless As Boolean
    Get
public override bool IsCookieless { get; }
public:
virtual property bool IsCookieless {
    bool get () override;
}
abstract IsCookieless : bool
override IsCookieless : bool

属性值

类型： System Boolean
如果会话 ID 嵌入在 URL 中，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.IsNewSession 属性

HttpSessionStateWrapper
.
.
::
.
IsNewSession 属性
HttpSessionStateWrapper 类

获取一个值，该值指示会话是否是在当前请求过程中创建的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsNewSession As Boolean
    Get
public override bool IsNewSession { get; }
public:
virtual property bool IsNewSession {
    bool get () override;
}
abstract IsNewSession : bool
override IsNewSession : bool

属性值

类型： System Boolean
如果会话是在当前请求过程中创建的，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.IsReadOnly 属性

HttpSessionStateWrapper
.
.
::
.
IsReadOnly 属性
HttpSessionStateWrapper 类

获取一个值，该值指示会话是否为只读。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsReadOnly As Boolean
    Get
public override bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get () override;
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
如果会话为只读，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.IsSynchronized 属性

HttpSessionStateWrapper
.
.
::
.
IsSynchronized 属性
HttpSessionStateWrapper 类

获取一个值，该值指示对会话状态值集合的访问是否是同步的（线程安全）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsSynchronized As Boolean
    Get
public override bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get () override;
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果对该集合的访问是同步的（线程安全），则为 true；否则，为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Item 属性

HttpSessionStateWrapper
.
.
::
.
Item 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpSessionStateWrapper 类

获取或设置个别会话值。

名称 说明
页首

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Item 属性 (Int32)

HttpSessionStateWrapper
.
.
::
.
Item 属性 (Int32)
HttpSessionStateWrapper 类

使用指定的索引获取或设置会话值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Item ( _
    index As Integer _
) As Object
    Get
    Set
public override Object this[
    int index
] { get; set; }
public:
virtual property Object^ Item[int index] {
    Object^ get (int index) override;
    void set (int index, Object^ value) override;
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

index
类型： System Int32
会话值的索引。

属性值

类型： System Object
存储在指定的索引处的会话状态值。
异常 | 条件
ArgumentOutOfRangeException | index 在集合的有效索引范围外。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
Item 重载
System.Web 命名空间


HttpSessionStateWrapper ..::.Item 属性 (String)

HttpSessionStateWrapper
.
.
::
.
Item 属性 (String)
HttpSessionStateWrapper 类

使用指定的名称获取或设置会话值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Item ( _
    name As String _
) As Object
    Get
    Set
public override Object this[
    string name
] { get; set; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name) override;
    void set (String^ name, Object^ value) override;
}
abstract Item : Object with get, set
override Item : Object with get, set

参数

name
类型： System String
会话值的键名。

属性值

类型： System Object
具有指定名称的会话状态值，如果该项不存在，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
Item 重载
System.Web 命名空间


HttpSessionStateWrapper ..::.Keys 属性

HttpSessionStateWrapper
.
.
::
.
Keys 属性
HttpSessionStateWrapper 类

获取存储在会话状态集合中的所有值的密钥集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Keys As NameObjectCollectionBase..::..KeysCollection
    Get
public override NameObjectCollectionBase..::..KeysCollection Keys { get; }
public:
virtual property NameObjectCollectionBase..::..KeysCollection^ Keys {
    NameObjectCollectionBase..::..KeysCollection^ get () override;
}
abstract Keys : NameObjectCollectionBase..::..KeysCollection
override Keys : NameObjectCollectionBase..::..KeysCollection

属性值

类型： System.Collections.Specialized NameObjectCollectionBase KeysCollection
会话密钥。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.LCID 属性

HttpSessionStateWrapper
.
.
::
.
LCID 属性
HttpSessionStateWrapper 类

获取或设置当前会话的区域设置标识符 (LCID)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property LCID As Integer
    Get
    Set
public override int LCID { get; set; }
public:
virtual property int LCID {
    int get () override;
    void set (int value) override;
}
abstract LCID : int with get, set
override LCID : int with get, set

属性值

类型： System Int32
当前会话的 LCID（区域性）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Mode 属性

HttpSessionStateWrapper
.
.
::
.
Mode 属性
HttpSessionStateWrapper 类

获取当前会话状态模式。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Mode As SessionStateMode
    Get
public override SessionStateMode Mode { get; }
public:
virtual property SessionStateMode Mode {
    SessionStateMode get () override;
}
abstract Mode : SessionStateMode
override Mode : SessionStateMode

属性值

类型： System.Web.SessionState SessionStateMode
会话状态模式。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.SessionID 属性

HttpSessionStateWrapper
.
.
::
.
SessionID 属性
HttpSessionStateWrapper 类

获取会话的唯一标识符。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SessionID As String
    Get
public override string SessionID { get; }
public:
virtual property String^ SessionID {
    String^ get () override;
}
abstract SessionID : string
override SessionID : string

属性值

类型： System String
唯一会话标识符。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.StaticObjects 属性

HttpSessionStateWrapper
.
.
::
.
StaticObjects 属性
HttpSessionStateWrapper 类

获取由 object 元素声明的对象的集合，这些元素在应用程序的 Global.asax 文件中标记为服务器控件且范围限定为当前会话。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property StaticObjects As HttpStaticObjectsCollectionBase
    Get
public override HttpStaticObjectsCollectionBase StaticObjects { get; }
public:
virtual property HttpStaticObjectsCollectionBase^ StaticObjects {
    HttpStaticObjectsCollectionBase^ get () override;
}
abstract StaticObjects : HttpStaticObjectsCollectionBase
override StaticObjects : HttpStaticObjectsCollectionBase

属性值

类型： System.Web HttpStaticObjectsCollectionBase
在 Global.asax 文件中声明的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.SyncRoot 属性

HttpSessionStateWrapper
.
.
::
.
SyncRoot 属性
HttpSessionStateWrapper 类

获取一个对象，该对象可用于同步对会话状态值的集合的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SyncRoot As Object
    Get
public override Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () override;
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpSessionStateWrapper ..::.Timeout 属性

HttpSessionStateWrapper
.
.
::
.
Timeout 属性
HttpSessionStateWrapper 类

获取或设置在会话状态提供程序结束会话之前在请求之间所允许间隔的时间量（以分钟为单位）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Property Timeout As Integer
    Get
    Set
public override int Timeout { get; set; }
public:
virtual property int Timeout {
    int get () override;
    void set (int value) override;
}
abstract Timeout : int with get, set
override Timeout : int with get, set

属性值

类型： System Int32
超时期限（以分钟为单位）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpSessionStateWrapper 类
HttpSessionStateWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollection 类

HttpStaticObjectsCollection 类
成员

为 StaticObjects 属性提供应用程序范围内的对象的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpStaticObjectsCollection _
    Implements ICollection, IEnumerable
public sealed class HttpStaticObjectsCollection : ICollection,
    IEnumerable
public ref class HttpStaticObjectsCollection sealed : ICollection,
    IEnumerable
[<SealedAttribute>]
type HttpStaticObjectsCollection =
    class
        interface ICollection
        interface IEnumerable
    end

System.Web System.Web..::.HttpStaticObjectsCollectionHttpStaticObjectsCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection 成员

HttpStaticObjectsCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollection 类

为 StaticObjects 属性提供应用程序范围内的对象的集合。

HttpStaticObjectsCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpStaticObjectsCollection 类
System.Web 命名空间


HttpStaticObjectsCollection 构造函数

HttpStaticObjectsCollection 构造函数
HttpStaticObjectsCollection 类

初始化 HttpStaticObjectsCollection 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpStaticObjectsCollection()
public:
HttpStaticObjectsCollection()
new : unit -> HttpStaticObjectsCollection

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection 方法

HttpStaticObjectsCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollection 类

HttpStaticObjectsCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpStaticObjectsCollection 类
System.Web 命名空间


HttpStaticObjectsCollection ..::.CopyTo 方法

HttpStaticObjectsCollection
.
.
::
.
CopyTo 方法
HttpStaticObjectsCollection 类

将 HttpStaticObjectsCollection 的成员复制到数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
) sealed
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
将 HttpStaticObjectsCollection 复制到其中的数组。
index
类型： System Int32
复制开始处的集合成员。

实现

下面的示例创建一个所需大小的新 Object 数组，并将一个现有的 StaticObjects 集合复制到该数组。

' Find the number of members in the StaticObjects collection.
Dim ObjCount As Integer = Application.StaticObjects.Count
' Create an array of the same size.
Dim MyObjArray(ObjCount) As Object
' Copy the entire collection into the array.
Application.StaticObjects.CopyTo(MyObjArray, 0)

// Find the number of members in the StaticObjects collection.
int ObjCount = Application.StaticObjects.Count;
// Create an array of the same size.
Object[] MyObjArray = new Object[ObjCount];
// Copy the entire collection into the array.
Application.StaticObjects.CopyTo(MyObjArray, 0);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.Deserialize 方法

HttpStaticObjectsCollection
.
.
::
.
Deserialize 方法
HttpStaticObjectsCollection 类

从使用 Serialize 方法编写的二进制文件创建 HttpStaticObjectsCollection 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function Deserialize ( _
    reader As BinaryReader _
) As HttpStaticObjectsCollection
public static HttpStaticObjectsCollection Deserialize(
    BinaryReader reader
)
public:
static HttpStaticObjectsCollection^ Deserialize(
    BinaryReader^ reader
)
static member Deserialize :
        reader:BinaryReader -> HttpStaticObjectsCollection

参数

reader
类型： System.IO BinaryReader
用于从流或编码的字符串读取序列化的集合的 BinaryReader。

返回值

类型： System.Web HttpStaticObjectsCollection
使用一个二进制文件中的内容填充的 HttpStaticObjectsCollection，该二进制文件是使用 Serialize 方法编写的。

Deserialize 方法用于读取存储在由 Serialize 方法创建的存储位置的 HttpStaticObjectsCollection 对象的内容。若要序列化 HttpStaticObjectsCollection，请调用 Serialize 方法。 Deserialize 方法用于读取存储在由 Serialize 方法创建的存储位置的 HttpStaticObjectsCollection 对象的内容。若要序列化 HttpStaticObjectsCollection，请调用 Serialize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.GetEnumerator 方法

HttpStaticObjectsCollection
.
.
::
.
GetEnumerator 方法
HttpStaticObjectsCollection 类

返回字典枚举数，该枚举数用于循环访问包含在集合中的“键-值”对。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetEnumerator As IEnumerator
public IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() sealed
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
该集合的枚举数。

实现

下面的示例创建 StaticObjects 集合的枚举数。

Dim myEnumerator As System.Collections.IEnumerator = _
    Application.StaticObjects.GetEnumerator()

System.Collections.IEnumerator myEnumerator =
    Application.StaticObjects.GetEnumerator();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.GetObject 方法

HttpStaticObjectsCollection
.
.
::
.
GetObject 方法
HttpStaticObjectsCollection 类

返回集合中具有指定名称的对象。该属性是 this 访问器的另一选择。 返回集合中具有指定名称的对象。该属性是 this 访问器的另一选择。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetObject ( _
    name As String _
) As Object
public Object GetObject(
    string name
)
public:
Object^ GetObject(
    String^ name
)
member GetObject :
        name:string -> Object

参数

name
类型： System String
要返回的对象名（不区分大小写）。

返回值

类型： System Object
该集合中的一个对象。

下面的示例返回 StaticObjects 集合中名为 ArrayList1 的对象，并将其复制到一个对象变量。

Dim MyObject As Object
MyObject = Application.StaticObjects.GetObject("ArrayList1")

Object MyObject;
MyObject = Application.StaticObjects.GetObject("ArrayList1");

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.Serialize 方法

HttpStaticObjectsCollection
.
.
::
.
Serialize 方法
HttpStaticObjectsCollection 类

将集合的内容写入 BinaryWriter 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Serialize ( _
    writer As BinaryWriter _
)
public void Serialize(
    BinaryWriter writer
)
public:
void Serialize(
    BinaryWriter^ writer
)
member Serialize :
        writer:BinaryWriter -> unit

参数

writer
类型： System.IO BinaryWriter
用于将序列化的集合写入流或编码的字符串的 BinaryWriter。

可以使用 Serialize 方法将 HttpStaticObjectsCollection 对象的内容写入 BinaryWriter 对象。若要检索序列化的 HttpStaticObjectsCollection 对象，请使用 Deserialize 方法。 可以使用 Serialize 方法将 HttpStaticObjectsCollection 对象的内容写入 BinaryWriter 对象。若要检索序列化的 HttpStaticObjectsCollection 对象，请使用 Deserialize 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection 属性

HttpStaticObjectsCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollection 类

HttpStaticObjectsCollection 类型公开以下成员。

名称 说明
页首

参考

HttpStaticObjectsCollection 类
System.Web 命名空间


HttpStaticObjectsCollection ..::.Count 属性

HttpStaticObjectsCollection
.
.
::
.
Count 属性
HttpStaticObjectsCollection 类

获取集合中的对象数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Count As Integer
    Get
public int Count { get; }
public:
virtual property int Count {
    int get () sealed;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

下面的示例中的代码仅在集合中的对象数超过 5 个时执行。

If Application.StaticObjects.Count > 5 Then
   '...
End If

if (Application.StaticObjects.Count > 5)
{
   //...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.IsReadOnly 属性

HttpStaticObjectsCollection
.
.
::
.
IsReadOnly 属性
HttpStaticObjectsCollection 类

获取一个值，该值指示集合是否为只读。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsReadOnly As Boolean
    Get
public bool IsReadOnly { get; }
public:
property bool IsReadOnly {
    bool get ();
}
member IsReadOnly : bool

属性值

类型： System Boolean
始终返回 true。

下面示例中的代码仅在集合为只读时才执行。

If Application.StaticObjects.IsReadOnly Then
   '...
End If

if (Application.StaticObjects.IsReadOnly)
{
   //...
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.IsSynchronized 属性

HttpStaticObjectsCollection
.
.
::
.
IsSynchronized 属性
HttpStaticObjectsCollection 类

获取一个值，该值指示集合是否已同步（即线程安全）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsSynchronized As Boolean
    Get
public bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get () sealed;
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
在此实现中，该属性始终返回 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.Item 属性

HttpStaticObjectsCollection
.
.
::
.
Item 属性
HttpStaticObjectsCollection 类

获取集合中具有指定名称的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    name As String _
) As Object
    Get
public Object this[
    string name
] { get; }
public:
property Object^ Item[String^ name] {
    Object^ get (String^ name);
}
member Item : Object

参数

name
类型： System String
要获取的对象名（不区分大小写）。

属性值

类型： System Object
该集合中的一个对象。

下面的示例从 StaticObjects 集合中检索名为 ArrayList1 的对象，并将其复制到一个对象变量。

Dim MyObject As Object
MyObject = Application.StaticObjects("ArrayList1")

Object MyObject;
MyObject = Application.StaticObjects["ArrayList1"];

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.NeverAccessed 属性

HttpStaticObjectsCollection
.
.
::
.
NeverAccessed 属性
HttpStaticObjectsCollection 类

获取一个指示集合以前是否被访问过的布尔值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property NeverAccessed As Boolean
    Get
public bool NeverAccessed { get; }
public:
property bool NeverAccessed {
    bool get ();
}
member NeverAccessed : bool

属性值

类型： System Boolean
如果 HttpStaticObjectsCollection 以前从未被访问过，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollection ..::.SyncRoot 属性

HttpStaticObjectsCollection
.
.
::
.
SyncRoot 属性
HttpStaticObjectsCollection 类

获取可用于同步对集合的访问的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property SyncRoot As Object
    Get
public Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () sealed;
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
当前的 HttpStaticObjectsCollection。

实现

程序代码通常应该在集合的 SyncRoot 上面而不是直接在集合本身上面执行同步操作。这确保了从其他对象派生的集合的正确操作。具体来说，它与可能同时修改集合的其他线程保持适当的同步。 程序代码通常应该在集合的 SyncRoot 上面而不是直接在集合本身上面执行同步操作。这确保了从其他对象派生的集合的正确操作。具体来说，它与可能同时修改集合的其他线程保持适当的同步。 程序代码通常应该在集合的 SyncRoot 上面而不是直接在集合本身上面执行同步操作。这确保了从其他对象派生的集合的正确操作。具体来说，它与可能同时修改集合的其他线程保持适当的同步。

此实现中返回的对象为 HttpStaticObjectsCollection 本身。

下面的示例创建一个对象，该对象用于同步对 HttpStaticObjectsCollection 的访问。

Dim MySyncObject As Object = Application.StaticObjects.SyncRoot

Object MySyncObject = Application.StaticObjects.SyncRoot;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpStaticObjectsCollection 类
HttpStaticObjectsCollection 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase 类

HttpStaticObjectsCollectionBase 类
成员

用作一些类的基类，这些类为 StaticObjects 属性提供应用程序范围的对象的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class HttpStaticObjectsCollectionBase _
    Implements ICollection, IEnumerable
public abstract class HttpStaticObjectsCollectionBase : ICollection,
    IEnumerable
public ref class HttpStaticObjectsCollectionBase abstract : ICollection,
    IEnumerable
[<AbstractClassAttribute>]
type HttpStaticObjectsCollectionBase =
    class
        interface ICollection
        interface IEnumerable
    end

HttpStaticObjectsCollectionBase 类为抽象类，其中包含与 HttpStaticObjectsCollection 类相同的成员。使用 HttpStaticObjectsCollectionBase 类可以创建与 HttpStaticObjectsCollection 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpStaticObjectsCollectionBase 类为抽象类，其中包含与 HttpStaticObjectsCollection 类相同的成员。使用 HttpStaticObjectsCollectionBase 类可以创建与 HttpStaticObjectsCollection 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。 HttpStaticObjectsCollectionBase 类为抽象类，其中包含与 HttpStaticObjectsCollection 类相同的成员。使用 HttpStaticObjectsCollectionBase 类可以创建与 HttpStaticObjectsCollection 类相似的派生类，但您可以自定义并在 ASP.NET 管道的外部使用这些派生类。在执行单元测试时，通常使用派生类实现具有自定义行为的成员以实现正在测试的方案。

HttpStaticObjectsCollectionWrapper 类是从 HttpStaticObjectsCollectionBase 类派生的。HttpStaticObjectsCollectionWrapper 类用作 HttpStaticObjectsCollection 类的包装。在运行时，通常使用 HttpStaticObjectsCollectionWrapper 类的实例调用 HttpStaticObjectsCollection 对象的成员。 HttpStaticObjectsCollectionWrapper 类是从 HttpStaticObjectsCollectionBase 类派生的。HttpStaticObjectsCollectionWrapper 类用作 HttpStaticObjectsCollection 类的包装。在运行时，通常使用 HttpStaticObjectsCollectionWrapper 类的实例调用 HttpStaticObjectsCollection 对象的成员。 HttpStaticObjectsCollectionWrapper 类是从 HttpStaticObjectsCollectionBase 类派生的。HttpStaticObjectsCollectionWrapper 类用作 HttpStaticObjectsCollection 类的包装。在运行时，通常使用 HttpStaticObjectsCollectionWrapper 类的实例调用 HttpStaticObjectsCollection 对象的成员。

System.Web System.Web..::.HttpStaticObjectsCollectionBaseHttpStaticObjectsCollectionBase

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase 成员

HttpStaticObjectsCollectionBase 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollectionBase 类

用作一些类的基类，这些类为 StaticObjects 属性提供应用程序范围的对象的集合。

HttpStaticObjectsCollectionBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpStaticObjectsCollectionBase 类
System.Web 命名空间


HttpStaticObjectsCollectionBase 构造函数

HttpStaticObjectsCollectionBase 构造函数
HttpStaticObjectsCollectionBase 类

初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。 初始化该类供继承的类实例使用。此构造函数只能由继承的类调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpStaticObjectsCollectionBase()
protected:
HttpStaticObjectsCollectionBase()
new : unit -> HttpStaticObjectsCollectionBase

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase 方法

HttpStaticObjectsCollectionBase 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollectionBase 类

HttpStaticObjectsCollectionBase 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpStaticObjectsCollectionBase 类
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.CopyTo 方法

HttpStaticObjectsCollectionBase
.
.
::
.
CopyTo 方法
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，从数组中的指定索引位置开始，将集合中的元素复制到该数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public virtual void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
)
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。 一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中从零开始的索引，从此处开始复制。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.GetEnumerator 方法

HttpStaticObjectsCollectionBase
.
.
::
.
GetEnumerator 方法
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，返回可用于循环访问集合的枚举数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetEnumerator As IEnumerator
public virtual IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个可用于循环访问集合的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.GetObject 方法

HttpStaticObjectsCollectionBase
.
.
::
.
GetObject 方法
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，返回集合中具有指定名称的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetObject ( _
    name As String _
) As Object
public virtual Object GetObject(
    string name
)
public:
virtual Object^ GetObject(
    String^ name
)
abstract GetObject :
        name:string -> Object
override GetObject :
        name:string -> Object

参数

name
类型： System String
要返回的对象名（不区分大小写）。

返回值

类型： System Object
name 指定的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.Serialize 方法

HttpStaticObjectsCollectionBase
.
.
::
.
Serialize 方法
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，将集合的内容写入 BinaryWriter 对象中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Serialize ( _
    writer As BinaryWriter _
)
public virtual void Serialize(
    BinaryWriter writer
)
public:
virtual void Serialize(
    BinaryWriter^ writer
)
abstract Serialize :
        writer:BinaryWriter -> unit
override Serialize :
        writer:BinaryWriter -> unit

参数

writer
类型： System.IO BinaryWriter
用于将序列化集合写入流或编码字符串的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase 属性

HttpStaticObjectsCollectionBase 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollectionBase 类

HttpStaticObjectsCollectionBase 类型公开以下成员。

名称 说明
页首

参考

HttpStaticObjectsCollectionBase 类
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.Count 属性

HttpStaticObjectsCollectionBase
.
.
::
.
Count 属性
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，获取集合中对象的数目。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Count As Integer
    Get
public virtual int Count { get; }
public:
virtual property int Count {
    int get ();
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.IsReadOnly 属性

HttpStaticObjectsCollectionBase
.
.
::
.
IsReadOnly 属性
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，获取一个值，该值指示集合是否为只读。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsReadOnly As Boolean
    Get
public virtual bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get ();
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
如果该集合为只读，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.IsSynchronized 属性

HttpStaticObjectsCollectionBase
.
.
::
.
IsSynchronized 属性
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，获取一个值，该值指示集合是否是线程安全的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsSynchronized As Boolean
    Get
public virtual bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get ();
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果该集合是线程安全的，则为 true；否则为 false。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.Item 属性

HttpStaticObjectsCollectionBase
.
.
::
.
Item 属性
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，获取集合中具有指定名称的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Item ( _
    name As String _
) As Object
    Get
public virtual Object this[
    string name
] { get; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name);
}
abstract Item : Object
override Item : Object

参数

name
类型： System String
要获取的对象名（不区分大小写）。

属性值

类型： System Object
name 指定的对象。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.NeverAccessed 属性

HttpStaticObjectsCollectionBase
.
.
::
.
NeverAccessed 属性
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，获取一个值，该值指示是否已访问集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property NeverAccessed As Boolean
    Get
public virtual bool NeverAccessed { get; }
public:
virtual property bool NeverAccessed {
    bool get ();
}
abstract NeverAccessed : bool
override NeverAccessed : bool

属性值

类型： System Boolean
如果从未访问过集合，则为 true；否则为 false。
异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionBase ..::.SyncRoot 属性

HttpStaticObjectsCollectionBase
.
.
::
.
SyncRoot 属性
HttpStaticObjectsCollectionBase 类

当在派生类中重写时，获取一个对象，该对象可用于同步对集合的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SyncRoot As Object
    Get
public virtual Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get ();
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步集合访问的对象。

实现

异常 | 条件
NotImplementedException | 始终为 。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionBase 类
HttpStaticObjectsCollectionBase 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper 类

HttpStaticObjectsCollectionWrapper 类
成员

封装 HTTP 内部对象，该对象为 StaticObjects 属性提供应用程序范围的对象的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class HttpStaticObjectsCollectionWrapper _
    Inherits HttpStaticObjectsCollectionBase
public class HttpStaticObjectsCollectionWrapper : HttpStaticObjectsCollectionBase
public ref class HttpStaticObjectsCollectionWrapper : public HttpStaticObjectsCollectionBase
type HttpStaticObjectsCollectionWrapper =
    class
        inherit HttpStaticObjectsCollectionBase
    end

HttpStaticObjectsCollectionWrapper 类从 HttpStaticObjectsCollectionBase 类派生，并用作 HttpStaticObjectsCollection 类的包装。此类公开 HttpStaticObjectsCollection 类的功能，同时还公开 HttpStaticObjectsCollectionBase 类型。使用 HttpStaticObjectsCollectionBase 类，可以将应用程序中 HttpStaticObjectsCollection 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpStaticObjectsCollectionWrapper 类从 HttpStaticObjectsCollectionBase 类派生，并用作 HttpStaticObjectsCollection 类的包装。此类公开 HttpStaticObjectsCollection 类的功能，同时还公开 HttpStaticObjectsCollectionBase 类型。使用 HttpStaticObjectsCollectionBase 类，可以将应用程序中 HttpStaticObjectsCollection 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。 HttpStaticObjectsCollectionWrapper 类从 HttpStaticObjectsCollectionBase 类派生，并用作 HttpStaticObjectsCollection 类的包装。此类公开 HttpStaticObjectsCollection 类的功能，同时还公开 HttpStaticObjectsCollectionBase 类型。使用 HttpStaticObjectsCollectionBase 类，可以将应用程序中 HttpStaticObjectsCollection 类的原始实现替换为自定义实现（例如在 ASP.NET 管道之外执行单元测试时可以这样做）。

System.Web System.Web..::.HttpStaticObjectsCollectionWrapperHttpStaticObjectsCollectionWrapper
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper 成员

HttpStaticObjectsCollectionWrapper 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollectionWrapper 类

封装 HTTP 内部对象，该对象为 StaticObjects 属性提供应用程序范围的对象的集合。

HttpStaticObjectsCollectionWrapper 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpStaticObjectsCollectionWrapper 类
System.Web 命名空间


HttpStaticObjectsCollectionWrapper 构造函数

HttpStaticObjectsCollectionWrapper 构造函数
HttpStaticObjectsCollectionWrapper 类

初始化 HttpStaticObjectsCollectionWrapper 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    httpStaticObjectsCollection As HttpStaticObjectsCollection _
)
public HttpStaticObjectsCollectionWrapper(
    HttpStaticObjectsCollection httpStaticObjectsCollection
)
public:
HttpStaticObjectsCollectionWrapper(
    HttpStaticObjectsCollection^ httpStaticObjectsCollection
)
new :
        httpStaticObjectsCollection:HttpStaticObjectsCollection -> HttpStaticObjectsCollectionWrapper

参数

httpStaticObjectsCollection
类型： System.Web HttpStaticObjectsCollection
通过此包装类可访问的对象。
异常 | 条件
ArgumentNullException | httpStaticObjectsCollection 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper 方法

HttpStaticObjectsCollectionWrapper 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollectionWrapper 类

HttpStaticObjectsCollectionWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpStaticObjectsCollectionWrapper 类
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.CopyTo 方法

HttpStaticObjectsCollectionWrapper
.
.
::
.
CopyTo 方法
HttpStaticObjectsCollectionWrapper 类

从数组中指定的索引位置开始，将集合中的元素复制到该数组中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub CopyTo ( _
    array As Array, _
    index As Integer _
)
public override void CopyTo(
    Array array,
    int index
)
public:
virtual void CopyTo(
    Array^ array,
    int index
) override
abstract CopyTo :
        array:Array *
        index:int -> unit
override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。 一维数组，它是从集合复制的元素的目标。该数组必须具有从零开始的索引。
index
类型： System Int32
array 中从零开始的索引，从此处开始复制。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.GetEnumerator 方法

HttpStaticObjectsCollectionWrapper
.
.
::
.
GetEnumerator 方法
HttpStaticObjectsCollectionWrapper 类

返回一个可用于循环访问集合的枚举数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetEnumerator As IEnumerator
public override IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator() override
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个可用于循环访问集合的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.GetObject 方法

HttpStaticObjectsCollectionWrapper
.
.
::
.
GetObject 方法
HttpStaticObjectsCollectionWrapper 类

返回集合中具有指定名称的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetObject ( _
    name As String _
) As Object
public override Object GetObject(
    string name
)
public:
virtual Object^ GetObject(
    String^ name
) override
abstract GetObject :
        name:string -> Object
override GetObject :
        name:string -> Object

参数

name
类型： System String
要返回的对象名（不区分大小写）。

返回值

类型： System Object
如果找到，则为 name 指定的对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.Serialize 方法

HttpStaticObjectsCollectionWrapper
.
.
::
.
Serialize 方法
HttpStaticObjectsCollectionWrapper 类

将集合的内容写入 BinaryWriter 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Serialize ( _
    writer As BinaryWriter _
)
public override void Serialize(
    BinaryWriter writer
)
public:
virtual void Serialize(
    BinaryWriter^ writer
) override
abstract Serialize :
        writer:BinaryWriter -> unit
override Serialize :
        writer:BinaryWriter -> unit

参数

writer
类型： System.IO BinaryWriter
用于将序列化集合写入流或编码字符串的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper 属性

HttpStaticObjectsCollectionWrapper 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpStaticObjectsCollectionWrapper 类

HttpStaticObjectsCollectionWrapper 类型公开以下成员。

名称 说明
页首

参考

HttpStaticObjectsCollectionWrapper 类
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.Count 属性

HttpStaticObjectsCollectionWrapper
.
.
::
.
Count 属性
HttpStaticObjectsCollectionWrapper 类

获取集合中的对象数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Count As Integer
    Get
public override int Count { get; }
public:
virtual property int Count {
    int get () override;
}
abstract Count : int
override Count : int

属性值

类型： System Int32
集合中的对象数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.IsReadOnly 属性

HttpStaticObjectsCollectionWrapper
.
.
::
.
IsReadOnly 属性
HttpStaticObjectsCollectionWrapper 类

获取一个值，该值指示该集合是否为只读集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsReadOnly As Boolean
    Get
public override bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get () override;
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
所有情况下均为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.IsSynchronized 属性

HttpStaticObjectsCollectionWrapper
.
.
::
.
IsSynchronized 属性
HttpStaticObjectsCollectionWrapper 类

获取一个值，该值指示集合是否是线程安全的。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property IsSynchronized As Boolean
    Get
public override bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get () override;
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
所有情况下均为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.Item 属性

HttpStaticObjectsCollectionWrapper
.
.
::
.
Item 属性
HttpStaticObjectsCollectionWrapper 类

获取集合中具有指定名称的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Item ( _
    name As String _
) As Object
    Get
public override Object this[
    string name
] { get; }
public:
virtual property Object^ Item[String^ name] {
    Object^ get (String^ name) override;
}
abstract Item : Object
override Item : Object

参数

name
类型： System String
要获取的对象名（不区分大小写）。

属性值

类型： System Object
如果找到，则为 name 指定的对象；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.NeverAccessed 属性

HttpStaticObjectsCollectionWrapper
.
.
::
.
NeverAccessed 属性
HttpStaticObjectsCollectionWrapper 类

获取一个值，该值指示是否已访问集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property NeverAccessed As Boolean
    Get
public override bool NeverAccessed { get; }
public:
virtual property bool NeverAccessed {
    bool get () override;
}
abstract NeverAccessed : bool
override NeverAccessed : bool

属性值

类型： System Boolean
如果从未访问过集合，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpStaticObjectsCollectionWrapper ..::.SyncRoot 属性

HttpStaticObjectsCollectionWrapper
.
.
::
.
SyncRoot 属性
HttpStaticObjectsCollectionWrapper 类

获取可用于同步对集合的访问的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property SyncRoot As Object
    Get
public override Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get () override;
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
此类包装的 HttpStaticObjectsCollection 类的当前实例。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1

参考

HttpStaticObjectsCollectionWrapper 类
HttpStaticObjectsCollectionWrapper 成员
System.Web 命名空间


HttpUnhandledException 类

HttpUnhandledException 类
成员

发生一般异常时引发的异常。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public NotInheritable Class HttpUnhandledException _
    Inherits HttpException
[SerializableAttribute]
public sealed class HttpUnhandledException : HttpException
[SerializableAttribute]
public ref class HttpUnhandledException sealed : public HttpException
[<SealedAttribute>]
[<SerializableAttribute>]
type HttpUnhandledException =
    class
        inherit HttpException
    end

System.Web System.Web..::.HttpUnhandledExceptionHttpUnhandledException
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUnhandledException 成员
System.Web 命名空间


HttpUnhandledException 成员

HttpUnhandledException 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUnhandledException 类

发生一般异常时引发的异常。

HttpUnhandledException 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpUnhandledException 类
System.Web 命名空间


HttpUnhandledException 构造函数

HttpUnhandledException 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUnhandledException 类

初始化 HttpUnhandledException 类的新实例。

名称 说明
页首

参考

HttpUnhandledException 类
HttpUnhandledException 成员
System.Web 命名空间


HttpUnhandledException 构造函数

HttpUnhandledException 构造函数
HttpUnhandledException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 HttpUnhandledException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpUnhandledException()
public:
HttpUnhandledException()
new : unit -> HttpUnhandledException

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpUnhandledException 类
HttpUnhandledException 成员
HttpUnhandledException 重载
System.Web 命名空间


HttpUnhandledException 构造函数 (String)

HttpUnhandledException 构造函数 (String)
HttpUnhandledException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

使用指定的错误信息初始化 HttpUnhandledException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String _
)
public HttpUnhandledException(
    string message
)
public:
HttpUnhandledException(
    String^ message
)
new :
        message:string -> HttpUnhandledException

参数

message
类型： System String
当发生异常时向客户端显示的消息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpUnhandledException 类
HttpUnhandledException 成员
HttpUnhandledException 重载
System.Web 命名空间


HttpUnhandledException 构造函数 (String, Exception)

HttpUnhandledException 构造函数 (String, Exception)
HttpUnhandledException 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

使用指定的错误信息和内部异常初始化 HttpUnhandledException 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    message As String, _
    innerException As Exception _
)
public HttpUnhandledException(
    string message,
    Exception innerException
)
public:
HttpUnhandledException(
    String^ message,
    Exception^ innerException
)
new :
        message:string *
        innerException:Exception -> HttpUnhandledException

参数

message
类型： System String
当发生异常时向客户端显示的消息。
innerException
类型： System Exception
引发当前异常的 InnerException（如果有的话）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpUnhandledException 类
HttpUnhandledException 成员
HttpUnhandledException 重载
System.Web 命名空间


HttpUnhandledException 方法

HttpUnhandledException 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUnhandledException 类

HttpUnhandledException 类型公开以下成员。

名称 说明
页首

参考

HttpUnhandledException 类
System.Web 命名空间


HttpUnhandledException 属性

HttpUnhandledException 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUnhandledException 类

HttpUnhandledException 类型公开以下成员。

名称 说明
页首

参考

HttpUnhandledException 类
System.Web 命名空间


HttpUnhandledException 事件

HttpUnhandledException 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUnhandledException 类

HttpUnhandledException 类型公开以下成员。

名称 说明
页首

参考

HttpUnhandledException 类
System.Web 命名空间


HttpUtility 类

HttpUtility 类
成员

提供用于在处理 Web 请求时编码和解码 URL 的方法。此类不能被继承。 提供用于在处理 Web 请求时编码和解码 URL 的方法。此类不能被继承。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpUtility
public sealed class HttpUtility
public ref class HttpUtility sealed
[<SealedAttribute>]
type HttpUtility =  class end

HttpUtility 类由 HttpServerUtility 类在内部使用，后者的方法和属性通过内部 ASP.NET Server 对象公开。此外，HttpUtility 类包含一些不能从 Server 访问的编码和解码实用工具方法。 HttpUtility 类由 HttpServerUtility 类在内部使用，后者的方法和属性通过内部 ASP.NET Server 对象公开。此外，HttpUtility 类包含一些不能从 Server 访问的编码和解码实用工具方法。

下面的代码示例演示了如何使用 HttpUtility 类的 UrlEncode、UrlDecode 和 ParseQueryString 方法。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim currurl As String = HttpContext.Current.Request.RawUrl
        Dim querystring As String = Nothing

        ' Check to make sure some query string variables
        ' exist and if not add some and redirect.
        Dim iqs As Int32 = currurl.IndexOf("?".ToCharArray())
        If (iqs = -1) Then

            Dim redirecturl As String = currurl & "?var1=1&var2=2+2%2f3&var1=3"
            Response.Redirect(redirecturl, True)

            ' If query string variables exist, put them in
            ' a string.
        ElseIf (iqs >= 0) Then

            If (iqs < currurl.Length - 1) Then
                querystring = currurl.Substring(iqs + 1)
            End If

        End If

        ' Parse the query string variables into a NameValueCollection.
        Dim qscoll As NameValueCollection = HttpUtility.ParseQueryString(querystring)

        ' Iterate through the collection.
        Dim sb As New StringBuilder()
        For Each s As String In qscoll.AllKeys

            sb.Append(s & " - " & qscoll(s) & "<br />")

        Next s

        ' Write the results to the appropriate labels.
        ParseOutput.Text = sb.ToString()
        UrlRawOutput.Text = currurl
        UrlEncodedOutput.Text = HttpUtility.UrlEncode(currurl)
        UrlDecodedOutput.Text = HttpUtility.UrlDecode(currurl)

    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpUtility Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      The raw url is: <br />
      <asp:Label  id="UrlRawOutput"
                  runat="server" />
      <br /><br />
      The url encoded is: <br />
      <asp:Label  id="UrlEncodedOutput"
                  runat="server" />
      <br /><br />
      The url decoded is: <br />
      <asp:Label  id="UrlDecodedOutput"
                  runat="server" />
      <br /><br />
      The query string NameValueCollection is: <br />
      <asp:Label  id="ParseOutput"
                  runat="server" />
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        String currurl = HttpContext.Current.Request.RawUrl;
        String querystring = null;

        // Check to make sure some query string variables
        // exist and if not add some and redirect.
        int iqs = currurl.IndexOf('?');
        if (iqs == -1)
        {
            String redirecturl = currurl + "?var1=1&var2=2+2%2f3&var1=3";
            Response.Redirect(redirecturl, true);
        }
        // If query string variables exist, put them in
        // a string.
        else if (iqs >= 0)
        {
            querystring = (iqs < currurl.Length - 1) ? currurl.Substring(iqs + 1) : String.Empty;
        }

        // Parse the query string variables into a NameValueCollection.
        NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);

        // Iterate through the collection.
        StringBuilder sb = new StringBuilder();
        foreach (String s in qscoll.AllKeys)
        {
            sb.Append(s + " - " + qscoll[s] + "<br />");
        }

        // Write the results to the appropriate labels.
        ParseOutput.Text = sb.ToString();
        UrlRawOutput.Text = currurl;
        UrlEncodedOutput.Text = HttpUtility.UrlEncode(currurl);
        UrlDecodedOutput.Text = HttpUtility.UrlDecode(currurl);
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpUtility Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      The raw url is: <br />
      <asp:Label  id="UrlRawOutput"
                  runat="server" />
      <br /><br />
      The url encoded is: <br />
      <asp:Label  id="UrlEncodedOutput"
                  runat="server" />
      <br /><br />
      The url decoded is: <br />
      <asp:Label  id="UrlDecodedOutput"
                  runat="server" />
      <br /><br />
      The query string NameValueCollection is: <br />
      <asp:Label  id="ParseOutput"
                  runat="server" />
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.HttpUtilityHttpUtility
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 成员
System.Web 命名空间
HttpServerUtility
Server

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility 成员

HttpUtility 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

提供用于在处理 Web 请求时编码和解码 URL 的方法。此类不能被继承。 提供用于在处理 Web 请求时编码和解码 URL 的方法。此类不能被继承。

HttpUtility 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

HttpUtility 类
System.Web 命名空间


HttpUtility 构造函数

HttpUtility 构造函数
HttpUtility 类

初始化 HttpUtility 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public HttpUtility()
public:
HttpUtility()
new : unit -> HttpUtility

HttpUtility 类公开了一些方法，可用于对基于字符串的 URL、URL 标记以及路径进行编码和解码。HttpUtility 由 HttpServerUtility 类在内部使用。 HttpUtility 类公开了一些方法，可用于对基于字符串的 URL、URL 标记以及路径进行编码和解码。HttpUtility 由 HttpServerUtility 类在内部使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility 方法

HttpUtility 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

HttpUtility 类型公开以下成员。

名称 说明
页首

参考

HttpUtility 类
System.Web 命名空间


HttpUtility ..::.HtmlAttributeEncode 方法

HttpUtility
.
.
::
.
HtmlAttributeEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将字符串最小限度地转换为 HTML 编码的字符串。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.HtmlAttributeEncode 方法 (String)

HttpUtility
.
.
::
.
HtmlAttributeEncode 方法 (String)
HttpUtility 类

将字符串最小限度地转换为 HTML 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function HtmlAttributeEncode ( _
    s As String _
) As String
public static string HtmlAttributeEncode(
    string s
)
public:
static String^ HtmlAttributeEncode(
    String^ s
)
static member HtmlAttributeEncode :
        s:string -> string

参数

s
类型： System String
要编码的字符串。

返回值

类型： System String
一个已编码的字符串。

HtmlAttributeEncode 方法仅将引号 (")、“and”符号 (&) 和左尖括号 (<) 转换为等效的字符实体。该方法比 HtmlEncode 方法快得多。 HtmlAttributeEncode 方法仅将引号 (")、“and”符号 (&) 和左尖括号 (<) 转换为等效的字符实体。该方法比 HtmlEncode 方法快得多。

HtmlAttributeEncode 方法的结果字符串只应当用于由双引号括起的特性。使用 HtmlAttributeEncode 方法和用单引号括起的特性可能会引起安全问题。 HtmlAttributeEncode 方法的结果字符串只应当用于由双引号括起的特性。使用 HtmlAttributeEncode 方法和用单引号括起的特性可能会引起安全问题。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
HtmlAttributeEncode 重载
System.Web 命名空间

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.HtmlAttributeEncode 方法 (String, TextWriter)

HttpUtility
.
.
::
.
HtmlAttributeEncode 方法 (String, TextWriter)
HttpUtility 类

将字符串最小限度地转换为 HTML 编码的字符串，并将已编码的字符串发送给 TextWriter 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Sub HtmlAttributeEncode ( _
    s As String, _
    output As TextWriter _
)
public static void HtmlAttributeEncode(
    string s,
    TextWriter output
)
public:
static void HtmlAttributeEncode(
    String^ s,
    TextWriter^ output
)
static member HtmlAttributeEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串
output
类型： System.IO TextWriter
TextWriter 输出流。

HtmlAttributeEncode 方法仅将引号 (")、“and”符号 (&) 和左尖括号 (<) 转换为等效的字符实体。该方法比 HtmlEncode 方法快得多。 HtmlAttributeEncode 方法仅将引号 (")、“and”符号 (&) 和左尖括号 (<) 转换为等效的字符实体。该方法比 HtmlEncode 方法快得多。

HtmlAttributeEncode 方法的结果字符串只应当用于由双引号括起的特性。使用 HtmlAttributeEncode 方法和用单引号括起的特性可能会引起安全问题。 HtmlAttributeEncode 方法的结果字符串只应当用于由双引号括起的特性。使用 HtmlAttributeEncode 方法和用单引号括起的特性可能会引起安全问题。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
HtmlAttributeEncode 重载
System.Web 命名空间

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.HtmlDecode 方法

HttpUtility
.
.
::
.
HtmlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将已经为 HTTP 传输进行过 HTML 编码的字符串转换为已解码的字符串。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.HtmlDecode 方法 (String)

HttpUtility
.
.
::
.
HtmlDecode 方法 (String)
HttpUtility 类

将已经为 HTTP 传输进行过 HTML 编码的字符串转换为已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function HtmlDecode ( _
    s As String _
) As String
public static string HtmlDecode(
    string s
)
public:
static String^ HtmlDecode(
    String^ s
)
static member HtmlDecode :
        s:string -> string

参数

s
类型： System String
要解码的字符串。

返回值

类型： System String
一个已解码的字符串。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。

下面的代码示例演示 HttpUtility 类的 HtmlEncode 和 HtmlDecode 方法。输入字符串使用 HtmlEncode 方法进行编码。获得的编码字符串然后使用 HtmlDecode 方法进行解码。 下面的代码示例演示 HttpUtility 类的 HtmlEncode 和 HtmlDecode 方法。输入字符串使用 HtmlEncode 方法进行编码。获得的编码字符串然后使用 HtmlDecode 方法进行解码。 下面的代码示例演示 HttpUtility 类的 HtmlEncode 和 HtmlDecode 方法。输入字符串使用 HtmlEncode 方法进行编码。获得的编码字符串然后使用 HtmlDecode 方法进行解码。

Imports System
Imports System.Web
Imports System.IO

Class MyNewClass
   Public Shared Sub Main()
      Dim myString As String
      Console.WriteLine("Enter a string having '&' or '""'  in it: ")
      myString = Console.ReadLine()
      Dim myEncodedString As String
      ' Encode the string.
      myEncodedString = HttpUtility.HtmlEncode(myString)
      Console.WriteLine("HTML Encoded string is " + myEncodedString)
      Dim myWriter As New StringWriter()
      ' Decode the encoded string.
      HttpUtility.HtmlDecode(myEncodedString, myWriter)
      Console.Write("Decoded string of the above encoded string is " + myWriter.ToString())
   End Sub 'Main
End Class 'MyNewClass

using System;
using System.Web;
using System.IO;

   class MyNewClass
   {
      public static void Main()
      {
         String myString;
         Console.WriteLine("Enter a string having '&' or '\"'  in it: ");
         myString=Console.ReadLine();
         String myEncodedString;
         // Encode the string.
         myEncodedString = HttpUtility.HtmlEncode(myString);
         Console.WriteLine("HTML Encoded string is "+myEncodedString);
         StringWriter myWriter = new StringWriter();
         // Decode the encoded string.
         HttpUtility.HtmlDecode(myEncodedString, myWriter);
         Console.Write("Decoded string of the above encoded string is "+
                        myWriter.ToString());
      }
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
HtmlDecode 重载
System.Web 命名空间
HtmlEncode


HttpUtility ..::.HtmlDecode 方法 (String, TextWriter)

HttpUtility
.
.
::
.
HtmlDecode 方法 (String, TextWriter)
HttpUtility 类

将已经过 HTML 编码的字符串转换为已解码的字符串并将其发送给 TextWriter 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Sub HtmlDecode ( _
    s As String, _
    output As TextWriter _
)
public static void HtmlDecode(
    string s,
    TextWriter output
)
public:
static void HtmlDecode(
    String^ s,
    TextWriter^ output
)
static member HtmlDecode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要解码的字符串。
output
类型： System.IO TextWriter
TextWriter 输出流。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
HtmlDecode 重载
System.Web 命名空间
HtmlEncode


HttpUtility ..::.HtmlEncode 方法

HttpUtility
.
.
::
.
HtmlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将字符串转换为 HTML 编码的字符串。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.HtmlEncode 方法 (Object)

HttpUtility
.
.
::
.
HtmlEncode 方法 (Object)
HttpUtility 类

将对象的字符串表示形式转换为 HTML 编码的字符串，并返回编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function HtmlEncode ( _
    value As Object _
) As String
public static string HtmlEncode(
    Object value
)
public:
static String^ HtmlEncode(
    Object^ value
)
static member HtmlEncode :
        value:Object -> string

参数

value
类型： System Object
一个对象。

返回值

类型： System String
一个已编码的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpUtility 类
HttpUtility 成员
HtmlEncode 重载
System.Web 命名空间


HttpUtility ..::.HtmlEncode 方法 (String)

HttpUtility
.
.
::
.
HtmlEncode 方法 (String)
HttpUtility 类

将字符串转换为 HTML 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function HtmlEncode ( _
    s As String _
) As String
public static string HtmlEncode(
    string s
)
public:
static String^ HtmlEncode(
    String^ s
)
static member HtmlEncode :
        s:string -> string

参数

s
类型： System String
要编码的字符串。

返回值

类型： System String
一个已编码的字符串。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时被编码为 &lt; 和 &gt;。

下面的代码示例演示 HttpUtility 类的 HtmlEncode 和 HtmlDecode 方法。输入字符串使用 HtmlEncode 方法进行编码。获得的编码字符串然后使用 HtmlDecode 方法进行解码。 下面的代码示例演示 HttpUtility 类的 HtmlEncode 和 HtmlDecode 方法。输入字符串使用 HtmlEncode 方法进行编码。获得的编码字符串然后使用 HtmlDecode 方法进行解码。 下面的代码示例演示 HttpUtility 类的 HtmlEncode 和 HtmlDecode 方法。输入字符串使用 HtmlEncode 方法进行编码。获得的编码字符串然后使用 HtmlDecode 方法进行解码。

Imports System
Imports System.Web
Imports System.IO

Class MyNewClass
   Public Shared Sub Main()
      Dim myString As String
      Console.WriteLine("Enter a string having '&' or '""'  in it: ")
      myString = Console.ReadLine()
      Dim myEncodedString As String
      ' Encode the string.
      myEncodedString = HttpUtility.HtmlEncode(myString)
      Console.WriteLine("HTML Encoded string is " + myEncodedString)
      Dim myWriter As New StringWriter()
      ' Decode the encoded string.
      HttpUtility.HtmlDecode(myEncodedString, myWriter)
      Console.Write("Decoded string of the above encoded string is " + myWriter.ToString())
   End Sub 'Main
End Class 'MyNewClass

using System;
using System.Web;
using System.IO;

   class MyNewClass
   {
      public static void Main()
      {
         String myString;
         Console.WriteLine("Enter a string having '&' or '\"'  in it: ");
         myString=Console.ReadLine();
         String myEncodedString;
         // Encode the string.
         myEncodedString = HttpUtility.HtmlEncode(myString);
         Console.WriteLine("HTML Encoded string is "+myEncodedString);
         StringWriter myWriter = new StringWriter();
         // Decode the encoded string.
         HttpUtility.HtmlDecode(myEncodedString, myWriter);
         Console.Write("Decoded string of the above encoded string is "+
                        myWriter.ToString());
      }
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
HtmlEncode 重载
System.Web 命名空间
HtmlDecode

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.HtmlEncode 方法 (String, TextWriter)

HttpUtility
.
.
::
.
HtmlEncode 方法 (String, TextWriter)
HttpUtility 类

将字符串转换为 HTML 编码的字符串并将输出作为 TextWriter 输出流返回。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Sub HtmlEncode ( _
    s As String, _
    output As TextWriter _
)
public static void HtmlEncode(
    string s,
    TextWriter output
)
public:
static void HtmlEncode(
    String^ s,
    TextWriter^ output
)
static member HtmlEncode :
        s:string *
        output:TextWriter -> unit

参数

s
类型： System String
要编码的字符串
output
类型： System.IO TextWriter
TextWriter 输出流。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时分别被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时分别被编码为 &lt; 和 &gt;。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。HTML 编码将 HTML 中不允许使用的字符转换为等效字符实体；HTML 解码会反转此编码过程。例如，为进行 HTTP 传输，字符 < 和 > 在嵌入到文本块中时分别被编码为 &lt; 和 &gt;。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
HtmlEncode 重载
System.Web 命名空间
HtmlDecode

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.JavaScriptStringEncode 方法

HttpUtility
.
.
::
.
JavaScriptStringEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

对字符串进行编码。

名称 说明
页首

此方法对字符串进行编码。例如，单引号和双引号分别以 \' 和 \" 形式包含在编码的字符串中。 此方法对字符串进行编码。例如，单引号和双引号分别以 \' 和 \" 形式包含在编码的字符串中。

URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 a 元素或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 a 元素或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。 URL 编码确保所有浏览器均正确地传输 URL 字符串中的文本。某些浏览器可能会截断或破坏问号 (?)、“与”符号 (&)、斜杠 (/) 和空格这样的字符。因此，这些字符必须在 a 元素或查询字符串中进行编码，在查询字符串中编码时，浏览器能以请求字符串的形式重新发送这些字符串。

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.JavaScriptStringEncode 方法 (String)

HttpUtility
.
.
::
.
JavaScriptStringEncode 方法 (String)
HttpUtility 类

对字符串进行编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function JavaScriptStringEncode ( _
    value As String _
) As String
public static string JavaScriptStringEncode(
    string value
)
public:
static String^ JavaScriptStringEncode(
    String^ value
)
static member JavaScriptStringEncode :
        value:string -> string

参数

value
类型： System String
要编码的字符串。

返回值

类型： System String
一个已编码的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpUtility 类
HttpUtility 成员
JavaScriptStringEncode 重载
System.Web 命名空间


HttpUtility ..::.JavaScriptStringEncode 方法 (String, Boolean)

HttpUtility
.
.
::
.
JavaScriptStringEncode 方法 (String, Boolean)
HttpUtility 类

对字符串进行编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function JavaScriptStringEncode ( _
    value As String, _
    addDoubleQuotes As Boolean _
) As String
public static string JavaScriptStringEncode(
    string value,
    bool addDoubleQuotes
)
public:
static String^ JavaScriptStringEncode(
    String^ value,
    bool addDoubleQuotes
)
static member JavaScriptStringEncode :
        value:string *
        addDoubleQuotes:bool -> string

参数

value
类型： System String
要编码的字符串。
addDoubleQuotes
类型： System Boolean
一个值，该值指示是否用双引号括住编码的字符串。

返回值

类型： System String
一个已编码的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

HttpUtility 类
HttpUtility 成员
JavaScriptStringEncode 重载
System.Web 命名空间


HttpUtility ..::.ParseQueryString 方法

HttpUtility
.
.
::
.
ParseQueryString 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将一个查询字符串分析成一个 NameValueCollection。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.ParseQueryString 方法 (String)

HttpUtility
.
.
::
.
ParseQueryString 方法 (String)
HttpUtility 类

使用 UTF8 编码将查询字符串分析成一个 NameValueCollection。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ParseQueryString ( _
    query As String _
) As NameValueCollection
public static NameValueCollection ParseQueryString(
    string query
)
public:
static NameValueCollection^ ParseQueryString(
    String^ query
)
static member ParseQueryString :
        query:string -> NameValueCollection

参数

query
类型： System String
要分析的查询字符串。

返回值

类型： System.Collections.Specialized NameValueCollection
查询参数和值的 NameValueCollection。
异常 | 条件
ArgumentNullException | query 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

ParseQueryString 方法使用 UTF8 格式来分析查询字符串。在返回的 NameValueCollection 中，URL 编码字符将会进行解码，多次出现的同一查询字符串参数将单独列出，并用逗号分隔每个值。

安全说明 安全说明

ParseQueryString 方法使用可能包含用户输入的查询字符串，这是一个潜在安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 ParseQueryString 方法使用可能包含用户输入的查询字符串，这是一个潜在安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 ParseQueryString 方法使用可能包含用户输入的查询字符串，这是一个潜在安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

下面的代码示例演示如何使用 ParseQueryString 方法。多次出现的同一查询字符串变量将在返回的 NameValueCollection 中合并为一项。 下面的代码示例演示如何使用 ParseQueryString 方法。多次出现的同一查询字符串变量将在返回的 NameValueCollection 中合并为一项。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim currurl As String = HttpContext.Current.Request.RawUrl
    Dim querystring As String = Nothing

    ' Check to make sure some query string variables
    ' exist and if not add some and redirect.
    Dim iqs As Int32 = currurl.IndexOf("?".ToCharArray())
    If (iqs = -1) Then

      Dim redirecturl As String = currurl & "?var1=1&var2=2+2%2f3&var1=3"
      Response.Redirect(redirecturl, True)

      ' If query string variables exist, put them in
      ' a string.
    ElseIf (iqs >= 0) Then

      If (iqs < currurl.Length - 1) Then
        querystring = currurl.Substring(iqs + 1)
      End If

    End If

    ' Parse the query string variables into a NameValueCollection.
    Dim qscoll As NameValueCollection = HttpUtility.ParseQueryString(querystring)

    ' Iterate through the collection.
    Dim sb As New StringBuilder("<br />")
    For Each s As String In qscoll.AllKeys

      sb.Append(s & " - " & qscoll(s) & "<br />")

    Next s

    ' Write the result to a label
    ParseOutput.Text = sb.ToString()

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>HttpUtility ParseQueryString Example</title>
</head>
<body>
    <form id="Form1" runat="server">
      Query string variables are:
      <asp:Label  id="ParseOutput"
                  runat="server" />
    </form>
</body>
</html>

<%@ Page Language="C#"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  protected void Page_Load(object sender, EventArgs e)
  {
    String currurl = HttpContext.Current.Request.RawUrl;
    String querystring = null ;

    // Check to make sure some query string variables
    // exist and if not add some and redirect.
    int iqs = currurl.IndexOf('?');
    if (iqs == -1)
    {
      String redirecturl = currurl + "?var1=1&var2=2+2%2f3&var1=3";
      Response.Redirect(redirecturl, true);
    }
    // If query string variables exist, put them in
    // a string.
    else if (iqs >= 0)
    {
      querystring = (iqs < currurl.Length - 1) ? currurl.Substring(iqs + 1) : String.Empty;
    }

    // Parse the query string variables into a NameValueCollection.
    NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);

    // Iterate through the collection.
    StringBuilder sb = new StringBuilder("<br />");
    foreach (String s in qscoll.AllKeys)
    {
      sb.Append(s + " - " + qscoll[s] + "<br />");
    }

    // Write the result to a label.
    ParseOutput.Text = sb.ToString();

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>HttpUtility ParseQueryString Example</title>
</head>
<body>
    <form id="form1" runat="server">
      Query string variables are:
      <asp:Label  id="ParseOutput"
                  runat="server" />
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpUtility 类
HttpUtility 成员
ParseQueryString 重载
System.Web 命名空间
Encoding


HttpUtility ..::.ParseQueryString 方法 (String, Encoding)

HttpUtility
.
.
::
.
ParseQueryString 方法 (String, Encoding)
HttpUtility 类

使用指定的 Encoding 将查询字符串分析成一个 NameValueCollection。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ParseQueryString ( _
    query As String, _
    encoding As Encoding _
) As NameValueCollection
public static NameValueCollection ParseQueryString(
    string query,
    Encoding encoding
)
public:
static NameValueCollection^ ParseQueryString(
    String^ query,
    Encoding^ encoding
)
static member ParseQueryString :
        query:string *
        encoding:Encoding -> NameValueCollection

参数

query
类型： System String
要分析的查询字符串。
encoding
类型： System.Text Encoding
要使用的 Encoding。

返回值

类型： System.Collections.Specialized NameValueCollection
查询参数和值的 NameValueCollection。
异常 | 条件
ArgumentNullException | query 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - encoding 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在返回的 NameValueCollection 中，URL 编码的字符将会进行解码，多次出现的同一查询字符串参数将单独列出，并使用逗号分隔每个值。

安全说明 安全说明

ParseQueryString 方法使用可能包含用户输入的查询字符串，这是一个潜在安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 ParseQueryString 方法使用可能包含用户输入的查询字符串，这是一个潜在安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。 ParseQueryString 方法使用可能包含用户输入的查询字符串，这是一个潜在安全威胁。默认情况下，ASP.NET 网页会验证用户输入是否未包含脚本或 HTML 元素。有关更多信息，请参见脚本侵入概述。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpUtility 类
HttpUtility 成员
ParseQueryString 重载
System.Web 命名空间
Encoding


HttpUtility ..::.UrlDecode 方法

HttpUtility
.
.
::
.
UrlDecode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将已经为在 URL 中传输而编码的字符串转换为解码的字符串。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.UrlDecode 方法 (String)

HttpUtility
.
.
::
.
UrlDecode 方法 (String)
HttpUtility 类

将已经为在 URL 中传输而编码的字符串转换为解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecode ( _
    str As String _
) As String
public static string UrlDecode(
    string str
)
public:
static String^ UrlDecode(
    String^ str
)
static member UrlDecode :
        str:string -> string

参数

str
类型： System String
要解码的字符串。

返回值

类型： System String
一个已解码的字符串。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecode 重载
System.Web 命名空间
UrlEncode


HttpUtility ..::.UrlDecode 方法 ( array<Byte >[]()[], Encoding)

HttpUtility
.
.
::
.
UrlDecode 方法 (
array<
Byte
>
[]
()
[]
, Encoding)
HttpUtility 类

使用指定的解码对象将 URL 编码的字节数组转换为已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecode ( _
    bytes As Byte(), _
    e As Encoding _
) As String
public static string UrlDecode(
    byte[] bytes,
    Encoding e
)
public:
static String^ UrlDecode(
    array<unsigned char>^ bytes,
    Encoding^ e
)
static member UrlDecode :
        bytes:byte[] *
        e:Encoding -> string

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要解码的字节数组。
e
类型： System.Text Encoding
指定解码方法的 Encoding。

返回值

类型： System String
一个已解码的字符串。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecode 重载
System.Web 命名空间
UrlEncode


HttpUtility ..::.UrlDecode 方法 (String, Encoding)

HttpUtility
.
.
::
.
UrlDecode 方法 (String, Encoding)
HttpUtility 类

使用指定的编码对象将 URL 编码的字符串转换为已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecode ( _
    str As String, _
    e As Encoding _
) As String
public static string UrlDecode(
    string str,
    Encoding e
)
public:
static String^ UrlDecode(
    String^ str,
    Encoding^ e
)
static member UrlDecode :
        str:string *
        e:Encoding -> string

参数

str
类型： System String
要解码的字符串。
e
类型： System.Text Encoding
指定解码方法的 Encoding。

返回值

类型： System String
一个已解码的字符串。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecode 重载
System.Web 命名空间
UrlEncode


HttpUtility ..::.UrlDecode 方法 ( array<Byte >[]()[], Int32, Int32, Encoding)

HttpUtility
.
.
::
.
UrlDecode 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32, Encoding)
HttpUtility 类

使用指定的编码对象，从数组中的指定位置开始到指定的字节数为止，将 URL 编码的字节数组转换为已解码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecode ( _
    bytes As Byte(), _
    offset As Integer, _
    count As Integer, _
    e As Encoding _
) As String
public static string UrlDecode(
    byte[] bytes,
    int offset,
    int count,
    Encoding e
)
public:
static String^ UrlDecode(
    array<unsigned char>^ bytes,
    int offset,
    int count,
    Encoding^ e
)
static member UrlDecode :
        bytes:byte[] *
        offset:int *
        count:int *
        e:Encoding -> string

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要解码的字节数组。
offset
类型： System Int32
字节中开始解码的位置。
count
类型： System Int32
要解码的字节数。
e
类型： System.Text Encoding
指定解码方法的 Encoding 对象。

返回值

类型： System String
一个已解码的字符串。
异常 | 条件
ArgumentNullException | bytes 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），但 count 不等于 0。
ArgumentOutOfRangeException | offset 小于 0 或大于 bytes 数组的长度。 - 或 - count 小于 0，或者 count + offset 大于 bytes 数组的长度。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecode 重载
System.Web 命名空间
UrlEncode


HttpUtility ..::.UrlDecodeToBytes 方法

HttpUtility
.
.
::
.
UrlDecodeToBytes 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将 URL 编码的字符串或字节数组转换为已解码的字节数组。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.UrlDecodeToBytes 方法 ( array<Byte >[]()[])

HttpUtility
.
.
::
.
UrlDecodeToBytes 方法 (
array<
Byte
>
[]
()
[]
)
HttpUtility 类

将 URL 编码的字节数组转换为已解码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecodeToBytes ( _
    bytes As Byte() _
) As Byte()
public static byte[] UrlDecodeToBytes(
    byte[] bytes
)
public:
static array<unsigned char>^ UrlDecodeToBytes(
    array<unsigned char>^ bytes
)
static member UrlDecodeToBytes :
        bytes:byte[] -> byte[]

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要解码的字节数组。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已解码的字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecodeToBytes 重载
System.Web 命名空间
UrlEncodeToBytes


HttpUtility ..::.UrlDecodeToBytes 方法 (String)

HttpUtility
.
.
::
.
UrlDecodeToBytes 方法 (String)
HttpUtility 类

将 URL 编码的字符串转换为已解码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecodeToBytes ( _
    str As String _
) As Byte()
public static byte[] UrlDecodeToBytes(
    string str
)
public:
static array<unsigned char>^ UrlDecodeToBytes(
    String^ str
)
static member UrlDecodeToBytes :
        str:string -> byte[]

参数

str
类型： System String
要解码的字符串。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已解码的字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecodeToBytes 重载
System.Web 命名空间
UrlEncodeToBytes


HttpUtility ..::.UrlDecodeToBytes 方法 (String, Encoding)

HttpUtility
.
.
::
.
UrlDecodeToBytes 方法 (String, Encoding)
HttpUtility 类

使用指定的解码对象将 URL 编码的字符串转换为已解码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecodeToBytes ( _
    str As String, _
    e As Encoding _
) As Byte()
public static byte[] UrlDecodeToBytes(
    string str,
    Encoding e
)
public:
static array<unsigned char>^ UrlDecodeToBytes(
    String^ str,
    Encoding^ e
)
static member UrlDecodeToBytes :
        str:string *
        e:Encoding -> byte[]

参数

str
类型： System String
要解码的字符串。
e
类型： System.Text Encoding
指定解码方法的 Encoding 对象。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已解码的字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecodeToBytes 重载
System.Web 命名空间
UrlEncodeToBytes


HttpUtility ..::.UrlDecodeToBytes 方法 ( array<Byte >[]()[], Int32, Int32)

HttpUtility
.
.
::
.
UrlDecodeToBytes 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
HttpUtility 类

从数组中的指定位置开始一直到指定的字节数为止，将 URL 编码的字节数组转换为已解码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlDecodeToBytes ( _
    bytes As Byte(), _
    offset As Integer, _
    count As Integer _
) As Byte()
public static byte[] UrlDecodeToBytes(
    byte[] bytes,
    int offset,
    int count
)
public:
static array<unsigned char>^ UrlDecodeToBytes(
    array<unsigned char>^ bytes,
    int offset,
    int count
)
static member UrlDecodeToBytes :
        bytes:byte[] *
        offset:int *
        count:int -> byte[]

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要解码的字节数组。
offset
类型： System Int32
字节数组中开始解码的位置。
count
类型： System Int32
要解码的字节数。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已解码的字节数组。
异常 | 条件
ArgumentNullException | bytes 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），但 count 不等于 0。
ArgumentOutOfRangeException | offset 小于 0 或大于 bytes 数组的长度。 - 或 - count 小于 0，或者 count + offset 大于 bytes 数组的长度。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlDecodeToBytes 重载
System.Web 命名空间
UrlEncodeToBytes


HttpUtility ..::.UrlEncode 方法

HttpUtility
.
.
::
.
UrlEncode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

对 URL 字符串进行编码。可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode 方法。 对 URL 字符串进行编码。可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode 方法。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.UrlEncode 方法 ( array<Byte >[]()[])

HttpUtility
.
.
::
.
UrlEncode 方法 (
array<
Byte
>
[]
()
[]
)
HttpUtility 类

将字节数组转换为编码的 URL 字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncode ( _
    bytes As Byte() _
) As String
public static string UrlEncode(
    byte[] bytes
)
public:
static String^ UrlEncode(
    array<unsigned char>^ bytes
)
static member UrlEncode :
        bytes:byte[] -> string

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要编码的字节数组。

返回值

类型： System String
一个已编码的字符串。

可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。

您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncode 重载
System.Web 命名空间
UrlDecode

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncode 方法 (String)

HttpUtility
.
.
::
.
UrlEncode 方法 (String)
HttpUtility 类

对 URL 字符串进行编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncode ( _
    str As String _
) As String
public static string UrlEncode(
    string str
)
public:
static String^ UrlEncode(
    String^ str
)
static member UrlEncode :
        str:string -> string

参数

str
类型： System String
要编码的文本。

返回值

类型： System String
一个已编码的字符串。

可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。

您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncode 重载
System.Web 命名空间
UrlDecode

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncode 方法 (String, Encoding)

HttpUtility
.
.
::
.
UrlEncode 方法 (String, Encoding)
HttpUtility 类

使用指定的编码对象对 URL 字符串进行编码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncode ( _
    str As String, _
    e As Encoding _
) As String
public static string UrlEncode(
    string str,
    Encoding e
)
public:
static String^ UrlEncode(
    String^ str,
    Encoding^ e
)
static member UrlEncode :
        str:string *
        e:Encoding -> string

参数

str
类型： System String
要编码的文本。
e
类型： System.Text Encoding
指定编码方案的 Encoding 对象。

返回值

类型： System String
一个已编码的字符串。

可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。

您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncode 重载
System.Web 命名空间
UrlDecode

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncode 方法 ( array<Byte >[]()[], Int32, Int32)

HttpUtility
.
.
::
.
UrlEncode 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
HttpUtility 类

从数组的指定位置开始到指定的字节数为止，将字节数组转换为 URL 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncode ( _
    bytes As Byte(), _
    offset As Integer, _
    count As Integer _
) As String
public static string UrlEncode(
    byte[] bytes,
    int offset,
    int count
)
public:
static String^ UrlEncode(
    array<unsigned char>^ bytes,
    int offset,
    int count
)
static member UrlEncode :
        bytes:byte[] *
        offset:int *
        count:int -> string

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要编码的字节数组。
offset
类型： System Int32
字节数组中开始编码的位置。
count
类型： System Int32
要编码的字节数。

返回值

类型： System String
一个已编码的字符串。

可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。 可用于对整个 URL（包括查询字符串值）进行编码的 UrlEncode()()() 方法。如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当字符 < 和 > 嵌入到要在 URL 中传输的文本块中时，它们分别被编码为 %3c 和 %3e。

您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncode 重载
System.Web 命名空间
UrlDecode

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncodeToBytes 方法

HttpUtility
.
.
::
.
UrlEncodeToBytes 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpUtility 类

将字符串或字节数组转换为编码的字节数组。

名称 说明
页首

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间


HttpUtility ..::.UrlEncodeToBytes 方法 ( array<Byte >[]()[])

HttpUtility
.
.
::
.
UrlEncodeToBytes 方法 (
array<
Byte
>
[]
()
[]
)
HttpUtility 类

将字节数组转换为 URL 编码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncodeToBytes ( _
    bytes As Byte() _
) As Byte()
public static byte[] UrlEncodeToBytes(
    byte[] bytes
)
public:
static array<unsigned char>^ UrlEncodeToBytes(
    array<unsigned char>^ bytes
)
static member UrlEncodeToBytes :
        bytes:byte[] -> byte[]

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要编码的字节数组。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已编码的字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncodeToBytes 重载
System.Web 命名空间
UrlDecodeToBytes

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncodeToBytes 方法 (String)

HttpUtility
.
.
::
.
UrlEncodeToBytes 方法 (String)
HttpUtility 类

将字符串转换为 URL 编码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncodeToBytes ( _
    str As String _
) As Byte()
public static byte[] UrlEncodeToBytes(
    string str
)
public:
static array<unsigned char>^ UrlEncodeToBytes(
    String^ str
)
static member UrlEncodeToBytes :
        str:string -> byte[]

参数

str
类型： System String
要编码的字符串。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已编码的字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncodeToBytes 重载
System.Web 命名空间
UrlDecodeToBytes

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncodeToBytes 方法 (String, Encoding)

HttpUtility
.
.
::
.
UrlEncodeToBytes 方法 (String, Encoding)
HttpUtility 类

使用指定的编码对象将字符串转换为 URL 编码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncodeToBytes ( _
    str As String, _
    e As Encoding _
) As Byte()
public static byte[] UrlEncodeToBytes(
    string str,
    Encoding e
)
public:
static array<unsigned char>^ UrlEncodeToBytes(
    String^ str,
    Encoding^ e
)
static member UrlEncodeToBytes :
        str:string *
        e:Encoding -> byte[]

参数

str
类型： System String
要编码的字符串
e
类型： System.Text Encoding
指定编码方案的 Encoding。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已编码的字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncodeToBytes 重载
System.Web 命名空间
UrlDecodeToBytes

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncodeToBytes 方法 ( array<Byte >[]()[], Int32, Int32)

HttpUtility
.
.
::
.
UrlEncodeToBytes 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
HttpUtility 类

从数组中的指定位置开始一直到指定的字节数为止，将字节数组转换为 URL 编码的字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncodeToBytes ( _
    bytes As Byte(), _
    offset As Integer, _
    count As Integer _
) As Byte()
public static byte[] UrlEncodeToBytes(
    byte[] bytes,
    int offset,
    int count
)
public:
static array<unsigned char>^ UrlEncodeToBytes(
    array<unsigned char>^ bytes,
    int offset,
    int count
)
static member UrlEncodeToBytes :
        bytes:byte[] *
        offset:int *
        count:int -> byte[]

参数

bytes
类型：
array<
System Byte
>
[]
()
[]

要编码的字节数组。
offset
类型： System Int32
字节数组中开始编码的位置。
count
类型： System Int32
要编码的字节数。

返回值

类型：
array<
System Byte
>
[]
()
[]

一个已编码的字节数组。
异常 | 条件
ArgumentNullException | bytes 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），但 count 不等于 0。
ArgumentOutOfRangeException | offset 小于 0 或大于 bytes 数组的长度。 - 或 - count 小于 0，或者 count + offset 大于 bytes 数组的长度。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将 URL 中不允许使用的字符转换为等效字符实体；URL 解码会反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
UrlEncodeToBytes 重载
System.Web 命名空间
UrlDecodeToBytes

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncodeUnicode 方法

HttpUtility
.
.
::
.
UrlEncodeUnicode 方法
HttpUtility 类

将字符串转换为 Unicode 字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncodeUnicode ( _
    str As String _
) As String
public static string UrlEncodeUnicode(
    string str
)
public:
static String^ UrlEncodeUnicode(
    String^ str
)
static member UrlEncodeUnicode :
        str:string -> string

参数

str
类型： System String
要转换的字符串。

返回值

类型： System String
以 %UnicodeValue 表示法表示的 Unicode 字符串。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将在 URL 中无效的字符转换为等效的字符实体；URL 解码反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将在 URL 中无效的字符转换为等效的字符实体；URL 解码反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将在 URL 中无效的字符转换为等效的字符实体；URL 解码反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlEncodeUnicodeToBytes 方法

HttpUtility
.
.
::
.
UrlEncodeUnicodeToBytes 方法
HttpUtility 类

将 Unicode 字符串转换为字节数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlEncodeUnicodeToBytes ( _
    str As String _
) As Byte()
public static byte[] UrlEncodeUnicodeToBytes(
    string str
)
public:
static array<unsigned char>^ UrlEncodeUnicodeToBytes(
    String^ str
)
static member UrlEncodeUnicodeToBytes :
        str:string -> byte[]

参数

str
类型： System String
要转换的字符串。

返回值

类型：
array<
System Byte
>
[]
()
[]

字节数组。

如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将在 URL 中无效的字符转换为等效的字符实体；URL 解码反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将在 URL 中无效的字符转换为等效的字符实体；URL 解码反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。 如果在 HTTP 流中传递空白和标点之类的字符，则它们在接收端可能会被错误地解释。URL 编码将在 URL 中无效的字符转换为等效的字符实体；URL 解码反转此编码过程。例如，当嵌入到要在 URL 中传输的文本块中时，字符 < 和 > 分别被编码为 %3c 和 %3e。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpUtility ..::.UrlPathEncode 方法

HttpUtility
.
.
::
.
UrlPathEncode 方法
HttpUtility 类

对 URL 字符串的路径部分进行编码，以进行从 Web 服务器到客户端的可靠的 HTTP 传输。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function UrlPathEncode ( _
    str As String _
) As String
public static string UrlPathEncode(
    string str
)
public:
static String^ UrlPathEncode(
    String^ str
)
static member UrlPathEncode :
        str:string -> string

参数

str
类型： System String
要进行 URL 编码的文本。

返回值

类型： System String
URL 编码的文本。

您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。 您可以使用 UrlEncode()()() 方法或 UrlPathEncode()()() 方法对 URL 编码。但是，方法返回不同的结果。UrlEncode()()() 方法将每个空格字符转换为加号 (+) 字符。UrlPathEncode()()() 方法将每个空格字符转换为字符串 "%20"，它表示一个用十六进制表示法表示的空格。在对 URL 的路径部分编码时使用 UrlPathEncode()()() 方法，以保证一致的已解码 URL，与执行解码的平台或浏览器无关。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1

参考

HttpUtility 类
HttpUtility 成员
System.Web 命名空间

其他资源

如何：通过对字符串应用 HTML 编码在 Web 应用程序中防止脚本侵入


HttpValidationStatus 枚举

HttpValidationStatus 枚举

提供指示缓存验证状态的枚举值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration HttpValidationStatus
public enum HttpValidationStatus
public enum class HttpValidationStatus
type HttpValidationStatus
成员名称 | 说明
Invalid | 指示该缓存是无效的。从该缓存中收回项并将请求当作缓存未命中处理。 指示该缓存是无效的。从该缓存中收回项并将请求当作缓存未命中处理。
IgnoreThisRequest | 指示将请求当作缓存未命中处理并执行该页。未使缓存无效。 指示将请求当作缓存未命中处理并执行该页。未使缓存无效。
Valid | 指示该缓存是有效的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpCacheValidateHandler


HttpWorkerRequest 类

HttpWorkerRequest 类
成员

此抽象类定义由 ASP.NET 托管代码用于处理请求的基本辅助方法和枚举。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<ComVisibleAttribute(False)> _
Public MustInherit Class HttpWorkerRequest
[ComVisibleAttribute(false)]
public abstract class HttpWorkerRequest
[ComVisibleAttribute(false)]
public ref class HttpWorkerRequest abstract
[<AbstractClassAttribute>]
[<ComVisibleAttribute(false)>]
type HttpWorkerRequest =  class end

大多数情况下，代码不会直接处理 HttpWorkerRequest，这是因为请求和响应数据是通过 HttpRequest 和 HttpResponse 类公开的。一些内部 ASP.NET 类扩展了此类。如果代码实现自己的承载环境，则它需要扩展此类以调用 ProcessRequest 方法。此外，代码还可以创建派生类，用于在给定应用程序中执行子请求，以便将其实例传递给 ProcessRequest。在这种情况下，派生类应保留对当前 HttpWorkerRequest 的引用并将大多数方法委托给它。 大多数情况下，代码不会直接处理 HttpWorkerRequest，这是因为请求和响应数据是通过 HttpRequest 和 HttpResponse 类公开的。一些内部 ASP.NET 类扩展了此类。如果代码实现自己的承载环境，则它需要扩展此类以调用 ProcessRequest 方法。此外，代码还可以创建派生类，用于在给定应用程序中执行子请求，以便将其实例传递给 ProcessRequest。在这种情况下，派生类应保留对当前 HttpWorkerRequest 的引用并将大多数方法委托给它。 大多数情况下，代码不会直接处理 HttpWorkerRequest，这是因为请求和响应数据是通过 HttpRequest 和 HttpResponse 类公开的。一些内部 ASP.NET 类扩展了此类。如果代码实现自己的承载环境，则它需要扩展此类以调用 ProcessRequest 方法。此外，代码还可以创建派生类，用于在给定应用程序中执行子请求，以便将其实例传递给 ProcessRequest。在这种情况下，派生类应保留对当前 HttpWorkerRequest 的引用并将大多数方法委托给它。 大多数情况下，代码不会直接处理 HttpWorkerRequest，这是因为请求和响应数据是通过 HttpRequest 和 HttpResponse 类公开的。一些内部 ASP.NET 类扩展了此类。如果代码实现自己的承载环境，则它需要扩展此类以调用 ProcessRequest 方法。此外，代码还可以创建派生类，用于在给定应用程序中执行子请求，以便将其实例传递给 ProcessRequest。在这种情况下，派生类应保留对当前 HttpWorkerRequest 的引用并将大多数方法委托给它。 大多数情况下，代码不会直接处理 HttpWorkerRequest，这是因为请求和响应数据是通过 HttpRequest 和 HttpResponse 类公开的。一些内部 ASP.NET 类扩展了此类。如果代码实现自己的承载环境，则它需要扩展此类以调用 ProcessRequest 方法。此外，代码还可以创建派生类，用于在给定应用程序中执行子请求，以便将其实例传递给 ProcessRequest。在这种情况下，派生类应保留对当前 HttpWorkerRequest 的引用并将大多数方法委托给它。

System.Web System.Web..::.HttpWorkerRequestHttpWorkerRequest

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 成员
System.Web 命名空间
ProcessRequest


HttpWorkerRequest 成员

HttpWorkerRequest 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

此抽象类定义由 ASP.NET 托管代码用于处理请求的基本辅助方法和枚举。

HttpWorkerRequest 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpWorkerRequest 类
System.Web 命名空间


HttpWorkerRequest 构造函数

HttpWorkerRequest 构造函数
HttpWorkerRequest 类

初始化 HttpWorkerRequest 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected HttpWorkerRequest()
protected:
HttpWorkerRequest()
new : unit -> HttpWorkerRequest

HttpWorkerRequest 构造函数是 HttpWorkerRequest 类的默认构造函数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest 字段

HttpWorkerRequest 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

HttpWorkerRequest 类型公开以下成员。

名称 说明
页首

参考

HttpWorkerRequest 类
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAccept 字段

HttpWorkerRequest
.
.
::
.
HeaderAccept 字段
HttpWorkerRequest 类

指定 AcceptHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAccept As Integer
public const int HeaderAccept
public:
literal int HeaderAccept
static val mutable HeaderAccept: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAcceptCharset 字段

HttpWorkerRequest
.
.
::
.
HeaderAcceptCharset 字段
HttpWorkerRequest 类

指定 Accept-CharsetHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAcceptCharset As Integer
public const int HeaderAcceptCharset
public:
literal int HeaderAcceptCharset
static val mutable HeaderAcceptCharset: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAcceptEncoding 字段

HttpWorkerRequest
.
.
::
.
HeaderAcceptEncoding 字段
HttpWorkerRequest 类

指定 Accept-EncodingHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAcceptEncoding As Integer
public const int HeaderAcceptEncoding
public:
literal int HeaderAcceptEncoding
static val mutable HeaderAcceptEncoding: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAcceptLanguage 字段

HttpWorkerRequest
.
.
::
.
HeaderAcceptLanguage 字段
HttpWorkerRequest 类

指定 Accept-LanguageHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAcceptLanguage As Integer
public const int HeaderAcceptLanguage
public:
literal int HeaderAcceptLanguage
static val mutable HeaderAcceptLanguage: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAcceptRanges 字段

HttpWorkerRequest
.
.
::
.
HeaderAcceptRanges 字段
HttpWorkerRequest 类

指定 Accept-RangesHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAcceptRanges As Integer
public const int HeaderAcceptRanges
public:
literal int HeaderAcceptRanges
static val mutable HeaderAcceptRanges: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAge 字段

HttpWorkerRequest
.
.
::
.
HeaderAge 字段
HttpWorkerRequest 类

指定 AgeHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAge As Integer
public const int HeaderAge
public:
literal int HeaderAge
static val mutable HeaderAge: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAllow 字段

HttpWorkerRequest
.
.
::
.
HeaderAllow 字段
HttpWorkerRequest 类

指定 AllowHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAllow As Integer
public const int HeaderAllow
public:
literal int HeaderAllow
static val mutable HeaderAllow: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderAuthorization 字段

HttpWorkerRequest
.
.
::
.
HeaderAuthorization 字段
HttpWorkerRequest 类

指定 AuthorizationHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderAuthorization As Integer
public const int HeaderAuthorization
public:
literal int HeaderAuthorization
static val mutable HeaderAuthorization: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderCacheControl 字段

HttpWorkerRequest
.
.
::
.
HeaderCacheControl 字段
HttpWorkerRequest 类

表示 HTTPCache-ControlHTTP 标头的索引。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderCacheControl As Integer
public const int HeaderCacheControl
public:
literal int HeaderCacheControl
static val mutable HeaderCacheControl: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderConnection 字段

HttpWorkerRequest
.
.
::
.
HeaderConnection 字段
HttpWorkerRequest 类

指定 ConnectionHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderConnection As Integer
public const int HeaderConnection
public:
literal int HeaderConnection
static val mutable HeaderConnection: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentEncoding 字段

HttpWorkerRequest
.
.
::
.
HeaderContentEncoding 字段
HttpWorkerRequest 类

指定 Content-EncodingHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentEncoding As Integer
public const int HeaderContentEncoding
public:
literal int HeaderContentEncoding
static val mutable HeaderContentEncoding: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentLanguage 字段

HttpWorkerRequest
.
.
::
.
HeaderContentLanguage 字段
HttpWorkerRequest 类

指定 Content-LanguageHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentLanguage As Integer
public const int HeaderContentLanguage
public:
literal int HeaderContentLanguage
static val mutable HeaderContentLanguage: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentLength 字段

HttpWorkerRequest
.
.
::
.
HeaderContentLength 字段
HttpWorkerRequest 类

指定 Content-LengthHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentLength As Integer
public const int HeaderContentLength
public:
literal int HeaderContentLength
static val mutable HeaderContentLength: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentLocation 字段

HttpWorkerRequest
.
.
::
.
HeaderContentLocation 字段
HttpWorkerRequest 类

指定 Content-LocationHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentLocation As Integer
public const int HeaderContentLocation
public:
literal int HeaderContentLocation
static val mutable HeaderContentLocation: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentMd5 字段

HttpWorkerRequest
.
.
::
.
HeaderContentMd5 字段
HttpWorkerRequest 类

指定 Content-MD5HTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentMd5 As Integer
public const int HeaderContentMd5
public:
literal int HeaderContentMd5
static val mutable HeaderContentMd5: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentRange 字段

HttpWorkerRequest
.
.
::
.
HeaderContentRange 字段
HttpWorkerRequest 类

指定 Content-RangeHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentRange As Integer
public const int HeaderContentRange
public:
literal int HeaderContentRange
static val mutable HeaderContentRange: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderContentType 字段

HttpWorkerRequest
.
.
::
.
HeaderContentType 字段
HttpWorkerRequest 类

指定 Content-TypeHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderContentType As Integer
public const int HeaderContentType
public:
literal int HeaderContentType
static val mutable HeaderContentType: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderCookie 字段

HttpWorkerRequest
.
.
::
.
HeaderCookie 字段
HttpWorkerRequest 类

指定 CookieHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderCookie As Integer
public const int HeaderCookie
public:
literal int HeaderCookie
static val mutable HeaderCookie: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderDate 字段

HttpWorkerRequest
.
.
::
.
HeaderDate 字段
HttpWorkerRequest 类

指定 DateHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderDate As Integer
public const int HeaderDate
public:
literal int HeaderDate
static val mutable HeaderDate: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderEtag 字段

HttpWorkerRequest
.
.
::
.
HeaderEtag 字段
HttpWorkerRequest 类

指定 ETagHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderEtag As Integer
public const int HeaderEtag
public:
literal int HeaderEtag
static val mutable HeaderEtag: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderExpect 字段

HttpWorkerRequest
.
.
::
.
HeaderExpect 字段
HttpWorkerRequest 类

指定 ExceptHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderExpect As Integer
public const int HeaderExpect
public:
literal int HeaderExpect
static val mutable HeaderExpect: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderExpires 字段

HttpWorkerRequest
.
.
::
.
HeaderExpires 字段
HttpWorkerRequest 类

指定 ExpiresHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderExpires As Integer
public const int HeaderExpires
public:
literal int HeaderExpires
static val mutable HeaderExpires: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderFrom 字段

HttpWorkerRequest
.
.
::
.
HeaderFrom 字段
HttpWorkerRequest 类

指定 FromHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderFrom As Integer
public const int HeaderFrom
public:
literal int HeaderFrom
static val mutable HeaderFrom: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderHost 字段

HttpWorkerRequest
.
.
::
.
HeaderHost 字段
HttpWorkerRequest 类

指定 HostHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderHost As Integer
public const int HeaderHost
public:
literal int HeaderHost
static val mutable HeaderHost: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderIfMatch 字段

HttpWorkerRequest
.
.
::
.
HeaderIfMatch 字段
HttpWorkerRequest 类

指定 If-MatchHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderIfMatch As Integer
public const int HeaderIfMatch
public:
literal int HeaderIfMatch
static val mutable HeaderIfMatch: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderIfModifiedSince 字段

HttpWorkerRequest
.
.
::
.
HeaderIfModifiedSince 字段
HttpWorkerRequest 类

指定 If-Modified-SinceHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderIfModifiedSince As Integer
public const int HeaderIfModifiedSince
public:
literal int HeaderIfModifiedSince
static val mutable HeaderIfModifiedSince: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderIfNoneMatch 字段

HttpWorkerRequest
.
.
::
.
HeaderIfNoneMatch 字段
HttpWorkerRequest 类

指定 If-None-MatchHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderIfNoneMatch As Integer
public const int HeaderIfNoneMatch
public:
literal int HeaderIfNoneMatch
static val mutable HeaderIfNoneMatch: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderIfRange 字段

HttpWorkerRequest
.
.
::
.
HeaderIfRange 字段
HttpWorkerRequest 类

指定 If-RangeHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderIfRange As Integer
public const int HeaderIfRange
public:
literal int HeaderIfRange
static val mutable HeaderIfRange: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderIfUnmodifiedSince 字段

HttpWorkerRequest
.
.
::
.
HeaderIfUnmodifiedSince 字段
HttpWorkerRequest 类

指定 If-Unmodified-SinceHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderIfUnmodifiedSince As Integer
public const int HeaderIfUnmodifiedSince
public:
literal int HeaderIfUnmodifiedSince
static val mutable HeaderIfUnmodifiedSince: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderKeepAlive 字段

HttpWorkerRequest
.
.
::
.
HeaderKeepAlive 字段
HttpWorkerRequest 类

指定 Keep-AliveHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderKeepAlive As Integer
public const int HeaderKeepAlive
public:
literal int HeaderKeepAlive
static val mutable HeaderKeepAlive: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderLastModified 字段

HttpWorkerRequest
.
.
::
.
HeaderLastModified 字段
HttpWorkerRequest 类

指定 Last-ModifiedHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderLastModified As Integer
public const int HeaderLastModified
public:
literal int HeaderLastModified
static val mutable HeaderLastModified: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderLocation 字段

HttpWorkerRequest
.
.
::
.
HeaderLocation 字段
HttpWorkerRequest 类

指定 LocationHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderLocation As Integer
public const int HeaderLocation
public:
literal int HeaderLocation
static val mutable HeaderLocation: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderMaxForwards 字段

HttpWorkerRequest
.
.
::
.
HeaderMaxForwards 字段
HttpWorkerRequest 类

指定 Max-ForwardsHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderMaxForwards As Integer
public const int HeaderMaxForwards
public:
literal int HeaderMaxForwards
static val mutable HeaderMaxForwards: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderPragma 字段

HttpWorkerRequest
.
.
::
.
HeaderPragma 字段
HttpWorkerRequest 类

指定 PragmaHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderPragma As Integer
public const int HeaderPragma
public:
literal int HeaderPragma
static val mutable HeaderPragma: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderProxyAuthenticate 字段

HttpWorkerRequest
.
.
::
.
HeaderProxyAuthenticate 字段
HttpWorkerRequest 类

指定 Proxy-AuthenticateHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderProxyAuthenticate As Integer
public const int HeaderProxyAuthenticate
public:
literal int HeaderProxyAuthenticate
static val mutable HeaderProxyAuthenticate: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderProxyAuthorization 字段

HttpWorkerRequest
.
.
::
.
HeaderProxyAuthorization 字段
HttpWorkerRequest 类

指定 Proxy-AuthorizationHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderProxyAuthorization As Integer
public const int HeaderProxyAuthorization
public:
literal int HeaderProxyAuthorization
static val mutable HeaderProxyAuthorization: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderRange 字段

HttpWorkerRequest
.
.
::
.
HeaderRange 字段
HttpWorkerRequest 类

指定 RangeHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderRange As Integer
public const int HeaderRange
public:
literal int HeaderRange
static val mutable HeaderRange: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderReferer 字段

HttpWorkerRequest
.
.
::
.
HeaderReferer 字段
HttpWorkerRequest 类

指定 RefererHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderReferer As Integer
public const int HeaderReferer
public:
literal int HeaderReferer
static val mutable HeaderReferer: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderRetryAfter 字段

HttpWorkerRequest
.
.
::
.
HeaderRetryAfter 字段
HttpWorkerRequest 类

指定 Retry-AfterHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderRetryAfter As Integer
public const int HeaderRetryAfter
public:
literal int HeaderRetryAfter
static val mutable HeaderRetryAfter: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderServer 字段

HttpWorkerRequest
.
.
::
.
HeaderServer 字段
HttpWorkerRequest 类

指定 ServerHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderServer As Integer
public const int HeaderServer
public:
literal int HeaderServer
static val mutable HeaderServer: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderSetCookie 字段

HttpWorkerRequest
.
.
::
.
HeaderSetCookie 字段
HttpWorkerRequest 类

指定 Set-CookieHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderSetCookie As Integer
public const int HeaderSetCookie
public:
literal int HeaderSetCookie
static val mutable HeaderSetCookie: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderTe 字段

HttpWorkerRequest
.
.
::
.
HeaderTe 字段
HttpWorkerRequest 类

指定 TEHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderTe As Integer
public const int HeaderTe
public:
literal int HeaderTe
static val mutable HeaderTe: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderTrailer 字段

HttpWorkerRequest
.
.
::
.
HeaderTrailer 字段
HttpWorkerRequest 类

指定 TrailerHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderTrailer As Integer
public const int HeaderTrailer
public:
literal int HeaderTrailer
static val mutable HeaderTrailer: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderTransferEncoding 字段

HttpWorkerRequest
.
.
::
.
HeaderTransferEncoding 字段
HttpWorkerRequest 类

指定 Transfer-EncodingHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderTransferEncoding As Integer
public const int HeaderTransferEncoding
public:
literal int HeaderTransferEncoding
static val mutable HeaderTransferEncoding: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderUpgrade 字段

HttpWorkerRequest
.
.
::
.
HeaderUpgrade 字段
HttpWorkerRequest 类

指定 UpgradeHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderUpgrade As Integer
public const int HeaderUpgrade
public:
literal int HeaderUpgrade
static val mutable HeaderUpgrade: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderUserAgent 字段

HttpWorkerRequest
.
.
::
.
HeaderUserAgent 字段
HttpWorkerRequest 类

指定 User-AgentHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderUserAgent As Integer
public const int HeaderUserAgent
public:
literal int HeaderUserAgent
static val mutable HeaderUserAgent: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderVary 字段

HttpWorkerRequest
.
.
::
.
HeaderVary 字段
HttpWorkerRequest 类

指定 VaryHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderVary As Integer
public const int HeaderVary
public:
literal int HeaderVary
static val mutable HeaderVary: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderVia 字段

HttpWorkerRequest
.
.
::
.
HeaderVia 字段
HttpWorkerRequest 类

指定 ViaHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderVia As Integer
public const int HeaderVia
public:
literal int HeaderVia
static val mutable HeaderVia: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderWarning 字段

HttpWorkerRequest
.
.
::
.
HeaderWarning 字段
HttpWorkerRequest 类

指定 WarningHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderWarning As Integer
public const int HeaderWarning
public:
literal int HeaderWarning
static val mutable HeaderWarning: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeaderWwwAuthenticate 字段

HttpWorkerRequest
.
.
::
.
HeaderWwwAuthenticate 字段
HttpWorkerRequest 类

指定 WWW-AuthenticateHTTP 标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const HeaderWwwAuthenticate As Integer
public const int HeaderWwwAuthenticate
public:
literal int HeaderWwwAuthenticate
static val mutable HeaderWwwAuthenticate: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.ReasonCachePolicy 字段

HttpWorkerRequest
.
.
::
.
ReasonCachePolicy 字段
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求的原因。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ReasonCachePolicy As Integer
public const int ReasonCachePolicy
public:
literal int ReasonCachePolicy
static val mutable ReasonCachePolicy: int

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
GetRequestReason


HttpWorkerRequest ..::.ReasonCacheSecurity 字段

HttpWorkerRequest
.
.
::
.
ReasonCacheSecurity 字段
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求的原因。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ReasonCacheSecurity As Integer
public const int ReasonCacheSecurity
public:
literal int ReasonCacheSecurity
static val mutable ReasonCacheSecurity: int

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
GetRequestReason


HttpWorkerRequest ..::.ReasonClientDisconnect 字段

HttpWorkerRequest
.
.
::
.
ReasonClientDisconnect 字段
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求的原因。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ReasonClientDisconnect As Integer
public const int ReasonClientDisconnect
public:
literal int ReasonClientDisconnect
static val mutable ReasonClientDisconnect: int

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
GetRequestReason


HttpWorkerRequest ..::.ReasonDefault 字段

HttpWorkerRequest
.
.
::
.
ReasonDefault 字段
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求的原因。默认值为 ReasonResponseCacheMiss。 指定请求的原因。默认值为 ReasonResponseCacheMiss。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ReasonDefault As Integer
public const int ReasonDefault
public:
literal int ReasonDefault
static val mutable ReasonDefault: int

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
GetRequestReason


HttpWorkerRequest ..::.ReasonFileHandleCacheMiss 字段

HttpWorkerRequest
.
.
::
.
ReasonFileHandleCacheMiss 字段
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求的原因。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ReasonFileHandleCacheMiss As Integer
public const int ReasonFileHandleCacheMiss
public:
literal int ReasonFileHandleCacheMiss
static val mutable ReasonFileHandleCacheMiss: int

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
GetRequestReason


HttpWorkerRequest ..::.ReasonResponseCacheMiss 字段

HttpWorkerRequest
.
.
::
.
ReasonResponseCacheMiss 字段
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求的原因。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ReasonResponseCacheMiss As Integer
public const int ReasonResponseCacheMiss
public:
literal int ReasonResponseCacheMiss
static val mutable ReasonResponseCacheMiss: int

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
GetRequestReason


HttpWorkerRequest ..::.RequestHeaderMaximum 字段

HttpWorkerRequest
.
.
::
.
RequestHeaderMaximum 字段
HttpWorkerRequest 类

指定 MaximumHTTP 请求标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const RequestHeaderMaximum As Integer
public const int RequestHeaderMaximum
public:
literal int RequestHeaderMaximum
static val mutable RequestHeaderMaximum: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.ResponseHeaderMaximum 字段

HttpWorkerRequest
.
.
::
.
ResponseHeaderMaximum 字段
HttpWorkerRequest 类

指定 MaximumHTTP 响应标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Const ResponseHeaderMaximum As Integer
public const int ResponseHeaderMaximum
public:
literal int ResponseHeaderMaximum
static val mutable ResponseHeaderMaximum: int

.NET Framework 为每个标准 HTTP 标头类型都分配了一个索引号，以用在 GetKnownRequestHeader 和 SendKnownResponseHeader 方法中。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest 方法

HttpWorkerRequest 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

HttpWorkerRequest 类型公开以下成员。

名称 说明
页首

参考

HttpWorkerRequest 类
System.Web 命名空间


HttpWorkerRequest ..::.CloseConnection 方法

HttpWorkerRequest
.
.
::
.
CloseConnection 方法
HttpWorkerRequest 类

终止与客户端的连接。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub CloseConnection
public virtual void CloseConnection()
public:
virtual void CloseConnection()
abstract CloseConnection : unit -> unit
override CloseConnection : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.EndOfRequest 方法

HttpWorkerRequest
.
.
::
.
EndOfRequest 方法
HttpWorkerRequest 类

由运行时使用以通知 HttpWorkerRequest 当前请求的请求处理已完成。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub EndOfRequest
public abstract void EndOfRequest()
public:
virtual void EndOfRequest() abstract
abstract EndOfRequest : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.FlushResponse 方法

HttpWorkerRequest
.
.
::
.
FlushResponse 方法
HttpWorkerRequest 类

将所有挂起的响应数据发送到客户端。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub FlushResponse ( _
    finalFlush As Boolean _
)
public abstract void FlushResponse(
    bool finalFlush
)
public:
virtual void FlushResponse(
    bool finalFlush
) abstract
abstract FlushResponse :
        finalFlush:bool -> unit

参数

finalFlush
类型： System Boolean
如果这将是最后一次刷新响应数据，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetAppPath 方法

HttpWorkerRequest
.
.
::
.
GetAppPath 方法
HttpWorkerRequest 类

返回当前正在执行的服务器应用程序的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetAppPath As String
public virtual string GetAppPath()
public:
virtual String^ GetAppPath()
abstract GetAppPath : unit -> string
override GetAppPath : unit -> string

返回值

类型： System String
当前应用程序的虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetAppPathTranslated 方法

HttpWorkerRequest
.
.
::
.
GetAppPathTranslated 方法
HttpWorkerRequest 类

返回当前正在执行的服务器应用程序的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetAppPathTranslated As String
public virtual string GetAppPathTranslated()
public:
virtual String^ GetAppPathTranslated()
abstract GetAppPathTranslated : unit -> string
override GetAppPathTranslated : unit -> string

返回值

类型： System String
当前应用程序的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetAppPoolID 方法

HttpWorkerRequest
.
.
::
.
GetAppPoolID 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，返回当前 URL 的应用程序池 ID。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetAppPoolID As String
public virtual string GetAppPoolID()
public:
virtual String^ GetAppPoolID()
abstract GetAppPoolID : unit -> string
override GetAppPoolID : unit -> string

返回值

类型： System String
始终返回 null。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetBytesRead 方法

HttpWorkerRequest
.
.
::
.
GetBytesRead 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取从客户端读入的字节数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetBytesRead As Long
public virtual long GetBytesRead()
public:
virtual long long GetBytesRead()
abstract GetBytesRead : unit -> int64
override GetBytesRead : unit -> int64

返回值

类型： System Int64
包含读取的字节数的 Long。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetClientCertificate 方法

HttpWorkerRequest
.
.
::
.
GetClientCertificate 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，从客户端发出的请求获取证书字段（以 X.509 标准指定）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClientCertificate As Byte()
public virtual byte[] GetClientCertificate()
public:
virtual array<unsigned char>^ GetClientCertificate()
abstract GetClientCertificate : unit -> byte[]
override GetClientCertificate : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

包含整个证书内容流的字节数组。

如果未发送证书，则 ClientCertificate 集合返回空内容。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetClientCertificateBinaryIssuer 方法

HttpWorkerRequest
.
.
::
.
GetClientCertificateBinaryIssuer 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取证书颁发者（以二进制格式表示）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClientCertificateBinaryIssuer As Byte()
public virtual byte[] GetClientCertificateBinaryIssuer()
public:
virtual array<unsigned char>^ GetClientCertificateBinaryIssuer()
abstract GetClientCertificateBinaryIssuer : unit -> byte[]
override GetClientCertificateBinaryIssuer : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

包含以二进制格式表示的证书颁发者的字节数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetClientCertificateEncoding 方法

HttpWorkerRequest
.
.
::
.
GetClientCertificateEncoding 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，返回用于编码客户端证书的 Encoding 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClientCertificateEncoding As Integer
public virtual int GetClientCertificateEncoding()
public:
virtual int GetClientCertificateEncoding()
abstract GetClientCertificateEncoding : unit -> int
override GetClientCertificateEncoding : unit -> int

返回值

类型： System Int32
表示为整数的证书编码。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetClientCertificatePublicKey 方法

HttpWorkerRequest
.
.
::
.
GetClientCertificatePublicKey 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，获取与客户端证书关联的 PublicKey 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClientCertificatePublicKey As Byte()
public virtual byte[] GetClientCertificatePublicKey()
public:
virtual array<unsigned char>^ GetClientCertificatePublicKey()
abstract GetClientCertificatePublicKey : unit -> byte[]
override GetClientCertificatePublicKey : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

一个 PublicKey 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetClientCertificateValidFrom 方法

HttpWorkerRequest
.
.
::
.
GetClientCertificateValidFrom 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，则获取证书开始生效的日期。此日期随区域设置的不同而不同。 在派生类中被重写时，则获取证书开始生效的日期。此日期随区域设置的不同而不同。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClientCertificateValidFrom As DateTime
public virtual DateTime GetClientCertificateValidFrom()
public:
virtual DateTime GetClientCertificateValidFrom()
abstract GetClientCertificateValidFrom : unit -> DateTime
override GetClientCertificateValidFrom : unit -> DateTime

返回值

类型： System DateTime
表示证书生效时间的 DateTime 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetClientCertificateValidUntil 方法

HttpWorkerRequest
.
.
::
.
GetClientCertificateValidUntil 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取证书到期日期。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetClientCertificateValidUntil As DateTime
public virtual DateTime GetClientCertificateValidUntil()
public:
virtual DateTime GetClientCertificateValidUntil()
abstract GetClientCertificateValidUntil : unit -> DateTime
override GetClientCertificateValidUntil : unit -> DateTime

返回值

类型： System DateTime
表示证书失效日期的 DateTime 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetConnectionID 方法

HttpWorkerRequest
.
.
::
.
GetConnectionID 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，返回当前连接的 ID。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetConnectionID As Long
public virtual long GetConnectionID()
public:
virtual long long GetConnectionID()
abstract GetConnectionID : unit -> int64
override GetConnectionID : unit -> int64

返回值

类型： System Int64
始终返回 0。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetFilePath 方法

HttpWorkerRequest
.
.
::
.
GetFilePath 方法
HttpWorkerRequest 类

在派生类中被重写时，返回所请求的 URI 的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetFilePath As String
public virtual string GetFilePath()
public:
virtual String^ GetFilePath()
abstract GetFilePath : unit -> string
override GetFilePath : unit -> string

返回值

类型： System String
请求的 URI 的路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetFilePathTranslated 方法

HttpWorkerRequest
.
.
::
.
GetFilePathTranslated 方法
HttpWorkerRequest 类

返回请求的 URI 的物理文件路径（并将其从虚拟路径转换成物理路径：例如，从“/proj1/page.aspx”转换成“c:\dir\page.aspx”）

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetFilePathTranslated As String
public virtual string GetFilePathTranslated()
public:
virtual String^ GetFilePathTranslated()
abstract GetFilePathTranslated : unit -> string
override GetFilePathTranslated : unit -> string

返回值

类型： System String
请求的 URI 的已转换的物理文件路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetHttpVerbName 方法

HttpWorkerRequest
.
.
::
.
GetHttpVerbName 方法
HttpWorkerRequest 类

返回请求标头的指定成员。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetHttpVerbName As String
public abstract string GetHttpVerbName()
public:
virtual String^ GetHttpVerbName() abstract
abstract GetHttpVerbName : unit -> string

返回值

类型： System String
请求标头中返回的 HTTP 谓词。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetHttpVersion 方法

HttpWorkerRequest
.
.
::
.
GetHttpVersion 方法
HttpWorkerRequest 类

提供对请求的 HTTP 版本（如“HTTP/1.1”）的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetHttpVersion As String
public abstract string GetHttpVersion()
public:
virtual String^ GetHttpVersion() abstract
abstract GetHttpVersion : unit -> string

返回值

类型： System String
请求标头中返回的 HTTP 版本。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetKnownRequestHeader 方法

HttpWorkerRequest
.
.
::
.
GetKnownRequestHeader 方法
HttpWorkerRequest 类

返回与指定的索引相对应的标准 HTTP 请求标头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetKnownRequestHeader ( _
    index As Integer _
) As String
public virtual string GetKnownRequestHeader(
    int index
)
public:
virtual String^ GetKnownRequestHeader(
    int index
)
abstract GetKnownRequestHeader :
        index:int -> string
override GetKnownRequestHeader :
        index:int -> string

参数

index
类型： System Int32
标头的索引。例如，HeaderAllow 字段。 标头的索引。例如，HeaderAllow 字段。

返回值

类型： System String
HTTP 请求标头。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetKnownRequestHeaderIndex 方法

HttpWorkerRequest
.
.
::
.
GetKnownRequestHeaderIndex 方法
HttpWorkerRequest 类

返回指定的 HTTP 请求标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetKnownRequestHeaderIndex ( _
    header As String _
) As Integer
public static int GetKnownRequestHeaderIndex(
    string header
)
public:
static int GetKnownRequestHeaderIndex(
    String^ header
)
static member GetKnownRequestHeaderIndex :
        header:string -> int

参数

header
类型： System String
标头的名称。

返回值

类型： System Int32
在 header 参数中指定的 HTTP 请求标头的索引号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetKnownRequestHeaderName 方法

HttpWorkerRequest
.
.
::
.
GetKnownRequestHeaderName 方法
HttpWorkerRequest 类

返回指定的 HTTP 请求标头的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetKnownRequestHeaderName ( _
    index As Integer _
) As String
public static string GetKnownRequestHeaderName(
    int index
)
public:
static String^ GetKnownRequestHeaderName(
    int index
)
static member GetKnownRequestHeaderName :
        index:int -> string

参数

index
类型： System Int32
标头的索引号。

返回值

类型： System String
在 index 参数中指定的 HTTP 请求标头的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetKnownResponseHeaderIndex 方法

HttpWorkerRequest
.
.
::
.
GetKnownResponseHeaderIndex 方法
HttpWorkerRequest 类

返回指定的 HTTP 响应标头的索引号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetKnownResponseHeaderIndex ( _
    header As String _
) As Integer
public static int GetKnownResponseHeaderIndex(
    string header
)
public:
static int GetKnownResponseHeaderIndex(
    String^ header
)
static member GetKnownResponseHeaderIndex :
        header:string -> int

参数

header
类型： System String
HTTP 标头的名称。

返回值

类型： System Int32
在 header 参数中指定的 HTTP 响应标头的索引号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetKnownResponseHeaderName 方法

HttpWorkerRequest
.
.
::
.
GetKnownResponseHeaderName 方法
HttpWorkerRequest 类

返回指定的 HTTP 响应标头的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetKnownResponseHeaderName ( _
    index As Integer _
) As String
public static string GetKnownResponseHeaderName(
    int index
)
public:
static String^ GetKnownResponseHeaderName(
    int index
)
static member GetKnownResponseHeaderName :
        index:int -> string

参数

index
类型： System Int32
标头的索引号。

返回值

类型： System String
在 index 参数中指定的 HTTP 响应标头的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetLocalAddress 方法

HttpWorkerRequest
.
.
::
.
GetLocalAddress 方法
HttpWorkerRequest 类

提供对请求标头的指定成员的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetLocalAddress As String
public abstract string GetLocalAddress()
public:
virtual String^ GetLocalAddress() abstract
abstract GetLocalAddress : unit -> string

返回值

类型： System String
请求标头中返回的服务器 IP 地址。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetLocalPort 方法

HttpWorkerRequest
.
.
::
.
GetLocalPort 方法
HttpWorkerRequest 类

提供对请求标头的指定成员的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetLocalPort As Integer
public abstract int GetLocalPort()
public:
virtual int GetLocalPort() abstract
abstract GetLocalPort : unit -> int

返回值

类型： System Int32
请求标头中返回的服务器端口号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetPathInfo 方法

HttpWorkerRequest
.
.
::
.
GetPathInfo 方法
HttpWorkerRequest 类

返回具有 URL 扩展的资源的其他路径信息。即对于路径 /virdir/page.html/tail，GetPathInfo 值为 /tail。 返回具有 URL 扩展的资源的其他路径信息。即对于路径 /virdir/page.html/tail，GetPathInfo 值为 /tail。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetPathInfo As String
public virtual string GetPathInfo()
public:
virtual String^ GetPathInfo()
abstract GetPathInfo : unit -> string
override GetPathInfo : unit -> string

返回值

类型： System String
资源的附加路径信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetPreloadedEntityBody 方法

HttpWorkerRequest
.
.
::
.
GetPreloadedEntityBody 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

已重载。返回 HTTP 请求正文当前已被读取的部分。 已重载。返回 HTTP 请求正文当前已被读取的部分。

名称 说明
页首

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetPreloadedEntityBody 方法

HttpWorkerRequest
.
.
::
.
GetPreloadedEntityBody 方法
HttpWorkerRequest 类

返回 HTTP 请求正文已被读取的部分。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetPreloadedEntityBody As Byte()
public virtual byte[] GetPreloadedEntityBody()
public:
virtual array<unsigned char>^ GetPreloadedEntityBody()
abstract GetPreloadedEntityBody : unit -> byte[]
override GetPreloadedEntityBody : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

HTTP 请求正文已被读取的部分。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
GetPreloadedEntityBody 重载
System.Web 命名空间


HttpWorkerRequest ..::.GetPreloadedEntityBody 方法 ( array<Byte >[]()[], Int32)

HttpWorkerRequest
.
.
::
.
GetPreloadedEntityBody 方法 (
array<
Byte
>
[]
()
[]
, Int32)
HttpWorkerRequest 类

使用指定的缓冲区数据和字节偏移量获取 HTTP 请求正文当前已被读取的部分。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetPreloadedEntityBody ( _
    buffer As Byte(), _
    offset As Integer _
) As Integer
public virtual int GetPreloadedEntityBody(
    byte[] buffer,
    int offset
)
public:
virtual int GetPreloadedEntityBody(
    array<unsigned char>^ buffer,
    int offset
)
abstract GetPreloadedEntityBody :
        buffer:byte[] *
        offset:int -> int
override GetPreloadedEntityBody :
        buffer:byte[] *
        offset:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

要读取的数据。
offset
类型： System Int32
开始读取的位置的字节偏移量。

返回值

类型： System Int32
HTTP 请求正文已被读取的部分。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
GetPreloadedEntityBody 重载
System.Web 命名空间


HttpWorkerRequest ..::.GetPreloadedEntityBodyLength 方法

HttpWorkerRequest
.
.
::
.
GetPreloadedEntityBodyLength 方法
HttpWorkerRequest 类

获取 HTTP 请求正文当前已被读取部分的长度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetPreloadedEntityBodyLength As Integer
public virtual int GetPreloadedEntityBodyLength()
public:
virtual int GetPreloadedEntityBodyLength()
abstract GetPreloadedEntityBodyLength : unit -> int
override GetPreloadedEntityBodyLength : unit -> int

返回值

类型： System Int32
一个整数，包含当前已读取的 HTTP 请求正文的长度。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetProtocol 方法

HttpWorkerRequest
.
.
::
.
GetProtocol 方法
HttpWorkerRequest 类

在派生类中被重写时，返回 HTTP 协议（HTTP 或 HTTPS）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetProtocol As String
public virtual string GetProtocol()
public:
virtual String^ GetProtocol()
abstract GetProtocol : unit -> string
override GetProtocol : unit -> string

返回值

类型： System String
如果 IsSecure 方法为 true，则为 HTTPS；否则，为 HTTP。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetQueryString 方法

HttpWorkerRequest
.
.
::
.
GetQueryString 方法
HttpWorkerRequest 类

返回请求 URL 中指定的查询字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetQueryString As String
public abstract string GetQueryString()
public:
virtual String^ GetQueryString() abstract
abstract GetQueryString : unit -> string

返回值

类型： System String
请求查询字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetQueryStringRawBytes 方法

HttpWorkerRequest
.
.
::
.
GetQueryStringRawBytes 方法
HttpWorkerRequest 类

在派生类中被重写时，以字节数组的形式返回响应查询字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetQueryStringRawBytes As Byte()
public virtual byte[] GetQueryStringRawBytes()
public:
virtual array<unsigned char>^ GetQueryStringRawBytes()
abstract GetQueryStringRawBytes : unit -> byte[]
override GetQueryStringRawBytes : unit -> byte[]

返回值

类型：
array<
System Byte
>
[]
()
[]

包含响应的字节数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetRawUrl 方法

HttpWorkerRequest
.
.
::
.
GetRawUrl 方法
HttpWorkerRequest 类

返回附加了查询字符串的请求标头中包含的 URL 路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetRawUrl As String
public abstract string GetRawUrl()
public:
virtual String^ GetRawUrl() abstract
abstract GetRawUrl : unit -> string

返回值

类型： System String
请求标头的原始 URL 路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetRemoteAddress 方法

HttpWorkerRequest
.
.
::
.
GetRemoteAddress 方法
HttpWorkerRequest 类

提供对请求标头的指定成员的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetRemoteAddress As String
public abstract string GetRemoteAddress()
public:
virtual String^ GetRemoteAddress() abstract
abstract GetRemoteAddress : unit -> string

返回值

类型： System String
客户端的 IP 地址。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetRemoteName 方法

HttpWorkerRequest
.
.
::
.
GetRemoteName 方法
HttpWorkerRequest 类

在派生类中被重写时，返回客户端计算机的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetRemoteName As String
public virtual string GetRemoteName()
public:
virtual String^ GetRemoteName()
abstract GetRemoteName : unit -> string
override GetRemoteName : unit -> string

返回值

类型： System String
客户端计算机的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetRemotePort 方法

HttpWorkerRequest
.
.
::
.
GetRemotePort 方法
HttpWorkerRequest 类

提供对请求标头的指定成员的访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetRemotePort As Integer
public abstract int GetRemotePort()
public:
virtual int GetRemotePort() abstract
abstract GetRemotePort : unit -> int

返回值

类型： System Int32
客户端的 HTTP 端口号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetRequestReason 方法

HttpWorkerRequest
.
.
::
.
GetRequestReason 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在派生类中被重写时，返回请求的原因。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetRequestReason As Integer
public virtual int GetRequestReason()
public:
virtual int GetRequestReason()
abstract GetRequestReason : unit -> int
override GetRequestReason : unit -> int

返回值

类型： System Int32
原因代码。默认值为 ReasonResponseCacheMiss。 原因代码。默认值为 ReasonResponseCacheMiss。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetServerName 方法

HttpWorkerRequest
.
.
::
.
GetServerName 方法
HttpWorkerRequest 类

在派生类中被重写时，返回本地服务器的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetServerName As String
public virtual string GetServerName()
public:
virtual String^ GetServerName()
abstract GetServerName : unit -> string
override GetServerName : unit -> string

返回值

类型： System String
本地服务器的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetServerVariable 方法

HttpWorkerRequest
.
.
::
.
GetServerVariable 方法
HttpWorkerRequest 类

从与请求关联的服务器变量词典返回单个服务器变量。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetServerVariable ( _
    name As String _
) As String
public virtual string GetServerVariable(
    string name
)
public:
virtual String^ GetServerVariable(
    String^ name
)
abstract GetServerVariable :
        name:string -> string
override GetServerVariable :
        name:string -> string

参数

name
类型： System String
请求的服务器变量的名称。

返回值

类型： System String
请求的服务器变量。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetStatusDescription 方法

HttpWorkerRequest
.
.
::
.
GetStatusDescription 方法
HttpWorkerRequest 类

返回一个字符串，该字符串描述指定的 HTTP 状态代码的名称。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetStatusDescription ( _
    code As Integer _
) As String
public static string GetStatusDescription(
    int code
)
public:
static String^ GetStatusDescription(
    int code
)
static member GetStatusDescription :
        code:int -> string

参数

code
类型： System Int32
HTTP 状态代码。

返回值

类型： System String
状态说明。例如，GetStatusDescription (404) 返回“未找到”。 状态说明。例如，GetStatusDescription (404) 返回“未找到”。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetTotalEntityBodyLength 方法

HttpWorkerRequest
.
.
::
.
GetTotalEntityBodyLength 方法
HttpWorkerRequest 类

获取整个 HTTP 请求正文的长度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetTotalEntityBodyLength As Integer
public virtual int GetTotalEntityBodyLength()
public:
virtual int GetTotalEntityBodyLength()
abstract GetTotalEntityBodyLength : unit -> int
override GetTotalEntityBodyLength : unit -> int

返回值

类型： System Int32
包含整个 HTTP 请求正文的长度的整数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetUnknownRequestHeader 方法

HttpWorkerRequest
.
.
::
.
GetUnknownRequestHeader 方法
HttpWorkerRequest 类

返回非标准的 HTTP 请求标头值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetUnknownRequestHeader ( _
    name As String _
) As String
public virtual string GetUnknownRequestHeader(
    string name
)
public:
virtual String^ GetUnknownRequestHeader(
    String^ name
)
abstract GetUnknownRequestHeader :
        name:string -> string
override GetUnknownRequestHeader :
        name:string -> string

参数

name
类型： System String
标头名称。

返回值

类型： System String
标头值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetUnknownRequestHeaders 方法

HttpWorkerRequest
.
.
::
.
GetUnknownRequestHeaders 方法
HttpWorkerRequest 类

获取所有非标准的 HTTP 标头的名称/值对。

此 API 不兼容 CLS。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<CLSCompliantAttribute(False)> _
Public Overridable Function GetUnknownRequestHeaders As String()()
[CLSCompliantAttribute(false)]
public virtual string[][] GetUnknownRequestHeaders()
[CLSCompliantAttribute(false)]
public:
virtual array<array<String^>^>^ GetUnknownRequestHeaders()
[<CLSCompliantAttribute(false)>]
abstract GetUnknownRequestHeaders : unit -> string[][]
[<CLSCompliantAttribute(false)>]
override GetUnknownRequestHeaders : unit -> string[][]

返回值

类型：
array<
array<
System String
>
[]
()
[]
>
[]
()
[]

标头的名称/值对的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetUriPath 方法

HttpWorkerRequest
.
.
::
.
GetUriPath 方法
HttpWorkerRequest 类

返回请求的 URI 的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetUriPath As String
public abstract string GetUriPath()
public:
virtual String^ GetUriPath() abstract
abstract GetUriPath : unit -> string

返回值

类型： System String
请求的 URI 的路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetUrlContextID 方法

HttpWorkerRequest
.
.
::
.
GetUrlContextID 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

当在派生类中被重写时，返回当前连接的上下文 ID。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetUrlContextID As Long
public virtual long GetUrlContextID()
public:
virtual long long GetUrlContextID()
abstract GetUrlContextID : unit -> int64
override GetUrlContextID : unit -> int64

返回值

类型： System Int64
始终返回 0。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetUserToken 方法

HttpWorkerRequest
.
.
::
.
GetUserToken 方法
HttpWorkerRequest 类

在派生类中被重写时，返回客户端的模拟标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetUserToken As IntPtr
public virtual IntPtr GetUserToken()
public:
virtual IntPtr GetUserToken()
abstract GetUserToken : unit -> IntPtr
override GetUserToken : unit -> IntPtr

返回值

类型： System IntPtr
表示客户端的模拟标记的值。默认值为 0。 表示客户端的模拟标记的值。默认值为 0。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.GetVirtualPathToken 方法

HttpWorkerRequest
.
.
::
.
GetVirtualPathToken 方法
HttpWorkerRequest 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取请求虚拟路径的模拟标记。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetVirtualPathToken As IntPtr
public virtual IntPtr GetVirtualPathToken()
public:
virtual IntPtr GetVirtualPathToken()
abstract GetVirtualPathToken : unit -> IntPtr
override GetVirtualPathToken : unit -> IntPtr

返回值

类型： System IntPtr
请求虚拟路径的标记的非托管内存指针。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HasEntityBody 方法

HttpWorkerRequest
.
.
::
.
HasEntityBody 方法
HttpWorkerRequest 类

返回一个值，该值指示请求是否包含正文数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function HasEntityBody As Boolean
public bool HasEntityBody()
public:
bool HasEntityBody()
member HasEntityBody : unit -> bool

返回值

类型： System Boolean
如果请求包含正文数据，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.HeadersSent 方法

HttpWorkerRequest
.
.
::
.
HeadersSent 方法
HttpWorkerRequest 类

返回一个值，该值指示是否已为当前的请求将 HTTP 响应标头发送到客户端。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function HeadersSent As Boolean
public virtual bool HeadersSent()
public:
virtual bool HeadersSent()
abstract HeadersSent : unit -> bool
override HeadersSent : unit -> bool

返回值

类型： System Boolean
如果 HTTP 响应标头已发送到客户端，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.IsClientConnected 方法

HttpWorkerRequest
.
.
::
.
IsClientConnected 方法
HttpWorkerRequest 类

返回一个值，该值指示客户端连接是否仍处于活动状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsClientConnected As Boolean
public virtual bool IsClientConnected()
public:
virtual bool IsClientConnected()
abstract IsClientConnected : unit -> bool
override IsClientConnected : unit -> bool

返回值

类型： System Boolean
如果客户端连接仍处于活动状态，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.IsEntireEntityBodyIsPreloaded 方法

HttpWorkerRequest
.
.
::
.
IsEntireEntityBodyIsPreloaded 方法
HttpWorkerRequest 类

返回一个值，该值指示是否所有请求数据都可用，以及是否不需要对客户端进行进一步读取。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsEntireEntityBodyIsPreloaded As Boolean
public virtual bool IsEntireEntityBodyIsPreloaded()
public:
virtual bool IsEntireEntityBodyIsPreloaded()
abstract IsEntireEntityBodyIsPreloaded : unit -> bool
override IsEntireEntityBodyIsPreloaded : unit -> bool

返回值

类型： System Boolean
如果所有请求数据都可用，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.IsSecure 方法

HttpWorkerRequest
.
.
::
.
IsSecure 方法
HttpWorkerRequest 类

返回一个指示连接是否使用 SSL 的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsSecure As Boolean
public virtual bool IsSecure()
public:
virtual bool IsSecure()
abstract IsSecure : unit -> bool
override IsSecure : unit -> bool

返回值

类型： System Boolean
如果连接是 SSL 连接，则为 true；否则为 false。默认值为 false。 如果连接是 SSL 连接，则为 true；否则为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.MapPath 方法

HttpWorkerRequest
.
.
::
.
MapPath 方法
HttpWorkerRequest 类

返回与指定虚拟路径相对应的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function MapPath ( _
    virtualPath As String _
) As String
public virtual string MapPath(
    string virtualPath
)
public:
virtual String^ MapPath(
    String^ virtualPath
)
abstract MapPath :
        virtualPath:string -> string
override MapPath :
        virtualPath:string -> string

参数

virtualPath
类型： System String
虚拟路径。

返回值

类型： System String
与 virtualPath 参数中指定的虚拟路径相对应的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.ReadEntityBody 方法

HttpWorkerRequest
.
.
::
.
ReadEntityBody 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

已重载。读取客户端的请求数据（在尚未预加载时）。 已重载。读取客户端的请求数据（在尚未预加载时）。

名称 说明
页首

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.ReadEntityBody 方法 ( array<Byte >[]()[], Int32)

HttpWorkerRequest
.
.
::
.
ReadEntityBody 方法 (
array<
Byte
>
[]
()
[]
, Int32)
HttpWorkerRequest 类

读取客户端的请求数据（在尚未预加载时）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function ReadEntityBody ( _
    buffer As Byte(), _
    size As Integer _
) As Integer
public virtual int ReadEntityBody(
    byte[] buffer,
    int size
)
public:
virtual int ReadEntityBody(
    array<unsigned char>^ buffer,
    int size
)
abstract ReadEntityBody :
        buffer:byte[] *
        size:int -> int
override ReadEntityBody :
        buffer:byte[] *
        size:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

将数据读入的字节数组。
size
类型： System Int32
最多读取的字节数。

返回值

类型： System Int32
读取的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
ReadEntityBody 重载
System.Web 命名空间


HttpWorkerRequest ..::.ReadEntityBody 方法 ( array<Byte >[]()[], Int32, Int32)

HttpWorkerRequest
.
.
::
.
ReadEntityBody 方法 (
array<
Byte
>
[]
()
[]
, Int32, Int32)
HttpWorkerRequest 类

使用指定的要从中读取数据的缓冲区、字节偏移量和最大字节数从客户端读取请求数据（当未预先加载时）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function ReadEntityBody ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer _
) As Integer
public virtual int ReadEntityBody(
    byte[] buffer,
    int offset,
    int size
)
public:
virtual int ReadEntityBody(
    array<unsigned char>^ buffer,
    int offset,
    int size
)
abstract ReadEntityBody :
        buffer:byte[] *
        offset:int *
        size:int -> int
override ReadEntityBody :
        buffer:byte[] *
        offset:int *
        size:int -> int

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

将数据读入的字节数组。
offset
类型： System Int32
开始读取的位置的字节偏移量。
size
类型： System Int32
最多读取的字节数。

返回值

类型： System Int32
读取的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
ReadEntityBody 重载
System.Web 命名空间


HttpWorkerRequest ..::.SendCalculatedContentLength 方法

HttpWorkerRequest
.
.
::
.
SendCalculatedContentLength 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

将 Content-LengthHTTP 标头添加到响应。

名称 说明
页首

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.SendCalculatedContentLength 方法 (Int32)

HttpWorkerRequest
.
.
::
.
SendCalculatedContentLength 方法 (Int32)
HttpWorkerRequest 类

将 Content-Length HTTP 标头添加到小于或等于 2 GB 的消息正文的响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SendCalculatedContentLength ( _
    contentLength As Integer _
)
public virtual void SendCalculatedContentLength(
    int contentLength
)
public:
virtual void SendCalculatedContentLength(
    int contentLength
)
abstract SendCalculatedContentLength :
        contentLength:int -> unit
override SendCalculatedContentLength :
        contentLength:int -> unit

参数

contentLength
类型： System Int32
响应的长度（以字节为单位）。

如果未显式设置内容长度，则此方法会让 HttpWorkerRequest 实例将 Content-Length HTTP 标头添加到响应。

当响应消息正文的大小小于或等于 2 GB 时，可使用此重载设置 Content-Length 标头。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
SendCalculatedContentLength 重载
System.Web 命名空间
SendCalculatedContentLength


HttpWorkerRequest ..::.SendCalculatedContentLength 方法 (Int64)

HttpWorkerRequest
.
.
::
.
SendCalculatedContentLength 方法 (Int64)
HttpWorkerRequest 类

将 Content-Length HTTP 标头添加到大于 2 GB 的消息正文的响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SendCalculatedContentLength ( _
    contentLength As Long _
)
public virtual void SendCalculatedContentLength(
    long contentLength
)
public:
virtual void SendCalculatedContentLength(
    long long contentLength
)
abstract SendCalculatedContentLength :
        contentLength:int64 -> unit
override SendCalculatedContentLength :
        contentLength:int64 -> unit

参数

contentLength
类型： System Int64
响应的长度（以字节为单位）。

如果未显式设置内容长度，则此方法会让 HttpWorkerRequest 实例将 Content-Length HTTP 标头添加到响应。此默认实现会调用使用类型为 Int32 的 contentLength 参数的重载。 如果未显式设置内容长度，则此方法会让 HttpWorkerRequest 实例将 Content-Length HTTP 标头添加到响应。此默认实现会调用使用类型为 Int32 的 contentLength 参数的重载。

使用此重载可为大于 2 GB 的消息正文指定响应。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
SendCalculatedContentLength 重载
System.Web 命名空间
SendCalculatedContentLength


HttpWorkerRequest ..::.SendKnownResponseHeader 方法

HttpWorkerRequest
.
.
::
.
SendKnownResponseHeader 方法
HttpWorkerRequest 类

将标准 HTTP 标头添加到响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub SendKnownResponseHeader ( _
    index As Integer, _
    value As String _
)
public abstract void SendKnownResponseHeader(
    int index,
    string value
)
public:
virtual void SendKnownResponseHeader(
    int index,
    String^ value
) abstract
abstract SendKnownResponseHeader :
        index:int *
        value:string -> unit

参数

index
类型： System Int32
标头索引。例如 HeaderContentLength。 标头索引。例如 HeaderContentLength。
value
类型： System String
标头的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.SendResponseFromFile 方法

HttpWorkerRequest
.
.
::
.
SendResponseFromFile 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

将文件的内容添加到响应。

名称 说明
页首

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.SendResponseFromFile 方法 (IntPtr, Int64, Int64)

HttpWorkerRequest
.
.
::
.
SendResponseFromFile 方法 (IntPtr, Int64, Int64)
HttpWorkerRequest 类

将指定文件的内容添加到响应并指定文件中的起始位置和要发送的字节数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub SendResponseFromFile ( _
    handle As IntPtr, _
    offset As Long, _
    length As Long _
)
public abstract void SendResponseFromFile(
    IntPtr handle,
    long offset,
    long length
)
public:
virtual void SendResponseFromFile(
    IntPtr handle,
    long long offset,
    long long length
) abstract
abstract SendResponseFromFile :
        handle:IntPtr *
        offset:int64 *
        length:int64 -> unit

参数

handle
类型： System IntPtr
要发送的文件的句柄。
offset
类型： System Int64
文件中的起始位置。
length
类型： System Int64
要发送的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
SendResponseFromFile 重载
System.Web 命名空间


HttpWorkerRequest ..::.SendResponseFromFile 方法 (String, Int64, Int64)

HttpWorkerRequest
.
.
::
.
SendResponseFromFile 方法 (String, Int64, Int64)
HttpWorkerRequest 类

将指定文件的内容添加到响应并指定文件中的起始位置和要发送的字节数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub SendResponseFromFile ( _
    filename As String, _
    offset As Long, _
    length As Long _
)
public abstract void SendResponseFromFile(
    string filename,
    long offset,
    long length
)
public:
virtual void SendResponseFromFile(
    String^ filename,
    long long offset,
    long long length
) abstract
abstract SendResponseFromFile :
        filename:string *
        offset:int64 *
        length:int64 -> unit

参数

filename
类型： System String
要发送的文件的名称。
offset
类型： System Int64
文件中的起始位置。
length
类型： System Int64
要发送的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
SendResponseFromFile 重载
System.Web 命名空间


HttpWorkerRequest ..::.SendResponseFromMemory 方法

HttpWorkerRequest
.
.
::
.
SendResponseFromMemory 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

将内存块的内容添加到响应。

名称 说明
页首

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.SendResponseFromMemory 方法 ( array<Byte >[]()[], Int32)

HttpWorkerRequest
.
.
::
.
SendResponseFromMemory 方法 (
array<
Byte
>
[]
()
[]
, Int32)
HttpWorkerRequest 类

将字节数组中指定数目的字节添加到响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub SendResponseFromMemory ( _
    data As Byte(), _
    length As Integer _
)
public abstract void SendResponseFromMemory(
    byte[] data,
    int length
)
public:
virtual void SendResponseFromMemory(
    array<unsigned char>^ data,
    int length
) abstract
abstract SendResponseFromMemory :
        data:byte[] *
        length:int -> unit

参数

data
类型：
array<
System Byte
>
[]
()
[]

要发送的字节数组。
length
类型： System Int32
要发送的字节数（从第一个字节开始）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
SendResponseFromMemory 重载
System.Web 命名空间


HttpWorkerRequest ..::.SendResponseFromMemory 方法 (IntPtr, Int32)

HttpWorkerRequest
.
.
::
.
SendResponseFromMemory 方法 (IntPtr, Int32)
HttpWorkerRequest 类

将内存块中指定数目的字节添加到响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SendResponseFromMemory ( _
    data As IntPtr, _
    length As Integer _
)
public virtual void SendResponseFromMemory(
    IntPtr data,
    int length
)
public:
virtual void SendResponseFromMemory(
    IntPtr data,
    int length
)
abstract SendResponseFromMemory :
        data:IntPtr *
        length:int -> unit
override SendResponseFromMemory :
        data:IntPtr *
        length:int -> unit

参数

data
类型： System IntPtr
指向内存块的非托管指针。
length
类型： System Int32
要发送的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
SendResponseFromMemory 重载
System.Web 命名空间


HttpWorkerRequest ..::.SendStatus 方法

HttpWorkerRequest
.
.
::
.
SendStatus 方法
HttpWorkerRequest 类

指定响应的 HTTP 状态代码和状态说明，例如 SendStatus(200, "Ok")。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub SendStatus ( _
    statusCode As Integer, _
    statusDescription As String _
)
public abstract void SendStatus(
    int statusCode,
    string statusDescription
)
public:
virtual void SendStatus(
    int statusCode,
    String^ statusDescription
) abstract
abstract SendStatus :
        statusCode:int *
        statusDescription:string -> unit

参数

statusCode
类型： System Int32
要发送的状态代码
statusDescription
类型： System String
要发送的状态说明。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.SendUnknownResponseHeader 方法

HttpWorkerRequest
.
.
::
.
SendUnknownResponseHeader 方法
HttpWorkerRequest 类

将非标准 HTTP 标头添加到响应。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Sub SendUnknownResponseHeader ( _
    name As String, _
    value As String _
)
public abstract void SendUnknownResponseHeader(
    string name,
    string value
)
public:
virtual void SendUnknownResponseHeader(
    String^ name,
    String^ value
) abstract
abstract SendUnknownResponseHeader :
        name:string *
        value:string -> unit

参数

name
类型： System String
要发送的标头的名称。
value
类型： System String
标头的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.SetEndOfSendNotification 方法

HttpWorkerRequest
.
.
::
.
SetEndOfSendNotification 方法
HttpWorkerRequest 类

在发送所有响应数据后注册可选通知。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub SetEndOfSendNotification ( _
    callback As HttpWorkerRequest..::..EndOfSendNotification, _
    extraData As Object _
)
public virtual void SetEndOfSendNotification(
    HttpWorkerRequest..::..EndOfSendNotification callback,
    Object extraData
)
public:
virtual void SetEndOfSendNotification(
    HttpWorkerRequest..::..EndOfSendNotification^ callback,
    Object^ extraData
)
abstract SetEndOfSendNotification :
        callback:HttpWorkerRequest..::..EndOfSendNotification *
        extraData:Object -> unit
override SetEndOfSendNotification :
        callback:HttpWorkerRequest..::..EndOfSendNotification *
        extraData:Object -> unit

参数

callback
类型： System.Web HttpWorkerRequest EndOfSendNotification
在发送所有数据（带外）后调用的通知回调。
extraData
类型： System Object
回调的附加参数。

在实现缓冲区回收时此方法可能有所帮助。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest 属性

HttpWorkerRequest 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWorkerRequest 类

HttpWorkerRequest 类型公开以下成员。

名称 说明
页首

参考

HttpWorkerRequest 类
System.Web 命名空间


HttpWorkerRequest ..::.MachineConfigPath 属性

HttpWorkerRequest
.
.
::
.
MachineConfigPath 属性
HttpWorkerRequest 类

获取 Machine.config 文件的完整物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MachineConfigPath As String
    Get
public virtual string MachineConfigPath { get; }
public:
virtual property String^ MachineConfigPath {
    String^ get ();
}
abstract MachineConfigPath : string
override MachineConfigPath : string

属性值

类型： System String
Machine.config 文件的物理路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.MachineInstallDirectory 属性

HttpWorkerRequest
.
.
::
.
MachineInstallDirectory 属性
HttpWorkerRequest 类

获取 ASP.NET 二进制文件的安装目录的物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property MachineInstallDirectory As String
    Get
public virtual string MachineInstallDirectory { get; }
public:
virtual property String^ MachineInstallDirectory {
    String^ get ();
}
abstract MachineInstallDirectory : string
override MachineInstallDirectory : string

属性值

类型： System String
ASP.NET 二进制文件的物理目录。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间


HttpWorkerRequest ..::.RequestTraceIdentifier 属性

HttpWorkerRequest
.
.
::
.
RequestTraceIdentifier 属性
HttpWorkerRequest 类

获取当前请求的 Windows 跟踪 ID 的对应事件跟踪。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RequestTraceIdentifier As Guid
    Get
public virtual Guid RequestTraceIdentifier { get; }
public:
virtual property Guid RequestTraceIdentifier {
    Guid get ();
}
abstract RequestTraceIdentifier : Guid
override RequestTraceIdentifier : Guid

属性值

类型： System Guid
当前 ASP.NET 请求的跟踪 ID。

ASP.NET 请求使用与对应的 IIS 请求相同的跟踪 ID 来执行。这有助于在请求的整个生存期（从 HTTP.SYS 内核模式 HTTP 侦听器开始，经过 IIS 服务，再进入 ASP.NET 系统）中跟踪请求。IIS 提供的 ID 因平台和服务包级别而异。 ASP.NET 请求使用与对应的 IIS 请求相同的跟踪 ID 来执行。这有助于在请求的整个生存期（从 HTTP.SYS 内核模式 HTTP 侦听器开始，经过 IIS 服务，再进入 ASP.NET 系统）中跟踪请求。IIS 提供的 ID 因平台和服务包级别而异。 ASP.NET 请求使用与对应的 IIS 请求相同的跟踪 ID 来执行。这有助于在请求的整个生存期（从 HTTP.SYS 内核模式 HTTP 侦听器开始，经过 IIS 服务，再进入 ASP.NET 系统）中跟踪请求。IIS 提供的 ID 因平台和服务包级别而异。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
CorrelationManager
HttpRuntime
TraceListener


HttpWorkerRequest ..::.RootWebConfigPath 属性

HttpWorkerRequest
.
.
::
.
RootWebConfigPath 属性
HttpWorkerRequest 类

获取根 Web.config 文件的完整物理路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RootWebConfigPath As String
    Get
public virtual string RootWebConfigPath { get; }
public:
virtual property String^ RootWebConfigPath {
    String^ get ();
}
abstract RootWebConfigPath : string
override RootWebConfigPath : string

属性值

类型： System String
根 Web.config 文件的物理路径。

如果在实现自己的承载环境，您可以重写此属性以返回您的环境的根配置文件的位置。SimpleWorkerRequest 类就是一个例子，它提供 HttpWorkerRequest 的简单实现。SimpleWorkerRequest 类的 SimpleWorkerRequest..::.RootWebConfigPath 属性重写 HttpWorkerRequest 类的 RootWebConfigPath 属性。 如果在实现自己的承载环境，您可以重写此属性以返回您的环境的根配置文件的位置。SimpleWorkerRequest 类就是一个例子，它提供 HttpWorkerRequest 的简单实现。SimpleWorkerRequest 类的 SimpleWorkerRequest..::.RootWebConfigPath 属性重写 HttpWorkerRequest 类的 RootWebConfigPath 属性。 如果在实现自己的承载环境，您可以重写此属性以返回您的环境的根配置文件的位置。SimpleWorkerRequest 类就是一个例子，它提供 HttpWorkerRequest 的简单实现。SimpleWorkerRequest 类的 SimpleWorkerRequest..::.RootWebConfigPath 属性重写 HttpWorkerRequest 类的 RootWebConfigPath 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

HttpWorkerRequest 类
HttpWorkerRequest 成员
System.Web 命名空间
SimpleWorkerRequest RootWebConfigPath

其他资源

ASP.NET 配置概述


HttpWorkerRequest ..::.EndOfSendNotification 委托

HttpWorkerRequest
.
.
::
.
EndOfSendNotification 委托
HttpWorkerRequest 类

表示用于在完成发送响应后通知调用方的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Sub EndOfSendNotification ( _
    wr As HttpWorkerRequest, _
    extraData As Object _
)
public delegate void EndOfSendNotification(
    HttpWorkerRequest wr,
    Object extraData
)
public delegate void EndOfSendNotification(
    HttpWorkerRequest^ wr,
    Object^ extraData
)
type EndOfSendNotification =
    delegate of
        wr:HttpWorkerRequest *
        extraData:Object -> unit

参数

wr
类型： System.Web HttpWorkerRequest
当前的 HttpWorkerRequest。
extraData
类型： System Object
处理请求所需的任何其他数据。

宿主可以使用该通知实现缓冲区回收。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
HttpRuntime


HttpWriter 类

HttpWriter 类
成员

提供通过内部 HttpResponse 对象访问的 TextWriter 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class HttpWriter _
    Inherits TextWriter
public sealed class HttpWriter : TextWriter
public ref class HttpWriter sealed : public TextWriter
[<SealedAttribute>]
type HttpWriter =
    class
        inherit TextWriter
    end

内部 HttpResponse 对象的 Write 方法对 HttpWriter 对象进行内部调用。

System.Web System.Web..::.HttpWriterHttpWriter
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 成员
System.Web 命名空间
HtmlTextWriter
HttpResponse


HttpWriter 成员

HttpWriter 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

提供通过内部 HttpResponse 对象访问的 TextWriter 对象。

HttpWriter 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

HttpWriter 类
System.Web 命名空间


HttpWriter 字段

HttpWriter 字段
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

HttpWriter 类型公开以下成员。

名称 说明
页首

参考

HttpWriter 类
System.Web 命名空间


HttpWriter 方法

HttpWriter 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

HttpWriter 类型公开以下成员。

名称 说明
页首

参考

HttpWriter 类
System.Web 命名空间


HttpWriter ..::.Close 方法

HttpWriter
.
.
::
.
Close 方法
HttpWriter 类

将所有缓冲处理的输出发送到 HTTP 输出流并关闭套接字连接。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Close
public override void Close()
public:
virtual void Close() override
abstract Close : unit -> unit
override Close : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.Dispose 方法

HttpWriter
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

释放由 TextWriter 对象占用的所有资源。

名称 说明
页首

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.Flush 方法

HttpWriter
.
.
::
.
Flush 方法
HttpWriter 类

将所有缓冲处理的输出发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Flush
public override void Flush()
public:
virtual void Flush() override
abstract Flush : unit -> unit
override Flush : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.MemberwiseClone 方法

HttpWriter
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

名称 说明
页首

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.Write 方法

HttpWriter
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

将 HTTP 输出发送到客户端。

名称 说明
页首

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.Write 方法 (Char)

HttpWriter
.
.
::
.
Write 方法 (Char)
HttpWriter 类

将单个字符发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    ch As Char _
)
public override void Write(
    char ch
)
public:
virtual void Write(
    wchar_t ch
) override
abstract Write :
        ch:char -> unit
override Write :
        ch:char -> unit

参数

ch
类型： System Char
要发送到 HTTP 输出流的字符。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
Write 重载
System.Web 命名空间
Write


HttpWriter ..::.Write 方法 (Object)

HttpWriter
.
.
::
.
Write 方法 (Object)
HttpWriter 类

将 Object 发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    obj As Object _
)
public override void Write(
    Object obj
)
public:
virtual void Write(
    Object^ obj
) override
abstract Write :
        obj:Object -> unit
override Write :
        obj:Object -> unit

参数

obj
类型： System Object
要发送到 HTTP 输出流的 Object。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
Write 重载
System.Web 命名空间


HttpWriter ..::.Write 方法 (String)

HttpWriter
.
.
::
.
Write 方法 (String)
HttpWriter 类

将一个字符串发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    s As String _
)
public override void Write(
    string s
)
public:
virtual void Write(
    String^ s
) override
abstract Write :
        s:string -> unit
override Write :
        s:string -> unit

参数

s
类型： System String
要发送到 HTTP 输出流的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
Write 重载
System.Web 命名空间
Write


HttpWriter ..::.Write 方法 ( array<Char >[]()[], Int32, Int32)

HttpWriter
.
.
::
.
Write 方法 (
array<
Char
>
[]
()
[]
, Int32, Int32)
HttpWriter 类

将具有指定起始位置和字符数的字符流发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    buffer As Char(), _
    index As Integer, _
    count As Integer _
)
public override void Write(
    char[] buffer,
    int index,
    int count
)
public:
virtual void Write(
    array<wchar_t>^ buffer,
    int index,
    int count
) override
abstract Write :
        buffer:char[] *
        index:int *
        count:int -> unit
override Write :
        buffer:char[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Char
>
[]
()
[]

包含要发送到 HTTP 输出流的字符的内存缓冲区
index
类型： System Int32
要发送的第一个字符的缓冲区位置。
count
类型： System Int32
从 index 指定的位置开始发送的字符数。
异常 | 条件
ArgumentOutOfRangeException | buffer 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - index 小于零。 - 或 - count 小于零。 - 或 - buffer 长度减去 index 小于 count。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
Write 重载
System.Web 命名空间
Write


HttpWriter ..::.WriteBytes 方法

HttpWriter
.
.
::
.
WriteBytes 方法
HttpWriter 类

将具有指定起始位置和字节数的字节流发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub WriteBytes ( _
    buffer As Byte(), _
    index As Integer, _
    count As Integer _
)
public void WriteBytes(
    byte[] buffer,
    int index,
    int count
)
public:
void WriteBytes(
    array<unsigned char>^ buffer,
    int index,
    int count
)
member WriteBytes :
        buffer:byte[] *
        index:int *
        count:int -> unit

参数

buffer
类型：
array<
System Byte
>
[]
()
[]

包含要发送到 HTTP 输出流的字节的内存缓冲区。
index
类型： System Int32
要发送的第一个字节的缓冲区位置。
count
类型： System Int32
从 index 指定的字节位置开始发送的字节数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.WriteLine 方法

HttpWriter
.
.
::
.
WriteLine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

将回车+换行 (CRLF) 字符对发送到 HTTP 输出流。

名称 说明
页首

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter ..::.WriteLine 方法

HttpWriter
.
.
::
.
WriteLine 方法
HttpWriter 类

将回车+换行 (CRLF) 字符对发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteLine
public override void WriteLine()
public:
virtual void WriteLine() override
abstract WriteLine : unit -> unit
override WriteLine : unit -> unit

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
WriteLine 重载
System.Web 命名空间


HttpWriter ..::.WriteString 方法

HttpWriter
.
.
::
.
WriteString 方法
HttpWriter 类

将具有指定起始位置和字符数的字符串发送到 HTTP 输出流。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub WriteString ( _
    s As String, _
    index As Integer, _
    count As Integer _
)
public void WriteString(
    string s,
    int index,
    int count
)
public:
void WriteString(
    String^ s,
    int index,
    int count
)
member WriteString :
        s:string *
        index:int *
        count:int -> unit

参数

s
类型： System String
要发送到 HTTP 输出流的字符串。
index
类型： System Int32
要发送的第一个字节的字符位置。
count
类型： System Int32
从 index 所指定的位置开始要发送的字符数。
异常 | 条件
ArgumentOutOfRangeException | index 小于零。 - 或 - count 小于零。 - 或 - index 与 count 之和大于字符串长度。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


HttpWriter 属性

HttpWriter 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
HttpWriter 类

HttpWriter 类型公开以下成员。

名称 说明
页首

参考

HttpWriter 类
System.Web 命名空间


HttpWriter ..::.Encoding 属性

HttpWriter
.
.
::
.
Encoding 属性
HttpWriter 类

获取 TextWriter 的 Encoding 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property Encoding As Encoding
    Get
public override Encoding Encoding { get; }
public:
virtual property Encoding^ Encoding {
    Encoding^ get () override;
}
abstract Encoding : Encoding
override Encoding : Encoding

属性值

类型： System.Text Encoding
Encoding 类的实例，指示当前响应的字符集。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间
Encoding


HttpWriter ..::.OutputStream 属性

HttpWriter
.
.
::
.
OutputStream 属性
HttpWriter 类

获取直接从 Stream 启用 HTTP 输出的 Stream 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property OutputStream As Stream
    Get
public Stream OutputStream { get; }
public:
property Stream^ OutputStream {
    Stream^ get ();
}
member OutputStream : Stream

属性值

类型： System.IO Stream
Stream 类的实例，包含要发送到客户端的数据。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

HttpWriter 类
HttpWriter 成员
System.Web 命名空间


IHtmlString 接口

IHtmlString 接口
成员

表示不应再次进行编码的 HTML 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Interface IHtmlString
public interface IHtmlString
public interface class IHtmlString
type IHtmlString =  interface end

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

IHtmlString 成员
System.Web 命名空间


IHtmlString 成员

IHtmlString 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHtmlString 接口

表示不应再次进行编码的 HTML 编码的字符串。

IHtmlString 类型公开以下成员。

名称 说明
页首

参考

IHtmlString 接口
System.Web 命名空间


IHtmlString 方法

IHtmlString 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHtmlString 接口

IHtmlString 类型公开以下成员。

名称 说明
页首

参考

IHtmlString 接口
System.Web 命名空间


IHtmlString ..::.ToHtmlString 方法

IHtmlString
.
.
::
.
ToHtmlString 方法
IHtmlString 接口

返回 HTML 编码的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Function ToHtmlString As String
string ToHtmlString()
String^ ToHtmlString()
abstract ToHtmlString : unit -> string

返回值

类型： System String
HTML 编码的字符串。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

IHtmlString 接口
IHtmlString 成员
System.Web 命名空间


IHttpAsyncHandler 接口

IHttpAsyncHandler 接口
成员

定义 HTTP 异步处理程序对象必须实现的协定。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Interface IHttpAsyncHandler _
    Inherits IHttpHandler
public interface IHttpAsyncHandler : IHttpHandler
public interface class IHttpAsyncHandler : IHttpHandler
type IHttpAsyncHandler =
    interface
        interface IHttpHandler
    end

IHttpAsyncHandler 类可通过配置文件的 httpHandlers 配置节与某一文件扩展名或特定的 URL 关联。ASP.NET 结构在接收到相应请求后将实例化并调用处理程序。也可在 .ashx 文件中定义该处理程序，接收到对 .ashx 文件的相应请求后，将执行该处理程序。 IHttpAsyncHandler 类可通过配置文件的 httpHandlers 配置节与某一文件扩展名或特定的 URL 关联。ASP.NET 结构在接收到相应请求后将实例化并调用处理程序。也可在 .ashx 文件中定义该处理程序，接收到对 .ashx 文件的相应请求后，将执行该处理程序。 IHttpAsyncHandler 类可通过配置文件的 httpHandlers 配置节与某一文件扩展名或特定的 URL 关联。ASP.NET 结构在接收到相应请求后将实例化并调用处理程序。也可在 .ashx 文件中定义该处理程序，接收到对 .ashx 文件的相应请求后，将执行该处理程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpAsyncHandler 成员
System.Web 命名空间


IHttpAsyncHandler 成员

IHttpAsyncHandler 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpAsyncHandler 接口

定义 HTTP 异步处理程序对象必须实现的协定。

IHttpAsyncHandler 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IHttpAsyncHandler 接口
System.Web 命名空间


IHttpAsyncHandler 方法

IHttpAsyncHandler 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpAsyncHandler 接口

IHttpAsyncHandler 类型公开以下成员。

名称 说明
页首

参考

IHttpAsyncHandler 接口
System.Web 命名空间


IHttpAsyncHandler ..::.BeginProcessRequest 方法

IHttpAsyncHandler
.
.
::
.
BeginProcessRequest 方法
IHttpAsyncHandler 接口

启动对 HTTP 处理程序的异步调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Function BeginProcessRequest ( _
    context As HttpContext, _
    cb As AsyncCallback, _
    extraData As Object _
) As IAsyncResult
IAsyncResult BeginProcessRequest(
    HttpContext context,
    AsyncCallback cb,
    Object extraData
)
IAsyncResult^ BeginProcessRequest(
    HttpContext^ context,
    AsyncCallback^ cb,
    Object^ extraData
)
abstract BeginProcessRequest :
        context:HttpContext *
        cb:AsyncCallback *
        extraData:Object -> IAsyncResult

参数

context
类型： System.Web HttpContext
一个 HttpContext 对象，该对象提供对用于向 HTTP 请求提供服务的内部服务器对象（如 Request、Response、Session 和 Server）的引用。
cb
类型： System AsyncCallback
异步方法调用完成时要调用的 AsyncCallback。如果 cb 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不调用委托。 异步方法调用完成时要调用的 AsyncCallback。如果 cb 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则不调用委托。
extraData
类型： System Object
处理该请求所需的所有额外数据。

返回值

类型： System IAsyncResult
包含有关进程状态信息的 IAsyncResult。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpAsyncHandler 接口
IHttpAsyncHandler 成员
System.Web 命名空间


IHttpAsyncHandler ..::.EndProcessRequest 方法

IHttpAsyncHandler
.
.
::
.
EndProcessRequest 方法
IHttpAsyncHandler 接口

进程结束时提供异步处理 End 方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Sub EndProcessRequest ( _
    result As IAsyncResult _
)
void EndProcessRequest(
    IAsyncResult result
)
void EndProcessRequest(
    IAsyncResult^ result
)
abstract EndProcessRequest :
        result:IAsyncResult -> unit

参数

result
类型： System IAsyncResult
包含有关进程状态信息的 IAsyncResult。

可使用 EndProcessRequest 获取异步处理期间捕获的所有异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpAsyncHandler 接口
IHttpAsyncHandler 成员
System.Web 命名空间


IHttpAsyncHandler 属性

IHttpAsyncHandler 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpAsyncHandler 接口

IHttpAsyncHandler 类型公开以下成员。

名称 说明
页首

参考

IHttpAsyncHandler 接口
System.Web 命名空间


IHttpHandler 接口

IHttpHandler 接口
成员

定义 ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Interface IHttpHandler
public interface IHttpHandler
public interface class IHttpHandler
type IHttpHandler =  interface end

可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HttpHandler 类中定义的可执行代码，而不是常规的 ASP 或 ASP.NET网页。HTTP 处理程序向您提供一种方法，使您可以与 IIS Web 服务器的低级别的请求和响应服务交互，同时提供极其类似于 ISAPI 扩展但编程模型较为简单的功能。 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HttpHandler 类中定义的可执行代码，而不是常规的 ASP 或 ASP.NET网页。HTTP 处理程序向您提供一种方法，使您可以与 IIS Web 服务器的低级别的请求和响应服务交互，同时提供极其类似于 ISAPI 扩展但编程模型较为简单的功能。 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HttpHandler 类中定义的可执行代码，而不是常规的 ASP 或 ASP.NET网页。HTTP 处理程序向您提供一种方法，使您可以与 IIS Web 服务器的低级别的请求和响应服务交互，同时提供极其类似于 ISAPI 扩展但编程模型较为简单的功能。

如果您的处理程序将访问会话状态值，它必须实现 IRequiresSessionState 接口（不包含任何方法的标记接口）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpHandler 成员
System.Web 命名空间


IHttpHandler 成员

IHttpHandler 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpHandler 接口

定义 ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定。

IHttpHandler 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

IHttpHandler 接口
System.Web 命名空间


IHttpHandler 方法

IHttpHandler 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpHandler 接口

IHttpHandler 类型公开以下成员。

名称 说明
页首

参考

IHttpHandler 接口
System.Web 命名空间


IHttpHandler ..::.ProcessRequest 方法

IHttpHandler
.
.
::
.
ProcessRequest 方法
IHttpHandler 接口

通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Sub ProcessRequest ( _
    context As HttpContext _
)
void ProcessRequest(
    HttpContext context
)
void ProcessRequest(
    HttpContext^ context
)
abstract ProcessRequest :
        context:HttpContext -> unit

参数

context
类型： System.Web HttpContext
HttpContext 对象，它提供对用于为 HTTP 请求提供服务的内部服务器对象（如 Request、Response、Session 和 Server）的引用。

将自定义 HttpHandler 代码放在 ProcessRequest 虚方法中，如下例所示。

下面的代码示例为响应客户端对名为 handler.aspx 的页的请求而向 HTTP 输出流中写入了四行文本。对 handler.aspx 的所有请求均由包含在程序集 HandlerTest.dll 中的命名空间 HandlerExample 中的 MyHttpHandler 类提供服务。 下面的代码示例为响应客户端对名为 handler.aspx 的页的请求而向 HTTP 输出流中写入了四行文本。对 handler.aspx 的所有请求均由包含在程序集 HandlerTest.dll 中的命名空间 HandlerExample 中的 MyHttpHandler 类提供服务。

' Name this Visual Basic file HandlerTest.vb and compile it with the
' command line: vbc /target:library /r:System.Web.dll HandlerTest.vb.
' Copy HandlerTest.dll to your \bin directory.
Imports System.Web

Namespace HandlerExample

    Public Class MyHttpHandler
        Implements IHttpHandler

        ' Override the ProcessRequest method.
        Public Sub ProcessRequest(context As HttpContext) _
        Implements IHttpHandler.ProcessRequest

            context.Response.Write("<H1>This is an HttpHandler Test.</H1>")
            context.Response.Write("<p>Your Browser:</p>")
            context.Response.Write("Type: " & context.Request.Browser.Type & "<br>")
            context.Response.Write("Version: " & context.Request.Browser.Version)
        End Sub

        ' Override the IsReusable property.
        Public ReadOnly Property IsReusable() As Boolean _
        Implements IHttpHandler.IsReusable

            Get
                Return True
            End Get
        End Property
    End Class
End Namespace

'______________________________________________________________
'
' To use this handler, include the following lines in a
' Web.config file (be sure to remove the comment markers).
'
'<configuration>
'   <system.web>
'      <httpHandlers>
'         <add verb="*" path="handler.aspx" type="HandlerExample.MyHttpHandler,HandlerTest"/>
'      </httpHandlers>
'   </system.web>
'</configuration>

// Name this C# file HandlerTest.cs and compile it with the
// command line: csc /t:library /r:System.Web.dll HandlerTest.cs.
// Copy HandlerTest.dll to your \bin directory.

using System.Web;

namespace HandlerExample
{
   public class MyHttpHandler : IHttpHandler
   {
      // Override the ProcessRequest method.
      public void ProcessRequest(HttpContext context)
      {
         context.Response.Write("<H1>This is an HttpHandler Test.</H1>");
         context.Response.Write("<p>Your Browser:</p>");
         context.Response.Write("Type: " + context.Request.Browser.Type + "<br>");
         context.Response.Write("Version: " + context.Request.Browser.Version);
      }

      // Override the IsReusable property.
      public bool IsReusable
      {
         get { return true; }
      }
   }
}

/*
______________________________________________________________

To use this handler, include the following lines in a Web.config file.

<configuration>
   <system.web>
      <httpHandlers>
         <add verb="*" path="handler.aspx" type="HandlerExample.MyHttpHandler,HandlerTest"/>
      </httpHandlers>
   </system.web>
</configuration>
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpHandler 接口
IHttpHandler 成员
System.Web 命名空间


IHttpHandler 属性

IHttpHandler 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpHandler 接口

IHttpHandler 类型公开以下成员。

名称 说明
页首

参考

IHttpHandler 接口
System.Web 命名空间


IHttpHandler ..::.IsReusable 属性

IHttpHandler
.
.
::
.
IsReusable 属性
IHttpHandler 接口

获取一个值，该值指示其他请求是否可以使用 IHttpHandler 实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
ReadOnly Property IsReusable As Boolean
    Get
bool IsReusable { get; }
property bool IsReusable {
    bool get ();
}
abstract IsReusable : bool

属性值

类型： System Boolean
如果 IHttpHandler 实例可再次使用，则为 true；否则为 false。

将 IsReusable 属性用所提供的重写 IsReusable 属性访问器 (getter) 的代码显式设置为 true 或 false。

下面的代码示例为响应客户端对名为 handler.aspx 的页的请求而向 HTTP 输出流中写入了四行文本。对 handler.aspx 的所有请求均由包含在程序集 HandlerTest.dll 中的命名空间 HandlerExample 中的 MyHttpHandler 类提供服务。 下面的代码示例为响应客户端对名为 handler.aspx 的页的请求而向 HTTP 输出流中写入了四行文本。对 handler.aspx 的所有请求均由包含在程序集 HandlerTest.dll 中的命名空间 HandlerExample 中的 MyHttpHandler 类提供服务。

' Name this Visual Basic file HandlerTest.vb and compile it with the
' command line: vbc /target:library /r:System.Web.dll HandlerTest.vb.
' Copy HandlerTest.dll to your \bin directory.
Imports System.Web

Namespace HandlerExample

    Public Class MyHttpHandler
        Implements IHttpHandler

        ' Override the ProcessRequest method.
        Public Sub ProcessRequest(context As HttpContext) _
        Implements IHttpHandler.ProcessRequest

            context.Response.Write("<H1>This is an HttpHandler Test.</H1>")
            context.Response.Write("<p>Your Browser:</p>")
            context.Response.Write("Type: " & context.Request.Browser.Type & "<br>")
            context.Response.Write("Version: " & context.Request.Browser.Version)
        End Sub

        ' Override the IsReusable property.
        Public ReadOnly Property IsReusable() As Boolean _
        Implements IHttpHandler.IsReusable

            Get
                Return True
            End Get
        End Property
    End Class
End Namespace

'______________________________________________________________
'
' To use this handler, include the following lines in a
' Web.config file (be sure to remove the comment markers).
'
'<configuration>
'   <system.web>
'      <httpHandlers>
'         <add verb="*" path="handler.aspx" type="HandlerExample.MyHttpHandler,HandlerTest"/>
'      </httpHandlers>
'   </system.web>
'</configuration>

// Name this C# file HandlerTest.cs and compile it with the
// command line: csc /t:library /r:System.Web.dll HandlerTest.cs.
// Copy HandlerTest.dll to your \bin directory.

using System.Web;

namespace HandlerExample
{
   public class MyHttpHandler : IHttpHandler
   {
      // Override the ProcessRequest method.
      public void ProcessRequest(HttpContext context)
      {
         context.Response.Write("<H1>This is an HttpHandler Test.</H1>");
         context.Response.Write("<p>Your Browser:</p>");
         context.Response.Write("Type: " + context.Request.Browser.Type + "<br>");
         context.Response.Write("Version: " + context.Request.Browser.Version);
      }

      // Override the IsReusable property.
      public bool IsReusable
      {
         get { return true; }
      }
   }
}

/*
______________________________________________________________

To use this handler, include the following lines in a Web.config file.

<configuration>
   <system.web>
      <httpHandlers>
         <add verb="*" path="handler.aspx" type="HandlerExample.MyHttpHandler,HandlerTest"/>
      </httpHandlers>
   </system.web>
</configuration>
*/

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpHandler 接口
IHttpHandler 成员
System.Web 命名空间


IHttpHandlerFactory 接口

IHttpHandlerFactory 接口
成员

定义类工厂为创建新的 IHttpHandler 对象而必须实现的协定。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Interface IHttpHandlerFactory
public interface IHttpHandlerFactory
public interface class IHttpHandlerFactory
type IHttpHandlerFactory =  interface end

实现 IHttpHandlerFactory 接口的类除了动态创建实现 IHttpHandler 接口的类的新实例外，没有其他任何行为。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpHandlerFactory 成员
System.Web 命名空间


IHttpHandlerFactory 成员

IHttpHandlerFactory 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpHandlerFactory 接口

定义类工厂为创建新的 IHttpHandler 对象而必须实现的协定。

IHttpHandlerFactory 类型公开以下成员。

名称 说明
页首

参考

IHttpHandlerFactory 接口
System.Web 命名空间


IHttpHandlerFactory 方法

IHttpHandlerFactory 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpHandlerFactory 接口

IHttpHandlerFactory 类型公开以下成员。

名称 说明
页首

参考

IHttpHandlerFactory 接口
System.Web 命名空间


IHttpHandlerFactory ..::.GetHandler 方法

IHttpHandlerFactory
.
.
::
.
GetHandler 方法
IHttpHandlerFactory 接口

返回实现 IHttpHandler 接口的类的实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Function GetHandler ( _
    context As HttpContext, _
    requestType As String, _
    url As String, _
    pathTranslated As String _
) As IHttpHandler
IHttpHandler GetHandler(
    HttpContext context,
    string requestType,
    string url,
    string pathTranslated
)
IHttpHandler^ GetHandler(
    HttpContext^ context,
    String^ requestType,
    String^ url,
    String^ pathTranslated
)
abstract GetHandler :
        context:HttpContext *
        requestType:string *
        url:string *
        pathTranslated:string -> IHttpHandler

参数

context
类型： System.Web HttpContext
HttpContext 类的实例，它提供对用于为 HTTP 请求提供服务的内部服务器对象（如 Request、Response、Session 和 Server）的引用。
requestType
类型： System String
客户端使用的 HTTP 数据传输方法（GET 或 POST）。
url
类型： System String
所请求资源的 RawUrl。
pathTranslated
类型： System String
所请求资源的 PhysicalApplicationPath。

返回值

类型： System.Web IHttpHandler
处理请求的新的 IHttpHandler 对象。

下面的代码示例演示如何创建自定义处理程序对象来响应客户端请求。此示例包括两个部分： 下面的代码示例演示如何创建自定义处理程序对象来响应客户端请求。此示例包括两个部分：

  • 一个处理程序工厂类。

  • 一段 Web.config 文件节选。

示例的第一部分显示如何为响应客户端对名为 abc.aspx 或 xyz.aspx 的页的请求而创建自定义处理程序对象。名为 hwf 的处理程序工厂类根据所请求的页创建适当的处理程序对象。 示例的第一部分显示如何为响应客户端对名为 abc.aspx 或 xyz.aspx 的页的请求而创建自定义处理程序对象。名为 hwf 的处理程序工厂类根据所请求的页创建适当的处理程序对象。

' Name this Visual Basic file HandlerFactoryTest.vb and compile it with
' the command line: vbc /t:Library /r:System.Web.dll HandlerFactoryTest.vb.
' Copy HandlerFactoryTest.dll to your \bin directory.
Imports System
Imports System.Web

Namespace test

    ' Factory class that creates a handler object based on a request
    ' for either abc.aspx or xyz.aspx as specified in the Web.config file.
    Public Class MyFactory
        Implements IHttpHandlerFactory

        <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
        Public Overridable Function GetHandler(context As HttpContext, _
        requestType As String, url As String, pathTranslated As String) _
        As IHttpHandler _
        Implements IHttpHandlerFactory.GetHandler

            Dim fname As String = url.Substring(url.LastIndexOf("/"c) + 1)
            Dim cname As String = fname.Substring(0, fname.IndexOf("."c))
            Dim className As String = "test." & cname

            Dim h As Object = Nothing

            Try ' to create the handler object.
                ' Create by calling class abc or class xyz.
                h = Activator.CreateInstance(Type.GetType(className))
            Catch e As Exception
                Throw New HttpException("Factory couldn't create instance " & _
                    "of type " & className, e)
            End Try
            Return CType(h, IHttpHandler)
        End Function

        ' This is a must override method.
        Public Overridable Sub ReleaseHandler(handler As IHttpHandler) _
        Implements IHttpHandlerFactory.ReleaseHandler

        End Sub

    End Class

    ' Class definition for abc.aspx handler.
    Public Class abc
        Implements IHttpHandler

        Public Overridable Sub ProcessRequest(context As HttpContext) _
        Implements IHttpHandler.ProcessRequest

            context.Response.Write("<html><body>")
            context.Response.Write("<p>ABC Handler</p>" & _
                Microsoft.VisualBasic.ControlChars.CrLf)
            context.Response.Write("</body></html>")
        End Sub

        Public Overridable ReadOnly Property IsReusable() As Boolean _
        Implements IHttpHandler.IsReusable

            Get
                Return True
            End Get
        End Property
    End Class

    ' Class definition for xyz.aspx handler.
    Public Class xyz
        Implements IHttpHandler

        Public Overridable Sub ProcessRequest(context As HttpContext) _
        Implements IHttpHandler.ProcessRequest

            context.Response.Write("<html><body>")
            context.Response.Write("<p>XYZ Handler</p>" & _
                Microsoft.VisualBasic.ControlChars.CrLf)
            context.Response.Write("</body></html>")
        End Sub

        Public Overridable ReadOnly Property IsReusable() As Boolean _
        Implements IHttpHandler.IsReusable

            Get
                Return True
            End Get
        End Property
    End Class
End Namespace

'______________________________________________________________
'
'To use the handler factory, use the following lines in a
'Web.config file. (be sure to remove the comment markers)
'
'<configuration>
'   <system.web>
'      <httpHandlers>
'         <add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" />
'         <add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" />
'      </httpHandlers>
'   </system.web>
'</configuration>

// Name this C# file HandlerFactoryTest.cs and compile it with the
// command line: csc /t:Library /r:System.Web.dll HandlerFactoryTest.cs.
// Copy HandlerFactoryTest.dll to your \bin directory.

namespace test
{
   using System;
   using System.Web;

   // Factory class that creates a handler object based on a request
   // for either abc.aspx or xyz.aspx as specified in the Web.config file.
   public class MyFactory : IHttpHandlerFactory
   {
      [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
      public virtual IHttpHandler GetHandler(HttpContext context,
                                             String requestType,
                                             String url,
                                             String pathTranslated)
      {
         String fname = url.Substring(url.LastIndexOf('/')+1);
         String cname = fname.Substring(0, fname.IndexOf('.'));
         String className = "test." + cname;

         Object h = null;

         // Try to create the handler object.
         try
         {
            // Create the handler by calling class abc or class xyz.
            h = Activator.CreateInstance(Type.GetType(className));
         }
         catch(Exception e)
         {
            throw new HttpException("Factory couldn't create instance " +
                                    "of type " + className, e);
         }
         return (IHttpHandler)h;
      }

      // This is a must override method.
      public virtual void ReleaseHandler(IHttpHandler handler)
      {
      }
   }

   // Class definition for abc.aspx handler.
   public class abc : IHttpHandler
   {
      public virtual void ProcessRequest(HttpContext context)
      {
         context.Response.Write("<html><body>");
         context.Response.Write("<p>ABC Handler</p>\n");
         context.Response.Write("</body></html>");
      }

      public virtual bool IsReusable
      {
         get { return true; }
      }
   }

   // Class definition for xyz.aspx handler.
   public class xyz : IHttpHandler
   {
      public virtual void ProcessRequest(HttpContext context)
      {
         context.Response.Write("<html><body>");
         context.Response.Write("<p>XYZ Handler</p>\n");
         context.Response.Write("</body></html>");
      }

      public virtual bool IsReusable
      {
         get { return true; }
      }
   }
}

/*
______________________________________________________________

To use the handler factory, use the following lines in a
Web.config file.

<configuration>
   <system.web>
      <httpHandlers>
         <add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" />
         <add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" />
      </httpHandlers>
   </system.web>
</configuration>
*/

示例的第二部分显示一段 Web.config 文件节选。若要使用上述的处理程序工厂，请将下列行添加到 Web.config 文件中。 示例的第二部分显示一段 Web.config 文件节选。若要使用上述的处理程序工厂，请将下列行添加到 Web.config 文件中。

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="abc.aspx" type="test.MyFactory,HandlerFactoryTest" />
      <add verb="*" path="xyz.aspx" type="test.MyFactory,HandlerFactoryTest" />
    </httpHandlers>
  </system.web>
</configuration>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpHandlerFactory 接口
IHttpHandlerFactory 成员
System.Web 命名空间


IHttpHandlerFactory ..::.ReleaseHandler 方法

IHttpHandlerFactory
.
.
::
.
ReleaseHandler 方法
IHttpHandlerFactory 接口

使工厂可以重用现有的处理程序实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Sub ReleaseHandler ( _
    handler As IHttpHandler _
)
void ReleaseHandler(
    IHttpHandler handler
)
void ReleaseHandler(
    IHttpHandler^ handler
)
abstract ReleaseHandler :
        handler:IHttpHandler -> unit

参数

handler
类型： System.Web IHttpHandler
要重用的 IHttpHandler 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpHandlerFactory 接口
IHttpHandlerFactory 成员
System.Web 命名空间


IHttpModule 接口

IHttpModule 接口
成员

向实现类提供模块初始化和处置事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Interface IHttpModule
public interface IHttpModule
public interface class IHttpModule
type IHttpModule =  interface end

有关实现 IHttpModule 的自定义模块的示例，请参见演练：创建和注册自定义 HTTP 模块。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpModule 成员
System.Web 命名空间


IHttpModule 成员

IHttpModule 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpModule 接口

向实现类提供模块初始化和处置事件。

IHttpModule 类型公开以下成员。

名称 说明
页首

参考

IHttpModule 接口
System.Web 命名空间


IHttpModule 方法

IHttpModule 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IHttpModule 接口

IHttpModule 类型公开以下成员。

名称 说明
页首

参考

IHttpModule 接口
System.Web 命名空间


IHttpModule ..::.Dispose 方法

IHttpModule
.
.
::
.
Dispose 方法
IHttpModule 接口

处置由实现 IHttpModule 的模块使用的资源（内存除外）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Sub Dispose
void Dispose()
void Dispose()
abstract Dispose : unit -> unit

Dispose 方法在从执行管线中移除模块前将执行任何最后的清理工作。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpModule 接口
IHttpModule 成员
System.Web 命名空间


IHttpModule ..::.Init 方法

IHttpModule
.
.
::
.
Init 方法
IHttpModule 接口

初始化模块，并使其为处理请求做好准备。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Sub Init ( _
    context As HttpApplication _
)
void Init(
    HttpApplication context
)
void Init(
    HttpApplication^ context
)
abstract Init :
        context:HttpApplication -> unit

参数

context
类型： System.Web HttpApplication
一个 HttpApplication，它提供对 ASP.NET 应用程序内所有应用程序对象的公用的方法、属性和事件的访问

使用 Init 方法向特定事件注册事件处理方法。

有关实现 IHttpModule 的自定义模块的示例，请参见演练：创建和注册自定义 HTTP 模块。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

IHttpModule 接口
IHttpModule 成员
System.Web 命名空间


IisTraceListener 类

IisTraceListener 类
成员

提供一个将所有跟踪和调试输出路由到 IIS 7.0 基础结构的侦听器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)> _
Public NotInheritable Class IisTraceListener _
    Inherits TraceListener
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public sealed class IisTraceListener : TraceListener
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true)]
public ref class IisTraceListener sealed : public TraceListener
[<SealedAttribute>]
[<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)>]
type IisTraceListener =
    class
        inherit TraceListener
    end

IisTraceListener 类将 ASP.NET 的跟踪机制连接到 IIS 7.0。在启用跟踪的情况下，此侦听器类使创建 ASP.NET 应用程序和实现 IHttpModule 以及 IHttpHandler 接口的开发人员能向 IIS 7.0 基础结构引发页级、模块级或处理程序级事件。 IisTraceListener 类将 ASP.NET 的跟踪机制连接到 IIS 7.0。在启用跟踪的情况下，此侦听器类使创建 ASP.NET 应用程序和实现 IHttpModule 以及 IHttpHandler 接口的开发人员能向 IIS 7.0 基础结构引发页级、模块级或处理程序级事件。

说明 说明

此侦听器类不会将 IIS 7.0 事件路由到 ASP.NET 类。这包括 Page 类以及实现 IHttpModule 或 IHttpHandler 接口的类。 此侦听器类不会将 IIS 7.0 事件路由到 ASP.NET 类。这包括 Page 类以及实现 IHttpModule 或 IHttpHandler 接口的类。

.NET Framework 3.5 版 中引入了 IisTraceListener。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 IisTraceListener。有关更多信息，请参见 .NET Framework Architecture。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

System.Web System.Web..::.IisTraceListenerIisTraceListener
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 成员
System.Web 命名空间


IisTraceListener 成员

IisTraceListener 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

提供一个将所有跟踪和调试输出路由到 IIS 7.0 基础结构的侦听器。

IisTraceListener 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

IisTraceListener 类
System.Web 命名空间


IisTraceListener 构造函数

IisTraceListener 构造函数
IisTraceListener 类

初始化 IisTraceListener 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public IisTraceListener()
public:
IisTraceListener()
new : unit -> IisTraceListener

.NET Framework 3.5 版中引入了 IisTraceListener。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版中引入了 IisTraceListener。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener 方法

IisTraceListener 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

IisTraceListener 类型公开以下成员。

名称 说明
页首

参考

IisTraceListener 类
System.Web 命名空间


IisTraceListener ..::.Dispose 方法

IisTraceListener
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

释放由 TraceListener 占用的资源。

名称 说明
页首

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.Fail 方法

IisTraceListener
.
.
::
.
Fail 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

实现 TraceListener 类时，向所创建的侦听器发出错误信息。

名称 说明
页首

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.MemberwiseClone 方法

IisTraceListener
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

名称 说明
页首

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.TraceData 方法

IisTraceListener
.
.
::
.
TraceData 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

将跟踪数据写入 IisTraceListener 类的输出。

名称 说明
页首

.NET Framework 3.5 版中引入了 TraceData。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版中引入了 TraceData。有关更多信息，请参见 .NET Framework Architecture。

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.TraceData 方法 (TraceEventCache, String, TraceEventType, Int32, Object)

IisTraceListener
.
.
::
.
TraceData 方法 (TraceEventCache, String, TraceEventType, Int32, Object)
IisTraceListener 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将跟踪信息、数据对象和事件信息写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TraceData ( _
    eventCache As TraceEventCache, _
    source As String, _
    eventType As TraceEventType, _
    id As Integer, _
    data As Object _
)
public override void TraceData(
    TraceEventCache eventCache,
    string source,
    TraceEventType eventType,
    int id,
    Object data
)
public:
virtual void TraceData(
    TraceEventCache^ eventCache,
    String^ source,
    TraceEventType eventType,
    int id,
    Object^ data
) override
abstract TraceData :
        eventCache:TraceEventCache *
        source:string *
        eventType:TraceEventType *
        id:int *
        data:Object -> unit
override TraceData :
        eventCache:TraceEventCache *
        source:string *
        eventType:TraceEventType *
        id:int *
        data:Object -> unit

参数

eventCache
类型： System.Diagnostics TraceEventCache
包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 System.Diagnostics..::.TraceEventCache 对象。
source
类型： System String
标识输出的名称。这通常是生成跟踪事件的应用程序的名称。 标识输出的名称。这通常是生成跟踪事件的应用程序的名称。
eventType
类型： System.Diagnostics TraceEventType
一个 System.Diagnostics..::.TraceEventType 值，指定引发跟踪的事件的类型。
id
类型： System Int32
事件的数值标识符。
data
类型： System Object
要写入的跟踪数据。

此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。 此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。

.NET Framework 3.5 版 中引入了 TraceData。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 TraceData。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
TraceData 重载
System.Web 命名空间


IisTraceListener ..::.TraceData 方法 (TraceEventCache, String, TraceEventType, Int32, array<Object >[]()[])

IisTraceListener
.
.
::
.
TraceData 方法 (TraceEventCache, String, TraceEventType, Int32,
array<
Object
>
[]
()
[]
)
IisTraceListener 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将跟踪信息、数据对象的数组和事件信息写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TraceData ( _
    eventCache As TraceEventCache, _
    source As String, _
    eventType As TraceEventType, _
    id As Integer, _
    ParamArray data As Object() _
)
public override void TraceData(
    TraceEventCache eventCache,
    string source,
    TraceEventType eventType,
    int id,
    params Object[] data
)
public:
virtual void TraceData(
    TraceEventCache^ eventCache,
    String^ source,
    TraceEventType eventType,
    int id,
    ... array<Object^>^ data
) override
abstract TraceData :
        eventCache:TraceEventCache *
        source:string *
        eventType:TraceEventType *
        id:int *
        data:Object[] -> unit
override TraceData :
        eventCache:TraceEventCache *
        source:string *
        eventType:TraceEventType *
        id:int *
        data:Object[] -> unit

参数

eventCache
类型： System.Diagnostics TraceEventCache
包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 System.Diagnostics..::.TraceEventCache 对象。
source
类型： System String
标识输出的名称。这通常是生成跟踪事件的应用程序的名称。 标识输出的名称。这通常是生成跟踪事件的应用程序的名称。
eventType
类型： System.Diagnostics TraceEventType
一个 System.Diagnostics..::.TraceEventType 值，指定引发跟踪的事件的类型。
id
类型： System Int32
事件的数值标识符。
data
类型：
array<
System Object
>
[]
()
[]

要作为数据写入的对象的数组。

此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。 此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。

.NET Framework 3.5 版 中引入了 TraceData。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 TraceData。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
TraceData 重载
System.Web 命名空间


IisTraceListener ..::.TraceEvent 方法

IisTraceListener
.
.
::
.
TraceEvent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

将跟踪和事件信息写入 IisTraceListener 类的输出。

名称 说明
页首

.NET Framework 3.5 版 中引入了 TraceEvent。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 TraceEvent。有关更多信息，请参见 .NET Framework Architecture。

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String)

IisTraceListener
.
.
::
.
TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String)
IisTraceListener 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将跟踪和事件信息写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TraceEvent ( _
    eventCache As TraceEventCache, _
    source As String, _
    severity As TraceEventType, _
    id As Integer, _
    message As String _
)
public override void TraceEvent(
    TraceEventCache eventCache,
    string source,
    TraceEventType severity,
    int id,
    string message
)
public:
virtual void TraceEvent(
    TraceEventCache^ eventCache,
    String^ source,
    TraceEventType severity,
    int id,
    String^ message
) override
abstract TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        message:string -> unit
override TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        message:string -> unit

参数

eventCache
类型： System.Diagnostics TraceEventCache
包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 System.Diagnostics..::.TraceEventCache 对象。
source
类型： System String
标识输出的名称。这通常是生成跟踪事件的应用程序的名称。 标识输出的名称。这通常是生成跟踪事件的应用程序的名称。
severity
类型： System.Diagnostics TraceEventType
一个 System.Diagnostics..::.TraceEventType 值，指定引发跟踪的事件的类型。
id
类型： System Int32
事件的数值标识符。
message
类型： System String
要写入的消息。

此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。 此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。

.NET Framework 3.5 版 中引入了 TraceEvent。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 TraceEvent。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
TraceEvent 重载
System.Web 命名空间


IisTraceListener ..::.TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String, array<Object >[]()[])

IisTraceListener
.
.
::
.
TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String,
array<
Object
>
[]
()
[]
)
IisTraceListener 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将跟踪信息、对象的格式化数组和事件信息写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TraceEvent ( _
    eventCache As TraceEventCache, _
    source As String, _
    severity As TraceEventType, _
    id As Integer, _
    format As String, _
    ParamArray args As Object() _
)
public override void TraceEvent(
    TraceEventCache eventCache,
    string source,
    TraceEventType severity,
    int id,
    string format,
    params Object[] args
)
public:
virtual void TraceEvent(
    TraceEventCache^ eventCache,
    String^ source,
    TraceEventType severity,
    int id,
    String^ format,
    ... array<Object^>^ args
) override
abstract TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        format:string *
        args:Object[] -> unit
override TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        format:string *
        args:Object[] -> unit

参数

eventCache
类型： System.Diagnostics TraceEventCache
包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 System.Diagnostics..::.TraceEventCache 对象。
source
类型： System String
标识输出的名称。这通常是生成跟踪事件的应用程序的名称。 标识输出的名称。这通常是生成跟踪事件的应用程序的名称。
severity
类型： System.Diagnostics TraceEventType
一个 System.Diagnostics..::.TraceEventType 值，指定引发跟踪的事件的类型。
id
类型： System Int32
事件的数值标识符。
format
类型： System String
包含零个或多个格式项的格式字符串，这些项与 args 数组中的对象相对应。
args
类型：
array<
System Object
>
[]
()
[]

一个对象数组，其中包含零个或多个要设置格式的对象。

此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。 此方法不应由应用程序代码直接调用。System.Diagnostics..::.Debug、System.Diagnostics..::.Trace 和 System.Diagnostics..::.TraceSource 类的成员使用此方法写入跟踪数据。

.NET Framework 3.5 版 中引入了 TraceEvent。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 TraceEvent。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
TraceEvent 重载
System.Web 命名空间


IisTraceListener ..::.Write 方法

IisTraceListener
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

将消息、类别名称或对象的 ToString 方法的值写入 IisTraceListener 类的输出。

名称 说明
页首

.NET Framework 3.5 版 中引入了 Write。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 Write。有关更多信息，请参见 .NET Framework Architecture。

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.Write 方法 (String)

IisTraceListener
.
.
::
.
Write 方法 (String)
IisTraceListener 类

将指定消息写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    message As String _
)
public override void Write(
    string message
)
public:
virtual void Write(
    String^ message
) override
abstract Write :
        message:string -> unit
override Write :
        message:string -> unit

参数

message
类型： System String
要写入的消息。

.NET Framework 3.5 版 中引入了 Write。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 Write。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
Write 重载
System.Web 命名空间


IisTraceListener ..::.Write 方法 (String, String)

IisTraceListener
.
.
::
.
Write 方法 (String, String)
IisTraceListener 类

将指定消息和指定的类别名称写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    message As String, _
    category As String _
)
public override void Write(
    string message,
    string category
)
public:
virtual void Write(
    String^ message,
    String^ category
) override
abstract Write :
        message:string *
        category:string -> unit
override Write :
        message:string *
        category:string -> unit

参数

message
类型： System String
要写入的消息。
category
类型： System String
已忽略。System.Diagnostics..::.TraceListener 类的 IisTraceListener 实现忽略 category 参数。 已忽略。System.Diagnostics..::.TraceListener 类的 IisTraceListener 实现忽略 category 参数。

Write 方法的这一重载形式是为兼容性而提供。此方法不使用传入 category 参数的任何值。 Write 方法的这一重载形式是为兼容性而提供。此方法不使用传入 category 参数的任何值。

.NET Framework 3.5 版 中引入了 Write。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 Write。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
Write 重载
System.Web 命名空间


IisTraceListener ..::.WriteLine 方法

IisTraceListener
.
.
::
.
WriteLine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

将消息和类别名称写入 IisTraceListener。

名称 说明
页首

参考

IisTraceListener 类
IisTraceListener 成员
System.Web 命名空间


IisTraceListener ..::.WriteLine 方法 (String)

IisTraceListener
.
.
::
.
WriteLine 方法 (String)
IisTraceListener 类

将指定消息写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteLine ( _
    message As String _
)
public override void WriteLine(
    string message
)
public:
virtual void WriteLine(
    String^ message
) override
abstract WriteLine :
        message:string -> unit
override WriteLine :
        message:string -> unit

参数

message
类型： System String
要写入的消息。

.NET Framework 3.5 版 中引入了 WriteLine。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 WriteLine。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
WriteLine 重载
System.Web 命名空间


IisTraceListener ..::.WriteLine 方法 (String, String)

IisTraceListener
.
.
::
.
WriteLine 方法 (String, String)
IisTraceListener 类

将指定的消息和类别名称写入 IisTraceListener 类的输出。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteLine ( _
    message As String, _
    category As String _
)
public override void WriteLine(
    string message,
    string category
)
public:
virtual void WriteLine(
    String^ message,
    String^ category
) override
abstract WriteLine :
        message:string *
        category:string -> unit
override WriteLine :
        message:string *
        category:string -> unit

参数

message
类型： System String
要写入的消息。
category
类型： System String
已忽略。System.Diagnostics..::.TraceListener 类的 Iis7TraceListener 实现忽略 category 参数。 已忽略。System.Diagnostics..::.TraceListener 类的 Iis7TraceListener 实现忽略 category 参数。

.NET Framework 3.5 版 中引入了 WriteLine。有关更多信息，请参见 .NET Framework Architecture。 .NET Framework 3.5 版 中引入了 WriteLine。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

IisTraceListener 类
IisTraceListener 成员
WriteLine 重载
System.Web 命名空间


IisTraceListener 属性

IisTraceListener 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IisTraceListener 类

IisTraceListener 类型公开以下成员。

名称 说明
页首

参考

IisTraceListener 类
System.Web 命名空间


IPartitionResolver 接口

IPartitionResolver 接口
成员

定义必须实现的方法，这些方法用于自定义的会话状态分区解析。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Interface IPartitionResolver
public interface IPartitionResolver
public interface class IPartitionResolver
type IPartitionResolver =  interface end

如果正在提供用于 SQL 或状态服务器模式下跨多个后端节点的会话状态数据的自定义分区解析，请实现 IPartitionResolver 接口以及 Initialize 和 ResolvePartition 方法。

会话状态管理信息可以在配置文件的 sessionState 元素（ASP.NET 设置架构） 中使用 partitionResolverType 特性进行配置。如果为 partitionResolverType 特性指定了值，则忽略 sqlConnectionString 和 stateConnectionString 特性。 会话状态管理信息可以在配置文件的 sessionState 元素（ASP.NET 设置架构） 中使用 partitionResolverType 特性进行配置。如果为 partitionResolverType 特性指定了值，则忽略 sqlConnectionString 和 stateConnectionString 特性。

分区解析配置也可以使用 PartitionResolverType 属性以编程方式进行设置。如果指定 PartitionResolverType 属性，则忽略 SqlConnectionString 和 StateConnectionString 属性。 分区解析配置也可以使用 PartitionResolverType 属性以编程方式进行设置。如果指定 PartitionResolverType 属性，则忽略 SqlConnectionString 和 StateConnectionString 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

IPartitionResolver 成员
System.Web 命名空间
SessionStateMode

其他资源

会话状态模式
sessionState 元素（ASP.NET 设置架构）


IPartitionResolver 成员

IPartitionResolver 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IPartitionResolver 接口

定义必须实现的方法，这些方法用于自定义的会话状态分区解析。

IPartitionResolver 类型公开以下成员。

名称 说明
页首

参考

IPartitionResolver 接口
System.Web 命名空间


IPartitionResolver 方法

IPartitionResolver 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
IPartitionResolver 接口

IPartitionResolver 类型公开以下成员。

名称 说明
页首

参考

IPartitionResolver 接口
System.Web 命名空间


IPartitionResolver ..::.Initialize 方法

IPartitionResolver
.
.
::
.
Initialize 方法
IPartitionResolver 接口

初始化自定义的分区解析器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Sub Initialize
void Initialize()
void Initialize()
abstract Initialize : unit -> unit

使用 Initialize 方法提供自定义的分区解析所需要的任何初始化代码。SessionStateModule 创建实现 IPartitionResolver 接口的类型，调用 Initialize 方法对它进行初始化（每个实例调用一次），然后向 ASP.NET 状态服务或 SQL Server 提供程序指明正在使用分区，并将一个解析器实例传递给该提供程序。 使用 Initialize 方法提供自定义的分区解析所需要的任何初始化代码。SessionStateModule 创建实现 IPartitionResolver 接口的类型，调用 Initialize 方法对它进行初始化（每个实例调用一次），然后向 ASP.NET 状态服务或 SQL Server 提供程序指明正在使用分区，并将一个解析器实例传递给该提供程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

IPartitionResolver 接口
IPartitionResolver 成员
System.Web 命名空间

其他资源

会话状态模式


IPartitionResolver ..::.ResolvePartition 方法

IPartitionResolver
.
.
::
.
ResolvePartition 方法
IPartitionResolver 接口

根据键参数解析分区。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Function ResolvePartition ( _
    key As Object _
) As String
string ResolvePartition(
    Object key
)
String^ ResolvePartition(
    Object^ key
)
abstract ResolvePartition :
        key:Object -> string

参数

key
类型： System Object
用于确定要将哪个分区用于当前会话状态的标识符。

返回值

类型： System String
带有连接信息的字符串。

ResolvePartition 方法的 key 参数为 SessionID 属性。SessionID 属性使用服务器上的会话数据唯一地标识浏览器。 ResolvePartition 方法的 key 参数为 SessionID 属性。SessionID 属性使用服务器上的会话数据唯一地标识浏览器。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

IPartitionResolver 接口
IPartitionResolver 成员
System.Web 命名空间
SessionID

其他资源

会话状态模式


ParserError 类

ParserError 类
成员

表示分析器错误或警告。无法继承此类。 表示分析器错误或警告。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public NotInheritable Class ParserError
[SerializableAttribute]
public sealed class ParserError
[SerializableAttribute]
public ref class ParserError sealed
[<SealedAttribute>]
[<SerializableAttribute>]
type ParserError =  class end

ParserError 对象表示在引发 HttpParseException 异常时创建的错误。分析器错误对象可以包含错误信息文本、发生错误的文件的虚拟路径，以及错误在该文件中的后续行号。如果发生多个分析器错误，或者您要在一个集中位置存储多个分析器错误，请使用 ParserErrorCollection 对象。 ParserError 对象表示在引发 HttpParseException 异常时创建的错误。分析器错误对象可以包含错误信息文本、发生错误的文件的虚拟路径，以及错误在该文件中的后续行号。如果发生多个分析器错误，或者您要在一个集中位置存储多个分析器错误，请使用 ParserErrorCollection 对象。 ParserError 对象表示在引发 HttpParseException 异常时创建的错误。分析器错误对象可以包含错误信息文本、发生错误的文件的虚拟路径，以及错误在该文件中的后续行号。如果发生多个分析器错误，或者您要在一个集中位置存储多个分析器错误，请使用 ParserErrorCollection 对象。

分析器错误属于 HttpException 类型。有关异常和如何处理异常的更多信息，请访问 MSDN Library。 分析器错误属于 HttpException 类型。有关异常和如何处理异常的更多信息，请访问 MSDN Library。

下面的代码示例演示如何向 ParserErrorCollection 对象中添加一个新的分析器错误。

' Add a ParserError to the collection.
collection.Add(New ParserError("ErrorName", "Path", 1))

// Add a ParserError to the collection.
collection.Add(new ParserError("ErrorName", "Path", 1));

System.Web System.Web..::.ParserErrorParserError
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserError 成员
System.Web 命名空间
ParserErrorCollection
HttpException
HttpParseException


ParserError 成员

ParserError 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserError 类

表示分析器错误或警告。无法继承此类。 表示分析器错误或警告。无法继承此类。

ParserError 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ParserError 类
System.Web 命名空间


ParserError 构造函数

ParserError 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserError 类

初始化 ParserError 类的新实例。

名称 说明
页首

参考

ParserError 类
ParserError 成员
System.Web 命名空间


ParserError 构造函数

ParserError 构造函数
ParserError 类

初始化 ParserError 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public ParserError()
public:
ParserError()
new : unit -> ParserError

下面的代码示例演示如何初始化 ParserError 类的一个空实例以及如何使用它的属性。

Dim myParserError As New ParserError()
myParserError.ErrorText = "My Error Text"
myParserError.Line = 5
myParserError.VirtualPath = "MyPath"

ParserError MyParserError = new ParserError();

MyParserError.ErrorText = "My Error Text";

MyParserError.Line = 5;

MyParserError.VirtualPath = "MyPath";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserError 类
ParserError 成员
ParserError 重载
System.Web 命名空间


ParserError 构造函数 (String, String, Int32)

ParserError 构造函数 (String, String, Int32)
ParserError 类

使用指定的错误文本、虚拟路径和错误源行号初始化 ParserError 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    errorText As String, _
    virtualPath As String, _
    line As Integer _
)
public ParserError(
    string errorText,
    string virtualPath,
    int line
)
public:
ParserError(
    String^ errorText,
    String^ virtualPath,
    int line
)
new :
        errorText:string *
        virtualPath:string *
        line:int -> ParserError

参数

errorText
类型： System String
错误信息文本。
virtualPath
类型： System String
发生错误时正在分析的文件的虚拟路径。
line
类型： System Int32
错误源的行号。

通过 ParserError 构造函数可以使用自定义设置初始化 ParserError 对象。ParserError 构造函数具有以下属性： 通过 ParserError 构造函数可以使用自定义设置初始化 ParserError 对象。ParserError 构造函数具有以下属性：

  • ErrorText 属性，它是一个包含与分析器错误有关的错误信息的字符串。

  • VirtualPath 属性，它是一个只读字符串，用以指定包含分析器错误的文件的虚拟路径。

  • Line 属性，它是文件中引发此 ParserError 对象的位置的行号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserError 类
ParserError 成员
ParserError 重载
System.Web 命名空间


ParserError 方法

ParserError 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserError 类

ParserError 类型公开以下成员。

名称 说明
页首

参考

ParserError 类
System.Web 命名空间


ParserError 属性

ParserError 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserError 类

ParserError 类型公开以下成员。

名称 说明
页首

参考

ParserError 类
System.Web 命名空间


ParserError ..::.ErrorText 属性

ParserError
.
.
::
.
ErrorText 属性
ParserError 类

获取或设置表示 ParserError 对象的错误的字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ErrorText As String
    Get
    Set
public string ErrorText { get; set; }
public:
property String^ ErrorText {
    String^ get ();
    void set (String^ value);
}
member ErrorText : string with get, set

属性值

类型： System String
包含错误信息的字符串。

使用 ErrorText 属性为分析器错误提供程序员定义的错误信息，以便在 ParserError 对象中显示。

下面的代码示例演示如何填充 ParserError 对象的 ErrorText 属性。

myParserError.ErrorText = "My Error Text"

MyParserError.ErrorText = "My Error Text";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserError 类
ParserError 成员
System.Web 命名空间


ParserError ..::.Line 属性

ParserError
.
.
::
.
Line 属性
ParserError 类

获取或设置错误源所在的行号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Line As Integer
    Get
    Set
public int Line { get; set; }
public:
property int Line {
    int get ();
    void set (int value);
}
member Line : int with get, set

属性值

类型： System Int32
分析器遇到错误的位置的错误源行号。

Line 属性是文件中引发此 ParserError 对象的位置的行号。

下面的代码示例演示如何填充 ParserError 对象的 Line 属性。

myParserError.Line = 5

MyParserError.Line = 5;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserError 类
ParserError 成员
System.Web 命名空间


ParserError ..::.VirtualPath 属性

ParserError
.
.
::
.
VirtualPath 属性
ParserError 类

获取或设置在发生错误时正在分析的文件的虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property VirtualPath As String
    Get
    Set
public string VirtualPath { get; set; }
public:
property String^ VirtualPath {
    String^ get ();
    void set (String^ value);
}
member VirtualPath : string with get, set

属性值

类型： System String
一个字符串，指定包含分析器错误的文件的虚拟路径。

下面的代码示例演示如何填充 ParserError 对象的 VirtualPath 属性。

myParserError.VirtualPath = "MyPath"

MyParserError.VirtualPath = "MyPath";

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserError 类
ParserError 成员
System.Web 命名空间
VirtualPathUtility


ParserErrorCollection 类

ParserErrorCollection 类
成员

管理分析过程中检测到的一组分析器错误。无法继承此类。 管理分析过程中检测到的一组分析器错误。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<SerializableAttribute> _
Public NotInheritable Class ParserErrorCollection _
    Inherits CollectionBase
[SerializableAttribute]
public sealed class ParserErrorCollection : CollectionBase
[SerializableAttribute]
public ref class ParserErrorCollection sealed : public CollectionBase
[<SealedAttribute>]
[<SerializableAttribute>]
type ParserErrorCollection =
    class
        inherit CollectionBase
    end

ParserErrorCollection 类提供了一些可用来管理 ParserError 对象集合的方法和属性。例如，您可以在分析时向集合中添加一组分析器错误，同时使用自定义的 BuildProvider 对象来报告分析过程中捕获的所有分析器异常。 ParserErrorCollection 类提供了一些可用来管理 ParserError 对象集合的方法和属性。例如，您可以在分析时向集合中添加一组分析器错误，同时使用自定义的 BuildProvider 对象来报告分析过程中捕获的所有分析器异常。

若要向集合中添加分析器错误、从集合中移除分析器错误或在集合中定位分析器错误，请使用以下方法：

  • Add 方法可向集合中添加单个 ParserError 对象。

  • AddRange 方法可向集合中添加多个 ParserError 对象。

  • Insert 方法和 Item 属性（这是 ParserErrorCollection 索引器）都可以在集合的指定索引位置添加一个 ParserError 对象。

此外，还可以使用 ParserErrorCollection 类执行如下操作：

  • 使用 Remove 方法移除 ParserError 对象。

  • 使用 Contains 方法来检查某个 ParserError 是否在集合中。

  • 使用 IndexOf 方法来查找 ParserError 对象在集合中的位置。

下面的代码示例演示如何使用 ParserErrorCollection 方法。

' Create an empty ParserErrorCollection.
Dim collection As New ParserErrorCollection()

' Add a ParserError to the collection.
collection.Add(New ParserError("ErrorName", "Path", 1))

' Add an array of ParserError objects to the collection.
Dim errors As ParserError() = _
    {New ParserError("Error 2", "Path", 1), _
    New ParserError("Error 3", "Path", 1)}
collection.AddRange(errors)

' Ads a collection of ParserError objects to the collection.
Dim errorsCollection As New ParserErrorCollection()
errorsCollection.Add(New ParserError("Error", "Path", 1))
errorsCollection.Add(New ParserError("Error", "Path", 1))
collection.AddRange(errorsCollection)

' Test for the presence of a ParserError in the
' collection, and retrieve its index if it is found.
Dim testError As New ParserError("Error", "Path", 1)
Dim itemIndex As Integer = -1
If collection.Contains(testError) Then
  itemIndex = collection.IndexOf(testError)
End If

' Copy the contents of the collection to a
' compatible array, starting at index 0 of the
' destination array.
Dim errorsToSort(5) As ParserError
collection.CopyTo(errorsToSort, 0)

' Retrieve the count of the items in the collection.
Dim collectionCount As Integer = collection.Count

' Insert a ParserError at index 0 of the collection.
Dim [error] As New ParserError("Error", "Path", 1)
collection.Insert(0, [error])

' Remove the specified ParserError from the collection.
collection.Remove([error])

' Remove the ParserError at index 0.
collection.RemoveAt(0)

// Create an empty ParserErrorCollection.
ParserErrorCollection collection = new ParserErrorCollection();

// Add a ParserError to the collection.
collection.Add(new ParserError("ErrorName", "Path", 1));

// Add an array of ParserError objects to the collection.
ParserError[] errors =
    { new ParserError("Error 2", "Path", 1),
    new ParserError("Error 3", "Path", 1) };
collection.AddRange(errors);

// Add a collection of ParserError objects to the collection.
ParserErrorCollection errorsCollection = new ParserErrorCollection();
errorsCollection.Add(new ParserError("Error", "Path", 1));
errorsCollection.Add(new ParserError("Error", "Path", 1));
collection.AddRange(errorsCollection);

// Test for the presence of a ParserError in the
// collection, and retrieve its index if it is found.
ParserError testError = new ParserError("Error", "Path", 1);
int itemIndex = -1;
if (collection.Contains(testError))
  itemIndex = collection.IndexOf(testError);

// Copy the contents of the collection to a
// compatible array, starting at index 0 of the
// destination array.
ParserError[] errorsToSort = new ParserError[5];
collection.CopyTo(errorsToSort, 0);

// Retrieve the count of the items in the collection.
int collectionCount = collection.Count;

// Insert a ParserError at index 0 of the collection.
ParserError error = new ParserError("Error", "Path", 1);
collection.Insert(0, error);

// Remove the specified ParserError from the collection.
collection.Remove(error);

// Remove the ParserError at index 0.
collection.RemoveAt(0);

System.Web System.Web..::.ParserErrorCollectionParserErrorCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 成员
System.Web 命名空间
BuildProvider
HttpException


ParserErrorCollection 成员

ParserErrorCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserErrorCollection 类

管理分析过程中检测到的一组分析器错误。无法继承此类。 管理分析过程中检测到的一组分析器错误。无法继承此类。

ParserErrorCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ParserErrorCollection 类
System.Web 命名空间


ParserErrorCollection 构造函数

ParserErrorCollection 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserErrorCollection 类

初始化 ParserErrorCollection 类的新实例。

名称 说明
页首

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection 构造函数

ParserErrorCollection 构造函数
ParserErrorCollection 类

初始化 ParserErrorCollection 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public ParserErrorCollection()
public:
ParserErrorCollection()
new : unit -> ParserErrorCollection

下面的代码示例演示如何初始化 ParserErrorCollection 类的实例。

' Create an empty ParserErrorCollection.
Dim collection As New ParserErrorCollection()

// Create an empty ParserErrorCollection.
ParserErrorCollection collection = new ParserErrorCollection();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
ParserErrorCollection 重载
System.Web 命名空间


ParserErrorCollection 构造函数 ( array<ParserError >[]()[])

ParserErrorCollection 构造函数 (
array<
ParserError
>
[]
()
[]
)
ParserErrorCollection 类

初始化 ParserErrorCollection 类的一个新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    value As ParserError() _
)
public ParserErrorCollection(
    ParserError[] value
)
public:
ParserErrorCollection(
    array<ParserError^>^ value
)
new :
        value:ParserError[] -> ParserErrorCollection

参数

value
类型：
array<
System.Web ParserError
>
[]
()
[]

一个 ParserError 类型的数组，用于指定要添加到集合中的错误。

ParserErrorCollection..::.ParserErrorCollection 构造函数可向集合中添加 ParserError 对象的数组。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
ParserErrorCollection 重载
System.Web 命名空间


ParserErrorCollection 方法

ParserErrorCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserErrorCollection 类

ParserErrorCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

ParserErrorCollection 类
System.Web 命名空间


ParserErrorCollection ..::.Add 方法

ParserErrorCollection
.
.
::
.
Add 方法
ParserErrorCollection 类

向集合中添加一个值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Add ( _
    value As ParserError _
) As Integer
public int Add(
    ParserError value
)
public:
int Add(
    ParserError^ value
)
member Add :
        value:ParserError -> int

参数

value
类型： System.Web ParserError
要添加到集合中的 ParserError 值。

返回值

类型： System Int32
该值在集合中的索引；否则，如果集合中已存在该值，则为 -1。

使用 Add 方法可将现有的 ParserError 对象添加到集合中。不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 对象调用 Add 方法时，添加操作将失败并返回 -1。 使用 Add 方法可将现有的 ParserError 对象添加到集合中。不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 对象调用 Add 方法时，添加操作将失败并返回 -1。 使用 Add 方法可将现有的 ParserError 对象添加到集合中。不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 对象调用 Add 方法时，添加操作将失败并返回 -1。

若要向集合中添加多个对象，请使用 AddRange 方法。

下面的代码示例演示如何向将 ParserErrorCollection 对象中添加一个 ParserError 对象。

' Add a ParserError to the collection.
collection.Add(New ParserError("ErrorName", "Path", 1))

// Add a ParserError to the collection.
collection.Add(new ParserError("ErrorName", "Path", 1));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection ..::.AddRange 方法

ParserErrorCollection
.
.
::
.
AddRange 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserErrorCollection 类

向集合中添加 ParserError 对象。

名称 说明
页首

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection ..::.AddRange 方法 ( array<ParserError >[]()[])

ParserErrorCollection
.
.
::
.
AddRange 方法 (
array<
ParserError
>
[]
()
[]
)
ParserErrorCollection 类

向集合中添加 ParserError 对象的数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddRange ( _
    value As ParserError() _
)
public void AddRange(
    ParserError[] value
)
public:
void AddRange(
    array<ParserError^>^ value
)
member AddRange :
        value:ParserError[] -> unit

参数

value
类型：
array<
System.Web ParserError
>
[]
()
[]

一个 ParserError 类型的数组，用于指定要添加到集合的值。
异常 | 条件
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用 AddRange 方法可将 ParserError 对象的数组添加到集合中。当您创建多个 ParserError 对象并想通过单个方法调用就将这些对象添加到集合中时，则可以使用 AddRange。若要将个别 ParserError 对象添加到集合中，请使用 Add 方法。 使用 AddRange 方法可将 ParserError 对象的数组添加到集合中。当您创建多个 ParserError 对象并想通过单个方法调用就将这些对象添加到集合中时，则可以使用 AddRange。若要将个别 ParserError 对象添加到集合中，请使用 Add 方法。 使用 AddRange 方法可将 ParserError 对象的数组添加到集合中。当您创建多个 ParserError 对象并想通过单个方法调用就将这些对象添加到集合中时，则可以使用 AddRange。若要将个别 ParserError 对象添加到集合中，请使用 Add 方法。

下面的代码示例演示如何向 ParserErrorCollection 对象添加一系列 ParserError 对象。

' Add an array of ParserError objects to the collection.
Dim errors As ParserError() = _
    {New ParserError("Error 2", "Path", 1), _
    New ParserError("Error 3", "Path", 1)}
collection.AddRange(errors)

' Ads a collection of ParserError objects to the collection.
Dim errorsCollection As New ParserErrorCollection()
errorsCollection.Add(New ParserError("Error", "Path", 1))
errorsCollection.Add(New ParserError("Error", "Path", 1))
collection.AddRange(errorsCollection)

// Add an array of ParserError objects to the collection.
ParserError[] errors =
    { new ParserError("Error 2", "Path", 1),
    new ParserError("Error 3", "Path", 1) };
collection.AddRange(errors);

// Add a collection of ParserError objects to the collection.
ParserErrorCollection errorsCollection = new ParserErrorCollection();
errorsCollection.Add(new ParserError("Error", "Path", 1));
errorsCollection.Add(new ParserError("Error", "Path", 1));
collection.AddRange(errorsCollection);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
AddRange 重载
System.Web 命名空间


ParserErrorCollection ..::.AddRange 方法 (ParserErrorCollection)

ParserErrorCollection
.
.
::
.
AddRange 方法 (ParserErrorCollection)
ParserErrorCollection 类

向集合中添加现有 ParserErrorCollection 中的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddRange ( _
    value As ParserErrorCollection _
)
public void AddRange(
    ParserErrorCollection value
)
public:
void AddRange(
    ParserErrorCollection^ value
)
member AddRange :
        value:ParserErrorCollection -> unit

参数

value
类型： System.Web ParserErrorCollection
包含要添加到集合中的 ParserError 对象的 ParserErrorCollection。
异常 | 条件
ArgumentNullException | ParserError 值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

与 Add 方法不同，AddRange 方法没有一个返回值可用于确定所添加的 ParserError 对象是否已在集合中。如果您需要这方面的信息，可在使用 AddRange 之前使用 Contains 方法。 与 Add 方法不同，AddRange 方法没有一个返回值可用于确定所添加的 ParserError 对象是否已在集合中。如果您需要这方面的信息，可在使用 AddRange 之前使用 Contains 方法。

下面的代码示例演示如何向 ParserErrorCollection 对象添加一系列 ParserError 对象。

' Add an array of ParserError objects to the collection.
Dim errors As ParserError() = _
    {New ParserError("Error 2", "Path", 1), _
    New ParserError("Error 3", "Path", 1)}
collection.AddRange(errors)

' Ads a collection of ParserError objects to the collection.
Dim errorsCollection As New ParserErrorCollection()
errorsCollection.Add(New ParserError("Error", "Path", 1))
errorsCollection.Add(New ParserError("Error", "Path", 1))
collection.AddRange(errorsCollection)

// Add an array of ParserError objects to the collection.
ParserError[] errors =
    { new ParserError("Error 2", "Path", 1),
    new ParserError("Error 3", "Path", 1) };
collection.AddRange(errors);

// Add a collection of ParserError objects to the collection.
ParserErrorCollection errorsCollection = new ParserErrorCollection();
errorsCollection.Add(new ParserError("Error", "Path", 1));
errorsCollection.Add(new ParserError("Error", "Path", 1));
collection.AddRange(errorsCollection);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
AddRange 重载
System.Web 命名空间


ParserErrorCollection ..::.Contains 方法

ParserErrorCollection
.
.
::
.
Contains 方法
ParserErrorCollection 类

确定 ParserError 对象是否位于集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function Contains ( _
    value As ParserError _
) As Boolean
public bool Contains(
    ParserError value
)
public:
bool Contains(
    ParserError^ value
)
member Contains :
        value:ParserError -> bool

参数

value
类型： System.Web ParserError
要在集合中定位的 ParserError。

返回值

类型： System Boolean
如果 ParserError 在集合中，则为 true；否则为 false。

不能多次将同一 ParserError 对象添加到集合中。但是，多次尝试添加 ParserError 对象不会引发异常，而是导致现添加操作失败。在这种情况下，Add 方法将返回值 –1。但是，AddRange 和 Insert 方法没有返回值。当使用这些方法中的一个方法来添加 ParserError 对象时，请使用 Contains 方法来确定某个 ParserError 对象是否已在集合中。 不能多次将同一 ParserError 对象添加到集合中。但是，多次尝试添加 ParserError 对象不会引发异常，而是导致现添加操作失败。在这种情况下，Add 方法将返回值 –1。但是，AddRange 和 Insert 方法没有返回值。当使用这些方法中的一个方法来添加 ParserError 对象时，请使用 Contains 方法来确定某个 ParserError 对象是否已在集合中。 不能多次将同一 ParserError 对象添加到集合中。但是，多次尝试添加 ParserError 对象不会引发异常，而是导致现添加操作失败。在这种情况下，Add 方法将返回值 –1。但是，AddRange 和 Insert 方法没有返回值。当使用这些方法中的一个方法来添加 ParserError 对象时，请使用 Contains 方法来确定某个 ParserError 对象是否已在集合中。 不能多次将同一 ParserError 对象添加到集合中。但是，多次尝试添加 ParserError 对象不会引发异常，而是导致现添加操作失败。在这种情况下，Add 方法将返回值 –1。但是，AddRange 和 Insert 方法没有返回值。当使用这些方法中的一个方法来添加 ParserError 对象时，请使用 Contains 方法来确定某个 ParserError 对象是否已在集合中。 不能多次将同一 ParserError 对象添加到集合中。但是，多次尝试添加 ParserError 对象不会引发异常，而是导致现添加操作失败。在这种情况下，Add 方法将返回值 –1。但是，AddRange 和 Insert 方法没有返回值。当使用这些方法中的一个方法来添加 ParserError 对象时，请使用 Contains 方法来确定某个 ParserError 对象是否已在集合中。 不能多次将同一 ParserError 对象添加到集合中。但是，多次尝试添加 ParserError 对象不会引发异常，而是导致现添加操作失败。在这种情况下，Add 方法将返回值 –1。但是，AddRange 和 Insert 方法没有返回值。当使用这些方法中的一个方法来添加 ParserError 对象时，请使用 Contains 方法来确定某个 ParserError 对象是否已在集合中。

下面的代码示例演示如何在 ParserErrorCollection 对象中搜索指定 ParserError 对象的实例。

' Test for the presence of a ParserError in the
' collection, and retrieve its index if it is found.
Dim testError As New ParserError("Error", "Path", 1)
Dim itemIndex As Integer = -1
If collection.Contains(testError) Then
  itemIndex = collection.IndexOf(testError)
End If

// Test for the presence of a ParserError in the
// collection, and retrieve its index if it is found.
ParserError testError = new ParserError("Error", "Path", 1);
int itemIndex = -1;
if (collection.Contains(testError))
  itemIndex = collection.IndexOf(testError);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection ..::.CopyTo 方法

ParserErrorCollection
.
.
::
.
CopyTo 方法
ParserErrorCollection 类

将集合中的 ParserError 对象复制到一个兼容的一维数组（从目标数组的指定索引处开始）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub CopyTo ( _
    array As ParserError(), _
    index As Integer _
)
public void CopyTo(
    ParserError[] array,
    int index
)
public:
void CopyTo(
    array<ParserError^>^ array,
    int index
)
member CopyTo :
        array:ParserError[] *
        index:int -> unit

参数

array
类型：
array<
System.Web ParserError
>
[]
()
[]

一个 ParserError 类型的数组，集合中的分析器错误将被复制到该数组中。
index
类型： System Int32
数组中的第一个索引，ParserError 将被复制到此索引处。

使用 CopyTo 方法可将集合中的 ParserError 对象（包括这些对象包含的项目引用）复制到一个兼容的数组中（从指定的索引处开始）。当您要使用 Sort 方法对集合中的 ParserError 对象进行排序时，可以使用上面的方法。若要进行此操作： 使用 CopyTo 方法可将集合中的 ParserError 对象（包括这些对象包含的项目引用）复制到一个兼容的数组中（从指定的索引处开始）。当您要使用 Sort 方法对集合中的 ParserError 对象进行排序时，可以使用上面的方法。若要进行此操作： 使用 CopyTo 方法可将集合中的 ParserError 对象（包括这些对象包含的项目引用）复制到一个兼容的数组中（从指定的索引处开始）。当您要使用 Sort 方法对集合中的 ParserError 对象进行排序时，可以使用上面的方法。若要进行此操作：

  1. 将 ParserError 对象复制到一个兼容的数组中。

  2. 对数组进行排序。

  3. 使用 Remove 方法从集合中移除所有 ParserError 对象。

  4. 使用 AddRange 方法将经过排序的数组添加回集合。

下面的代码示例演示如何将 ParserErrorCollection 对象的内容复制到指定的 ParserError 数组中。

' Copy the contents of the collection to a
' compatible array, starting at index 0 of the
' destination array.
Dim errorsToSort(5) As ParserError
collection.CopyTo(errorsToSort, 0)

// Copy the contents of the collection to a
// compatible array, starting at index 0 of the
// destination array.
ParserError[] errorsToSort = new ParserError[5];
collection.CopyTo(errorsToSort, 0);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection ..::.IndexOf 方法

ParserErrorCollection
.
.
::
.
IndexOf 方法
ParserErrorCollection 类

获取集合中指定 ParserError 对象的索引。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function IndexOf ( _
    value As ParserError _
) As Integer
public int IndexOf(
    ParserError value
)
public:
int IndexOf(
    ParserError^ value
)
member IndexOf :
        value:ParserError -> int

参数

value
类型： System.Web ParserError
要在集合中定位的 ParserError。

返回值

类型： System Int32
ParserError 对象在集合中索引（索引从零开始的）；否则，如果 ParserError 不在集合中，则为 1。

使用 IndexOf 方法可确定集合内 ParserError 对象的索引。当您使用 GetEnumerator 方法返回的 IEnumerator 对象循环访问集合时，此方法对于确定每个 ParserError 的索引很有用。 使用 IndexOf 方法可确定集合内 ParserError 对象的索引。当您使用 GetEnumerator 方法返回的 IEnumerator 对象循环访问集合时，此方法对于确定每个 ParserError 的索引很有用。

下面的代码示例演示如何在 ParserErrorCollection 集合的指定索引处找到 ParserError 对象的索引。

' Test for the presence of a ParserError in the
' collection, and retrieve its index if it is found.
Dim testError As New ParserError("Error", "Path", 1)
Dim itemIndex As Integer = -1
If collection.Contains(testError) Then
  itemIndex = collection.IndexOf(testError)
End If

// Test for the presence of a ParserError in the
// collection, and retrieve its index if it is found.
ParserError testError = new ParserError("Error", "Path", 1);
int itemIndex = -1;
if (collection.Contains(testError))
  itemIndex = collection.IndexOf(testError);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection ..::.Insert 方法

ParserErrorCollection
.
.
::
.
Insert 方法
ParserErrorCollection 类

将指定的 ParserError 对象插入集合中指定的索引位置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Insert ( _
    index As Integer, _
    value As ParserError _
)
public void Insert(
    int index,
    ParserError value
)
public:
void Insert(
    int index,
    ParserError^ value
)
member Insert :
        index:int *
        value:ParserError -> unit

参数

index
类型： System Int32
在集合中要插入 ParserError 的索引位置。
value
类型： System.Web ParserError
要插入到集合中的 ParserError 对象。

使用 Insert 方法可将现有的 ParserError 对象插入到集合中的特定索引处。

不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 调用 Insert 方法时，插入操作将失败。在插入之前，可使用 Contains 方法确定特定的 ParserError 是否已在集合中。若要在集合中调整 ParserError 的位置，必须首先使用 Remove 方法移除它，然后使用 Insert 将其插入到所需的索引处。 不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 调用 Insert 方法时，插入操作将失败。在插入之前，可使用 Contains 方法确定特定的 ParserError 是否已在集合中。若要在集合中调整 ParserError 的位置，必须首先使用 Remove 方法移除它，然后使用 Insert 将其插入到所需的索引处。 不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 调用 Insert 方法时，插入操作将失败。在插入之前，可使用 Contains 方法确定特定的 ParserError 是否已在集合中。若要在集合中调整 ParserError 的位置，必须首先使用 Remove 方法移除它，然后使用 Insert 将其插入到所需的索引处。 不能多次将同一 ParserError 对象添加到集合中。当您使用集合中已有的 ParserError 调用 Insert 方法时，插入操作将失败。在插入之前，可使用 Contains 方法确定特定的 ParserError 是否已在集合中。若要在集合中调整 ParserError 的位置，必须首先使用 Remove 方法移除它，然后使用 Insert 将其插入到所需的索引处。

下面的代码示例演示如何将 ParserError 对象插入到 ParserErrorCollection 集合中的指定索引处。

' Insert a ParserError at index 0 of the collection.
Dim [error] As New ParserError("Error", "Path", 1)
collection.Insert(0, [error])

' Remove the specified ParserError from the collection.
collection.Remove([error])

// Insert a ParserError at index 0 of the collection.
ParserError error = new ParserError("Error", "Path", 1);
collection.Insert(0, error);

// Remove the specified ParserError from the collection.
collection.Remove(error);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection ..::.Remove 方法

ParserErrorCollection
.
.
::
.
Remove 方法
ParserErrorCollection 类

从集合中移除指定的 ParserError 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Remove ( _
    value As ParserError _
)
public void Remove(
    ParserError value
)
public:
void Remove(
    ParserError^ value
)
member Remove :
        value:ParserError -> unit

参数

value
类型： System.Web ParserError
要从该集合中移除的 ParserError。

当您有对 ParserError 的引用时，可使用 Remove 方法从集合中移除 ParserError 对象。

下面的代码示例演示如何从 ParserErrorCollection 对象的指定索引处移除 ParserError。

' Insert a ParserError at index 0 of the collection.
Dim [error] As New ParserError("Error", "Path", 1)
collection.Insert(0, [error])

' Remove the specified ParserError from the collection.
collection.Remove([error])

// Insert a ParserError at index 0 of the collection.
ParserError error = new ParserError("Error", "Path", 1);
collection.Insert(0, error);

// Remove the specified ParserError from the collection.
collection.Remove(error);

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


ParserErrorCollection 属性

ParserErrorCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ParserErrorCollection 类

ParserErrorCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

ParserErrorCollection 类
System.Web 命名空间


ParserErrorCollection ..::.Item 属性

ParserErrorCollection
.
.
::
.
Item 属性
ParserErrorCollection 类

获取或设置集合内指定索引处的 ParserError 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Item ( _
    index As Integer _
) As ParserError
    Get
    Set
public ParserError this[
    int index
] { get; set; }
public:
property ParserError^ Item[int index] {
    ParserError^ get (int index);
    void set (int index, ParserError^ value);
}
member Item : ParserError with get, set

参数

index
类型： System Int32
要获取或设置的 ParserError 对象在集合中的索引。

属性值

类型： System.Web ParserError
集合中指定索引处的 ParserError。

使用 Item 属性可在集合中的指定索引处检索 ParserError 对象。当您有对 ParserError 对象的引用并需要索引时，请使用 IndexOf 方法。 使用 Item 属性可在集合中的指定索引处检索 ParserError 对象。当您有对 ParserError 对象的引用并需要索引时，请使用 IndexOf 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

ParserErrorCollection 类
ParserErrorCollection 成员
System.Web 命名空间


PreApplicationStartMethodAttribute 类

PreApplicationStartMethodAttribute 类
成员

提供对应用程序启动的扩展支持。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple := False)> _
Public NotInheritable Class PreApplicationStartMethodAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false)]
public sealed class PreApplicationStartMethodAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Assembly, AllowMultiple = false)]
public ref class PreApplicationStartMethodAttribute sealed : public Attribute
[<SealedAttribute>]
[<AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple = false)>]
type PreApplicationStartMethodAttribute =
    class
        inherit Attribute
    end

  • 不能保证调用程序集定义的应用程序启动方法的顺序。因此，每个注册的开始方法应该将代码编写为分开运行，不应该依赖于其他注册开始方法的副作用。 不能保证调用程序集定义的应用程序启动方法的顺序。因此，每个注册的开始方法应该将代码编写为分开运行，不应该依赖于其他注册开始方法的副作用。

有关使用特性的更多信息，请参见利用特性扩展元数据。

System.Web System.Web..::.PreApplicationStartMethodAttributePreApplicationStartMethodAttribute
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

PreApplicationStartMethodAttribute 成员
System.Web 命名空间


PreApplicationStartMethodAttribute 成员

PreApplicationStartMethodAttribute 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PreApplicationStartMethodAttribute 类

提供对应用程序启动的扩展支持。

PreApplicationStartMethodAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

PreApplicationStartMethodAttribute 类
System.Web 命名空间


PreApplicationStartMethodAttribute 构造函数

PreApplicationStartMethodAttribute 构造函数
PreApplicationStartMethodAttribute 类

初始化 PreApplicationStartMethodAttribute 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    type As Type, _
    methodName As String _
)
public PreApplicationStartMethodAttribute(
    Type type,
    string methodName
)
public:
PreApplicationStartMethodAttribute(
    Type^ type,
    String^ methodName
)
new :
        type:Type *
        methodName:string -> PreApplicationStartMethodAttribute

参数

type
类型： System Type
一个描述启动方法的类型的对象。
methodName
类型： System String
没有返回值的空参数签名。

methodName 参数所引用的方法必须是公共的，它可以是实例方法也可以是静态方法。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

PreApplicationStartMethodAttribute 类
PreApplicationStartMethodAttribute 成员
System.Web 命名空间


PreApplicationStartMethodAttribute 方法

PreApplicationStartMethodAttribute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PreApplicationStartMethodAttribute 类

PreApplicationStartMethodAttribute 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

PreApplicationStartMethodAttribute 类
System.Web 命名空间


PreApplicationStartMethodAttribute 属性

PreApplicationStartMethodAttribute 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
PreApplicationStartMethodAttribute 类

PreApplicationStartMethodAttribute 类型公开以下成员。

名称 说明
页首

参考

PreApplicationStartMethodAttribute 类
System.Web 命名空间


PreApplicationStartMethodAttribute ..::.MethodName 属性

PreApplicationStartMethodAttribute
.
.
::
.
MethodName 属性
PreApplicationStartMethodAttribute 类

获取关联的启动方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property MethodName As String
    Get
public string MethodName { get; }
public:
property String^ MethodName {
    String^ get ();
}
member MethodName : string

属性值

类型： System String
一个字符串，其中包含关联启动方法的名称。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

PreApplicationStartMethodAttribute 类
PreApplicationStartMethodAttribute 成员
System.Web 命名空间


PreApplicationStartMethodAttribute ..::.Type 属性

PreApplicationStartMethodAttribute
.
.
::
.
Type 属性
PreApplicationStartMethodAttribute 类

获取关联启动方法所返回的类型。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Type As Type
    Get
public Type Type { get; }
public:
property Type^ Type {
    Type^ get ();
}
member Type : Type

属性值

类型： System Type
一个描述启动方法的类型的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4

参考

PreApplicationStartMethodAttribute 类
PreApplicationStartMethodAttribute 成员
System.Web 命名空间


ProcessInfo 类

ProcessInfo 类
成员

提供有关当前正在执行的进程的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class ProcessInfo
public class ProcessInfo
public ref class ProcessInfo
type ProcessInfo =  class end

此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的对象的唯一有用方式。 此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的对象的唯一有用方式。 此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的对象的唯一有用方式。

说明 说明

如果您使用的是 Microsoft Internet 信息服务 (IIS) 6.0，则只有当在 IIS 5.0 隔离模式下运行时，由 ProcessInfo 类返回的进程规格才可用。如果您在辅助进程隔离模式下使用 IIS 6.0，将禁用 ASP.NET 进程模型，并且当您访问 ProcessInfo 成员时会引发 HttpException 异常。 如果您使用的是 Microsoft Internet 信息服务 (IIS) 6.0，则只有当在 IIS 5.0 隔离模式下运行时，由 ProcessInfo 类返回的进程规格才可用。如果您在辅助进程隔离模式下使用 IIS 6.0，将禁用 ASP.NET 进程模型，并且当您访问 ProcessInfo 成员时会引发 HttpException 异常。

下面的代码示例演示 ProcessInfo 类中 Age、PeakMemoryUsed、ProcessID、RequestCount、ShutdownReason、StartTime 和 Status 属性的用法。该示例演示 LinkButton。单击 LinkButton 时，会显示当前进程的信息。 下面的代码示例演示 ProcessInfo 类中 Age、PeakMemoryUsed、ProcessID、RequestCount、ShutdownReason、StartTime 和 Status 属性的用法。该示例演示 LinkButton。单击 LinkButton 时，会显示当前进程的信息。 下面的代码示例演示 ProcessInfo 类中 Age、PeakMemoryUsed、ProcessID、RequestCount、ShutdownReason、StartTime 和 Status 属性的用法。该示例演示 LinkButton。单击 LinkButton 时，会显示当前进程的信息。

<%@ Page language="vb" AutoEventWireup="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ASP.NET Example</title>
<script language="vb" runat="server">
      Sub GetProcessInfo(sender As Object, e As System.EventArgs)
        Dim pi As ProcessInfo

        'Get information about the current process.
        pi = ProcessModelInfo.GetCurrentProcessInfo()

        Literal1.Text = "<p>Age: " & pi.Age.ToString & "</p>"
        Literal1.Text = Literal1.Text & "<p>PeakMemoryUsed: " & pi.PeakMemoryUsed.ToString & "</p>"
        Literal1.Text = Literal1.Text & "<p>ProcessID: " & pi.ProcessID.ToString & "</p>"
        Literal1.Text = Literal1.Text & "<p>RequestCount: " & pi.RequestCount.ToString & "</p>"
        Literal1.Text = Literal1.Text & "<p>ShutdownReason: " & pi.ShutdownReason.ToString & "</p>"
        Literal1.Text = Literal1.Text & "<p>StartTime: " & pi.StartTime.ToString & "</p>"
        Literal1.Text = Literal1.Text & "<p>Status: " & pi.Status.ToString & "</p>"
      End Sub
    </script>
  </head>
  <body>
    <form id="WebForm2" method="post" runat="server">
      <asp:button id="Button1" OnClick="GetProcessInfo" runat="server" Text="Get Process Info"></asp:button>
            &nbsp;
      <asp:Literal id="Literal1" runat="server"></asp:Literal>
    </form>
  </body>
</html>

<%@ Page language="c#" AutoEventWireup="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ASP.NET Example</title>
<script language="c#" runat="server">
      void GetProcessInfo(Object sender, EventArgs e)
      {
        ProcessInfo pi;

        // Get the current process information.
        pi = ProcessModelInfo.GetCurrentProcessInfo();

        Literal1.Text = "<p>Age: " + pi.Age + "</p>";
        Literal1.Text += "<p>PeakMemoryUsed: " + pi.PeakMemoryUsed + "</p>";
        Literal1.Text += "<p>ProcessID: " + pi.ProcessID + "</p>";
        Literal1.Text += "<p>RequestCount: " + pi.RequestCount + "</p>";
        Literal1.Text += "<p>ShutdownReason: " + pi.ShutdownReason + "</p>";
        Literal1.Text += "<p>StartTime: " + pi.StartTime + "</p>";
        Literal1.Text += "<p>Status: " + pi.Status + "</p>";
      }
      </script>
    </head>
    <body>
    <form id="WebForm1" method="post" runat="server">
      <asp:button id="Button1" OnClick="GetProcessInfo" runat="server" Text="Get Process Info"></asp:button>
            &nbsp;
      <asp:Literal id="Literal1" runat="server"></asp:Literal>
    </form>
  </body>
</html>

System.Web System.Web..::.ProcessInfoProcessInfo
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 成员
System.Web 命名空间

其他资源

processModel 元素（ASP.NET 设置架构）


ProcessInfo 成员

ProcessInfo 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ProcessInfo 类

提供有关当前正在执行的进程的信息。

ProcessInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

ProcessInfo 类
System.Web 命名空间


ProcessInfo 构造函数

ProcessInfo 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ProcessInfo 类

初始化 ProcessInfo 类的新实例。

名称 说明
页首

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo 构造函数

ProcessInfo 构造函数
ProcessInfo 类

初始化 ProcessInfo 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public ProcessInfo()
public:
ProcessInfo()
new : unit -> ProcessInfo

此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的 ProcessInfo 对象的唯一有用方式。 此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的 ProcessInfo 对象的唯一有用方式。 此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的 ProcessInfo 对象的唯一有用方式。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
ProcessInfo 重载
System.Web 命名空间


ProcessInfo 构造函数 (DateTime, TimeSpan, Int32, Int32, ProcessStatus, ProcessShutdownReason, Int32)

ProcessInfo 构造函数 (DateTime, TimeSpan, Int32, Int32, ProcessStatus, ProcessShutdownReason, Int32)
ProcessInfo 类

初始化 ProcessInfo 类的新实例并设置指示进程状态的内部信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    startTime As DateTime, _
    age As TimeSpan, _
    processID As Integer, _
    requestCount As Integer, _
    status As ProcessStatus, _
    shutdownReason As ProcessShutdownReason, _
    peakMemoryUsed As Integer _
)
public ProcessInfo(
    DateTime startTime,
    TimeSpan age,
    int processID,
    int requestCount,
    ProcessStatus status,
    ProcessShutdownReason shutdownReason,
    int peakMemoryUsed
)
public:
ProcessInfo(
    DateTime startTime,
    TimeSpan age,
    int processID,
    int requestCount,
    ProcessStatus status,
    ProcessShutdownReason shutdownReason,
    int peakMemoryUsed
)
new :
        startTime:DateTime *
        age:TimeSpan *
        processID:int *
        requestCount:int *
        status:ProcessStatus *
        shutdownReason:ProcessShutdownReason *
        peakMemoryUsed:int -> ProcessInfo

参数

startTime
类型： System DateTime
指示进程启动时间的 DateTime。
age
类型： System TimeSpan
TimeSpan，它指示进程启动后所经过的时间。
processID
类型： System Int32
分配给进程的 ID 号。
requestCount
类型： System Int32
进程的启动请求数。
status
类型： System.Web ProcessStatus
ProcessStatus 值之一，它指示进程的当前状态。
shutdownReason
类型： System.Web ProcessShutdownReason
ProcessShutdownReason 值之一。
peakMemoryUsed
类型： System Int32
使用的最大内存，以千字节 (KB) 为单位。

此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的 ProcessInfo 对象的唯一有用方式。 此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的 ProcessInfo 对象的唯一有用方式。 此类返回在 ASP.NET 进程模型下运行的 ASP.NET 辅助进程的信息。static 方法 ProcessModelInfo..::.GetCurrentProcessInfo 和 ProcessModelInfo..::.GetHistory 返回此类型的对象。这些方法是创建初始化的 ProcessInfo 对象的唯一有用方式。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
ProcessInfo 重载
System.Web 命名空间


ProcessInfo 方法

ProcessInfo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ProcessInfo 类

ProcessInfo 类型公开以下成员。

名称 说明
页首

参考

ProcessInfo 类
System.Web 命名空间


ProcessInfo ..::.SetAll 方法

ProcessInfo
.
.
::
.
SetAll 方法
ProcessInfo 类

设置指示进程状态的内部信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub SetAll ( _
    startTime As DateTime, _
    age As TimeSpan, _
    processID As Integer, _
    requestCount As Integer, _
    status As ProcessStatus, _
    shutdownReason As ProcessShutdownReason, _
    peakMemoryUsed As Integer _
)
public void SetAll(
    DateTime startTime,
    TimeSpan age,
    int processID,
    int requestCount,
    ProcessStatus status,
    ProcessShutdownReason shutdownReason,
    int peakMemoryUsed
)
public:
void SetAll(
    DateTime startTime,
    TimeSpan age,
    int processID,
    int requestCount,
    ProcessStatus status,
    ProcessShutdownReason shutdownReason,
    int peakMemoryUsed
)
member SetAll :
        startTime:DateTime *
        age:TimeSpan *
        processID:int *
        requestCount:int *
        status:ProcessStatus *
        shutdownReason:ProcessShutdownReason *
        peakMemoryUsed:int -> unit

参数

startTime
类型： System DateTime
指示进程启动时间的 DateTime。
age
类型： System TimeSpan
一个 TimeSpan，它指示进程启动后所经过的时间。
processID
类型： System Int32
分配给进程的 ID 号。
requestCount
类型： System Int32
进程的启动请求数。
status
类型： System.Web ProcessStatus
ProcessStatus 值之一，它指示进程启动后所经过的时间。
shutdownReason
类型： System.Web ProcessShutdownReason
ProcessShutdownReason 值之一。
peakMemoryUsed
类型： System Int32
使用的最大内存，以千字节 (KB) 为单位。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo 属性

ProcessInfo 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ProcessInfo 类

ProcessInfo 类型公开以下成员。

名称 说明
页首

参考

ProcessInfo 类
System.Web 命名空间


ProcessInfo ..::.Age 属性

ProcessInfo
.
.
::
.
Age 属性
ProcessInfo 类

获取进程已运行的时间长度。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Age As TimeSpan
    Get
public TimeSpan Age { get; }
public:
property TimeSpan Age {
    TimeSpan get ();
}
member Age : TimeSpan

属性值

类型： System TimeSpan
一个 TimeSpan，它指示进程启动后所经过的时间。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo ..::.PeakMemoryUsed 属性

ProcessInfo
.
.
::
.
PeakMemoryUsed 属性
ProcessInfo 类

获取进程已占用的最大内存量。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property PeakMemoryUsed As Integer
    Get
public int PeakMemoryUsed { get; }
public:
property int PeakMemoryUsed {
    int get ();
}
member PeakMemoryUsed : int

属性值

类型： System Int32
使用的最大内存，以千字节 (KB) 为单位。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo ..::.ProcessID 属性

ProcessInfo
.
.
::
.
ProcessID 属性
ProcessInfo 类

获取分配给进程的 ID 号。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ProcessID As Integer
    Get
public int ProcessID { get; }
public:
property int ProcessID {
    int get ();
}
member ProcessID : int

属性值

类型： System Int32
由 Windows 分配的进程 ID 号。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo ..::.RequestCount 属性

ProcessInfo
.
.
::
.
RequestCount 属性
ProcessInfo 类

获取进程的启动请求数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property RequestCount As Integer
    Get
public int RequestCount { get; }
public:
property int RequestCount {
    int get ();
}
member RequestCount : int

属性值

类型： System Int32
进程所执行的请求的数目。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo ..::.ShutdownReason 属性

ProcessInfo
.
.
::
.
ShutdownReason 属性
ProcessInfo 类

获取一个指示进程关闭原因的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ShutdownReason As ProcessShutdownReason
    Get
public ProcessShutdownReason ShutdownReason { get; }
public:
property ProcessShutdownReason ShutdownReason {
    ProcessShutdownReason get ();
}
member ShutdownReason : ProcessShutdownReason

属性值

类型： System.Web ProcessShutdownReason
ProcessShutdownReason 值之一。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间
ProcessShutdownReason


ProcessInfo ..::.StartTime 属性

ProcessInfo
.
.
::
.
StartTime 属性
ProcessInfo 类

获取进程的启动时间。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property StartTime As DateTime
    Get
public DateTime StartTime { get; }
public:
property DateTime StartTime {
    DateTime get ();
}
member StartTime : DateTime

属性值

类型： System DateTime
指示进程启动时间的 DateTime。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间


ProcessInfo ..::.Status 属性

ProcessInfo
.
.
::
.
Status 属性
ProcessInfo 类

获取进程的当前状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Status As ProcessStatus
    Get
public ProcessStatus Status { get; }
public:
property ProcessStatus Status {
    ProcessStatus get ();
}
member Status : ProcessStatus

属性值

类型： System.Web ProcessStatus
ProcessStatus 值之一，它指示进程的当前状态。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessInfo 类
ProcessInfo 成员
System.Web 命名空间
ProcessStatus


ProcessModelInfo 类

ProcessModelInfo 类
成员

包含用于返回有关辅助进程的信息的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class ProcessModelInfo
public class ProcessModelInfo
public ref class ProcessModelInfo
type ProcessModelInfo =  class end

ProcessModelInfo 类不宜在您自己的代码中进行实例化。请使用静态方法 GetCurrentProcessInfo 和 GetHistory 来填充 ProcessInfo 对象，然后使用 ProcessInfo 对象的属性获取有关进程的信息。 ProcessModelInfo 类不宜在您自己的代码中进行实例化。请使用静态方法 GetCurrentProcessInfo 和 GetHistory 来填充 ProcessInfo 对象，然后使用 ProcessInfo 对象的属性获取有关进程的信息。

说明 说明

GetCurrentProcessInfo 和 GetHistory 方法只能用于 Microsoft Windows 2000 和 Windows XP 上的 Microsoft Internet 信息服务 (IIS) 5.0，或者用于 Windows Server 2003 上使用 IIS 5.0 隔离模式的 IIS 6.0。有关更多信息，请参见How to: Configure ASP.NET Applications for an ASP.NET Version。 GetCurrentProcessInfo 和 GetHistory 方法只能用于 Microsoft Windows 2000 和 Windows XP 上的 Microsoft Internet 信息服务 (IIS) 5.0，或者用于 Windows Server 2003 上使用 IIS 5.0 隔离模式的 IIS 6.0。有关更多信息，请参见How to: Configure ASP.NET Applications for an ASP.NET Version。

下面的代码示例演示如何调用 GetCurrentProcessInfo 方法来显示关于网页上当前正在执行的 ASP.NET 进程的统计信息。此示例将在 Windows 2000 和 Windows XP 上的 Internet 信息服务 5.0 或者 Windows Server 2003 上使用 IIS 5.0 隔离模式的 IIS 6.0 上正常运行。 下面的代码示例演示如何调用 GetCurrentProcessInfo 方法来显示关于网页上当前正在执行的 ASP.NET 进程的统计信息。此示例将在 Windows 2000 和 Windows XP 上的 Internet 信息服务 5.0 或者 Windows Server 2003 上使用 IIS 5.0 隔离模式的 IIS 6.0 上正常运行。

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
    DataGrid1.DataSource = GetProcessInfoAsDataSet()
    DataGrid1.DataBind()
End Sub

Function GetProcessInfoAsDataSet() As DataSet
    Dim ds As New DataSet
    Dim dt As New DataTable
    ds.Tables.Add(dt)
    ds.Tables(0).Columns.Add("ID", GetType(String))
    ds.Tables(0).Columns.Add("Start Time", GetType(String))
    ds.Tables(0).Columns.Add("Age", GetType(String))
    ds.Tables(0).Columns.Add("Request Count", GetType(String))
    ds.Tables(0).Columns.Add("Peak Memory", GetType(String))

    Dim info As ProcessInfo
    info = ProcessModelInfo.GetCurrentProcessInfo()

    Dim row As DataRow
    row = ds.Tables(0).NewRow()

    row("ID")         = info.ProcessID
    row("Start Time") = info.StartTime
    row("Age")        = info.Age
    row("Request Count") = info.RequestCount
    row("Peak Memory")= info.PeakMemoryUsed

    ds.Tables(0).Rows.Add(row)
    Return ds
End Function
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataGrid
            ID="DataGrid1"
            runat="server" />
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void Page_Load(object sender, EventArgs e)
{
    DataGrid1.DataSource = GetProcessInfoAsDataSet();
    DataGrid1.DataBind();
}

private DataSet GetProcessInfoAsDataSet()
{
    DataSet ds = new DataSet();
    ds.Tables.Add(new DataTable());
    ds.Tables[0].Columns.Add("ID",         typeof(string));
    ds.Tables[0].Columns.Add("Start Time", typeof(string));
    ds.Tables[0].Columns.Add("Age",        typeof (string));
    ds.Tables[0].Columns.Add("Request Count", typeof(string));
    ds.Tables[0].Columns.Add("Peak Memory",typeof(string));

    ProcessInfo info = ProcessModelInfo.GetCurrentProcessInfo();

    DataRow row = ds.Tables[0].NewRow();
    row["ID"]         = info.ProcessID;
    row["Start Time"] = info.StartTime;
    row["Age"]        = info.Age;
    row["Request Count"] = info.RequestCount;
    row["Peak Memory"]= info.PeakMemoryUsed;

    ds.Tables[0].Rows.Add(row);

    return ds;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataGrid
            ID="DataGrid1"
            runat="server" />
    </div>
    </form>
</body>
</html>

System.Web System.Web..::.ProcessModelInfoProcessModelInfo
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessModelInfo 成员
System.Web 命名空间

其他资源

processModel 元素（ASP.NET 设置架构）
How to: Configure ASP.NET Applications for an ASP.NET Version


ProcessModelInfo 成员

ProcessModelInfo 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ProcessModelInfo 类

包含用于返回有关辅助进程的信息的方法。

ProcessModelInfo 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

ProcessModelInfo 类
System.Web 命名空间


ProcessModelInfo 构造函数

ProcessModelInfo 构造函数
ProcessModelInfo 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 ProcessModelInfo 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public ProcessModelInfo()
public:
ProcessModelInfo()
new : unit -> ProcessModelInfo

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessModelInfo 类
ProcessModelInfo 成员
System.Web 命名空间


ProcessModelInfo 方法

ProcessModelInfo 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
ProcessModelInfo 类

ProcessModelInfo 类型公开以下成员。

名称 说明
页首

参考

ProcessModelInfo 类
System.Web 命名空间


ProcessModelInfo ..::.GetCurrentProcessInfo 方法

ProcessModelInfo
.
.
::
.
GetCurrentProcessInfo 方法
ProcessModelInfo 类

返回有关执行当前请求的辅助进程的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.High)> _
Public Shared Function GetCurrentProcessInfo As ProcessInfo
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)]
public static ProcessInfo GetCurrentProcessInfo()
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::High)]
public:
static ProcessInfo^ GetCurrentProcessInfo()
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)>]
static member GetCurrentProcessInfo : unit -> ProcessInfo

返回值

类型： System.Web ProcessInfo
ProcessInfo，它包含有关当前进程的信息。
异常 | 条件
HttpException | 进程信息对于当前请求不可用。

GetCurrentProcessInfo 方法仅适用于在 ASP.NET 进程模型下运行的应用程序。

下面的代码示例演示如何调用 GetCurrentProcessInfo 方法来显示关于网页上当前正在执行的 ASP.NET 进程的统计信息。

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
    DataGrid1.DataSource = GetProcessInfoAsDataSet()
    DataGrid1.DataBind()
End Sub

Function GetProcessInfoAsDataSet() As DataSet
    Dim ds As New DataSet
    Dim dt As New DataTable
    ds.Tables.Add(dt)
    ds.Tables(0).Columns.Add("ID", GetType(String))
    ds.Tables(0).Columns.Add("Start Time", GetType(String))
    ds.Tables(0).Columns.Add("Age", GetType(String))
    ds.Tables(0).Columns.Add("Request Count", GetType(String))
    ds.Tables(0).Columns.Add("Peak Memory", GetType(String))

    Dim info As ProcessInfo
    info = ProcessModelInfo.GetCurrentProcessInfo()

    Dim row As DataRow
    row = ds.Tables(0).NewRow()

    row("ID")         = info.ProcessID
    row("Start Time") = info.StartTime
    row("Age")        = info.Age
    row("Request Count") = info.RequestCount
    row("Peak Memory")= info.PeakMemoryUsed

    ds.Tables(0).Rows.Add(row)
    Return ds
End Function
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataGrid
            ID="DataGrid1"
            runat="server" />
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void Page_Load(object sender, EventArgs e)
{
    DataGrid1.DataSource = GetProcessInfoAsDataSet();
    DataGrid1.DataBind();
}

private DataSet GetProcessInfoAsDataSet()
{
    DataSet ds = new DataSet();
    ds.Tables.Add(new DataTable());
    ds.Tables[0].Columns.Add("ID",         typeof(string));
    ds.Tables[0].Columns.Add("Start Time", typeof(string));
    ds.Tables[0].Columns.Add("Age",        typeof (string));
    ds.Tables[0].Columns.Add("Request Count", typeof(string));
    ds.Tables[0].Columns.Add("Peak Memory",typeof(string));

    ProcessInfo info = ProcessModelInfo.GetCurrentProcessInfo();

    DataRow row = ds.Tables[0].NewRow();
    row["ID"]         = info.ProcessID;
    row["Start Time"] = info.StartTime;
    row["Age"]        = info.Age;
    row["Request Count"] = info.RequestCount;
    row["Peak Memory"]= info.PeakMemoryUsed;

    ds.Tables[0].Rows.Add(row);

    return ds;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataGrid
            ID="DataGrid1"
            runat="server" />
    </div>
    </form>
</body>
</html>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessModelInfo 类
ProcessModelInfo 成员
System.Web 命名空间


ProcessModelInfo ..::.GetHistory 方法

ProcessModelInfo
.
.
::
.
GetHistory 方法
ProcessModelInfo 类

返回有关近期的辅助进程的信息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level := AspNetHostingPermissionLevel.High)> _
Public Shared Function GetHistory ( _
    numRecords As Integer _
) As ProcessInfo()
[AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)]
public static ProcessInfo[] GetHistory(
    int numRecords
)
[AspNetHostingPermissionAttribute(SecurityAction::Demand, Level = AspNetHostingPermissionLevel::High)]
public:
static array<ProcessInfo^>^ GetHistory(
    int numRecords
)
[<AspNetHostingPermissionAttribute(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.High)>]
static member GetHistory :
        numRecords:int -> ProcessInfo[]

参数

numRecords
类型： System Int32
请求其信息的进程的数目。

返回值

类型：
array<
System.Web ProcessInfo
>
[]
()
[]

最近的 ProcessInfo 对象（最多 100 个）的数组；如果可用对象的数目小于 numRecords，则返回所有可用对象。
异常 | 条件
HttpException | 进程信息不可用。

GetHistory 方法仅适用于在 ASP.NET 进程模型下运行的应用程序。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

ProcessModelInfo 类
ProcessModelInfo 成员
System.Web 命名空间


ProcessShutdownReason 枚举

ProcessShutdownReason 枚举

提供指示进程关闭原因的枚举值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration ProcessShutdownReason
public enum ProcessShutdownReason
public enum class ProcessShutdownReason
type ProcessShutdownReason
成员名称 | 说明
None | 指示进程尚未关闭。
Unexpected | 指示进程意外关闭。
RequestsLimit | 指示该进程所执行的请求已超出允许的限制。
RequestQueueLimit | 指示分配给该进程的请求已超出队列中允许的数目。
Timeout | 指示该进程因活动时间超出允许时间而重新启动。
IdleTimeout | 指示进程超过了允许的空闲时间。
MemoryLimitExceeded | 指示进程超过了每个进程的内存限制。
PingFailed | 指示辅助进程没有响应来自 Internet 信息服务 (IIS) 进程的 Ping。
DeadlockSuspected | 指示死锁可疑，因为已超出响应时间限制，而队列中的请求仍未收到响应。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
ShutdownReason
ProcessInfo


ProcessStatus 枚举

ProcessStatus 枚举

提供指示进程当前状态的枚举值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration ProcessStatus
public enum ProcessStatus
public enum class ProcessStatus
type ProcessStatus
成员名称 | 说明
Alive | 指示进程正在运行。
ShuttingDown | 指示进程已开始关闭。
ShutDown | 指示该进程已在收到来自 Internet 信息服务 (IIS) 进程的关闭消息后正常关闭。
Terminated | 指示该进程已由 Internet 信息服务 (IIS) 进程强制终止。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间
ProcessInfo


RequestNotification 枚举

RequestNotification 枚举

指示处理 HttpApplication 请求期间发生事件和其他生命周期事件的时间。

此枚举有一个 FlagsAttribute 特性，通过该特性可使其成员值按位组合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<FlagsAttribute> _
Public Enumeration RequestNotification
[FlagsAttribute]
public enum RequestNotification
[FlagsAttribute]
public enum class RequestNotification
[<FlagsAttribute>]
type RequestNotification
成员名称 | 说明
BeginRequest | 指示为此请求引发了 BeginRequest 事件且正在处理该事件。
AuthenticateRequest | 指示为此请求引发了 AuthenticateRequest 事件且正在处理该事件。
AuthorizeRequest | 指示为此请求引发了 AuthorizeRequest 事件且正在处理该事件。
ResolveRequestCache | 指示为此请求引发了 ResolveRequestCache 事件且正在处理该事件。
MapRequestHandler | 指示为此请求引发了 MapRequestHandler 事件且正在处理该事件。
AcquireRequestState | 指示为此请求引发了 AcquireRequestState 事件且正在处理该事件。
PreExecuteRequestHandler | 在映射处理该请求的处理程序之前，在应用程序生命周期中指定一个点。
ExecuteRequestHandler | 指示正在调用映射到已请求资源的处理程序来处理此请求。
ReleaseRequestState | 指示为此请求引发了 ReleaseRequestState 事件且正在处理该事件。
UpdateRequestCache | 指示为此请求引发了 UpdateRequestCache 事件且正在处理该事件。
LogRequest | 指示为此请求引发了 LogRequest 事件且正在处理该事件。
EndRequest | 指示为此请求引发了 EndRequest 事件且正在处理该事件。
SendResponse | 指示请求处理过程已完成且正在发送响应。

RequestNotification 枚举和 HttpContext 类的 CurrentNotification 属性一起使用可确定管线中当前所处理的事件。若要确定 HttpApplication 实例的特定事件的所有处理程序是在何时完成的处理过程，请使用 IsPostNotification 属性。 RequestNotification 枚举和 HttpContext 类的 CurrentNotification 属性一起使用可确定管线中当前所处理的事件。若要确定 HttpApplication 实例的特定事件的所有处理程序是在何时完成的处理过程，请使用 IsPostNotification 属性。

在 .NET Framework 3.5 版 中引入了 RequestNotification 类型。有关更多信息，请参见 .NET Framework Architecture。 在 .NET Framework 3.5 版 中引入了 RequestNotification 类型。有关更多信息，请参见 .NET Framework Architecture。

下面的示例演示如何使用具有 CurrentNotification 属性的 RequestNotification 枚举，来确定当前 HttpApplication 实例中处理此请求的事件。

Imports System
Imports System.Data
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports Microsoft.VisualBasic

' Module that demonstrates one event handler for several events.
Namespace Samples

    Public Class ModuleExampleTestVB
        Implements IHttpModule

        Public Sub New()
            ' Constructor
        End Sub

        Public Sub Init(ByVal app As HttpApplication) Implements IHttpModule.Init
            AddHandler app.AuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.PostAuthenticateRequest, AddressOf Me.App_Handler
            AddHandler app.LogRequest, AddressOf Me.App_Handler
            AddHandler app.PostLogRequest, AddressOf Me.App_Handler
        End Sub

        Public Sub Dispose() Implements IHttpModule.Dispose
        End Sub

        ' One handler for AuthenticationRequest, PostAuthenticateRequest,
    ' LogRequest, and PostLogRequest events
        Public Sub App_Handler(ByVal source As Object, ByVal e As EventArgs)
            Dim app As HttpApplication = CType(source, HttpApplication)
            Dim context As HttpContext = app.Context

            If (context.CurrentNotification = RequestNotification.AuthenticateRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the AuthenticateRequest event is raised.
                Else

                    ' PostAuthenticateRequest
                    ' Put code here that runs after the AuthenticateRequest event completes.

                End If
            End If

            If (context.CurrentNotification = RequestNotification.LogRequest) Then

                If Not (context.IsPostNotification) Then

                    ' Put code here that is invoked when the LogRequest event is raised.

                Else
                    ' PostLogRequest
                    ' Put code here that runs after the LogRequest event completes.

                End If
            End If
        End Sub
    End Class

End Namespace

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;

// Module that demonstrates one event handler for several events.
namespace Samples
{
    public class ModuleExampleTestCS : IHttpModule
    {
        public ModuleExampleTestCS()
        {
            // Constructor
        }
        public void Init(HttpApplication app)
        {
            app.AuthenticateRequest += new EventHandler(App_Handler);
            app.PostAuthenticateRequest += new EventHandler(App_Handler);
            app.LogRequest += new EventHandler(App_Handler);
            app.PostLogRequest += new EventHandler(App_Handler);
        }
        public void Dispose()
        {
        }
        // One handler for AuthenticationRequest, PostAuthenticateRequest,
    // LogRequest, and PostLogRequest events
        public void App_Handler(object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpContext context = app.Context;

            if (context.CurrentNotification == RequestNotification.AuthenticateRequest)
            {

                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the AuthenticateRequest event is raised.
                }
                else
                {
                    // PostAuthenticateRequest
                    // Put code here that runs after the AuthenticateRequest event completes.
                }
            }
            if (context.CurrentNotification == RequestNotification.LogRequest)
            {
                if (!context.IsPostNotification)
                {
                    // Put code here that is invoked when the LogRequest event is raised.
                }
                else
                {
                    // PostLogRequest
                    // Put code here that runs after the LogRequest event completes.
                }
            }

        }
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

System.Web 命名空间
CurrentNotification
IsPostNotification


RequestNotificationStatus 枚举

RequestNotificationStatus 枚举

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

指定请求管线中通知的状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration RequestNotificationStatus
public enum RequestNotificationStatus
public enum class RequestNotificationStatus
type RequestNotificationStatus
成员名称 | 说明
Continue | 此成员支持 ASP.NET 基础结构，不应在代码中直接使用。
Pending | 此成员支持 ASP.NET 基础结构，不应在代码中直接使用。
FinishRequest | 此成员支持 ASP.NET 基础结构，不应在代码中直接使用。

RequestNotificationStatus 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。 RequestNotificationStatus 是在 .NET Framework 3.5 版中引入的。有关更多信息，请参见 .NET Framework Architecture。

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008, Windows Server 2003

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5 SP1、3.0 SP1、2.0 SP1

参考

System.Web 命名空间


SiteMap 类

SiteMap 类
成员

SiteMap 类是站点的导航结构在内存中的表示形式，导航结构由一个或多个站点地图提供程序提供。无法继承此类。 SiteMap 类是站点的导航结构在内存中的表示形式，导航结构由一个或多个站点地图提供程序提供。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class SiteMap
public static class SiteMap
public ref class SiteMap abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
type SiteMap =  class end

站点地图与 SiteMapDataSource、SiteMapPath 和其他控件结合用于为用户呈现有效的导航界面以导航网站。SiteMap 对象是 ASP.NET 站点导航基础结构的组件，它为使用导航和 SiteMapDataSource 控件的网页和控件开发人员提供对只读站点地图信息的访问。ASP.NET 站点导航基础结构的其他组件包括 SiteMapProvider 和 XmlSiteMapProvider 类、Web.sitemap 文件，以及使用 SiteMap 类来呈现内容和菜单的各种控件（如 SiteMapPath）。 站点地图与 SiteMapDataSource、SiteMapPath 和其他控件结合用于为用户呈现有效的导航界面以导航网站。SiteMap 对象是 ASP.NET 站点导航基础结构的组件，它为使用导航和 SiteMapDataSource 控件的网页和控件开发人员提供对只读站点地图信息的访问。ASP.NET 站点导航基础结构的其他组件包括 SiteMapProvider 和 XmlSiteMapProvider 类、Web.sitemap 文件，以及使用 SiteMap 类来呈现内容和菜单的各种控件（如 SiteMapPath）。 站点地图与 SiteMapDataSource、SiteMapPath 和其他控件结合用于为用户呈现有效的导航界面以导航网站。SiteMap 对象是 ASP.NET 站点导航基础结构的组件，它为使用导航和 SiteMapDataSource 控件的网页和控件开发人员提供对只读站点地图信息的访问。ASP.NET 站点导航基础结构的其他组件包括 SiteMapProvider 和 XmlSiteMapProvider 类、Web.sitemap 文件，以及使用 SiteMap 类来呈现内容和菜单的各种控件（如 SiteMapPath）。

SiteMap 具有以下几项功能：

  • 提供站点导航层次结构的根节点（只能有一个根节点）。

  • 标识哪个站点地图提供程序是主要的或默认的提供程序。

  • 跟踪用于创建 SiteMap 的所有提供程序对象。

从根本上讲，SiteMap 是 SiteMapNode 对象的分层集合的容器。然而，SiteMap 不维护节点之间的关系；它将此任务委托给站点地图提供程序。SiteMap 充当到站点导航信息的一个接口，站点地图提供程序以 SiteMapNode 对象的形式包含这些信息。该类跟踪可从中访问站点导航数据的提供程序，并公开 Providers 集合。提供程序可以按任何方式存储其站点地图信息 -- 只要它扩展 SiteMapProvider 抽象类，SiteMap 类就能通过它成功地初始化。 从根本上讲，SiteMap 是 SiteMapNode 对象的分层集合的容器。然而，SiteMap 不维护节点之间的关系；它将此任务委托给站点地图提供程序。SiteMap 充当到站点导航信息的一个接口，站点地图提供程序以 SiteMapNode 对象的形式包含这些信息。该类跟踪可从中访问站点导航数据的提供程序，并公开 Providers 集合。提供程序可以按任何方式存储其站点地图信息 -- 只要它扩展 SiteMapProvider 抽象类，SiteMap 类就能通过它成功地初始化。 从根本上讲，SiteMap 是 SiteMapNode 对象的分层集合的容器。然而，SiteMap 不维护节点之间的关系；它将此任务委托给站点地图提供程序。SiteMap 充当到站点导航信息的一个接口，站点地图提供程序以 SiteMapNode 对象的形式包含这些信息。该类跟踪可从中访问站点导航数据的提供程序，并公开 Providers 集合。提供程序可以按任何方式存储其站点地图信息 -- 只要它扩展 SiteMapProvider 抽象类，SiteMap 类就能通过它成功地初始化。 从根本上讲，SiteMap 是 SiteMapNode 对象的分层集合的容器。然而，SiteMap 不维护节点之间的关系；它将此任务委托给站点地图提供程序。SiteMap 充当到站点导航信息的一个接口，站点地图提供程序以 SiteMapNode 对象的形式包含这些信息。该类跟踪可从中访问站点导航数据的提供程序，并公开 Providers 集合。提供程序可以按任何方式存储其站点地图信息 -- 只要它扩展 SiteMapProvider 抽象类，SiteMap 类就能通过它成功地初始化。 从根本上讲，SiteMap 是 SiteMapNode 对象的分层集合的容器。然而，SiteMap 不维护节点之间的关系；它将此任务委托给站点地图提供程序。SiteMap 充当到站点导航信息的一个接口，站点地图提供程序以 SiteMapNode 对象的形式包含这些信息。该类跟踪可从中访问站点导航数据的提供程序，并公开 Providers 集合。提供程序可以按任何方式存储其站点地图信息 -- 只要它扩展 SiteMapProvider 抽象类，SiteMap 类就能通过它成功地初始化。

SiteMap 类的默认的提供程序是 XmlSiteMapProvider 类，它使用 XML 配置文件 Web.sitemap。但是，您可以编写自己的 SiteMapProvider 对象，并使用它来初始化您站点的站点地图。有关自定义站点地图提供程序的示例，请参见 SiteMapProvider。 SiteMap 类的默认的提供程序是 XmlSiteMapProvider 类，它使用 XML 配置文件 Web.sitemap。但是，您可以编写自己的 SiteMapProvider 对象，并使用它来初始化您站点的站点地图。有关自定义站点地图提供程序的示例，请参见 SiteMapProvider。 SiteMap 类的默认的提供程序是 XmlSiteMapProvider 类，它使用 XML 配置文件 Web.sitemap。但是，您可以编写自己的 SiteMapProvider 对象，并使用它来初始化您站点的站点地图。有关自定义站点地图提供程序的示例，请参见 SiteMapProvider。

指定了一个管理站点导航配置的默认站点地图配置。如果选择编写自己的站点地图提供程序，可以在 Web.config 文件中重写此配置。 指定了一个管理站点导航配置的默认站点地图配置。如果选择编写自己的站点地图提供程序，可以在 Web.config 文件中重写此配置。

出于性能方面的考虑，SiteMap 类只提供静态成员，可以在任何时候在给定站点中从 Web 窗体或 Web 服务器控件访问这些成员。

本节包含两个代码示例。第一个代码示例演示如何在 Web.config 文件中声明站点地图提供程序。第二个代码示例演示如何使用 SiteMap 对象。 本节包含两个代码示例。第一个代码示例演示如何在 Web.config 文件中声明站点地图提供程序。第二个代码示例演示如何使用 SiteMap 对象。 本节包含两个代码示例。第一个代码示例演示如何在 Web.config 文件中声明站点地图提供程序。第二个代码示例演示如何使用 SiteMap 对象。

下面的代码示例是一个 Web.config 配置节，它演示如何将一个 XmlSiteMapProvider 对象声明为默认的 SiteMapProvider 对象。

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">
  <providers>
    <add name="MyXmlSiteMapProvider"
      description="The site map provider that reads in the .sitemap XML files."
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      siteMapFile="my.sitemap" />
  </providers>
</siteMap>

下面的代码示例通过访问 SiteMap 对象的静态成员来显示关于 RootNode 和 CurrentNode 属性的信息，借此演示如何使用该对象。请将得到的信息与 SiteMapPath 控件呈现的输出进行比较。 下面的代码示例通过访问 SiteMap 对象的静态成员来显示关于 RootNode 和 CurrentNode 属性的信息，借此演示如何使用该对象。请将得到的信息与 SiteMapPath 控件呈现的输出进行比较。

<%@ Page language="VB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)

  ' Examine the CurrentNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.CurrentNode.Title & "<br />")
  Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")

  ' What nodes are children of the CurrentNode?
  If (SiteMap.CurrentNode.HasChildNodes) Then
      Dim childNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()

      While (childNodesEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(childNodesEnumerator.Current.ToString() & "<br />")
      End While

  End If
  Response.Write("<hr />")

  ' Examine the RootNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.RootNode.Title & "<br />")
  Response.Write(SiteMap.RootNode.Url & "<br />")

  ' What nodes are children of the RootNode?
  If (SiteMap.RootNode.HasChildNodes) Then
      Dim rootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
      While (rootNodesChildrenEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(rootNodesChildrenEnumerator.Current.ToString() & "<br />")
      End While
  End If

End Sub ' Page_Load
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:SiteMapPath
            runat="server"
          ID="SiteMapPath1"
          ShowToolTips="false"/>

    </form>
  </body>
</html>

<%@ Page language="c#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title + "<br />");
    Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");

    // What nodes are children of the CurrentNode?
    if (SiteMap.CurrentNode.HasChildNodes) {
        IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
        while (childNodesEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
        }
    }
    Response.Write("<hr />");

    // Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title + "<br />");
    Response.Write(SiteMap.RootNode.Url + "<br />");

    // What nodes are children of the RootNode?
    if (SiteMap.RootNode.HasChildNodes) {
        IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
        while (rootNodesChildrenEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
        }
    }

}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
      <asp:SiteMapPath
          runat="server"
        ID="SiteMapPath1"
        ShowToolTips="false"/>
    </form>
  </body>
</html>

System.Web System.Web..::.SiteMapSiteMap
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 成员
System.Web 命名空间
SiteMapNode
SiteMapProvider
SiteMapNodeCollection
SiteMapProviderCollection
SiteMapPath
TreeView

其他资源

ASP.NET 站点导航
ASP.NET 站点地图
ASP.NET 站点导航提供程序


SiteMap 成员

SiteMap 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMap 类

SiteMap 类是站点的导航结构在内存中的表示形式，导航结构由一个或多个站点地图提供程序提供。无法继承此类。 SiteMap 类是站点的导航结构在内存中的表示形式，导航结构由一个或多个站点地图提供程序提供。无法继承此类。

SiteMap 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SiteMap 类
System.Web 命名空间


SiteMap 属性

SiteMap 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMap 类

SiteMap 类型公开以下成员。

名称 说明
页首

参考

SiteMap 类
System.Web 命名空间


SiteMap ..::.CurrentNode 属性

SiteMap
.
.
::
.
CurrentNode 属性
SiteMap 类

获取一个表示当前被请求的页的 SiteMapNode 控件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property CurrentNode As SiteMapNode
    Get
public static SiteMapNode CurrentNode { get; }
public:
static property SiteMapNode^ CurrentNode {
    SiteMapNode^ get ();
}
static member CurrentNode : SiteMapNode

属性值

类型： System.Web SiteMapNode
表示当前被请求的页的 SiteMapNode 实例；如果站点地图信息中不存在代表节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 未启用站点地图功能。
ConfigurationErrorsException | 配置中指定的默认提供程序不存在。
HttpException | 只有在低信任或以上设置的情况下运行时，才支持此功能。

SiteMap 类通过从提供程序请求 CurrentNode 属性来检索该属性。

如果站点地图信息中不存在页的代表节点，或者如果启用了安全修整且不能为当前用户返回该节点，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果存在一个或多个订阅，SiteMapResolve 事件将由默认站点地图提供程序引发。

如果实现自己的 SiteMapProvider 对象，您可以创建自己的机制来查找和检索 CurrentNode。然而，如果扩展 StaticSiteMapProvider 类并使用基于 URL 的方案来标识页，您可以重写 FindSiteMapNode 方法。 如果实现自己的 SiteMapProvider 对象，您可以创建自己的机制来查找和检索 CurrentNode。然而，如果扩展 StaticSiteMapProvider 类并使用基于 URL 的方案来标识页，您可以重写 FindSiteMapNode 方法。

下面的代码示例演示如何使用 CurrentNode 属性来检索表示当前页的 SiteMapNode 对象。

<script runat="server">

Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title & "<br />")
    Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")

    ' What nodes are children of the CurrentNode?
    If (SiteMap.CurrentNode.HasChildNodes) Then
        Dim ChildNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()
        While (ChildNodesEnumerator.MoveNext())
            ' Prints the Title of each node.
            Response.Write(ChildNodesEnumerator.Current.ToString() & "<br />")
        End While
    End If
    Response.Write("<hr />")

    ' Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title & "<br />")
    Response.Write(SiteMap.RootNode.Url & "<br />")

    ' What nodes are children of the RootNode?
    If (SiteMap.RootNode.HasChildNodes) Then
        Dim RootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
        While (RootNodesChildrenEnumerator.MoveNext())
            ' Prints the Title of each node.
            Response.Write(RootNodesChildrenEnumerator.Current.ToString() & "<br />")
        End While
    End If

End Sub ' Page_Load
</script>

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title + "<br />");
    Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");

    // What nodes are children of the CurrentNode?
    if (SiteMap.CurrentNode.HasChildNodes) {
        IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
        while (childNodesEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
        }
    }
    Response.Write("<hr />");

    // Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title + "<br />");
    Response.Write(SiteMap.RootNode.Url + "<br />");

    // What nodes are children of the RootNode?
    if (SiteMap.RootNode.HasChildNodes) {
        IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
        while (rootNodesChildrenEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
        }
    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 类
SiteMap 成员
System.Web 命名空间
SiteMapProvider CurrentNode
SiteMapResolve


SiteMap ..::.Enabled 属性

SiteMap
.
.
::
.
Enabled 属性
SiteMap 类

获取一个布尔值，该值指示 Web.config 文件中是否指定了某个站点地图提供程序，以及是否启用了该站点地图提供程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property Enabled As Boolean
    Get
public static bool Enabled { get; }
public:
static property bool Enabled {
    bool get ();
}
static member Enabled : bool

属性值

类型： System Boolean
如果配置并启用了某个站点地图提供程序，则为 true；否则为 false。

指定了一个管理站点导航配置的默认站点地图配置。如果选择编写自己的站点地图提供程序，可以在 Web.config 文件中重写此配置。 指定了一个管理站点导航配置的默认站点地图配置。如果选择编写自己的站点地图提供程序，可以在 Web.config 文件中重写此配置。

下面的代码示例是一个 Web.config 配置节，它演示如何将一个 XmlSiteMapProvider 对象声明为默认的 SiteMapProvider 对象。

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">
  <providers>
    <add name="MyXmlSiteMapProvider"
      description="SiteMap provider that reads in .sitemap XML files."
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      siteMapFile="my.sitemap" />
  </providers>
</siteMap>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 类
SiteMap 成员
System.Web 命名空间

其他资源

siteMap 元素（ASP.NET 设置架构）


SiteMap ..::.Provider 属性

SiteMap
.
.
::
.
Provider 属性
SiteMap 类

获取当前站点地图的默认 SiteMapProvider 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property Provider As SiteMapProvider
    Get
public static SiteMapProvider Provider { get; }
public:
static property SiteMapProvider^ Provider {
    SiteMapProvider^ get ();
}
static member Provider : SiteMapProvider

属性值

类型： System.Web SiteMapProvider
SiteMap 的默认站点地图提供程序。
异常 | 条件
InvalidOperationException | 未启用站点地图功能。
ConfigurationErrorsException | 配置中指定的默认提供程序不存在。
HttpException | 只有在低信任或以上设置的情况下运行时，才支持此功能。

默认为使用 XmlSiteMapProvider 对象并从位于站点根目录中的 Web.sitemap 文件加载站点导航数据。这是在管理 Web.config 文件的站点导航配置和站点地图配置节的管理类中标识的。默认情况下，该对象是 XmlSiteMapProvider 类的实例，该类使用 Web.sitemap 文件作为其持久存储区。然而，您可以通过编写一个实现抽象 SiteMapProvider 类的类来实现自己的站点地图存储配置方案。有关编写自己的提供程序的更多信息，请参见 SiteMapProvider。 默认为使用 XmlSiteMapProvider 对象并从位于站点根目录中的 Web.sitemap 文件加载站点导航数据。这是在管理 Web.config 文件的站点导航配置和站点地图配置节的管理类中标识的。默认情况下，该对象是 XmlSiteMapProvider 类的实例，该类使用 Web.sitemap 文件作为其持久存储区。然而，您可以通过编写一个实现抽象 SiteMapProvider 类的类来实现自己的站点地图存储配置方案。有关编写自己的提供程序的更多信息，请参见 SiteMapProvider。 默认为使用 XmlSiteMapProvider 对象并从位于站点根目录中的 Web.sitemap 文件加载站点导航数据。这是在管理 Web.config 文件的站点导航配置和站点地图配置节的管理类中标识的。默认情况下，该对象是 XmlSiteMapProvider 类的实例，该类使用 Web.sitemap 文件作为其持久存储区。然而，您可以通过编写一个实现抽象 SiteMapProvider 类的类来实现自己的站点地图存储配置方案。有关编写自己的提供程序的更多信息，请参见 SiteMapProvider。 默认为使用 XmlSiteMapProvider 对象并从位于站点根目录中的 Web.sitemap 文件加载站点导航数据。这是在管理 Web.config 文件的站点导航配置和站点地图配置节的管理类中标识的。默认情况下，该对象是 XmlSiteMapProvider 类的实例，该类使用 Web.sitemap 文件作为其持久存储区。然而，您可以通过编写一个实现抽象 SiteMapProvider 类的类来实现自己的站点地图存储配置方案。有关编写自己的提供程序的更多信息，请参见 SiteMapProvider。 默认为使用 XmlSiteMapProvider 对象并从位于站点根目录中的 Web.sitemap 文件加载站点导航数据。这是在管理 Web.config 文件的站点导航配置和站点地图配置节的管理类中标识的。默认情况下，该对象是 XmlSiteMapProvider 类的实例，该类使用 Web.sitemap 文件作为其持久存储区。然而，您可以通过编写一个实现抽象 SiteMapProvider 类的类来实现自己的站点地图存储配置方案。有关编写自己的提供程序的更多信息，请参见 SiteMapProvider。

下面的代码示例演示如何使用静态 Provider 属性访问站点的默认 SiteMapProvider 对象。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
Private Sub Page_Load(Sender As Object, E As EventArgs)

    ' Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() & "<BR>")

    Response.Write(SiteMap.RootNode.Url & "<BR>")
    Response.Write(SiteMap.RootNode.Title & "<BR>")

    Dim sitemapnode As SiteMapNode
    For Each sitemapnode In SiteMap.RootNode.ChildNodes
        ' Iterate through the ChildNodes SiteMapNodesCollection
        ' maintained by the RootNode.
        Response.Write(sitemapnode.Url & "<BR>" )
    Next

    Dim providers As IDictionaryEnumerator = SiteMap.Providers.GetEnumerator()
    While (providers.MoveNext())
        Response.Write(providers.Current)
        Response.Write("&nbsp;&nbsp;&nbsp;")
        Response.Write("<BR>")
    End While
End Sub ' Page_Load

</SCRIPT>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() + "<BR>");

    Response.Write(SiteMap.RootNode.Url + "<BR>");
    Response.Write(SiteMap.RootNode.Title + "<BR>");

    foreach (SiteMapNode sitemapnode in SiteMap.RootNode.ChildNodes)
    {
        // Iterate through the ChildNodes SiteMapNodesCollection
        // maintained by the RootNode.
        Response.Write(sitemapnode.Url + "<BR>" );
    }

    IEnumerator providers = SiteMap.Providers.GetEnumerator();
    while (providers.MoveNext())
    {
        Response.Write(providers.Current);
        Response.Write("&nbsp;&nbsp;&nbsp;");
        Response.Write("<BR>");
    }
}
</SCRIPT>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 类
SiteMap 成员
System.Web 命名空间
Providers
SiteMapProvider
StaticSiteMapProvider


SiteMap ..::.Providers 属性

SiteMap
.
.
::
.
Providers 属性
SiteMap 类

获取对 SiteMap 类可用的命名 SiteMapProvider 对象的只读集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property Providers As SiteMapProviderCollection
    Get
public static SiteMapProviderCollection Providers { get; }
public:
static property SiteMapProviderCollection^ Providers {
    SiteMapProviderCollection^ get ();
}
static member Providers : SiteMapProviderCollection

属性值

类型： System.Web SiteMapProviderCollection
命名 SiteMapProvider 对象的 SiteMapProviderCollection。
异常 | 条件
InvalidOperationException | 未启用站点地图功能。
ConfigurationErrorsException | 配置中指定的默认提供程序不存在。
HttpException | 只有在低信任或以上设置的情况下运行时，才支持此功能。

Providers 集合中列出的站点地图提供程序是那些在配置层次结构中指定用于初始化 SiteMap 类的提供程序。只有默认提供程序（由 Provider 属性标识）才保证在初始化期间由 SiteMap 使用；某个提供程序存在于 Providers 集合中意味着它是在配置中指定的，并在初始化期间可用。 Providers 集合中列出的站点地图提供程序是那些在配置层次结构中指定用于初始化 SiteMap 类的提供程序。只有默认提供程序（由 Provider 属性标识）才保证在初始化期间由 SiteMap 使用；某个提供程序存在于 Providers 集合中意味着它是在配置中指定的，并在初始化期间可用。

下面的代码示例演示如何从 SiteMap 类检索 Providers 集合，然后循环访问该集合。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
Private Sub Page_Load(Sender As Object, E As EventArgs)

    ' Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() & "<BR>")

    Response.Write(SiteMap.RootNode.Url & "<BR>")
    Response.Write(SiteMap.RootNode.Title & "<BR>")

    Dim sitemapnode As SiteMapNode
    For Each sitemapnode In SiteMap.RootNode.ChildNodes
        ' Iterate through the ChildNodes SiteMapNodesCollection
        ' maintained by the RootNode.
        Response.Write(sitemapnode.Url & "<BR>" )
    Next

    Dim providers As IDictionaryEnumerator = SiteMap.Providers.GetEnumerator()
    While (providers.MoveNext())
        Response.Write(providers.Current)
        Response.Write("&nbsp;&nbsp;&nbsp;")
        Response.Write("<BR>")
    End While
End Sub ' Page_Load

</SCRIPT>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() + "<BR>");

    Response.Write(SiteMap.RootNode.Url + "<BR>");
    Response.Write(SiteMap.RootNode.Title + "<BR>");

    foreach (SiteMapNode sitemapnode in SiteMap.RootNode.ChildNodes)
    {
        // Iterate through the ChildNodes SiteMapNodesCollection
        // maintained by the RootNode.
        Response.Write(sitemapnode.Url + "<BR>" );
    }

    IEnumerator providers = SiteMap.Providers.GetEnumerator();
    while (providers.MoveNext())
    {
        Response.Write(providers.Current);
        Response.Write("&nbsp;&nbsp;&nbsp;");
        Response.Write("<BR>");
    }
}
</SCRIPT>

如果您有的不只是为站点配置的默认提供程序，您将看到显示的每个提供程序。例如，如果在使用示例 Microsoft Access 提供程序（请参见 StaticSiteMapProvider），您将看到以下输出： 如果您有的不只是为站点配置的默认提供程序，您将看到显示的每个提供程序。例如，如果在使用示例 Microsoft Access 提供程序（请参见 StaticSiteMapProvider），您将看到以下输出：

XmlSiteMapProvider   System.Web.XmlSiteMapProvider
AccessSiteMapProvider   Samples.AspNet.AccessSiteMapProvider

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 类
SiteMap 成员
System.Web 命名空间
Provider
SiteMapProvider
StaticSiteMapProvider


SiteMap ..::.RootNode 属性

SiteMap
.
.
::
.
RootNode 属性
SiteMap 类

获取一个表示站点的导航结构的顶级页的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared ReadOnly Property RootNode As SiteMapNode
    Get
public static SiteMapNode RootNode { get; }
public:
static property SiteMapNode^ RootNode {
    SiteMapNode^ get ();
}
static member RootNode : SiteMapNode

属性值

类型： System.Web SiteMapNode
表示站点的导航结构的顶级页的 SiteMapNode；如果启用了安全修整且不能为当前用户返回该节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 未启用站点地图功能。 - 或 - RootNode 解析为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），如果启用了安全修整并且根节点对当前用户不可见，就会发生这种情况。
ConfigurationErrorsException | 配置中指定的默认提供程序不存在。
HttpException | 只有在低信任或以上设置的情况下运行时，才支持此功能。

SiteMap 类通过从提供程序请求 RootNode 属性来检索该属性。如果存在提供程序层次结构，则 SiteMap 类将检索该层次结构中的根提供程序的根节点。若要访问默认提供程序的根节点，请调用 Provider 属性，该属性同时检索默认提供程序及其 RootNode 属性。 SiteMap 类通过从提供程序请求 RootNode 属性来检索该属性。如果存在提供程序层次结构，则 SiteMap 类将检索该层次结构中的根提供程序的根节点。若要访问默认提供程序的根节点，请调用 Provider 属性，该属性同时检索默认提供程序及其 RootNode 属性。 SiteMap 类通过从提供程序请求 RootNode 属性来检索该属性。如果存在提供程序层次结构，则 SiteMap 类将检索该层次结构中的根提供程序的根节点。若要访问默认提供程序的根节点，请调用 Provider 属性，该属性同时检索默认提供程序及其 RootNode 属性。

XmlSiteMapProvider 对象是 SiteMap 类的默认提供程序，它仅支持一个 RootNode。

如果实现自己的 SiteMapProvider 类并重写抽象 RootNode 属性，您必须提供自己的实现来跟踪 SiteMapNode 实例的 RootNode 属性。

按照设计，根节点必须对所有用户可见。如果在启用了安全修整时根节点不对所有用户可见，访问 RootNode 属性可能导致 InvalidOperationException 异常。 按照设计，根节点必须对所有用户可见。如果在启用了安全修整时根节点不对所有用户可见，访问 RootNode 属性可能导致 InvalidOperationException 异常。

下面的代码示例演示如何使用 RootNode 属性来检索表示站点的根节点的 SiteMapNode 对象，而不管页层次结构中的当前位置在何处。

<script runat="server">

Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title & "<br />")
    Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")

    ' What nodes are children of the CurrentNode?
    If (SiteMap.CurrentNode.HasChildNodes) Then
        Dim ChildNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()
        While (ChildNodesEnumerator.MoveNext())
            ' Prints the Title of each node.
            Response.Write(ChildNodesEnumerator.Current.ToString() & "<br />")
        End While
    End If
    Response.Write("<hr />")

    ' Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title & "<br />")
    Response.Write(SiteMap.RootNode.Url & "<br />")

    ' What nodes are children of the RootNode?
    If (SiteMap.RootNode.HasChildNodes) Then
        Dim RootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
        While (RootNodesChildrenEnumerator.MoveNext())
            ' Prints the Title of each node.
            Response.Write(RootNodesChildrenEnumerator.Current.ToString() & "<br />")
        End While
    End If

End Sub ' Page_Load
</script>

<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title + "<br />");
    Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");

    // What nodes are children of the CurrentNode?
    if (SiteMap.CurrentNode.HasChildNodes) {
        IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
        while (childNodesEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
        }
    }
    Response.Write("<hr />");

    // Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title + "<br />");
    Response.Write(SiteMap.RootNode.Url + "<br />");

    // What nodes are children of the RootNode?
    if (SiteMap.RootNode.HasChildNodes) {
        IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
        while (rootNodesChildrenEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
        }
    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 类
SiteMap 成员
System.Web 命名空间
CurrentNode


SiteMap 事件

SiteMap 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMap 类

SiteMap 类型公开以下成员。

名称 说明
页首

参考

SiteMap 类
System.Web 命名空间


SiteMap ..::.SiteMapResolve 事件

SiteMap
.
.
::
.
SiteMapResolve 事件
SiteMap 类

当访问 CurrentNode 属性时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Event SiteMapResolve As SiteMapResolveEventHandler
public static event SiteMapResolveEventHandler SiteMapResolve
public:
static  event SiteMapResolveEventHandler^ SiteMapResolve {
    void add (SiteMapResolveEventHandler^ value);
    void remove (SiteMapResolveEventHandler^ value);
}
member SiteMapResolve : IEvent<SiteMapResolveEventHandler,
    SiteMapResolveEventArgs>

订户将一个 SiteMapResolveEventHandler 对象附加到静态 SiteMapResolve 事件，以便在 CurrentNode 属性被访问时接收通知。这样允许用户在创建当前正在执行的页的 SiteMapNode 表示形式时，无需自定义的提供程序实现就能实现自定义的逻辑。 订户将一个 SiteMapResolveEventHandler 对象附加到静态 SiteMapResolve 事件，以便在 CurrentNode 属性被访问时接收通知。这样允许用户在创建当前正在执行的页的 SiteMapNode 表示形式时，无需自定义的提供程序实现就能实现自定义的逻辑。

如果订阅 SiteMapResolve 事件，同时也订阅了默认站点地图提供程序上的 SiteMapResolve 事件。

下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为了呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了上下文相关的查询字符串。 下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为了呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了上下文相关的查询字符串。 下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为了呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了上下文相关的查询字符串。

说明 说明

ASP.NET 站点导航基础结构会防范无限递归，这提供了一种保护措施，能最大限度地降低从内部访问 CurrentNode 属性所带来的安全风险。SiteMapResolveEventHandler 类。 ASP.NET 站点导航基础结构会防范无限递归，这提供了一种保护措施，能最大限度地降低从内部访问 CurrentNode 属性所带来的安全风险。SiteMapResolveEventHandler 类。

    Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        ' The ExpandForumPaths method is called to handle
        ' the SiteMapResolve event.
        AddHandler SiteMap.SiteMapResolve, AddressOf Me.ExpandForumPaths

    End Sub

    Private Function ExpandForumPaths(ByVal sender As Object, ByVal e As SiteMapResolveEventArgs) As SiteMapNode
        ' The current node represents a Post page in a bulletin board forum.
        ' Clone the current node and all of its relevant parents. This
        ' returns a site map node that a developer can then
        ' walk, modifying each node.Url property in turn.
        ' Since the cloned nodes are separate from the underlying
        ' site navigation structure, the fixups that are made do not
        ' effect the overall site navigation structure.
        Dim currentNode As SiteMapNode = SiteMap.CurrentNode.Clone(True)
        Dim tempNode As SiteMapNode = currentNode

        ' Obtain the recent IDs.
        Dim forumGroupID As Integer = GetMostRecentForumGroupID()
        Dim forumID As Integer = GetMostRecentForumID(forumGroupID)
        Dim postID As Integer = GetMostRecentPostID(forumID)

        ' The current node, and its parents, can be modified to include
        ' dynamic querystring information relevant to the currently
        ' executing request.
        If Not (0 = postID) Then
            tempNode.Url = tempNode.Url & "?PostID=" & postID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = forumID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumID=" & forumID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = ForumGroupID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumGroupID=" & forumGroupID.ToString()
        End If

        Return currentNode

    End Function

private void Page_Load(object sender, EventArgs e)
{
    // The ExpandForumPaths method is called to handle
    // the SiteMapResolve event.
    SiteMap.SiteMapResolve +=
      new SiteMapResolveEventHandler(this.ExpandForumPaths);
}

private SiteMapNode ExpandForumPaths(Object sender, SiteMapResolveEventArgs e)
{
    // The current node represents a Post page in a bulletin board forum.
    // Clone the current node and all of its relevant parents. This
    // returns a site map node that a developer can then
    // walk, modifying each node.Url property in turn.
    // Since the cloned nodes are separate from the underlying
    // site navigation structure, the fixups that are made do not
    // effect the overall site navigation structure.
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    SiteMapNode tempNode = currentNode;

    // Obtain the recent IDs.
    int forumGroupID = GetMostRecentForumGroupID();
    int forumID = GetMostRecentForumID(forumGroupID);
    int postID = GetMostRecentPostID(forumID);

    // The current node, and its parents, can be modified to include
    // dynamic querystring information relevant to the currently
    // executing request.
    if (0 != postID)
    {
        tempNode.Url = tempNode.Url + "?PostID=" + postID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumID))
    {
        tempNode.Url = tempNode.Url + "?ForumID=" + forumID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumGroupID))
    {
        tempNode.Url = tempNode.Url + "?ForumGroupID=" + forumGroupID.ToString();
    }

    return currentNode;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMap 类
SiteMap 成员
System.Web 命名空间
SiteMapResolveEventHandler
SiteMapResolveEventArgs


SiteMapNode 类

SiteMapNode 类
成员

表示分层的站点地图结构（如 SiteMap 类和实现抽象类 SiteMapProvider 的类所描述的结构）中的一个节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class SiteMapNode _
    Implements ICloneable, IHierarchyData, INavigateUIData
public class SiteMapNode : ICloneable,
    IHierarchyData, INavigateUIData
public ref class SiteMapNode : ICloneable,
    IHierarchyData, INavigateUIData
type SiteMapNode =
    class
        interface ICloneable
        interface IHierarchyData
        interface INavigateUIData
    end

SiteMapNode 对象表示站点地图结构中的一个网站页面。SiteMapNode 对象由静态 SiteMap 类使用一个或多个站点地图提供程序在运行时加载，从而将站点地图数据从永久存储区加载到内存中。SiteMapNode 对象由 SiteMapNodeItem 类包装以供 Web 服务器控件（如 SiteMapPath 控件）使用。 SiteMapNode 对象表示站点地图结构中的一个网站页面。SiteMapNode 对象由静态 SiteMap 类使用一个或多个站点地图提供程序在运行时加载，从而将站点地图数据从永久存储区加载到内存中。SiteMapNode 对象由 SiteMapNodeItem 类包装以供 Web 服务器控件（如 SiteMapPath 控件）使用。 SiteMapNode 对象表示站点地图结构中的一个网站页面。SiteMapNode 对象由静态 SiteMap 类使用一个或多个站点地图提供程序在运行时加载，从而将站点地图数据从永久存储区加载到内存中。SiteMapNode 对象由 SiteMapNodeItem 类包装以供 Web 服务器控件（如 SiteMapPath 控件）使用。

SiteMapNode 类包括几个用于描述网站中单个页（包括某一页）的属性，如 Url、Title 和 Description 属性；而 Url 属性由作为 ASP.NET 默认站点地图提供程序的 XmlSiteMapProvider 类使用，该类将这一属性作为内部集合的查找键，提供程序用这个查找键来跟踪节点。SiteMapNode 类支持一个基本的 Key 属性，站点地图提供程序使用该属性来跟踪节点。此外，Url 属性还由导航控件使用，以便呈现导航结构中页面的超链接。Title 属性是 SiteMapNode 的友好名称，通常与 Web 窗体的 HTML 标题相同，并由导航控件用于呈现简单的标签。最后，附加 Attributes 特性的 NameValueCollection 集合可供某些站点地图提供程序使用，这些提供程序使用 SiteMapNode 对象，但需要 SiteMapNode 基类中未提供的附加属性。 SiteMapNode 类包括几个用于描述网站中单个页（包括某一页）的属性，如 Url、Title 和 Description 属性；而 Url 属性由作为 ASP.NET 默认站点地图提供程序的 XmlSiteMapProvider 类使用，该类将这一属性作为内部集合的查找键，提供程序用这个查找键来跟踪节点。SiteMapNode 类支持一个基本的 Key 属性，站点地图提供程序使用该属性来跟踪节点。此外，Url 属性还由导航控件使用，以便呈现导航结构中页面的超链接。Title 属性是 SiteMapNode 的友好名称，通常与 Web 窗体的 HTML 标题相同，并由导航控件用于呈现简单的标签。最后，附加 Attributes 特性的 NameValueCollection 集合可供某些站点地图提供程序使用，这些提供程序使用 SiteMapNode 对象，但需要 SiteMapNode 基类中未提供的附加属性。 SiteMapNode 类包括几个用于描述网站中单个页（包括某一页）的属性，如 Url、Title 和 Description 属性；而 Url 属性由作为 ASP.NET 默认站点地图提供程序的 XmlSiteMapProvider 类使用，该类将这一属性作为内部集合的查找键，提供程序用这个查找键来跟踪节点。SiteMapNode 类支持一个基本的 Key 属性，站点地图提供程序使用该属性来跟踪节点。此外，Url 属性还由导航控件使用，以便呈现导航结构中页面的超链接。Title 属性是 SiteMapNode 的友好名称，通常与 Web 窗体的 HTML 标题相同，并由导航控件用于呈现简单的标签。最后，附加 Attributes 特性的 NameValueCollection 集合可供某些站点地图提供程序使用，这些提供程序使用 SiteMapNode 对象，但需要 SiteMapNode 基类中未提供的附加属性。 SiteMapNode 类包括几个用于描述网站中单个页（包括某一页）的属性，如 Url、Title 和 Description 属性；而 Url 属性由作为 ASP.NET 默认站点地图提供程序的 XmlSiteMapProvider 类使用，该类将这一属性作为内部集合的查找键，提供程序用这个查找键来跟踪节点。SiteMapNode 类支持一个基本的 Key 属性，站点地图提供程序使用该属性来跟踪节点。此外，Url 属性还由导航控件使用，以便呈现导航结构中页面的超链接。Title 属性是 SiteMapNode 的友好名称，通常与 Web 窗体的 HTML 标题相同，并由导航控件用于呈现简单的标签。最后，附加 Attributes 特性的 NameValueCollection 集合可供某些站点地图提供程序使用，这些提供程序使用 SiteMapNode 对象，但需要 SiteMapNode 基类中未提供的附加属性。 SiteMapNode 类包括几个用于描述网站中单个页（包括某一页）的属性，如 Url、Title 和 Description 属性；而 Url 属性由作为 ASP.NET 默认站点地图提供程序的 XmlSiteMapProvider 类使用，该类将这一属性作为内部集合的查找键，提供程序用这个查找键来跟踪节点。SiteMapNode 类支持一个基本的 Key 属性，站点地图提供程序使用该属性来跟踪节点。此外，Url 属性还由导航控件使用，以便呈现导航结构中页面的超链接。Title 属性是 SiteMapNode 的友好名称，通常与 Web 窗体的 HTML 标题相同，并由导航控件用于呈现简单的标签。最后，附加 Attributes 特性的 NameValueCollection 集合可供某些站点地图提供程序使用，这些提供程序使用 SiteMapNode 对象，但需要 SiteMapNode 基类中未提供的附加属性。

本节包含两个代码示例。第一个代码示例演示如何新建站点地图节点集合并在其中添加元素；第二个代码示例演示如何从文本文件加载站点地图数据。 本节包含两个代码示例。第一个代码示例演示如何新建站点地图节点集合并在其中添加元素；第二个代码示例演示如何从文本文件加载站点地图数据。 本节包含两个代码示例。第一个代码示例演示如何新建站点地图节点集合并在其中添加元素；第二个代码示例演示如何从文本文件加载站点地图数据。

下面的代码示例演示如何使用 SiteMapNodeCollection 构造函数新建 SiteMapNodeCollection 集合，然后使用 Add 方法在其中添加元素。

        ' The LoadSiteMapData() Function loads site navigation
        ' data from persistent storage into a DataTable.

        Dim siteMapData As DataTable
        siteMapData = LoadSiteMapData()

        ' Create a SiteMapNodeCollection.
        Dim nodes As New SiteMapNodeCollection()

        ' Create a SiteMapNode and add it to the collection.
        Dim tempNode As SiteMapNode
        Dim row As DataRow
        Dim index As Integer
        index = 0

        While (index < siteMapData.Rows.Count)

            row = siteMapData.Rows(index)

            ' Create a node based on the data in the DataRow.
            tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

            ' Add the node to the collection.
            nodes.Add(tempNode)
            index = index + 1
        End While

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}

下面的代码示例演示 SimpleTextSiteMapProvider 如何对一个文本文件进行分析，该文件包含的站点地图数据采用逗号分隔字符串形式。对于从该文件读取的每一行，将一个新的 SiteMapNode 对象添加到该类的内部跟踪集合中。 下面的代码示例演示 SimpleTextSiteMapProvider 如何对一个文本文件进行分析，该文件包含的站点地图数据采用逗号分隔字符串形式。对于从该文件读取的每一行，将一个新的 SiteMapNode 对象添加到该类的内部跟踪集合中。

此代码示例摘自为 SiteMapProvider 类提供的一个更大的示例。

  Protected Overridable Sub LoadSiteMapFromStore()
    Dim pathToOpen As String
    SyncLock Me
      ' If a root node exists, LoadSiteMapFromStore has already
      ' been called, and the method can return.
      If Not (aRootNode Is Nothing) Then
        Return
      Else
        pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
        If File.Exists(pathToOpen) Then
          ' Open the file to read from.
          Dim sr As StreamReader = File.OpenText(pathToOpen)
          Try

            ' Clear the state of the collections and aRootNode
            aRootNode = Nothing
            siteMapNodes.Clear()
            childParentRelationship.Clear()

            ' Parse the file and build the site map
            Dim s As String = ""
            Dim nodeValues As String() = Nothing
            Dim temp As SiteMapNode = Nothing

            Do
              s = sr.ReadLine()

              If Not s Is Nothing Then
                ' Build the various SiteMapNode objects and add
                ' them to the ArrayList collections. The format used
                ' is: URL,TITLE,DESCRIPTION,PARENTURL
                nodeValues = s.Split(","c)

                temp = New SiteMapNode(Me, _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    nodeValues(1), _
                    nodeValues(2))

                ' Is this a root node yet?
                If aRootNode Is Nothing AndAlso _
                  (nodeValues(3) Is Nothing OrElse _
                   nodeValues(3) = String.Empty) Then
                  aRootNode = temp

                  ' If not the root node, add the node to the various collections.
                Else

                  siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))

                  ' The parent node has already been added to the collection.
                  Dim parentNode As SiteMapNode = _
                      FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))

                  If Not (parentNode Is Nothing) Then
                    childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
                  Else
                    Throw New Exception("Parent node not found for current node.")
                  End If
                End If
              End If
            Loop Until s Is Nothing
          Finally
            sr.Close()
          End Try
        Else
          Throw New Exception("File not found")
        End If
      End If
    End SyncLock
    Return
  End Sub 'LoadSiteMapFromStore
End Class 'SimpleTextSiteMapProvider

protected virtual void LoadSiteMapFromStore()
{
  string pathToOpen;

  lock (this)
  {
    // If a root node exists, LoadSiteMapFromStore has already
    // been called, and the method can return.
    if (rootNode != null)
    {
      return;
    }
    else
    {
      pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);

      if (File.Exists(pathToOpen))
      {
        // Open the file to read from.
        using (StreamReader sr = File.OpenText(pathToOpen))
        {

          // Clear the state of the collections and rootNode
          rootNode = null;
          siteMapNodes.Clear();
          childParentRelationship.Clear();

          // Parse the file and build the site map
          string s = "";
          string[] nodeValues = null;
          SiteMapNode temp = null;

          while ((s = sr.ReadLine()) != null)
          {

            // Build the various SiteMapNode objects and add
            // them to the ArrayList collections. The format used
            // is: URL,TITLE,DESCRIPTION,PARENTURL

            nodeValues = s.Split(',');

            temp = new SiteMapNode(this,
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                nodeValues[1],
                nodeValues[2]);

            // Is this a root node yet?
            if (null == rootNode &&
                (null == nodeValues[3] || nodeValues[3] == String.Empty))
            {
              rootNode = temp;
            }

          // If not the root node, add the node to the various collections.
            else
            {
              siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
              // The parent node has already been added to the collection.
              SiteMapNode parentNode =
                       FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
              if (parentNode != null)
              {
                childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
              }
              else
              {
                throw new Exception("Parent node not found for current node.");
              }
            }
          }
        }
      }
      else
      {
        throw new Exception("File not found");
      }
    }
  }
  return;
}

System.Web System.Web..::.SiteMapNodeSiteMapNode
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 成员
System.Web 命名空间
SiteMap
SiteMapProvider
XmlSiteMapProvider

其他资源

ASP.NET 站点导航
ASP.NET 站点地图


SiteMapNode 成员

SiteMapNode 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNode 类

表示分层的站点地图结构（如 SiteMap 类和实现抽象类 SiteMapProvider 的类所描述的结构）中的一个节点。

SiteMapNode 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SiteMapNode 类
System.Web 命名空间


SiteMapNode 构造函数

SiteMapNode 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNode 类

初始化 SiteMapNode 类的一个新实例，并将其与指定的 SiteMapProvider 对象关联。

名称 说明
页首

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间


SiteMapNode 构造函数 (SiteMapProvider, String)

SiteMapNode 构造函数 (SiteMapProvider, String)
SiteMapNode 类

使用指定的 key 和站点地图提供程序对 SiteMapNode 类的新实例进行初始化，其中，前者用于标识该节点代表的页，后者用于管理该节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    provider As SiteMapProvider, _
    key As String _
)
public SiteMapNode(
    SiteMapProvider provider,
    string key
)
public:
SiteMapNode(
    SiteMapProvider^ provider,
    String^ key
)
new :
        provider:SiteMapProvider *
        key:string -> SiteMapNode

参数

provider
类型： System.Web SiteMapProvider
与节点关联的 SiteMapProvider。
key
类型： System String
一个特定于提供程序的查找键。
异常 | 条件
ArgumentNullException | SiteMapProvider 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - key 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 控件都必须在该提供程序的范围内具有唯一的 URL。 如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 控件都必须在该提供程序的范围内具有唯一的 URL。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
SiteMapNode 重载
System.Web 命名空间


SiteMapNode 构造函数 (SiteMapProvider, String, String)

SiteMapNode 构造函数 (SiteMapProvider, String, String)
SiteMapNode 类

使用以下三项对 SiteMapNode 类的新实例进行初始化：一是指定的 URL；二是一个 key，用于标识节点所代表的页；三是站点地图提供程序，用于管理节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    provider As SiteMapProvider, _
    key As String, _
    url As String _
)
public SiteMapNode(
    SiteMapProvider provider,
    string key,
    string url
)
public:
SiteMapNode(
    SiteMapProvider^ provider,
    String^ key,
    String^ url
)
new :
        provider:SiteMapProvider *
        key:string *
        url:string -> SiteMapNode

参数

provider
类型： System.Web SiteMapProvider
与节点关联的 SiteMapProvider。
key
类型： System String
一个特定于提供程序的查找键。
url
类型： System String
节点在站点中表示的页的 URL。
异常 | 条件
ArgumentNullException | SiteMapProvider 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - key 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。 如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。

下面的代码示例演示如何使用 SiteMapNodeCollection 构造函数新建 SiteMapNodeCollection 集合，然后使用 Add 方法在其中添加元素。

        ' The LoadSiteMapData() Function loads site navigation
        ' data from persistent storage into a DataTable.

        Dim siteMapData As DataTable
        siteMapData = LoadSiteMapData()

        ' Create a SiteMapNodeCollection.
        Dim nodes As New SiteMapNodeCollection()

        ' Create a SiteMapNode and add it to the collection.
        Dim tempNode As SiteMapNode
        Dim row As DataRow
        Dim index As Integer
        index = 0

        While (index < siteMapData.Rows.Count)

            row = siteMapData.Rows(index)

            ' Create a node based on the data in the DataRow.
            tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

            ' Add the node to the collection.
            nodes.Add(tempNode)
            index = index + 1
        End While

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
SiteMapNode 重载
System.Web 命名空间


SiteMapNode 构造函数 (SiteMapProvider, String, String, String)

SiteMapNode 构造函数 (SiteMapProvider, String, String, String)
SiteMapNode 类

使用以下四项对 SiteMapNode 类的新实例进行初始化：一是指定的 URL；二是一个 key，用于标识节点所代表的页；三是一个标题；四是站点地图提供程序，用于管理节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    provider As SiteMapProvider, _
    key As String, _
    url As String, _
    title As String _
)
public SiteMapNode(
    SiteMapProvider provider,
    string key,
    string url,
    string title
)
public:
SiteMapNode(
    SiteMapProvider^ provider,
    String^ key,
    String^ url,
    String^ title
)
new :
        provider:SiteMapProvider *
        key:string *
        url:string *
        title:string -> SiteMapNode

参数

provider
类型： System.Web SiteMapProvider
与节点关联的 SiteMapProvider。
key
类型： System String
一个特定于提供程序的查找键。
url
类型： System String
节点在站点中表示的页的 URL。
title
类型： System String
节点的标签，通常由导航控件显示。
异常 | 条件
ArgumentNullException | SiteMapProvider 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - key 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。 如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。

如果未提供 title，则对 Title 属性的调用将返回 String..::.Empty 字段。

下面的代码示例演示如何使用 SiteMapNode 构造函数创建 SiteMapNode 类的一个新实例。使用来自 Microsoft Access 数据库行的值对该节点进行初始化。 下面的代码示例演示如何使用 SiteMapNode 构造函数创建 SiteMapNode 类的一个新实例。使用来自 Microsoft Access 数据库行的值对该节点进行初始化。

此代码示例是为 BuildSiteMap 方法提供的一个更大示例的一部分。

Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

If rootNodeReader.HasRows Then
    rootNodeReader.Read()
    rootNodeId = rootNodeReader.GetInt32(0)
    ' Create a SiteMapNode that references the current StaticSiteMapProvider.
    aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
Else
    Return Nothing
End If
rootNodeReader.Close()

OleDbCommand rootNodeCommand =
    new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                     accessConnection);
OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

if(rootNodeReader.HasRows) {
    rootNodeReader.Read();
    rootNodeId = rootNodeReader.GetInt32(0);
    // Create a SiteMapNode that references the current StaticSiteMapProvider.
    rootNode   = new SiteMapNode(this,
                                 rootNodeId.ToString(),
                                 rootNodeReader.GetString(1),
                                 rootNodeReader.GetString(2));

}
else return null;

rootNodeReader.Close();

OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
   ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
if ( rootNodeReader->HasRows )
{
   rootNodeReader->Read();
   rootNodeId = rootNodeReader->GetInt32( 0 );

   // Create a SiteMapNode that references the current StaticSiteMapProvider.
   rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(),
      rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
}
else
   return nullptr;
rootNodeReader->Close();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
SiteMapNode 重载
System.Web 命名空间


SiteMapNode 构造函数 (SiteMapProvider, String, String, String, String)

SiteMapNode 构造函数 (SiteMapProvider, String, String, String, String)
SiteMapNode 类

使用以下四项对 SiteMapNode 类的新实例进行初始化：一是指定的 URL；二是一个 key，用于标识节点所代表的页；三是标题和说明；四是站点地图提供程序，用于管理节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    provider As SiteMapProvider, _
    key As String, _
    url As String, _
    title As String, _
    description As String _
)
public SiteMapNode(
    SiteMapProvider provider,
    string key,
    string url,
    string title,
    string description
)
public:
SiteMapNode(
    SiteMapProvider^ provider,
    String^ key,
    String^ url,
    String^ title,
    String^ description
)
new :
        provider:SiteMapProvider *
        key:string *
        url:string *
        title:string *
        description:string -> SiteMapNode

参数

provider
类型： System.Web SiteMapProvider
与节点关联的 SiteMapProvider。
key
类型： System String
一个特定于提供程序的查找键。
url
类型： System String
节点在站点中表示的页的 URL。
title
类型： System String
节点的标签，通常由导航控件显示。
description
类型： System String
该节点所代表的页的说明。
异常 | 条件
ArgumentNullException | SiteMapProvider 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - key 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。 如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。

如果未提供 title 或 description，则对 Title 或 Description 属性的调用将返回 String..::.Empty 字段。

下面的代码示例演示如何使用 SiteMapNode 构造函数来创建一个 SiteMapNode 对象，创建方法是分析某个简单文本文件中的数据，以便在内存中生成站点地图。

此代码示例摘自一个为 SiteMapProvider 抽象类提供的更大的示例。

  Protected Overridable Sub LoadSiteMapFromStore()
    Dim pathToOpen As String
    SyncLock Me
      ' If a root node exists, LoadSiteMapFromStore has already
      ' been called, and the method can return.
      If Not (aRootNode Is Nothing) Then
        Return
      Else
        pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
        If File.Exists(pathToOpen) Then
          ' Open the file to read from.
          Dim sr As StreamReader = File.OpenText(pathToOpen)
          Try

            ' Clear the state of the collections and aRootNode
            aRootNode = Nothing
            siteMapNodes.Clear()
            childParentRelationship.Clear()

            ' Parse the file and build the site map
            Dim s As String = ""
            Dim nodeValues As String() = Nothing
            Dim temp As SiteMapNode = Nothing

            Do
              s = sr.ReadLine()

              If Not s Is Nothing Then
                ' Build the various SiteMapNode objects and add
                ' them to the ArrayList collections. The format used
                ' is: URL,TITLE,DESCRIPTION,PARENTURL
                nodeValues = s.Split(","c)

                temp = New SiteMapNode(Me, _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    nodeValues(1), _
                    nodeValues(2))

                ' Is this a root node yet?
                If aRootNode Is Nothing AndAlso _
                  (nodeValues(3) Is Nothing OrElse _
                   nodeValues(3) = String.Empty) Then
                  aRootNode = temp

                  ' If not the root node, add the node to the various collections.
                Else

                  siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))

                  ' The parent node has already been added to the collection.
                  Dim parentNode As SiteMapNode = _
                      FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))

                  If Not (parentNode Is Nothing) Then
                    childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
                  Else
                    Throw New Exception("Parent node not found for current node.")
                  End If
                End If
              End If
            Loop Until s Is Nothing
          Finally
            sr.Close()
          End Try
        Else
          Throw New Exception("File not found")
        End If
      End If
    End SyncLock
    Return
  End Sub 'LoadSiteMapFromStore
End Class 'SimpleTextSiteMapProvider

protected virtual void LoadSiteMapFromStore()
{
  string pathToOpen;

  lock (this)
  {
    // If a root node exists, LoadSiteMapFromStore has already
    // been called, and the method can return.
    if (rootNode != null)
    {
      return;
    }
    else
    {
      pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);

      if (File.Exists(pathToOpen))
      {
        // Open the file to read from.
        using (StreamReader sr = File.OpenText(pathToOpen))
        {

          // Clear the state of the collections and rootNode
          rootNode = null;
          siteMapNodes.Clear();
          childParentRelationship.Clear();

          // Parse the file and build the site map
          string s = "";
          string[] nodeValues = null;
          SiteMapNode temp = null;

          while ((s = sr.ReadLine()) != null)
          {

            // Build the various SiteMapNode objects and add
            // them to the ArrayList collections. The format used
            // is: URL,TITLE,DESCRIPTION,PARENTURL

            nodeValues = s.Split(',');

            temp = new SiteMapNode(this,
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                nodeValues[1],
                nodeValues[2]);

            // Is this a root node yet?
            if (null == rootNode &&
                (null == nodeValues[3] || nodeValues[3] == String.Empty))
            {
              rootNode = temp;
            }

          // If not the root node, add the node to the various collections.
            else
            {
              siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
              // The parent node has already been added to the collection.
              SiteMapNode parentNode =
                       FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
              if (parentNode != null)
              {
                childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
              }
              else
              {
                throw new Exception("Parent node not found for current node.");
              }
            }
          }
        }
      }
      else
      {
        throw new Exception("File not found");
      }
    }
  }
  return;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
SiteMapNode 重载
System.Web 命名空间
SiteMapProvider


SiteMapNode 构造函数 (SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)

SiteMapNode 构造函数 (SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)
SiteMapNode 类

使用管理该节点的指定站点地图提供程序、URL、标题、描述、角色、附加特性以及用于本地化的显式和隐式的资源键来初始化 SiteMapNode 类的一个新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    provider As SiteMapProvider, _
    key As String, _
    url As String, _
    title As String, _
    description As String, _
    roles As IList, _
    attributes As NameValueCollection, _
    explicitResourceKeys As NameValueCollection, _
    implicitResourceKey As String _
)
public SiteMapNode(
    SiteMapProvider provider,
    string key,
    string url,
    string title,
    string description,
    IList roles,
    NameValueCollection attributes,
    NameValueCollection explicitResourceKeys,
    string implicitResourceKey
)
public:
SiteMapNode(
    SiteMapProvider^ provider,
    String^ key,
    String^ url,
    String^ title,
    String^ description,
    IList^ roles,
    NameValueCollection^ attributes,
    NameValueCollection^ explicitResourceKeys,
    String^ implicitResourceKey
)
new :
        provider:SiteMapProvider *
        key:string *
        url:string *
        title:string *
        description:string *
        roles:IList *
        attributes:NameValueCollection *
        explicitResourceKeys:NameValueCollection *
        implicitResourceKey:string -> SiteMapNode

参数

provider
类型： System.Web SiteMapProvider
与节点关联的 SiteMapProvider。
key
类型： System String
一个特定于提供程序的查找键。
url
类型： System String
节点在站点中表示的页的 URL。
title
类型： System String
节点的标签，通常由导航控件显示。
description
类型： System String
该节点所代表的页的说明。
roles
类型： System.Collections IList
允许查看 SiteMapNode 所代表的页的角色的 IList。
attributes
类型： System.Collections.Specialized NameValueCollection
用于初始化 SiteMapNode 的附加特性的 NameValueCollection。
explicitResourceKeys
类型： System.Collections.Specialized NameValueCollection
用于本地化的显式资源键的 NameValueCollection。
implicitResourceKey
类型： System String
用于本地化的隐式资源键。
异常 | 条件
ArgumentNullException | SiteMapProvider 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - key 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。 如果为节点提供了 SiteMapNode..::.Url 属性，XmlSiteMapProvider 类（ASP.NET 的默认 SiteMapProvider 提供程序实现）将使用该属性作为查找密钥（若未提供 URL，则为节点生成跟踪标识符）。因此，提供 URL 并由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。

用于创建 SiteMapNode 的特性的 NameValueCollection 集合可通过 Attributes 属性使用，这使得将附加特性应用于站点地图节点并扩展其功能变得很容易，而无需通过派生自定义类来实现。

提供了一个角色的 IList 集合，它提供一组能够在 SecurityTrimmingEnabled 属性返回 true 时查看节点的角色。有关更多信息，请参见 SecurityTrimmingEnabled。 提供了一个角色的 IList 集合，它提供一组能够在 SecurityTrimmingEnabled 属性返回 true 时查看节点的角色。有关更多信息，请参见 SecurityTrimmingEnabled。

XmlSiteMapProvider 提供程序使用 SiteMapNode..::.Url 属性作为查找键。因此，由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。 XmlSiteMapProvider 提供程序使用 SiteMapNode..::.Url 属性作为查找键。因此，由 XmlSiteMapProvider 使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。

如果未提供 title 或 description，则对 Title 或 Description 属性的调用将返回 String..::.Empty 字段。

要以编程方式指定要本地化的资源，请将 implicitResourceKey 的值设置为用于标识节点的本地化资源的唯一名称，或者将 explicitResourceKeys 设置为 name/value 对的 NameValueCollection 集合，其中，name 是要本地化的节点属性或自定义特性，value 包含节点属性或自定义特性的本地化值。然后，可以在相应的 .resx 文件中设置本地化值。有关如何本地化 SiteMapNode 对象的 Title、Description 以及任何自定义属性的更多信息，请参见如何：本地化站点地图数据。有关 explicitResourceKeys 集合的语法要求，请参见 NameValueCollection。 要以编程方式指定要本地化的资源，请将 implicitResourceKey 的值设置为用于标识节点的本地化资源的唯一名称，或者将 explicitResourceKeys 设置为 name/value 对的 NameValueCollection 集合，其中，name 是要本地化的节点属性或自定义特性，value 包含节点属性或自定义特性的本地化值。然后，可以在相应的 .resx 文件中设置本地化值。有关如何本地化 SiteMapNode 对象的 Title、Description 以及任何自定义属性的更多信息，请参见如何：本地化站点地图数据。有关 explicitResourceKeys 集合的语法要求，请参见 NameValueCollection。 要以编程方式指定要本地化的资源，请将 implicitResourceKey 的值设置为用于标识节点的本地化资源的唯一名称，或者将 explicitResourceKeys 设置为 name/value 对的 NameValueCollection 集合，其中，name 是要本地化的节点属性或自定义特性，value 包含节点属性或自定义特性的本地化值。然后，可以在相应的 .resx 文件中设置本地化值。有关如何本地化 SiteMapNode 对象的 Title、Description 以及任何自定义属性的更多信息，请参见如何：本地化站点地图数据。有关 explicitResourceKeys 集合的语法要求，请参见 NameValueCollection。 要以编程方式指定要本地化的资源，请将 implicitResourceKey 的值设置为用于标识节点的本地化资源的唯一名称，或者将 explicitResourceKeys 设置为 name/value 对的 NameValueCollection 集合，其中，name 是要本地化的节点属性或自定义特性，value 包含节点属性或自定义特性的本地化值。然后，可以在相应的 .resx 文件中设置本地化值。有关如何本地化 SiteMapNode 对象的 Title、Description 以及任何自定义属性的更多信息，请参见如何：本地化站点地图数据。有关 explicitResourceKeys 集合的语法要求，请参见 NameValueCollection。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
SiteMapNode 重载
System.Web 命名空间
SecurityTrimmingEnabled
IsAccessibleToUser


SiteMapNode 方法

SiteMapNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNode 类

SiteMapNode 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SiteMapNode 类
System.Web 命名空间


SiteMapNode ..::.Clone 方法

SiteMapNode
.
.
::
.
Clone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNode 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

创建作为当前节点副本的新节点。

名称 说明
页首

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间


SiteMapNode ..::.Clone 方法

SiteMapNode
.
.
::
.
Clone 方法
SiteMapNode 类

创建作为当前节点副本的新节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Clone As SiteMapNode
public virtual SiteMapNode Clone()
public:
virtual SiteMapNode^ Clone()
abstract Clone : unit -> SiteMapNode
override Clone : unit -> SiteMapNode

返回值

类型： System.Web SiteMapNode
作为当前节点副本的新节点。

在将参数设置为 false 的情况下调用 Clone 方法。提供程序、Title、Url、Description 和 Key 属性被复制。Roles 和 Attributes 集合被复制到新的集合。祖先节点和子节点不被克隆。 在将参数设置为 false 的情况下调用 Clone 方法。提供程序、Title、Url、Description 和 Key 属性被复制。Roles 和 Attributes 集合被复制到新的集合。祖先节点和子节点不被克隆。 在将参数设置为 false 的情况下调用 Clone 方法。提供程序、Title、Url、Description 和 Key 属性被复制。Roles 和 Attributes 集合被复制到新的集合。祖先节点和子节点不被克隆。 在将参数设置为 false 的情况下调用 Clone 方法。提供程序、Title、Url、Description 和 Key 属性被复制。Roles 和 Attributes 集合被复制到新的集合。祖先节点和子节点不被克隆。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
Clone 重载
System.Web 命名空间
Clone


SiteMapNode ..::.Clone 方法 (Boolean)

SiteMapNode
.
.
::
.
Clone 方法 (Boolean)
SiteMapNode 类

创建作为当前节点的副本的新副本，并根据需要克隆当前节点的所有父节点和祖先节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Clone ( _
    cloneParentNodes As Boolean _
) As SiteMapNode
public virtual SiteMapNode Clone(
    bool cloneParentNodes
)
public:
virtual SiteMapNode^ Clone(
    bool cloneParentNodes
)
abstract Clone :
        cloneParentNodes:bool -> SiteMapNode
override Clone :
        cloneParentNodes:bool -> SiteMapNode

参数

cloneParentNodes
类型： System Boolean
若要克隆当前节点的所有父节点和祖先节点，则为 true；否则为 false。

返回值

类型： System.Web SiteMapNode
作为当前节点副本的新节点。

如果 cloneParentNodes 参数为 true，Clone 方法将以递归方式克隆所有直接祖先节点，并将它们与当前被克隆的节点关联起来。子节点不被克隆。 如果 cloneParentNodes 参数为 true，Clone 方法将以递归方式克隆所有直接祖先节点，并将它们与当前被克隆的节点关联起来。子节点不被克隆。

Roles 和 Attributes 集合被应用于新的集合。

下面的代码示例演示如何调用 Clone 方法从当前节点创建一个重复的站点地图节点。注册 ExpandForumPaths 方法以处理 SiteMapResolve 事件。它使用 Clone 方法创建当前站点地图节点的工作副本，并根据个性化数据修改特性，然后返回该工作副本。 下面的代码示例演示如何调用 Clone 方法从当前节点创建一个重复的站点地图节点。注册 ExpandForumPaths 方法以处理 SiteMapResolve 事件。它使用 Clone 方法创建当前站点地图节点的工作副本，并根据个性化数据修改特性，然后返回该工作副本。 下面的代码示例演示如何调用 Clone 方法从当前节点创建一个重复的站点地图节点。注册 ExpandForumPaths 方法以处理 SiteMapResolve 事件。它使用 Clone 方法创建当前站点地图节点的工作副本，并根据个性化数据修改特性，然后返回该工作副本。

    Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        ' The ExpandForumPaths method is called to handle
        ' the SiteMapResolve event.
        AddHandler SiteMap.SiteMapResolve, AddressOf Me.ExpandForumPaths

    End Sub

    Private Function ExpandForumPaths(ByVal sender As Object, ByVal e As SiteMapResolveEventArgs) As SiteMapNode
        ' The current node represents a Post page in a bulletin board forum.
        ' Clone the current node and all of its relevant parents. This
        ' returns a site map node that a developer can then
        ' walk, modifying each node.Url property in turn.
        ' Since the cloned nodes are separate from the underlying
        ' site navigation structure, the fixups that are made do not
        ' effect the overall site navigation structure.
        Dim currentNode As SiteMapNode = SiteMap.CurrentNode.Clone(True)
        Dim tempNode As SiteMapNode = currentNode

        ' Obtain the recent IDs.
        Dim forumGroupID As Integer = GetMostRecentForumGroupID()
        Dim forumID As Integer = GetMostRecentForumID(forumGroupID)
        Dim postID As Integer = GetMostRecentPostID(forumID)

        ' The current node, and its parents, can be modified to include
        ' dynamic querystring information relevant to the currently
        ' executing request.
        If Not (0 = postID) Then
            tempNode.Url = tempNode.Url & "?PostID=" & postID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = forumID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumID=" & forumID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = ForumGroupID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumGroupID=" & forumGroupID.ToString()
        End If

        Return currentNode

    End Function

private void Page_Load(object sender, EventArgs e)
{
    // The ExpandForumPaths method is called to handle
    // the SiteMapResolve event.
    SiteMap.SiteMapResolve +=
      new SiteMapResolveEventHandler(this.ExpandForumPaths);
}

private SiteMapNode ExpandForumPaths(Object sender, SiteMapResolveEventArgs e)
{
    // The current node represents a Post page in a bulletin board forum.
    // Clone the current node and all of its relevant parents. This
    // returns a site map node that a developer can then
    // walk, modifying each node.Url property in turn.
    // Since the cloned nodes are separate from the underlying
    // site navigation structure, the fixups that are made do not
    // effect the overall site navigation structure.
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    SiteMapNode tempNode = currentNode;

    // Obtain the recent IDs.
    int forumGroupID = GetMostRecentForumGroupID();
    int forumID = GetMostRecentForumID(forumGroupID);
    int postID = GetMostRecentPostID(forumID);

    // The current node, and its parents, can be modified to include
    // dynamic querystring information relevant to the currently
    // executing request.
    if (0 != postID)
    {
        tempNode.Url = tempNode.Url + "?PostID=" + postID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumID))
    {
        tempNode.Url = tempNode.Url + "?ForumID=" + forumID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumGroupID))
    {
        tempNode.Url = tempNode.Url + "?ForumGroupID=" + forumGroupID.ToString();
    }

    return currentNode;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
Clone 重载
System.Web 命名空间
Clone


SiteMapNode ..::.Equals 方法

SiteMapNode
.
.
::
.
Equals 方法
SiteMapNode 类

获取一个值，该值指示当前的 SiteMapNode 是否与指定对象相同。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function Equals ( _
    obj As Object _
) As Boolean
public override bool Equals(
    Object obj
)
public:
virtual bool Equals(
    Object^ obj
) override
abstract Equals :
        obj:Object -> bool
override Equals :
        obj:Object -> bool

参数

obj
类型： System Object
与当前 SiteMapNode 进行比较的对象。

返回值

类型： System Boolean
如果 obj 既是 SiteMapNode 又与当前 SiteMapNode 完全相同，则为 true；否则为 false。

如果两个 SiteMapNode 对象同时满足以下条件，则它们被视为相等：

  • 两个 SiteMapNode 都具有相同的 Key 属性值。

  • 两个 Url 属性的固定区域性、不区分大小写的比较返回 true。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Equals


SiteMapNode ..::.GetAllNodes 方法

SiteMapNode
.
.
::
.
GetAllNodes 方法
SiteMapNode 类

检索属于调用节点的子代的所有 SiteMapNode 对象的只读集合，而不管分离程度如何。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetAllNodes As SiteMapNodeCollection
public SiteMapNodeCollection GetAllNodes()
public:
SiteMapNodeCollection^ GetAllNodes()
member GetAllNodes : unit -> SiteMapNodeCollection

返回值

类型： System.Web SiteMapNodeCollection
表示当前提供程序范围内的某个 SiteMapNode 的所有子代的只读 SiteMapNodeCollection。

此方法以递归方式检索直接子节点以及它们的所有子节点。

下面的代码示例演示如何使用 GetAllNodes 方法检索 RootNode 的所有子节点。

    Dim siteNodes As SiteMapNodeCollection
    siteNodes = SiteMap.RootNode.GetAllNodes()

    If siteNodes.IsReadOnly Or siteNodes.IsFixedSize Then

        Response.Write("Collection is read-only or has fixed size.<BR>")

        ' Create a new, modifiable collection from the existing one.
        Dim modifiableCollection As SiteMapNodeCollection
        modifiableCollection = New SiteMapNodeCollection(siteNodes)

        ' The MoveNode example method moves a node from position one to
        ' the last position in the collection.
        MoveNode(modifiableCollection)
    Else
        MoveNode(siteNodes)
    End If

    SiteMapNodeCollection siteNodes = SiteMap.RootNode.GetAllNodes();

    if ( siteNodes.IsReadOnly ||
         siteNodes.IsFixedSize )
    {
        Response.Write("Collection is read-only or has fixed size.<BR>");

        // Create a new, modifiable collection from the existing one.
        SiteMapNodeCollection modifiableCollection =
             new SiteMapNodeCollection(siteNodes);

        // The MoveNode example method moves a node from position one to
        // the last position in the collection.
        MoveNode(modifiableCollection);
    }
    else {
        MoveNode(siteNodes);
    }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
RootNode
SiteMapNodeCollection


SiteMapNode ..::.GetDataSourceView 方法

SiteMapNode
.
.
::
.
GetDataSourceView 方法
SiteMapNode 类

检索与当前节点关联的 SiteMapDataSourceView 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetDataSourceView ( _
    owner As SiteMapDataSource, _
    viewName As String _
) As SiteMapDataSourceView
public SiteMapDataSourceView GetDataSourceView(
    SiteMapDataSource owner,
    string viewName
)
public:
SiteMapDataSourceView^ GetDataSourceView(
    SiteMapDataSource^ owner,
    String^ viewName
)
member GetDataSourceView :
        owner:SiteMapDataSource *
        viewName:string -> SiteMapDataSourceView

参数

owner
类型： System.Web.UI.WebControls SiteMapDataSource
视图所关联的 SiteMapDataSource 控件。
viewName
类型： System String
视图的名称。

返回值

类型： System.Web.UI.WebControls SiteMapDataSourceView
当前节点的指定名称的 SiteMapDataSourceView。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetHierarchicalDataSourceView


SiteMapNode ..::.GetExplicitResourceString 方法

SiteMapNode
.
.
::
.
GetExplicitResourceString 方法
SiteMapNode 类

检索一个本地化的字符串，此方法基于以下三个参数：要本地化的 SiteMapNode 特性，未找到资源时使用的默认字符串，以及一个指示在未找到资源时是否引发异常的布尔值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Function GetExplicitResourceString ( _
    attributeName As String, _
    defaultValue As String, _
    throwIfNotFound As Boolean _
) As String
protected string GetExplicitResourceString(
    string attributeName,
    string defaultValue,
    bool throwIfNotFound
)
protected:
String^ GetExplicitResourceString(
    String^ attributeName,
    String^ defaultValue,
    bool throwIfNotFound
)
member GetExplicitResourceString :
        attributeName:string *
        defaultValue:string *
        throwIfNotFound:bool -> string

参数

attributeName
类型： System String
要本地化的 SiteMapNode 特性。
defaultValue
类型： System String
未找到匹配资源时返回的默认值。
throwIfNotFound
类型： System Boolean
设置为 true 则在以下情况下引发 InvalidOperationException：为 attributeName 定义了显式的资源，defaultValue 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），并且未找到本地化的值；否则为 false。

返回值

类型： System String
表示本地化特性的字符串。
异常 | 条件
ArgumentNullException | attributeName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | 未找到匹配的资源对象，并且 throwIfNotFound 为 true。

GetExplicitResourceString 方法在以下属性和特性的 get 访问器中调用：Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性。若要使 GetExplicitResourceString 方法返回本地化的字符串，跟踪 SiteMapNode 的 SiteMapProvider 对象必须将其 EnableLocalization 属性设置为 true。如果将 EnableLocalization 设置为 false，则不执行本地化并且始终不会调用 GetExplicitResourceString 方法。 GetExplicitResourceString 方法在以下属性和特性的 get 访问器中调用：Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性。若要使 GetExplicitResourceString 方法返回本地化的字符串，跟踪 SiteMapNode 的 SiteMapProvider 对象必须将其 EnableLocalization 属性设置为 true。如果将 EnableLocalization 设置为 false，则不执行本地化并且始终不会调用 GetExplicitResourceString 方法。 GetExplicitResourceString 方法在以下属性和特性的 get 访问器中调用：Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性。若要使 GetExplicitResourceString 方法返回本地化的字符串，跟踪 SiteMapNode 的 SiteMapProvider 对象必须将其 EnableLocalization 属性设置为 true。如果将 EnableLocalization 设置为 false，则不执行本地化并且始终不会调用 GetExplicitResourceString 方法。

Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性将首先调用 GetImplicitResourceString 方法。如果此方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在将 defaultValue 设置为来自显式的资源表达式（假设已定义）的默认值并将 throwIfNotFound 设置为 true 的情况下调用 GetExplicitResourceString 方法。 Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性将首先调用 GetImplicitResourceString 方法。如果此方法返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则在将 defaultValue 设置为来自显式的资源表达式（假设已定义）的默认值并将 throwIfNotFound 设置为 true 的情况下调用 GetExplicitResourceString 方法。

说明 说明

XmlSiteMapProvider 类有这样一个限制：SiteMapNode 对象不能同时为特性定义隐式资源表达式和显式资源表达式。但是，自定义的提供程序实现可以选择允许同时定义这两者。 XmlSiteMapProvider 类有这样一个限制：SiteMapNode 对象不能同时为特性定义隐式资源表达式和显式资源表达式。但是，自定义的提供程序实现可以选择允许同时定义这两者。

GetExplicitResourceString 方法使用用于初始化 SiteMapNode 对象的资源键的 NameValueCollection 集合。如果未指定资源键的集合，则 GetExplicitResourceString 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 GetExplicitResourceString 方法使用用于初始化 SiteMapNode 对象的资源键的 NameValueCollection 集合。如果未指定资源键的集合，则 GetExplicitResourceString 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
EnableLocalization
GetImplicitResourceString


SiteMapNode ..::.GetHashCode 方法

SiteMapNode
.
.
::
.
GetHashCode 方法
SiteMapNode 类

返回 SiteMapNode 对象的哈希代码。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetHashCode As Integer
public override int GetHashCode()
public:
virtual int GetHashCode() override
abstract GetHashCode : unit -> int
override GetHashCode : unit -> int

返回值

类型： System Int32
一个表示哈希代码的 32 位带符号整数。

哈希代码是使用站点地图节点的查找键（即 Key 属性的哈希值）生成的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Key


SiteMapNode ..::.GetHierarchicalDataSourceView 方法

SiteMapNode
.
.
::
.
GetHierarchicalDataSourceView 方法
SiteMapNode 类

检索与当前节点关联的 SiteMapHierarchicalDataSourceView 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetHierarchicalDataSourceView As SiteMapHierarchicalDataSourceView
public SiteMapHierarchicalDataSourceView GetHierarchicalDataSourceView()
public:
SiteMapHierarchicalDataSourceView^ GetHierarchicalDataSourceView()
member GetHierarchicalDataSourceView : unit -> SiteMapHierarchicalDataSourceView

返回值

类型： System.Web.UI.WebControls SiteMapHierarchicalDataSourceView
当前节点的 SiteMapHierarchicalDataSourceView。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetDataSourceView


SiteMapNode ..::.GetImplicitResourceString 方法

SiteMapNode
.
.
::
.
GetImplicitResourceString 方法
SiteMapNode 类

获取一个本地化的字符串，此方法基于以下信息：跟踪 SiteMapNode 的 SiteMapProvider 所指定的特性名称和 ResourceKey 属性。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Function GetImplicitResourceString ( _
    attributeName As String _
) As String
protected string GetImplicitResourceString(
    string attributeName
)
protected:
String^ GetImplicitResourceString(
    String^ attributeName
)
member GetImplicitResourceString :
        attributeName:string -> string

参数

attributeName
类型： System String
要本地化的 SiteMapNode 特性。

返回值

类型： System String
表示本地化特性的字符串。默认为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 表示本地化特性的字符串。默认为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentNullException | attributeName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

GetImplicitResourceString 方法在以下 get 访问器中调用：Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性。若要使 GetImplicitResourceString 方法被调用，跟踪 SiteMapNode 对象的 SiteMapProvider 提供程序必须将其 EnableLocalization 属性设置为 true。如果将 EnableLocalization 设置为 false，则不执行本地化并且始终不会调用 GetImplicitResourceString 方法。 GetImplicitResourceString 方法在以下 get 访问器中调用：Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性。若要使 GetImplicitResourceString 方法被调用，跟踪 SiteMapNode 对象的 SiteMapProvider 提供程序必须将其 EnableLocalization 属性设置为 true。如果将 EnableLocalization 设置为 false，则不执行本地化并且始终不会调用 GetImplicitResourceString 方法。 GetImplicitResourceString 方法在以下 get 访问器中调用：Title 属性、Description 属性以及在 Attributes 属性中定义的任何自定义特性。若要使 GetImplicitResourceString 方法被调用，跟踪 SiteMapNode 对象的 SiteMapProvider 提供程序必须将其 EnableLocalization 属性设置为 true。如果将 EnableLocalization 设置为 false，则不执行本地化并且始终不会调用 GetImplicitResourceString 方法。

如果 GetImplicitResourceString 返回一个不为空的字符串，则此字符串将成为 Title、Description 或自定义特性属性的值。

GetImplicitResourceString 方法使用 ResourceKey 属性的值来本地化该特性。如果未指定 ResourceKey，则 GetImplicitResourceString 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 GetImplicitResourceString 方法使用 ResourceKey 属性的值来本地化该特性。如果未指定 ResourceKey，则 GetImplicitResourceString 返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

说明 说明

XmlSiteMapProvider 类有这样一个限制：SiteMapNode 对象不能同时为特性定义隐式资源表达式和显式资源表达式。但是，自定义的提供程序实现可以选择允许同时定义这两者。 XmlSiteMapProvider 类有这样一个限制：SiteMapNode 对象不能同时为特性定义隐式资源表达式和显式资源表达式。但是，自定义的提供程序实现可以选择允许同时定义这两者。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
EnableLocalization
GetExplicitResourceString


SiteMapNode ..::.ICloneable ..::.Clone 方法

SiteMapNode
.
.
::
.
ICloneable
.
.
::
.
Clone 方法
SiteMapNode 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

创建作为当前节点副本的新节点。有关此成员的说明，请参见 ICloneable..::.Clone。 创建作为当前节点副本的新节点。有关此成员的说明，请参见 ICloneable..::.Clone。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function Clone As Object Implements ICloneable.Clone
Object ICloneable.Clone()
private:
virtual Object^ Clone() sealed = ICloneable::Clone
private abstract Clone : unit -> Object
private override Clone : unit -> Object

返回值

类型： System Object
作为当前节点副本的新节点。

实现

Roles 和 Attributes 集合被复制到新的集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间


SiteMapNode ..::.IHierarchyData ..::.GetChildren 方法

SiteMapNode
.
.
::
.
IHierarchyData
.
.
::
.
GetChildren 方法
SiteMapNode 类

检索当前项的层次结构子数据项。有关此成员的说明，请参见 IHierarchyData..::.GetChildren。 检索当前项的层次结构子数据项。有关此成员的说明，请参见 IHierarchyData..::.GetChildren。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function GetChildren As IHierarchicalEnumerable
    Implements IHierarchyData.GetChildren
IHierarchicalEnumerable IHierarchyData.GetChildren()
private:
virtual IHierarchicalEnumerable^ GetChildren() sealed = IHierarchyData::GetChildren
private abstract GetChildren : unit -> IHierarchicalEnumerable
private override GetChildren : unit -> IHierarchicalEnumerable

返回值

类型： System.Web.UI IHierarchicalEnumerable
表示层次结构中当前项的直接子项的 IHierarchicalEnumerable。

实现

GetChildren()()() 方法委托 ChildNodes 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetParent GetParent()()()
GetChildren


SiteMapNode ..::.IHierarchyData ..::.GetParent 方法

SiteMapNode
.
.
::
.
IHierarchyData
.
.
::
.
GetParent 方法
SiteMapNode 类

检索当前项的层次结构父项。有关此成员的说明，请参见 IHierarchyData..::.GetParent。 检索当前项的层次结构父项。有关此成员的说明，请参见 IHierarchyData..::.GetParent。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function GetParent As IHierarchyData
    Implements IHierarchyData.GetParent
IHierarchyData IHierarchyData.GetParent()
private:
virtual IHierarchyData^ GetParent() sealed = IHierarchyData::GetParent
private abstract GetParent : unit -> IHierarchyData
private override GetParent : unit -> IHierarchyData

返回值

类型： System.Web.UI IHierarchyData
表示层次结构中的当前项的父项的 IHierarchicalEnumerable。

实现

GetParent()()() 方法委托 ParentNode 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetChildren GetChildren()()()
GetParent


SiteMapNode ..::.IsAccessibleToUser 方法

SiteMapNode
.
.
::
.
IsAccessibleToUser 方法
SiteMapNode 类

获取一个值，该值指示指定的站点地图节点是否可由用户在指定的上下文中查看。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsAccessibleToUser ( _
    context As HttpContext _
) As Boolean
public virtual bool IsAccessibleToUser(
    HttpContext context
)
public:
virtual bool IsAccessibleToUser(
    HttpContext^ context
)
abstract IsAccessibleToUser :
        context:HttpContext -> bool
override IsAccessibleToUser :
        context:HttpContext -> bool

参数

context
类型： System.Web HttpContext
包含用户信息的 HttpContext。

返回值

类型： System Boolean
如果满足下列任一条件，则为 true：启用了安全修整，并且当前用户至少是可以通过访问来查看站点地图节点的一个角色的成员；在当前应用程序的授权元素中明确授予了当前用户对所请求节点的 URL 的权限，并且该 URL 位于应用程序的目录结构内；当前线程具有对所请求节点的 URL 拥有文件访问权限的关联 WindowsIdentity，并且该 URL 位于应用程序的目录结构内；或者未启用安全修整，因而允许任何用户查看站点地图节点。如果不满足上述任一条件，则为 false。
异常 | 条件
ArgumentNullException | 指定的上下文为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

IsAccessibleToUser 方法调用与节点关联的提供程序的 IsAccessibleToUser 方法，并传递指定的 context。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
IsAccessibleToUser
SecurityTrimmingEnabled


SiteMapNode ..::.IsDescendantOf 方法

SiteMapNode
.
.
::
.
IsDescendantOf 方法
SiteMapNode 类

获取一个值，该值指示当前站点地图节点是否为指定节点的子节点或直接子代节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsDescendantOf ( _
    node As SiteMapNode _
) As Boolean
public virtual bool IsDescendantOf(
    SiteMapNode node
)
public:
virtual bool IsDescendantOf(
    SiteMapNode^ node
)
abstract IsDescendantOf :
        node:SiteMapNode -> bool
override IsDescendantOf :
        node:SiteMapNode -> bool

参数

node
类型： System.Web SiteMapNode
SiteMapNode 用于检查当前节点是否为子节点或子代节点。

返回值

类型： System Boolean
如果当前节点是指定节点的子节点或子代节点，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间


SiteMapNode ..::.ToString 方法

SiteMapNode
.
.
::
.
ToString 方法
SiteMapNode 类

将 SiteMapNode 类此实例的值转换为其等效的字符串表示。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function ToString As String
public override string ToString()
public:
virtual String^ ToString() override
abstract ToString : unit -> string
override ToString : unit -> string

返回值

类型： System String
此 SiteMapNode 的值的字符串表示形式。

ToString 方法返回一个 SiteMapNode 对象的 Title 属性。

下面的代码示例演示了 SiteMapNode 对象的 ToString 方法与 Url 和 Title 属性的比较。

<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
Private Sub Page_Load(Sender As Object, E As EventArgs)

    ' Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() & "<BR>")

    Response.Write(SiteMap.RootNode.Url & "<BR>")
    Response.Write(SiteMap.RootNode.Title & "<BR>")

    Dim sitemapnode As SiteMapNode
    For Each sitemapnode In SiteMap.RootNode.ChildNodes
        ' Iterate through the ChildNodes SiteMapNodesCollection
        ' maintained by the RootNode.
        Response.Write(sitemapnode.Url & "<BR>" )
    Next

    Dim providers As IDictionaryEnumerator = SiteMap.Providers.GetEnumerator()
    While (providers.MoveNext())
        Response.Write(providers.Current)
        Response.Write("&nbsp;&nbsp;&nbsp;")
        Response.Write("<BR>")
    End While
End Sub ' Page_Load

</SCRIPT>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() + "<BR>");

    Response.Write(SiteMap.RootNode.Url + "<BR>");
    Response.Write(SiteMap.RootNode.Title + "<BR>");

    foreach (SiteMapNode sitemapnode in SiteMap.RootNode.ChildNodes)
    {
        // Iterate through the ChildNodes SiteMapNodesCollection
        // maintained by the RootNode.
        Response.Write(sitemapnode.Url + "<BR>" );
    }

    IEnumerator providers = SiteMap.Providers.GetEnumerator();
    while (providers.MoveNext())
    {
        Response.Write(providers.Current);
        Response.Write("&nbsp;&nbsp;&nbsp;");
        Response.Write("<BR>");
    }
}
</SCRIPT>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间


SiteMapNode 属性

SiteMapNode 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNode 类

SiteMapNode 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SiteMapNode 类
System.Web 命名空间


SiteMapNode ..::.Attributes 属性

SiteMapNode
.
.
::
.
Attributes 属性
SiteMapNode 类

除了为 SiteMapNode 类定义的强类型属性以外，获取或设置附加特性的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Property Attributes As NameValueCollection
    Get
    Set
protected NameValueCollection Attributes { get; set; }
protected:
property NameValueCollection^ Attributes {
    NameValueCollection^ get ();
    void set (NameValueCollection^ value);
}
member Attributes : NameValueCollection with get, set

属性值

类型： System.Collections.Specialized NameValueCollection
除 Title、Description、Url 和 Roles 之外的 SiteMapNode 的附加特性的 NameValueCollection；否则，如果不存在这些附加特性，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 节点是只读的。

Attributes 集合通常用于以下情形：您需要将附加特性应用于站点地图节点，但又不希望为此派生一个自定义类。

受保护的 Attributes 特性与 Title 或 Description 属性的执行方式有所不同。出于本地化支持的考虑，开发人员必须使用默认索引器。 受保护的 Attributes 特性与 Title 或 Description 属性的执行方式有所不同。出于本地化支持的考虑，开发人员必须使用默认索引器。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetImplicitResourceString
GetExplicitResourceString


SiteMapNode ..::.ChildNodes 属性

SiteMapNode
.
.
::
.
ChildNodes 属性
SiteMapNode 类

获取或设置来自关联的 SiteMapProvider 提供程序的当前 SiteMapNode 对象的所有子节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ChildNodes As SiteMapNodeCollection
    Get
    Set
public virtual SiteMapNodeCollection ChildNodes { get; set; }
public:
virtual property SiteMapNodeCollection^ ChildNodes {
    SiteMapNodeCollection^ get ();
    void set (SiteMapNodeCollection^ value);
}
abstract ChildNodes : SiteMapNodeCollection with get, set
override ChildNodes : SiteMapNodeCollection with get, set

属性值

类型： System.Web SiteMapNodeCollection
如果当前节点中存在子节点，则为这些子节点的一个只读 SiteMapNodeCollection；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 节点是只读的。

SiteMapNode 依赖于与之关联的 SiteMapProvider，以跟踪与站点地图中其他节点的关系。此属性调用 GetChildNodes 方法，并传递它自身的引用以检索 SiteMapNodeCollection。 SiteMapNode 依赖于与之关联的 SiteMapProvider，以跟踪与站点地图中其他节点的关系。此属性调用 GetChildNodes 方法，并传递它自身的引用以检索 SiteMapNodeCollection。

如果启用了安全修整，则仅返回允许当前用户查看的节点。如果不允许当前用户查看任何子节点，则返回一个空集合。 如果启用了安全修整，则仅返回允许当前用户查看的节点。如果不允许当前用户查看任何子节点，则返回一个空集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
SiteMapProvider GetChildNodes


SiteMapNode ..::.Description 属性

SiteMapNode
.
.
::
.
Description 属性
SiteMapNode 类

获取或设置 SiteMapNode 的描述。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Description As String
    Get
    Set
public virtual string Description { get; set; }
public:
virtual property String^ Description {
    String^ get ();
    void set (String^ value);
}
abstract Description : string with get, set
override Description : string with get, set

属性值

类型： System String
一个表示节点的描述的字符串；否则为 String..::.Empty。
异常 | 条件
InvalidOperationException | 节点是只读的。

虽然 SiteMapNode 的 Title 由某些导航控件用作标签或超链接，但是 Description 被用作鼠标移过事件的工具提示元素。

如果 EnableLocalization 属性为 true，则返回 Description 属性的本地化值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Url
Title
GetImplicitResourceString
GetExplicitResourceString
EnableLocalization


SiteMapNode ..::.HasChildNodes 属性

SiteMapNode
.
.
::
.
HasChildNodes 属性
SiteMapNode 类

获取一个值，它指示当前 SiteMapNode 是否具有子节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property HasChildNodes As Boolean
    Get
public virtual bool HasChildNodes { get; }
public:
virtual property bool HasChildNodes {
    bool get ();
}
abstract HasChildNodes : bool
override HasChildNodes : bool

属性值

类型： System Boolean
如果该节点具有子节点，则为 true；否则为 false。

此属性是一个在内部调用 ChildNodes 属性的便捷属性，因此，其性能并不会好于直接调用 ChildNodes 属性并检查结果是否为空。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
ChildNodes


SiteMapNode ..::.IHierarchyData ..::.HasChildren 属性

SiteMapNode
.
.
::
.
IHierarchyData
.
.
::
.
HasChildren 属性
SiteMapNode 类

获取一个值，它指示当前的 SiteMapNode 对象是否具有任何子节点。有关此成员的说明，请参见 IHierarchyData..::.HasChildren。 获取一个值，它指示当前的 SiteMapNode 对象是否具有任何子节点。有关此成员的说明，请参见 IHierarchyData..::.HasChildren。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property HasChildren As Boolean
    Implements IHierarchyData.HasChildren
    Get
bool IHierarchyData.HasChildren { get; }
private:
virtual property bool HasChildren {
    bool get () sealed = IHierarchyData::HasChildren::get;
}
private abstract HasChildren : bool
private override HasChildren : bool

属性值

类型： System Boolean
如果节点具有子节点，则为 true；否则为 false。

实现

HasChildren()()() 属性委托给 HasChildNodes 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
HasChildNodes
GetChildren GetChildren()()()


SiteMapNode ..::.IHierarchyData ..::.Item 属性

SiteMapNode
.
.
::
.
IHierarchyData
.
.
::
.
Item 属性
SiteMapNode 类

获取分层数据项。有关此成员的说明，请参见 IHierarchyData..::.Item。 获取分层数据项。有关此成员的说明，请参见 IHierarchyData..::.Item。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Item As Object
    Implements IHierarchyData.Item
    Get
Object IHierarchyData.Item { get; }
private:
virtual property Object^ Item {
    Object^ get () sealed = IHierarchyData::Item::get;
}
private abstract Item : Object
private override Item : Object

属性值

类型： System Object
一个层次结构数据节点对象。

实现

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Item


SiteMapNode ..::.IHierarchyData ..::.Path 属性

SiteMapNode
.
.
::
.
IHierarchyData
.
.
::
.
Path 属性
SiteMapNode 类

获取分层数据项的路径。有关此成员的说明，请参见 IHierarchyData..::.Path。 获取分层数据项的路径。有关此成员的说明，请参见 IHierarchyData..::.Path。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Path As String
    Implements IHierarchyData.Path
    Get
string IHierarchyData.Path { get; }
private:
virtual property String^ Path {
    String^ get () sealed = IHierarchyData::Path::get;
}
private abstract Path : string
private override Path : string

属性值

类型： System String
数据项的路径。

实现

Path()()() 属性委托给 Url 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Url
Path


SiteMapNode ..::.IHierarchyData ..::.Type 属性

SiteMapNode
.
.
::
.
IHierarchyData
.
.
::
.
Type 属性
SiteMapNode 类

获取表示分层数据项的类型名称的字符串。有关此成员的说明，请参见 IHierarchyData..::.Type。 获取表示分层数据项的类型名称的字符串。有关此成员的说明，请参见 IHierarchyData..::.Type。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Type As String
    Implements IHierarchyData.Type
    Get
string IHierarchyData.Type { get; }
private:
virtual property String^ Type {
    String^ get () sealed = IHierarchyData::Type::get;
}
private abstract Type : string
private override Type : string

属性值

类型： System String
名为 "SiteMapNode" 的字符串。

实现

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 IHierarchyData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Type


SiteMapNode ..::.INavigateUIData ..::.Description 属性

SiteMapNode
.
.
::
.
INavigateUIData
.
.
::
.
Description 属性
SiteMapNode 类

获取站点地图节点的 Description 属性。有关此成员的说明，请参见 INavigateUIData..::.Description。 获取站点地图节点的 Description 属性。有关此成员的说明，请参见 INavigateUIData..::.Description。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Description As String
    Implements INavigateUIData.Description
    Get
string INavigateUIData.Description { get; }
private:
virtual property String^ Description {
    String^ get () sealed = INavigateUIData::Description::get;
}
private abstract Description : string
private override Description : string

属性值

类型： System String
在导航控件的节点的工具提示中显示的文本；否则，如果未设置 Description，则为 String..::.Empty。

实现

Description()()() 属性委托给 Description 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Description


SiteMapNode ..::.INavigateUIData ..::.Name 属性

SiteMapNode
.
.
::
.
INavigateUIData
.
.
::
.
Name 属性
SiteMapNode 类

获取站点地图节点的 Title 属性。有关此成员的说明，请参见 INavigateUIData..::.Name。 获取站点地图节点的 Title 属性。有关此成员的说明，请参见 INavigateUIData..::.Name。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Name As String
    Implements INavigateUIData.Name
    Get
string INavigateUIData.Name { get; }
private:
virtual property String^ Name {
    String^ get () sealed = INavigateUIData::Name::get;
}
private abstract Name : string
private override Name : string

属性值

类型： System String
为导航控件的节点显示的文本；否则，如果没有为该节点设置 Title，则为 String..::.Empty。

实现

Name()()() 属性委托给 Title 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
INavigateUIData
Name


SiteMapNode ..::.INavigateUIData ..::.NavigateUrl 属性

SiteMapNode
.
.
::
.
INavigateUIData
.
.
::
.
NavigateUrl 属性
SiteMapNode 类

获取站点地图节点的 Url 属性。有关此成员的说明，请参见 INavigateUIData..::.NavigateUrl。 获取站点地图节点的 Url 属性。有关此成员的说明，请参见 INavigateUIData..::.NavigateUrl。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property NavigateUrl As String
    Implements INavigateUIData.NavigateUrl
    Get
string INavigateUIData.NavigateUrl { get; }
private:
virtual property String^ NavigateUrl {
    String^ get () sealed = INavigateUIData::NavigateUrl::get;
}
private abstract NavigateUrl : string
private override NavigateUrl : string

属性值

类型： System String
单击该节点时要导航到的 URL；否则，如果没有为该节点设置 Url，则为 String..::.Empty。

实现

NavigateUrl()()() 属性委托给 Url 属性。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
NavigateUrl


SiteMapNode ..::.INavigateUIData ..::.Value 属性

SiteMapNode
.
.
::
.
INavigateUIData
.
.
::
.
Value 属性
SiteMapNode 类

获取站点地图节点的 Title 属性。有关此成员的说明，请参见 INavigateUIData..::.Value。 获取站点地图节点的 Title 属性。有关此成员的说明，请参见 INavigateUIData..::.Value。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Value As String
    Implements INavigateUIData.Value
    Get
string INavigateUIData.Value { get; }
private:
virtual property String^ Value {
    String^ get () sealed = INavigateUIData::Value::get;
}
private abstract Value : string
private override Value : string

属性值

类型： System String
一个未显示的值；否则为 String..::.Empty。

实现

Value()()() 属性委托给 Title 属性并用来存储有关导航节点的其他数据，如用于处理回发事件的数据。

此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。 此成员是显式接口成员的实现。它只能在 SiteMapNode 实例被强制转换为 INavigateUIData 接口时使用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Value


SiteMapNode ..::.Item 属性

SiteMapNode
.
.
::
.
Item 属性
SiteMapNode 类

根据指定的键获取或设置一个来自 Attributes 集合的自定义特性或资源字符串。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Item ( _
    key As String _
) As String
    Get
    Set
public virtual string this[
    string key
] { get; set; }
public:
virtual property String^ Item[String^ key] {
    String^ get (String^ key);
    void set (String^ key, String^ value);
}
abstract Item : string with get, set
override Item : string with get, set

参数

key
类型： System String
一个字符串，标识要检索的特性或资源字符串。

属性值

类型： System String
由 key 标识的自定义特性或资源字符串；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 节点是只读的。

Item 属性是一个索引器，首先确定跟踪 SiteMapNode 对象的提供程序是否支持本地化。如果支持，则 Item 调用 Item 属性是一个索引器，首先确定跟踪 SiteMapNode 对象的提供程序是否支持本地化。如果支持，则 Item 调用

GetImplicitResourceString 方法，并传递 key 参数。如果未返回本地化的文本，则 Item 调用 GetImplicitResourceString 方法，并传递 key 参数。如果未返回本地化的文本，则 Item 调用

GetExplicitResourceString 方法。

如果未返回本地化的文本或者提供程序不支持本地化，则 Item 尝试使用指定的 key 从 Attributes 集合返回一个元素。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetExplicitResourceString
GetImplicitResourceString
Attributes


SiteMapNode ..::.Key 属性

SiteMapNode
.
.
::
.
Key 属性
SiteMapNode 类

获取一个字符串，该字符串表示站点地图节点的查找键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Key As String
    Get
public string Key { get; }
public:
property String^ Key {
    String^ get ();
}
member Key : string

属性值

类型： System String
一个表示查找键的字符串。

在内部，站点导航类可以在搜索站点地图节点以及建立节点之间的关系时使用此查找键。SiteMapProvider 类还公开了 FindSiteMapNodeFromKey 方法，用于获取对匹配键值的 SiteMapNode 对象的引用。 在内部，站点导航类可以在搜索站点地图节点以及建立节点之间的关系时使用此查找键。SiteMapProvider 类还公开了 FindSiteMapNodeFromKey 方法，用于获取对匹配键值的 SiteMapNode 对象的引用。

用于键的特定值是特定于提供程序的；然而，它保证不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
FindSiteMapNodeFromKey


SiteMapNode ..::.NextSibling 属性

SiteMapNode
.
.
::
.
NextSibling 属性
SiteMapNode 类

获取与当前节点位于相同层级、相对于 ParentNode 属性的下一个 SiteMapNode 节点（如果存在）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property NextSibling As SiteMapNode
    Get
public virtual SiteMapNode NextSibling { get; }
public:
virtual property SiteMapNode^ NextSibling {
    SiteMapNode^ get ();
}
abstract NextSibling : SiteMapNode
override NextSibling : SiteMapNode

属性值

类型： System.Web SiteMapNode
位于父节点之下、当前节点之后的下一个相邻 SiteMapNode；否则，如果不存在父节点，或此节点之后没有节点，或者启用了安全修整并且用户不能查看父节点或下一个同级节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

NextSibling 属性假设 SiteMapProvider 对象实现了它的内部集合，该集合使父节点检索其 ChildNodes 属性时，节点的顺序与它们出现在站点地图中的顺序相同。如果在站点地图提供程序的实现中使用 .NET Framework 集合类，请选择实现了 IList 接口的集合，如 ArrayList 或 ListDictionary 类。如果选择未实现 IList 接口的集合，如 Hashtable 类，即使简单的站点导航操作也可能产生意外的结果。 NextSibling 属性假设 SiteMapProvider 对象实现了它的内部集合，该集合使父节点检索其 ChildNodes 属性时，节点的顺序与它们出现在站点地图中的顺序相同。如果在站点地图提供程序的实现中使用 .NET Framework 集合类，请选择实现了 IList 接口的集合，如 ArrayList 或 ListDictionary 类。如果选择未实现 IList 接口的集合，如 Hashtable 类，即使简单的站点导航操作也可能产生意外的结果。 NextSibling 属性假设 SiteMapProvider 对象实现了它的内部集合，该集合使父节点检索其 ChildNodes 属性时，节点的顺序与它们出现在站点地图中的顺序相同。如果在站点地图提供程序的实现中使用 .NET Framework 集合类，请选择实现了 IList 接口的集合，如 ArrayList 或 ListDictionary 类。如果选择未实现 IList 接口的集合，如 Hashtable 类，即使简单的站点导航操作也可能产生意外的结果。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
PreviousSibling


SiteMapNode ..::.ParentNode 属性

SiteMapNode
.
.
::
.
ParentNode 属性
SiteMapNode 类

获取或设置作为当前节点的父节点的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ParentNode As SiteMapNode
    Get
    Set
public virtual SiteMapNode ParentNode { get; set; }
public:
virtual property SiteMapNode^ ParentNode {
    SiteMapNode^ get ();
    void set (SiteMapNode^ value);
}
abstract ParentNode : SiteMapNode with get, set
override ParentNode : SiteMapNode with get, set

属性值

类型： System.Web SiteMapNode
父 SiteMapNode；否则，如果启用了安全修整并且用户不能查看父节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
InvalidOperationException | 节点是只读的。

SiteMapNode 类依赖于与之关联的站点地图提供程序，以跟踪该类与站点地图中其他节点的关系。ParentNode 属性调用 GetParentNode 方法，并传递它自身的引用以检索父 SiteMapNode。 SiteMapNode 类依赖于与之关联的站点地图提供程序，以跟踪该类与站点地图中其他节点的关系。ParentNode 属性调用 GetParentNode 方法，并传递它自身的引用以检索父 SiteMapNode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
RootNode


SiteMapNode ..::.PreviousSibling 属性

SiteMapNode
.
.
::
.
PreviousSibling 属性
SiteMapNode 类

获取与当前节点位于相同层级、相对于 ParentNode 对象的前一个 SiteMapNode 对象（如果存在）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property PreviousSibling As SiteMapNode
    Get
public virtual SiteMapNode PreviousSibling { get; }
public:
virtual property SiteMapNode^ PreviousSibling {
    SiteMapNode^ get ();
}
abstract PreviousSibling : SiteMapNode
override PreviousSibling : SiteMapNode

属性值

类型： System.Web SiteMapNode
位于父节点之下、当前节点之前的前一个相邻 SiteMapNode；否则，如果不存在父节点，或此节点之前没有节点，或者启用了安全修整并且用户不能查看父节点或前一个同级节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

PreviousSibling 属性假定站点地图提供程序可以实现其内部集合，这样，当某个父节点检索其 ChildNodes 对象时，各个节点的顺序就是这些节点出现在站点地图中的顺序。如果在 SiteMapProvider 提供程序的实现中使用 .NET Framework 集合类，请选择实现了 IList 接口的集合，如 ArrayList 或 ListDictionary 类。如果选择未实现 IList 接口的集合，如 Hashtable 类，即使简单的站点导航操作也可能产生意外的结果。 PreviousSibling 属性假定站点地图提供程序可以实现其内部集合，这样，当某个父节点检索其 ChildNodes 对象时，各个节点的顺序就是这些节点出现在站点地图中的顺序。如果在 SiteMapProvider 提供程序的实现中使用 .NET Framework 集合类，请选择实现了 IList 接口的集合，如 ArrayList 或 ListDictionary 类。如果选择未实现 IList 接口的集合，如 Hashtable 类，即使简单的站点导航操作也可能产生意外的结果。 PreviousSibling 属性假定站点地图提供程序可以实现其内部集合，这样，当某个父节点检索其 ChildNodes 对象时，各个节点的顺序就是这些节点出现在站点地图中的顺序。如果在 SiteMapProvider 提供程序的实现中使用 .NET Framework 集合类，请选择实现了 IList 接口的集合，如 ArrayList 或 ListDictionary 类。如果选择未实现 IList 接口的集合，如 Hashtable 类，即使简单的站点导航操作也可能产生意外的结果。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
NextSibling


SiteMapNode ..::.Provider 属性

SiteMapNode
.
.
::
.
Provider 属性
SiteMapNode 类

获取跟踪 SiteMapNode 对象的 SiteMapProvider 提供程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Provider As SiteMapProvider
    Get
public SiteMapProvider Provider { get; }
public:
property SiteMapProvider^ Provider {
    SiteMapProvider^ get ();
}
member Provider : SiteMapProvider

属性值

类型： System.Web SiteMapProvider
跟踪 SiteMapNode 的 SiteMapProvider。

始终返回一个提供程序；向 SiteMapNode 构造函数传递 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 将引发 ArgumentException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
SiteMapProvider


SiteMapNode ..::.ReadOnly 属性

SiteMapNode
.
.
::
.
ReadOnly 属性
SiteMapNode 类

获取或设置一个值，该值指示是否可以修改站点地图节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ReadOnly As Boolean
    Get
    Set
public bool ReadOnly { get; set; }
public:
property bool ReadOnly {
    bool get ();
    void set (bool value);
}
member ReadOnly : bool with get, set

属性值

类型： System Boolean
如果可以修改站点地图节点，则为 true；否则为 false。

SiteMapNode 对象在默认情况下是可修改的。

说明 说明

默认情况下，XmlSiteMapProvider 返回的所有节点都是只读节点。

Attributes、ChildNodes、Description、ParentNode、Roles、Title 和 Url 属性转变器在尝试修改站点地图节点的属性之前将检查 ReadOnly 属性。如果在调用转变器时节点是只读的，则 SiteMapNode 对象将引发 InvalidOperationException 异常。 Attributes、ChildNodes、Description、ParentNode、Roles、Title 和 Url 属性转变器在尝试修改站点地图节点的属性之前将检查 ReadOnly 属性。如果在调用转变器时节点是只读的，则 SiteMapNode 对象将引发 InvalidOperationException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
XmlSiteMapProvider


SiteMapNode ..::.ResourceKey 属性

SiteMapNode
.
.
::
.
ResourceKey 属性
SiteMapNode 类

获取或设置用于本地化 SiteMapNode 的资源键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ResourceKey As String
    Get
    Set
public string ResourceKey { get; set; }
public:
property String^ ResourceKey {
    String^ get ();
    void set (String^ value);
}
member ResourceKey : string with get, set

属性值

类型： System String
一个包含资源键名称的字符串。
异常 | 条件
InvalidOperationException | 节点是只读的。

当 ReadOnly 属性为 true 时，使用 ResourceKey 属性的 set 访问器将引发 InvalidOperationException 异常。若要设置 SiteMapNode 对象的 ResourceKey，请使用 SiteMapNode 构造函数。 当 ReadOnly 属性为 true 时，使用 ResourceKey 属性的 set 访问器将引发 InvalidOperationException 异常。若要设置 SiteMapNode 对象的 ResourceKey，请使用 SiteMapNode 构造函数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
GetImplicitResourceString
SiteMapNode
SiteMapProvider ResourceKey


SiteMapNode ..::.Roles 属性

SiteMapNode
.
.
::
.
Roles 属性
SiteMapNode 类

获取或设置与 SiteMapNode 对象关联的角色（在安全修整期间使用）的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property Roles As IList
    Get
    Set
public IList Roles { get; set; }
public:
property IList^ Roles {
    IList^ get ();
    void set (IList^ value);
}
member Roles : IList with get, set

属性值

类型： System.Collections IList
一个包含角色的 IList。
异常 | 条件
InvalidOperationException | 节点是只读的。

如果启用了安全修整，则站点地图提供程序将部分根据 Roles 集合是否含有当前用户的指定角色，来构建当前用户能够查看的节点的节点树。URL 授权和文件授权也用于确定用户是否有权访问某个 SiteMapNode 对象。有关更多信息，请参见 ASP.NET 授权。 如果启用了安全修整，则站点地图提供程序将部分根据 Roles 集合是否含有当前用户的指定角色，来构建当前用户能够查看的节点的节点树。URL 授权和文件授权也用于确定用户是否有权访问某个 SiteMapNode 对象。有关更多信息，请参见 ASP.NET 授权。 如果启用了安全修整，则站点地图提供程序将部分根据 Roles 集合是否含有当前用户的指定角色，来构建当前用户能够查看的节点的节点树。URL 授权和文件授权也用于确定用户是否有权访问某个 SiteMapNode 对象。有关更多信息，请参见 ASP.NET 授权。

可以使用 #ctor(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection) 构造函数在最初创建 SiteMapNode 对象时向它提供一个角色列表。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
SecurityTrimmingEnabled
UrlAuthorizationModule
FileAuthorizationModule

其他资源

ASP.NET 授权


SiteMapNode ..::.RootNode 属性

SiteMapNode
.
.
::
.
RootNode 属性
SiteMapNode 类

获取站点地图提供程序层次结构中的根提供程序的根节点。如果不存在提供程序层次结构，则 RootNode 属性将获取当前提供程序的根节点。 获取站点地图提供程序层次结构中的根提供程序的根节点。如果不存在提供程序层次结构，则 RootNode 属性将获取当前提供程序的根节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RootNode As SiteMapNode
    Get
public virtual SiteMapNode RootNode { get; }
public:
virtual property SiteMapNode^ RootNode {
    SiteMapNode^ get ();
}
abstract RootNode : SiteMapNode
override RootNode : SiteMapNode

属性值

类型： System.Web SiteMapNode
一个表示站点导航结构的根节点的 SiteMapNode。
异常 | 条件
InvalidOperationException | 不能从根提供程序检索根节点。

SiteMapNode 类依赖于与之关联的站点地图提供程序，以跟踪该类与站点地图中其他节点的关系。RootNode 属性调用根提供程序的 RootNode 属性（RootProvider 属性）来检索根节点。 SiteMapNode 类依赖于与之关联的站点地图提供程序，以跟踪该类与站点地图中其他节点的关系。RootNode 属性调用根提供程序的 RootNode 属性（RootProvider 属性）来检索根节点。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
ParentNode


SiteMapNode ..::.Title 属性

SiteMapNode
.
.
::
.
Title 属性
SiteMapNode 类

获取或设置 SiteMapNode 对象的标题。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Title As String
    Get
    Set
public virtual string Title { get; set; }
public:
virtual property String^ Title {
    String^ get ();
    void set (String^ value);
}
abstract Title : string with get, set
override Title : string with get, set

属性值

类型： System String
一个表示节点标题的字符串。默认值为 String..::.Empty。 一个表示节点标题的字符串。默认值为 String..::.Empty。
异常 | 条件
InvalidOperationException | 节点是只读的。

导航控件使用 Title 属性而不是使用 Url 属性来呈现节点的标签，而 Description 则被用作鼠标移过事件的工具提示元素。

如果 EnableLocalization 属性为 true，则返回 Title 属性的本地化值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Url
Description
GetImplicitResourceString
GetExplicitResourceString
EnableLocalization


SiteMapNode ..::.Url 属性

SiteMapNode
.
.
::
.
Url 属性
SiteMapNode 类

获取或设置 SiteMapNode 对象所代表的页的 URL。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Url As String
    Get
    Set
public virtual string Url { get; set; }
public:
virtual property String^ Url {
    String^ get ();
    void set (String^ value);
}
abstract Url : string with get, set
override Url : string with get, set

属性值

类型： System String
该节点所代表的页的 URL。默认值为 String..::.Empty。 该节点所代表的页的 URL。默认值为 String..::.Empty。
异常 | 条件
InvalidOperationException | 节点是只读的。

作为 ASP.NET 的默认站点地图提供程序实现，XmlSiteMapProvider 类使用 SiteMapNode..::.Url 属性作为查找键。因此，由 XmlSiteMapProvider 类使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。 作为 ASP.NET 的默认站点地图提供程序实现，XmlSiteMapProvider 类使用 SiteMapNode..::.Url 属性作为查找键。因此，由 XmlSiteMapProvider 类使用的任何 SiteMapNode 对象都必须在该提供程序的范围内具有唯一的 URL。

忽略前导和尾随空白字符。

下面的代码示例演示如何设置 SiteMapNode 对象的 Url 属性。AccessSiteMapProvider 将其根节点存储为一个没有定义 parentnodeid 的行。该行使用 OleDbDataReader 对象来返回，并且 SiteMapNode 属性通过数据读取器中的值来设置。 下面的代码示例演示如何设置 SiteMapNode 对象的 Url 属性。AccessSiteMapProvider 将其根节点存储为一个没有定义 parentnodeid 的行。该行使用 OleDbDataReader 对象来返回，并且 SiteMapNode 属性通过数据读取器中的值来设置。 下面的代码示例演示如何设置 SiteMapNode 对象的 Url 属性。AccessSiteMapProvider 将其根节点存储为一个没有定义 parentnodeid 的行。该行使用 OleDbDataReader 对象来返回，并且 SiteMapNode 属性通过数据读取器中的值来设置。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Build an in-memory representation from persistent
' storage, and return the root node of the site map.
Public Overrides Function BuildSiteMap() As SiteMapNode

    ' Since the SiteMap class is static, make sure that it is
    ' not modified while the site map is built.
    SyncLock Me

        ' If there is no initialization, this method is being
        ' called out of order.
        If Not IsInitialized Then
            Throw New Exception("BuildSiteMap called incorrectly.")
        End If

        ' If there is no root node, then there is no site map.
        If aRootNode Is Nothing Then
            ' Start with a clean slate
            Clear()

            ' Select the root node of the site map from Microsoft Access.
            Dim rootNodeId As Integer = -1

            If accessConnection.State = ConnectionState.Closed Then
                accessConnection.Open()
            End If
            Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
            Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

            If rootNodeReader.HasRows Then
                rootNodeReader.Read()
                rootNodeId = rootNodeReader.GetInt32(0)
                ' Create a SiteMapNode that references the current StaticSiteMapProvider.
                aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
            Else
                Return Nothing
            End If
            rootNodeReader.Close()
            ' Select the child nodes of the root node.
            Dim childNodesCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection)
            Dim rootParam As New OleDbParameter("parentid", OleDbType.Integer)
            rootParam.Value = rootNodeId
            childNodesCommand.Parameters.Add(rootParam)

            Dim childNodesReader As OleDbDataReader = childNodesCommand.ExecuteReader()

            If childNodesReader.HasRows Then

                Dim childNode As SiteMapNode = Nothing
                While childNodesReader.Read()
                    childNode = New SiteMapNode(Me, _
                    childNodesReader.GetInt32(0).ToString(), _
                    childNodesReader.GetString(1), _
                    childNodesReader.GetString(2))

                    ' Use the SiteMapNode AddNode method to add
                    ' the SiteMapNode to the ChildNodes collection.
                    AddNode(childNode, aRootNode)
                End While
            End If

            childNodesReader.Close()
            accessConnection.Close()
        End If
        Return aRootNode
    End SyncLock

End Function 'BuildSiteMap

// Build an in-memory representation from persistent
// storage, and return the root node of the site map.
public override SiteMapNode BuildSiteMap() {

    // Since the SiteMap class is static, make sure that it is
    // not modified while the site map is built.
    lock(this) {

        // If there is no initialization, this method is being
        // called out of order.
        if (! IsInitialized) {
            throw new Exception("BuildSiteMap called incorrectly.");
        }

        // If there is no root node, then there is no site map.
        if (null == rootNode) {
            // Start with a clean slate
            Clear();

            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;

            if (accessConnection.State == ConnectionState.Closed)
                accessConnection.Open();
            OleDbCommand rootNodeCommand =
                new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                                 accessConnection);
            OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

            if(rootNodeReader.HasRows) {
                rootNodeReader.Read();
                rootNodeId = rootNodeReader.GetInt32(0);
                // Create a SiteMapNode that references the current StaticSiteMapProvider.
                rootNode   = new SiteMapNode(this,
                                             rootNodeId.ToString(),
                                             rootNodeReader.GetString(1),
                                             rootNodeReader.GetString(2));

            }
            else return null;

            rootNodeReader.Close();
            // Select the child nodes of the root node.
            OleDbCommand childNodesCommand =
                new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?",
                                 accessConnection);
            OleDbParameter rootParam = new OleDbParameter("parentid", OleDbType.Integer);
            rootParam.Value = rootNodeId;
            childNodesCommand.Parameters.Add(rootParam);

            OleDbDataReader childNodesReader = childNodesCommand.ExecuteReader();

            if (childNodesReader.HasRows) {

                SiteMapNode childNode = null;
                while(childNodesReader.Read()) {
                    childNode =  new SiteMapNode(this,
                                                 childNodesReader.GetInt32(0).ToString(),
                                                 childNodesReader.GetString(1),
                                                 childNodesReader.GetString(2));

                    // Use the SiteMapNode AddNode method to add
                    // the SiteMapNode to the ChildNodes collection.
                    AddNode(childNode, rootNode);
                }
            }

            childNodesReader.Close();
            accessConnection.Close();
        }
        return rootNode;
    }
}

   // Build an in-memory representation from persistent
   // storage, and return the root node of the site map.
   virtual SiteMapNode ^ BuildSiteMap() override
   {
      // Since the SiteMap class is static, make sure that it is
      // not modified while the site map is built.
      System::Threading::Monitor::Enter( this );
      try
      {

         // If there is no initialization, this method is being
         // called out of order.
         if (  !IsInitialized )
         {
            throw gcnew Exception( "BuildSiteMap called incorrectly." );
         }

         // If there is no root node, then there is no site map.
         if ( nullptr == rootNode )
         {

            // Start with a clean slate
            Clear();

            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;
            if ( accessConnection->State == ConnectionState::Closed )
               accessConnection->Open();

            OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
            OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
            if ( rootNodeReader->HasRows )
            {
               rootNodeReader->Read();
               rootNodeId = rootNodeReader->GetInt32( 0 );

               // Create a SiteMapNode that references the current StaticSiteMapProvider.
               rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(),
                  rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
            }
            else
               return nullptr;
            rootNodeReader->Close();

            // Select the child nodes of the root node.
            OleDbCommand^ childNodesCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection);
            OleDbParameter^ rootParam = gcnew OleDbParameter( "parentid", OleDbType::Integer);
            rootParam->Value = rootNodeId;
            childNodesCommand->Parameters->Add( rootParam );
            OleDbDataReader^ childNodesReader = childNodesCommand->ExecuteReader();
            if ( childNodesReader->HasRows )
            {
               SiteMapNode ^ childNode = nullptr;
               while ( childNodesReader->Read() )
               {
                  childNode = gcnew SiteMapNode( this,
                      System::Convert::ToString(childNodesReader->GetInt32( 0 )),
                     childNodesReader->GetString( 1 ),
                     childNodesReader->GetString( 2 )
                  );
                  // Use the SiteMapNode AddNode method to add
                  // the SiteMapNode to the ChildNodes collection.
                  AddNode( childNode, rootNode );
               }
            }
            childNodesReader->Close();
            accessConnection->Close();
         }
         return rootNode;
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNode 类
SiteMapNode 成员
System.Web 命名空间
Title
Description


SiteMapNodeCollection 类

SiteMapNodeCollection 类
成员

提供 SiteMapNode 对象的强类型集合并实现 IHierarchicalEnumerable 接口，以支持在该集合中导航。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class SiteMapNodeCollection _
    Implements IHierarchicalEnumerable, IList, ICollection, IEnumerable
public class SiteMapNodeCollection : IHierarchicalEnumerable,
    IList, ICollection, IEnumerable
public ref class SiteMapNodeCollection : IHierarchicalEnumerable,
    IList, ICollection, IEnumerable
type SiteMapNodeCollection =
    class
        interface IHierarchicalEnumerable
        interface IList
        interface ICollection
        interface IEnumerable
    end

SiteMapNodeCollection 类提供 SiteMapNode 对象的强类型集合。该类在内部将 SiteMapNode 对象存储在一个从零开始索引的数组中。 SiteMapNodeCollection 类提供 SiteMapNode 对象的强类型集合。该类在内部将 SiteMapNode 对象存储在一个从零开始索引的数组中。

可以在最初创建 SiteMapNodeCollection 集合时对它进行修改，然后使用以下方法来添加、复制和移除 SiteMapNode 对象：

  • 若要添加 SiteMapNode 对象，请使用 Add、AddRange 和 Insert 方法。

  • 若要复制 SiteMapNode 对象，请使用 CopyTo 方法。

  • 若要移除 SiteMapNode 对象，请使用 Remove 方法。

可以使用静态 ReadOnly 方法创建一个只读的 SiteMapNodeCollection，该集合不允许添加、复制和移除 SiteMapNode 对象。SiteMapNode..::.GetAllNodes 和 GetChildren 方法返回的 SiteMapNodeCollection 集合是只读的，该集合就是在提供程序返回的 SiteMapNode 对象中访问 ChildNodes 属性时返回的 SiteMapNodeCollection。如果尝试通过设置默认的索引器属性或使用以下任何一个方法来修改只读的 SiteMapNodeCollection，则会引发 NotSupportedException 异常： 可以使用静态 ReadOnly 方法创建一个只读的 SiteMapNodeCollection，该集合不允许添加、复制和移除 SiteMapNode 对象。SiteMapNode..::.GetAllNodes 和 GetChildren 方法返回的 SiteMapNodeCollection 集合是只读的，该集合就是在提供程序返回的 SiteMapNode 对象中访问 ChildNodes 属性时返回的 SiteMapNodeCollection。如果尝试通过设置默认的索引器属性或使用以下任何一个方法来修改只读的 SiteMapNodeCollection，则会引发 NotSupportedException 异常： 可以使用静态 ReadOnly 方法创建一个只读的 SiteMapNodeCollection，该集合不允许添加、复制和移除 SiteMapNode 对象。SiteMapNode..::.GetAllNodes 和 GetChildren 方法返回的 SiteMapNodeCollection 集合是只读的，该集合就是在提供程序返回的 SiteMapNode 对象中访问 ChildNodes 属性时返回的 SiteMapNodeCollection。如果尝试通过设置默认的索引器属性或使用以下任何一个方法来修改只读的 SiteMapNodeCollection，则会引发 NotSupportedException 异常：

  • Add

  • AddRange

  • Clear

  • Insert

  • Remove

  • RemoveAt

在调用上表中的任何方法之前，请使用 IsReadOnly 属性检查集合。

下面的代码示例演示如何创建一个 SiteMapNodeCollection 集合，然后使用 AddRange 方法向该集合中添加 SiteMapNode 对象。SiteMapNodeCollection 是当前站点地图的子集，仅显示前两个层次级别。 下面的代码示例演示如何创建一个 SiteMapNodeCollection 集合，然后使用 AddRange 方法向该集合中添加 SiteMapNode 对象。SiteMapNodeCollection 是当前站点地图的子集，仅显示前两个层次级别。

    ' Create a SiteMapNodeCollection with all the nodes
    ' from the first two hierarchical levels of the current
    ' site map.
    Dim baseCollection As SiteMapNodeCollection
    baseCollection = New SiteMapNodeCollection(SiteMap.RootNode)

    Dim childCollection As SiteMapNodeCollection = SiteMap.RootNode.ChildNodes

    baseCollection.AddRange(childCollection)

    Response.Write( "<BR>Derived SiteMapNodeCollection.<BR><HR><BR>")

    For Each node In baseCollection
        Response.Write( node.Title + "<BR>")
    Next

// Create a SiteMapNodeCollection with all the nodes
// from the first two hierarchical levels of the current
// site map.
SiteMapNodeCollection baseCollection =
    new SiteMapNodeCollection(SiteMap.RootNode);

SiteMapNodeCollection childCollection =
    SiteMap.RootNode.ChildNodes;

baseCollection.AddRange(childCollection);

Response.Write( "<BR>Derived SiteMapNodeCollection.<BR><HR><BR>");
foreach (SiteMapNode node in baseCollection) {
    Response.Write( node.Title + "<BR>");
}

System.Web System.Web..::.SiteMapNodeCollectionSiteMapNodeCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 成员
System.Web 命名空间
SiteMap
SiteMapNode
SiteMapProvider
IHierarchyData

其他资源

ASP.NET 站点导航
ASP.NET 站点地图


SiteMapNodeCollection 成员

SiteMapNodeCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNodeCollection 类

提供 SiteMapNode 对象的强类型集合并实现 IHierarchicalEnumerable 接口，以支持在该集合中导航。

SiteMapNodeCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SiteMapNodeCollection 类
System.Web 命名空间


SiteMapNodeCollection 构造函数

SiteMapNodeCollection 构造函数
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNodeCollection 类

初始化 SiteMapNodeCollection 类的新实例。

名称 说明
页首

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection 构造函数

SiteMapNodeCollection 构造函数
SiteMapNodeCollection 类

初始化 SiteMapNodeCollection 类的新实例，也是默认实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public SiteMapNodeCollection()
public:
SiteMapNodeCollection()
new : unit -> SiteMapNodeCollection

使用 SiteMapNodeCollection 构造函数创建一个空的 SiteMapNodeCollection 集合。可以使用 Add、AddRange 或 Insert 方法向 SiteMapNodeCollection 添加元素。 使用 SiteMapNodeCollection 构造函数创建一个空的 SiteMapNodeCollection 集合。可以使用 Add、AddRange 或 Insert 方法向 SiteMapNodeCollection 添加元素。

下面的代码示例演示如何使用 SiteMapNodeCollection 构造函数新建 SiteMapNodeCollection 集合，然后使用 Add 方法向 SiteMapNodeCollection 添加元素。

        ' The LoadSiteMapData() Function loads site navigation
        ' data from persistent storage into a DataTable.

        Dim siteMapData As DataTable
        siteMapData = LoadSiteMapData()

        ' Create a SiteMapNodeCollection.
        Dim nodes As New SiteMapNodeCollection()

        ' Create a SiteMapNode and add it to the collection.
        Dim tempNode As SiteMapNode
        Dim row As DataRow
        Dim index As Integer
        index = 0

        While (index < siteMapData.Rows.Count)

            row = siteMapData.Rows(index)

            ' Create a node based on the data in the DataRow.
            tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

            ' Add the node to the collection.
            nodes.Add(tempNode)
            index = index + 1
        End While

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
SiteMapNodeCollection 重载
System.Web 命名空间
SiteMapNodeCollection


SiteMapNodeCollection 构造函数 (Int32)

SiteMapNodeCollection 构造函数 (Int32)
SiteMapNodeCollection 类

使用指定的初始容量初始化 SiteMapNodeCollection 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    capacity As Integer _
)
public SiteMapNodeCollection(
    int capacity
)
public:
SiteMapNodeCollection(
    int capacity
)
new :
        capacity:int -> SiteMapNodeCollection

参数

capacity
类型： System Int32
SiteMapNodeCollection 的初始容量。

使用 SiteMapNodeCollection 构造函数创建具有指定初始容量的 SiteMapNodeCollection 集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
SiteMapNodeCollection 重载
System.Web 命名空间
Capacity


SiteMapNodeCollection 构造函数 (SiteMapNode)

SiteMapNodeCollection 构造函数 (SiteMapNode)
SiteMapNodeCollection 类

对 SiteMapNodeCollection 类的新实例进行初始化，然后将 SiteMapNode 对象添加到该集合的 InnerList 属性中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    value As SiteMapNode _
)
public SiteMapNodeCollection(
    SiteMapNode value
)
public:
SiteMapNodeCollection(
    SiteMapNode^ value
)
new :
        value:SiteMapNode -> SiteMapNodeCollection

参数

value
类型： System.Web SiteMapNode
要添加到 SiteMapNodeCollection 的 SiteMapNode。
异常 | 条件
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用 SiteMapNodeCollection 构造函数创建具有单个初始 SiteMapNode 对象的 SiteMapNodeCollection 集合。可以使用 Add、AddRange 或 Insert 方法向 SiteMapNodeCollection 添加元素。 使用 SiteMapNodeCollection 构造函数创建具有单个初始 SiteMapNode 对象的 SiteMapNodeCollection 集合。可以使用 Add、AddRange 或 Insert 方法向 SiteMapNodeCollection 添加元素。

下面的代码示例演示如何创建具有单个初始 SiteMapNode 对象的 SiteMapNodeCollection 集合，然后使用 AddRange 方法向该集合添加 SiteMapNode 对象的 SiteMapNodeCollection。即使单个 SiteMapNode 对象是只读的，也可以修改 SiteMapNodeCollection。 下面的代码示例演示如何创建具有单个初始 SiteMapNode 对象的 SiteMapNodeCollection 集合，然后使用 AddRange 方法向该集合添加 SiteMapNode 对象的 SiteMapNodeCollection。即使单个 SiteMapNode 对象是只读的，也可以修改 SiteMapNodeCollection。

    ' Create a SiteMapNodeCollection with all the nodes
    ' from the first two hierarchical levels of the current
    ' site map.
    Dim baseCollection As SiteMapNodeCollection
    baseCollection = New SiteMapNodeCollection(SiteMap.RootNode)

    Dim childCollection As SiteMapNodeCollection = SiteMap.RootNode.ChildNodes

    baseCollection.AddRange(childCollection)

    Response.Write( "<BR>Derived SiteMapNodeCollection.<BR><HR><BR>")

    For Each node In baseCollection
        Response.Write( node.Title + "<BR>")
    Next

// Create a SiteMapNodeCollection with all the nodes
// from the first two hierarchical levels of the current
// site map.
SiteMapNodeCollection baseCollection =
    new SiteMapNodeCollection(SiteMap.RootNode);

SiteMapNodeCollection childCollection =
    SiteMap.RootNode.ChildNodes;

baseCollection.AddRange(childCollection);

Response.Write( "<BR>Derived SiteMapNodeCollection.<BR><HR><BR>");
foreach (SiteMapNode node in baseCollection) {
    Response.Write( node.Title + "<BR>");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
SiteMapNodeCollection 重载
System.Web 命名空间
SiteMapNode


SiteMapNodeCollection 构造函数 ( array<SiteMapNode >[]()[])

SiteMapNodeCollection 构造函数 (
array<
SiteMapNode
>
[]
()
[]
)
SiteMapNodeCollection 类

对 SiteMapNodeCollection 类的新实例进行初始化，然后将类型 SiteMapNode 的数组添加到该集合的 InnerList 属性中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    value As SiteMapNode() _
)
public SiteMapNodeCollection(
    SiteMapNode[] value
)
public:
SiteMapNodeCollection(
    array<SiteMapNode^>^ value
)
new :
        value:SiteMapNode[] -> SiteMapNodeCollection

参数

value
类型：
array<
System.Web SiteMapNode
>
[]
()
[]

要添加到 SiteMapNodeCollection 的 SiteMapNode 类型的数组。
异常 | 条件
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用 SiteMapNodeCollection 构造函数等效于调用 SiteMapNodeCollection 构造函数并使用 AddRange 方法向 SiteMapNodeCollection 集合添加元素。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
SiteMapNodeCollection 重载
System.Web 命名空间
SiteMapNode


SiteMapNodeCollection 构造函数 (SiteMapNodeCollection)

SiteMapNodeCollection 构造函数 (SiteMapNodeCollection)
SiteMapNodeCollection 类

对 SiteMapNodeCollection 类的新实例进行初始化，然后将指定的 SiteMapNodeCollection 集合的所有列表项添加到该集合的 InnerList 属性中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    value As SiteMapNodeCollection _
)
public SiteMapNodeCollection(
    SiteMapNodeCollection value
)
public:
SiteMapNodeCollection(
    SiteMapNodeCollection^ value
)
new :
        value:SiteMapNodeCollection -> SiteMapNodeCollection

参数

value
类型： System.Web SiteMapNodeCollection
SiteMapNodeCollection 包含的 SiteMapNode 要添加到当前的 SiteMapNodeCollection 中。
异常 | 条件
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

使用 SiteMapNodeCollection 构造函数等效于调用 SiteMapNodeCollection 构造函数并使用 AddRange 方法向 SiteMapNodeCollection 集合添加元素。

下面的代码示例演示如何以另一个 SiteMapNode 的 SiteMapNodeCollection 为基础来创建 SiteMapNodeCollection 集合。SiteMapNode..::.GetAllNodes 方法返回一个只读 SiteMapNodeCollection，这是在 IsReadOnly 属性返回 true 时检测到的。新的 SiteMapNodeCollection 是使用只读 SiteMapNodeCollection 创建的，并且可以成功调用 Add 和 Remove 方法。 下面的代码示例演示如何以另一个 SiteMapNode 的 SiteMapNodeCollection 为基础来创建 SiteMapNodeCollection 集合。SiteMapNode..::.GetAllNodes 方法返回一个只读 SiteMapNodeCollection，这是在 IsReadOnly 属性返回 true 时检测到的。新的 SiteMapNodeCollection 是使用只读 SiteMapNodeCollection 创建的，并且可以成功调用 Add 和 Remove 方法。 下面的代码示例演示如何以另一个 SiteMapNode 的 SiteMapNodeCollection 为基础来创建 SiteMapNodeCollection 集合。SiteMapNode..::.GetAllNodes 方法返回一个只读 SiteMapNodeCollection，这是在 IsReadOnly 属性返回 true 时检测到的。新的 SiteMapNodeCollection 是使用只读 SiteMapNodeCollection 创建的，并且可以成功调用 Add 和 Remove 方法。

    Dim siteNodes As SiteMapNodeCollection
    siteNodes = SiteMap.RootNode.GetAllNodes()

    If siteNodes.IsReadOnly Or siteNodes.IsFixedSize Then

        Response.Write("Collection is read-only or has fixed size.<BR>")

        ' Create a new, modifiable collection from the existing one.
        Dim modifiableCollection As SiteMapNodeCollection
        modifiableCollection = New SiteMapNodeCollection(siteNodes)

        ' The MoveNode example method moves a node from position one to
        ' the last position in the collection.
        MoveNode(modifiableCollection)
    Else
        MoveNode(siteNodes)
    End If

    SiteMapNodeCollection siteNodes = SiteMap.RootNode.GetAllNodes();

    if ( siteNodes.IsReadOnly ||
         siteNodes.IsFixedSize )
    {
        Response.Write("Collection is read-only or has fixed size.<BR>");

        // Create a new, modifiable collection from the existing one.
        SiteMapNodeCollection modifiableCollection =
             new SiteMapNodeCollection(siteNodes);

        // The MoveNode example method moves a node from position one to
        // the last position in the collection.
        MoveNode(modifiableCollection);
    }
    else {
        MoveNode(siteNodes);
    }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
SiteMapNodeCollection 重载
System.Web 命名空间


SiteMapNodeCollection 方法

SiteMapNodeCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNodeCollection 类

SiteMapNodeCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SiteMapNodeCollection 类
System.Web 命名空间


SiteMapNodeCollection ..::.Add 方法

SiteMapNodeCollection
.
.
::
.
Add 方法
SiteMapNodeCollection 类

将一个 SiteMapNode 对象添加到集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Add ( _
    value As SiteMapNode _
) As Integer
public virtual int Add(
    SiteMapNode value
)
public:
virtual int Add(
    SiteMapNode^ value
)
abstract Add :
        value:SiteMapNode -> int
override Add :
        value:SiteMapNode -> int

参数

value
类型： System.Web SiteMapNode
要添加到 SiteMapNodeCollection 的 SiteMapNode。

返回值

类型： System Int32
插入 SiteMapNode 的 InnerList 的索引。
异常 | 条件
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | SiteMapNodeCollection 为只读。

不能向只读或固定大小的 SiteMapNodeCollection 集合添加 SiteMapNode 对象。通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 是否是只读的。 不能向只读或固定大小的 SiteMapNodeCollection 集合添加 SiteMapNode 对象。通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 是否是只读的。

本节包含两个代码示例。第一个代码示例演示如何新建 SiteMapNodeCollection 集合并在其中添加元素。第二个代码示例演示如何向自定义的站点地图提供程序添加元素。 本节包含两个代码示例。第一个代码示例演示如何新建 SiteMapNodeCollection 集合并在其中添加元素。第二个代码示例演示如何向自定义的站点地图提供程序添加元素。 本节包含两个代码示例。第一个代码示例演示如何新建 SiteMapNodeCollection 集合并在其中添加元素。第二个代码示例演示如何向自定义的站点地图提供程序添加元素。

下面的代码示例演示如何使用 SiteMapNodeCollection 构造函数新建 SiteMapNodeCollection，然后使用 Add 方法在其中添加元素。

        ' The LoadSiteMapData() Function loads site navigation
        ' data from persistent storage into a DataTable.

        Dim siteMapData As DataTable
        siteMapData = LoadSiteMapData()

        ' Create a SiteMapNodeCollection.
        Dim nodes As New SiteMapNodeCollection()

        ' Create a SiteMapNode and add it to the collection.
        Dim tempNode As SiteMapNode
        Dim row As DataRow
        Dim index As Integer
        index = 0

        While (index < siteMapData.Rows.Count)

            row = siteMapData.Rows(index)

            ' Create a node based on the data in the DataRow.
            tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

            ' Add the node to the collection.
            nodes.Add(tempNode)
            index = index + 1
        End While

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}

下面的代码示例演示一个自定义的站点地图提供程序实现，并演示如何使用 SiteMapNodeCollection 构造函数新建 SiteMapNodeCollection，然后使用 Add 方法向 SiteMapNodeCollection 添加元素。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的代码示例。

' Implement the GetChildNodes method.
Public Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection
  Dim children As New SiteMapNodeCollection()
  ' Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  SyncLock Me
    Dim i As Integer
    For i = 0 To childParentRelationship.Count - 1

      Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry)
      Dim nodeUrl As String = CType(de.Key, String)

      Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl)

      If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then
        ' The SiteMapNode with the Url that corresponds to nodeUrl
        ' is a child of the specified node. Get the SiteMapNode for
        ' the nodeUrl.
        Dim child As SiteMapNode = FindSiteMapNode(nodeUrl)
        If Not (child Is Nothing) Then
          children.Add(CType(child, SiteMapNode))
        Else
          Throw New Exception("ArrayLists not in sync.")
        End If
      End If
    Next i
  End SyncLock
  Return children
End Function 'GetChildNodes

Protected Overrides Function GetRootNodeCore() As SiteMapNode
  Return RootNode
End Function ' GetRootNodeCore()

' Implement the GetParentNode method.
Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode
  ' Check the childParentRelationship table and find the parent of the current node.
  ' If there is no parent, the current node is the RootNode.
  Dim parent As SiteMapNode = Nothing
  SyncLock Me
    ' Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url)
  End SyncLock
  Return parent
End Function 'GetParentNode

// Implement the GetChildNodes method.
public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
  SiteMapNodeCollection children = new SiteMapNodeCollection();
  // Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  lock (this)
  {
    for (int i = 0; i < childParentRelationship.Count; i++)
    {

      string nodeUrl = ((DictionaryEntry)childParentRelationship[i]).Key as string;

      SiteMapNode parent = GetNode(childParentRelationship, nodeUrl);

      if (parent != null && node.Url == parent.Url)
      {
        // The SiteMapNode with the Url that corresponds to nodeUrl
        // is a child of the specified node. Get the SiteMapNode for
        // the nodeUrl.
        SiteMapNode child = FindSiteMapNode(nodeUrl);
        if (child != null)
        {
          children.Add(child as SiteMapNode);
        }
        else
        {
          throw new Exception("ArrayLists not in sync.");
        }
      }
    }
  }
  return children;
}
protected override SiteMapNode GetRootNodeCore()
{
  return RootNode;
}
// Implement the GetParentNode method.
public override SiteMapNode GetParentNode(SiteMapNode node)
{
  // Check the childParentRelationship table and find the parent of the current node.
  // If there is no parent, the current node is the RootNode.
  SiteMapNode parent = null;
  lock (this)
  {
    // Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url);
  }
  return parent;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
AddRange
Insert
Remove
SiteMapProvider


SiteMapNodeCollection ..::.AddRange 方法

SiteMapNodeCollection
.
.
::
.
AddRange 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNodeCollection 类

向集合添加一组 SiteMapNode 对象。

名称 说明
页首

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.AddRange 方法 ( array<SiteMapNode >[]()[])

SiteMapNodeCollection
.
.
::
.
AddRange 方法 (
array<
SiteMapNode
>
[]
()
[]
)
SiteMapNodeCollection 类

向集合添加 SiteMapNode 类型的数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddRange ( _
    value As SiteMapNode() _
)
public virtual void AddRange(
    SiteMapNode[] value
)
public:
virtual void AddRange(
    array<SiteMapNode^>^ value
)
abstract AddRange :
        value:SiteMapNode[] -> unit
override AddRange :
        value:SiteMapNode[] -> unit

参数

value
类型：
array<
System.Web SiteMapNode
>
[]
()
[]

要添加到当前 SiteMapNodeCollection 的 SiteMapNode 类型的数组。
异常 | 条件
ArgumentException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | SiteMapNodeCollection 为只读。

传递给 AddRange 方法的数组可以包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 值；但是，在对 SiteMapNodeCollection 集合进行操作时这会导致意外的异常。

不能向只读或固定大小的 SiteMapNodeCollection 添加 SiteMapNode 对象。通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 是否是只读的。 不能向只读或固定大小的 SiteMapNodeCollection 添加 SiteMapNode 对象。通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 是否是只读的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
AddRange 重载
System.Web 命名空间
Add
Insert
Remove


SiteMapNodeCollection ..::.AddRange 方法 (SiteMapNodeCollection)

SiteMapNodeCollection
.
.
::
.
AddRange 方法 (SiteMapNodeCollection)
SiteMapNodeCollection 类

将指定的 SiteMapNodeCollection 中的节点添加到当前集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub AddRange ( _
    value As SiteMapNodeCollection _
)
public virtual void AddRange(
    SiteMapNodeCollection value
)
public:
virtual void AddRange(
    SiteMapNodeCollection^ value
)
abstract AddRange :
        value:SiteMapNodeCollection -> unit
override AddRange :
        value:SiteMapNodeCollection -> unit

参数

value
类型： System.Web SiteMapNodeCollection
一个 SiteMapNodeCollection，它包含要添加到当前 SiteMapNodeCollection 中的 SiteMapNode 对象。
异常 | 条件
ArgumentException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | SiteMapNodeCollection 为只读。

传递给 AddRange 方法的 SiteMapNodeCollection 集合可以包含 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）SiteMapNode 对象；但是，在对 SiteMapNodeCollection 进行操作时这回导致意外的异常。

不能向只读或固定大小的 SiteMapNodeCollection 添加 SiteMapNode 对象。通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 是否是只读的。 不能向只读或固定大小的 SiteMapNodeCollection 添加 SiteMapNode 对象。通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 是否是只读的。

下面的代码示例演示如何创建一个可修改的 SiteMapNodeCollection 集合，然后使用 AddRange 方法在其中添加 SiteMapNode 对象。

    ' Create a SiteMapNodeCollection with all the nodes
    ' from the first two hierarchical levels of the current
    ' site map.
    Dim baseCollection As SiteMapNodeCollection
    baseCollection = New SiteMapNodeCollection(SiteMap.RootNode)

    Dim childCollection As SiteMapNodeCollection = SiteMap.RootNode.ChildNodes

    baseCollection.AddRange(childCollection)

    Response.Write( "<BR>Derived SiteMapNodeCollection.<BR><HR><BR>")

    For Each node In baseCollection
        Response.Write( node.Title + "<BR>")
    Next

// Create a SiteMapNodeCollection with all the nodes
// from the first two hierarchical levels of the current
// site map.
SiteMapNodeCollection baseCollection =
    new SiteMapNodeCollection(SiteMap.RootNode);

SiteMapNodeCollection childCollection =
    SiteMap.RootNode.ChildNodes;

baseCollection.AddRange(childCollection);

Response.Write( "<BR>Derived SiteMapNodeCollection.<BR><HR><BR>");
foreach (SiteMapNode node in baseCollection) {
    Response.Write( node.Title + "<BR>");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
AddRange 重载
System.Web 命名空间
Add
Insert
Remove


SiteMapNodeCollection ..::.Clear 方法

SiteMapNodeCollection
.
.
::
.
Clear 方法
SiteMapNodeCollection 类

从集合中移除所有项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Clear
public virtual void Clear()
public:
virtual void Clear()
abstract Clear : unit -> unit
override Clear : unit -> unit
异常 | 条件
NotSupportedException | SiteMapNodeCollection 为只读。

通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 集合是否是只读的。

若要从 SiteMapNodeCollection 中移除特定元素，请使用 Remove 或 RemoveAt 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Remove
RemoveAt
Clear


SiteMapNodeCollection ..::.Contains 方法

SiteMapNodeCollection
.
.
::
.
Contains 方法
SiteMapNodeCollection 类

确定集合是否包含特定的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function Contains ( _
    value As SiteMapNode _
) As Boolean
public virtual bool Contains(
    SiteMapNode value
)
public:
virtual bool Contains(
    SiteMapNode^ value
)
abstract Contains :
        value:SiteMapNode -> bool
override Contains :
        value:SiteMapNode -> bool

参数

value
类型： System.Web SiteMapNode
要在 SiteMapNodeCollection 中查找的 SiteMapNode。

返回值

类型： System Boolean
如果 SiteMapNodeCollection 包含指定的 SiteMapNode，则为 true；否则，为 false。

Contains 方法通过调用 Object..::.Equals 方法确定相等性。

下面的代码示例演示如何使用 SiteMapNodeCollection 类的 Contains 和 IndexOf 方法。该代码对两个提供程序 AspNetXmlSiteMapProvider 和 MyXmlSiteMapProvider 中根节点的重复子节点进行检查。 下面的代码示例演示如何使用 SiteMapNodeCollection 类的 Contains 和 IndexOf 方法。该代码对两个提供程序 AspNetXmlSiteMapProvider 和 MyXmlSiteMapProvider 中根节点的重复子节点进行检查。

Dim providername1 As String = "xAspNetXmlSiteMapProvider"
Dim providername2 As String = "MyXmlSiteMapProvider"
Dim providers As SiteMapProviderCollection = SiteMap.Providers

If Not (providers(providername1) Is Nothing) AndAlso Not (providers(providername2) Is Nothing) Then
  Dim provider1 As SiteMapProvider = providers(providername1)
  Dim provider2 As SiteMapProvider = providers(providername2)
  Dim collection1 As SiteMapNodeCollection = provider1.RootNode.ChildNodes
  Dim collection2 As SiteMapNodeCollection = provider2.RootNode.ChildNodes
  Dim matches As Integer = 0
  Dim node As SiteMapNode
  For Each node In collection1
    If collection2.Contains(node) Then
      Response.Write("Match found at " & _
      providername1 & ", index = " & _
      collection1.IndexOf(node) & " with " & _
      providername2 & ", index = " & _
      collection2.IndexOf(node) & ".<br />")
      matches += 1
    End If
  Next node
  Response.Write("Number of matches found = " & _
  matches.ToString() + ".")
Else
  Response.Write(providername1 & " or " & _
  providername2 & " not found.")
End If

String providername1 = "AspNetXmlSiteMapProvider";
String providername2 = "MyXmlSiteMapProvider";
SiteMapProviderCollection providers = SiteMap.Providers;

if (providers[providername1] != null && providers[providername2] != null)
{
  SiteMapProvider provider1 = providers[providername1];
  SiteMapProvider provider2 = providers[providername2];
  SiteMapNodeCollection collection1 = provider1.RootNode.ChildNodes;
  SiteMapNodeCollection collection2 = provider2.RootNode.ChildNodes;
  int matches = 0;
  foreach (SiteMapNode node in collection1)
  {
    if (collection2.Contains(node))
    {
      Response.Write("Match found at " +
        providername1 + ", index = " +
        collection1.IndexOf(node) + " with " +
        providername2 + ", index = " +
        collection2.IndexOf(node) + ".<br />");
      matches++;
    }
  }
  Response.Write("Number of matches found = " +
    matches.ToString() + ".");
}
else
{
  Response.Write(providername1 + " or " +
    providername2 + " not found.");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Count
IndexOf


SiteMapNodeCollection ..::.CopyTo 方法

SiteMapNodeCollection
.
.
::
.
CopyTo 方法
SiteMapNodeCollection 类

从目标数组的指定索引处开始，将整个集合复制到兼容的一维数组。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub CopyTo ( _
    array As SiteMapNode(), _
    index As Integer _
)
public virtual void CopyTo(
    SiteMapNode[] array,
    int index
)
public:
virtual void CopyTo(
    array<SiteMapNode^>^ array,
    int index
)
abstract CopyTo :
        array:SiteMapNode[] *
        index:int -> unit
override CopyTo :
        array:SiteMapNode[] *
        index:int -> unit

参数

array
类型：
array<
System.Web SiteMapNode
>
[]
()
[]

该一维数组必须从零开始索引，并且是以下元素的复制目标，这些元素从 SiteMapNodeCollection 复制。
index
类型： System Int32
array 中复制开始处的索引，该索引从零开始。
异常 | 条件
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零。
ArgumentException | array 是多维的。 - 或 - 源 SiteMapNodeCollection 中的 SiteMapNode 对象的数目大于从 index 到 array 结尾的可用空间。

CopyTo 方法对 CollectionBase..::.List 属性进行委托，该属性说明“异常”中列出的可能异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Insert
AddRange


SiteMapNodeCollection ..::.GetDataSourceView 方法

SiteMapNodeCollection
.
.
::
.
GetDataSourceView 方法
SiteMapNodeCollection 类

检索与当前集合中的节点关联的 SiteMapDataSourceView 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetDataSourceView ( _
    owner As SiteMapDataSource, _
    viewName As String _
) As SiteMapDataSourceView
public SiteMapDataSourceView GetDataSourceView(
    SiteMapDataSource owner,
    string viewName
)
public:
SiteMapDataSourceView^ GetDataSourceView(
    SiteMapDataSource^ owner,
    String^ viewName
)
member GetDataSourceView :
        owner:SiteMapDataSource *
        viewName:string -> SiteMapDataSourceView

参数

owner
类型： System.Web.UI.WebControls SiteMapDataSource
视图所关联的 SiteMapDataSource 控件。
viewName
类型： System String
视图的名称。

返回值

类型： System.Web.UI.WebControls SiteMapDataSourceView
当前 SiteMapNodeCollection 中 SiteMapNode 对象的已命名的 SiteMapDataSourceView。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
GetHierarchicalDataSourceView


SiteMapNodeCollection ..::.GetEnumerator 方法

SiteMapNodeCollection
.
.
::
.
GetEnumerator 方法
SiteMapNodeCollection 类

检索对枚举数对象的引用，该对象用于对集合进行循环访问。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetEnumerator As IEnumerator
public virtual IEnumerator GetEnumerator()
public:
virtual IEnumerator^ GetEnumerator()
abstract GetEnumerator : unit -> IEnumerator
override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
实现 IEnumerator 的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Item
GetEnumerator


SiteMapNodeCollection ..::.GetHierarchicalDataSourceView 方法

SiteMapNodeCollection
.
.
::
.
GetHierarchicalDataSourceView 方法
SiteMapNodeCollection 类

检索与当前集合中的节点关联的 SiteMapHierarchicalDataSourceView 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Function GetHierarchicalDataSourceView As SiteMapHierarchicalDataSourceView
public SiteMapHierarchicalDataSourceView GetHierarchicalDataSourceView()
public:
SiteMapHierarchicalDataSourceView^ GetHierarchicalDataSourceView()
member GetHierarchicalDataSourceView : unit -> SiteMapHierarchicalDataSourceView

返回值

类型： System.Web.UI.WebControls SiteMapHierarchicalDataSourceView
当前 SiteMapNodeCollection 中 SiteMapNode 对象的 SiteMapHierarchicalDataSourceView。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
GetDataSourceView


SiteMapNodeCollection ..::.GetHierarchyData 方法

SiteMapNodeCollection
.
.
::
.
GetHierarchyData 方法
SiteMapNodeCollection 类

为指定的枚举项返回一个分层数据项。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetHierarchyData ( _
    enumeratedItem As Object _
) As IHierarchyData
public virtual IHierarchyData GetHierarchyData(
    Object enumeratedItem
)
public:
virtual IHierarchyData^ GetHierarchyData(
    Object^ enumeratedItem
)
abstract GetHierarchyData :
        enumeratedItem:Object -> IHierarchyData
override GetHierarchyData :
        enumeratedItem:Object -> IHierarchyData

参数

enumeratedItem
类型： System Object
要为其返回 IHierarchyData 的对象。

返回值

类型： System.Web.UI IHierarchyData
IHierarchyData 表示传递给 GetHierarchyData 的对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
IHierarchyData
IHierarchicalEnumerable


SiteMapNodeCollection ..::.ICollection ..::.CopyTo 方法

SiteMapNodeCollection
.
.
::
.
ICollection
.
.
::
.
CopyTo 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将 ICollection 接口的元素复制到一个数组中从特定的数组索引开始的位置。无法继承此类。 将 ICollection 接口的元素复制到一个数组中从特定的数组索引开始的位置。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub CopyTo ( _
    array As Array, _
    index As Integer _
) Implements ICollection.CopyTo
void ICollection.CopyTo(
    Array array,
    int index
)
private:
virtual void CopyTo(
    Array^ array,
    int index
) sealed = ICollection::CopyTo
private abstract CopyTo :
        array:Array *
        index:int -> unit
private override CopyTo :
        array:Array *
        index:int -> unit

参数

array
类型： System Array
这是个一维数组，该数组必须从零开始索引，并且是以下元素的复制目标，这些元素从 CollectionBase 复制。
index
类型： System Int32
array 中复制开始处的索引，该索引从零开始。

实现

异常 | 条件
ArgumentNullException | array 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentOutOfRangeException | index 小于零。
ArgumentException | array 是多维的。 - 或 - 源 SiteMapNodeCollection 中的 SiteMapNode 对象的数目大于从 index 到 array 结尾的可用空间。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
ICollection
CopyTo


SiteMapNodeCollection ..::.IEnumerable ..::.GetEnumerator 方法

SiteMapNodeCollection
.
.
::
.
IEnumerable
.
.
::
.
GetEnumerator 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

返回一个循环访问集合的枚举数。有关此成员的说明，请参见 IEnumerable..::.GetEnumerator。 返回一个循环访问集合的枚举数。有关此成员的说明，请参见 IEnumerable..::.GetEnumerator。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function GetEnumerator As IEnumerator
    Implements IEnumerable.GetEnumerator
IEnumerator IEnumerable.GetEnumerator()
private:
virtual IEnumerator^ GetEnumerator() sealed = IEnumerable::GetEnumerator
private abstract GetEnumerator : unit -> IEnumerator
private override GetEnumerator : unit -> IEnumerator

返回值

类型： System.Collections IEnumerator
一个 IEnumerator，可用于循环访问 SiteMapNodeCollection。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
GetEnumerator
GetEnumerator


SiteMapNodeCollection ..::.IHierarchicalEnumerable ..::.GetHierarchyData 方法

SiteMapNodeCollection
.
.
::
.
IHierarchicalEnumerable
.
.
::
.
GetHierarchyData 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

为指定的枚举项返回一个分层数据项。有关此成员的说明，请参见 IHierarchicalEnumerable..::.GetHierarchyData。 为指定的枚举项返回一个分层数据项。有关此成员的说明，请参见 IHierarchicalEnumerable..::.GetHierarchyData。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function GetHierarchyData ( _
    enumeratedItem As Object _
) As IHierarchyData Implements IHierarchicalEnumerable.GetHierarchyData
IHierarchyData IHierarchicalEnumerable.GetHierarchyData(
    Object enumeratedItem
)
private:
virtual IHierarchyData^ GetHierarchyData(
    Object^ enumeratedItem
) sealed = IHierarchicalEnumerable::GetHierarchyData
private abstract GetHierarchyData :
        enumeratedItem:Object -> IHierarchyData
private override GetHierarchyData :
        enumeratedItem:Object -> IHierarchyData

参数

enumeratedItem
类型： System Object
要为其返回 IHierarchyData 的对象。

返回值

类型： System.Web.UI IHierarchyData
IHierarchyData 表示传递给 GetHierarchyData(Object) 的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.IList ..::.Add 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
Add 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

在 IList 接口的集合中添加一项。有关此成员的说明，请参见 IList..::.Add。 在 IList 接口的集合中添加一项。有关此成员的说明，请参见 IList..::.Add。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function Add ( _
    value As Object _
) As Integer Implements IList.Add
int IList.Add(
    Object value
)
private:
virtual int Add(
    Object^ value
) sealed = IList::Add
private abstract Add :
        value:Object -> int
private override Add :
        value:Object -> int

参数

value
类型： System Object
要添加到 IList 的对象。

返回值

类型： System Int32
新元素的插入位置。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Add
Add


SiteMapNodeCollection ..::.IList ..::.Clear 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
Clear 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

从 IList 接口的集合中移除所有项。有关此成员的说明，请参见 IList..::.Clear。 从 IList 接口的集合中移除所有项。有关此成员的说明，请参见 IList..::.Clear。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub Clear Implements IList.Clear
void IList.Clear()
private:
virtual void Clear() sealed = IList::Clear
private abstract Clear : unit -> unit
private override Clear : unit -> unit

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Clear
Clear


SiteMapNodeCollection ..::.IList ..::.Contains 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
Contains 方法
SiteMapNodeCollection 类

确定 IList 接口的集合中是否包含指定的布尔值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function Contains ( _
    value As Object _
) As Boolean Implements IList.Contains
bool IList.Contains(
    Object value
)
private:
virtual bool Contains(
    Object^ value
) sealed = IList::Contains
private abstract Contains :
        value:Object -> bool
private override Contains :
        value:Object -> bool

参数

value
类型： System Object
要在 IList 中定位的对象。

返回值

类型： System Boolean
如果在 IList 中找到对象，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Contains
Contains


SiteMapNodeCollection ..::.IList ..::.IndexOf 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
IndexOf 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

确定集合中特定项的索引，该集合由 IList 接口返回。有关此成员的说明，请参见 IList..::.IndexOf。 确定集合中特定项的索引，该集合由 IList 接口返回。有关此成员的说明，请参见 IList..::.IndexOf。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Function IndexOf ( _
    value As Object _
) As Integer Implements IList.IndexOf
int IList.IndexOf(
    Object value
)
private:
virtual int IndexOf(
    Object^ value
) sealed = IList::IndexOf
private abstract IndexOf :
        value:Object -> int
private override IndexOf :
        value:Object -> int

参数

value
类型： System Object
要在 IList 中定位的对象。

返回值

类型： System Int32
如果在列表中找到值，则返回值的索引；否则，为 -1。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
IndexOf
IndexOf


SiteMapNodeCollection ..::.IList ..::.Insert 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
Insert 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

将一项插入 IList 接口中的集合中的指定索引处。有关此成员的说明，请参见 IList..::.Insert。 将一项插入 IList 接口中的集合中的指定索引处。有关此成员的说明，请参见 IList..::.Insert。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub Insert ( _
    index As Integer, _
    value As Object _
) Implements IList.Insert
void IList.Insert(
    int index,
    Object value
)
private:
virtual void Insert(
    int index,
    Object^ value
) sealed = IList::Insert
private abstract Insert :
        index:int *
        value:Object -> unit
private override Insert :
        index:int *
        value:Object -> unit

参数

index
类型： System Int32
从零开始的 index，在该处插入 value。
value
类型： System Object
要插入 IList 的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Insert
Insert


SiteMapNodeCollection ..::.IList ..::.Remove 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
Remove 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

从 IList 接口的集合中移除指定对象的第一个匹配项。有关此成员的说明，请参见 IList..::.Remove。 从 IList 接口的集合中移除指定对象的第一个匹配项。有关此成员的说明，请参见 IList..::.Remove。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub Remove ( _
    value As Object _
) Implements IList.Remove
void IList.Remove(
    Object value
)
private:
virtual void Remove(
    Object^ value
) sealed = IList::Remove
private abstract Remove :
        value:Object -> unit
private override Remove :
        value:Object -> unit

参数

value
类型： System Object
要从 IList 中移除的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Remove
Remove


SiteMapNodeCollection ..::.IList ..::.RemoveAt 方法

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
RemoveAt 方法
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

移除指定索引处的 IList 项。有关此成员的说明，请参见 IList..::.RemoveAt。 移除指定索引处的 IList 项。有关此成员的说明，请参见 IList..::.RemoveAt。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Sub RemoveAt ( _
    index As Integer _
) Implements IList.RemoveAt
void IList.RemoveAt(
    int index
)
private:
virtual void RemoveAt(
    int index
) sealed = IList::RemoveAt
private abstract RemoveAt :
        index:int -> unit
private override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
从零开始的索引（属于要移除的项）。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
RemoveAt
RemoveAt


SiteMapNodeCollection ..::.IndexOf 方法

SiteMapNodeCollection
.
.
::
.
IndexOf 方法
SiteMapNodeCollection 类

搜索指定的 SiteMapNode 对象，并返回整个集合中第一个匹配项的从零开始的索引。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IndexOf ( _
    value As SiteMapNode _
) As Integer
public virtual int IndexOf(
    SiteMapNode value
)
public:
virtual int IndexOf(
    SiteMapNode^ value
)
abstract IndexOf :
        value:SiteMapNode -> int
override IndexOf :
        value:SiteMapNode -> int

参数

value
类型： System.Web SiteMapNode
要在 SiteMapNodeCollection 中查找的 SiteMapNode。

返回值

类型： System Int32
如果在整个 SiteMapNodeCollection 中找到 value 的匹配项，则为第一个匹配项的从零开始的索引；否则为 -1。

IndexOf 方法通过调用 Object..::.Equals 方法来确定等同性。

下面的代码示例演示如何使用 SiteMapNodeCollection 类的 Contains 和 IndexOf 方法。该代码对两个提供程序 AspNetXmlSiteMapProvider 和 MyXmlSiteMapProvider 中根节点的重复子节点进行检查。 下面的代码示例演示如何使用 SiteMapNodeCollection 类的 Contains 和 IndexOf 方法。该代码对两个提供程序 AspNetXmlSiteMapProvider 和 MyXmlSiteMapProvider 中根节点的重复子节点进行检查。

Dim providername1 As String = "xAspNetXmlSiteMapProvider"
Dim providername2 As String = "MyXmlSiteMapProvider"
Dim providers As SiteMapProviderCollection = SiteMap.Providers

If Not (providers(providername1) Is Nothing) AndAlso Not (providers(providername2) Is Nothing) Then
  Dim provider1 As SiteMapProvider = providers(providername1)
  Dim provider2 As SiteMapProvider = providers(providername2)
  Dim collection1 As SiteMapNodeCollection = provider1.RootNode.ChildNodes
  Dim collection2 As SiteMapNodeCollection = provider2.RootNode.ChildNodes
  Dim matches As Integer = 0
  Dim node As SiteMapNode
  For Each node In collection1
    If collection2.Contains(node) Then
      Response.Write("Match found at " & _
      providername1 & ", index = " & _
      collection1.IndexOf(node) & " with " & _
      providername2 & ", index = " & _
      collection2.IndexOf(node) & ".<br />")
      matches += 1
    End If
  Next node
  Response.Write("Number of matches found = " & _
  matches.ToString() + ".")
Else
  Response.Write(providername1 & " or " & _
  providername2 & " not found.")
End If

String providername1 = "AspNetXmlSiteMapProvider";
String providername2 = "MyXmlSiteMapProvider";
SiteMapProviderCollection providers = SiteMap.Providers;

if (providers[providername1] != null && providers[providername2] != null)
{
  SiteMapProvider provider1 = providers[providername1];
  SiteMapProvider provider2 = providers[providername2];
  SiteMapNodeCollection collection1 = provider1.RootNode.ChildNodes;
  SiteMapNodeCollection collection2 = provider2.RootNode.ChildNodes;
  int matches = 0;
  foreach (SiteMapNode node in collection1)
  {
    if (collection2.Contains(node))
    {
      Response.Write("Match found at " +
        providername1 + ", index = " +
        collection1.IndexOf(node) + " with " +
        providername2 + ", index = " +
        collection2.IndexOf(node) + ".<br />");
      matches++;
    }
  }
  Response.Write("Number of matches found = " +
    matches.ToString() + ".");
}
else
{
  Response.Write(providername1 + " or " +
    providername2 + " not found.");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.Insert 方法

SiteMapNodeCollection
.
.
::
.
Insert 方法
SiteMapNodeCollection 类

将指定的 SiteMapNode 对象插入集合中指定的索引位置。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Insert ( _
    index As Integer, _
    value As SiteMapNode _
)
public virtual void Insert(
    int index,
    SiteMapNode value
)
public:
virtual void Insert(
    int index,
    SiteMapNode^ value
)
abstract Insert :
        index:int *
        value:SiteMapNode -> unit
override Insert :
        index:int *
        value:SiteMapNode -> unit

参数

index
类型： System Int32
从零开始的索引，在此处插入 SiteMapNode。
value
类型： System.Web SiteMapNode
要插入的 SiteMapNode。
异常 | 条件
ArgumentOutOfRangeException | index 小于零。 - 或 - index 大于 Count。
NotSupportedException | SiteMapNodeCollection 为只读。 - 或 - SiteMapNodeCollection 具有固定大小。
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 集合是否是只读的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
IndexOf
IsReadOnly


SiteMapNodeCollection ..::.OnValidate 方法

SiteMapNodeCollection
.
.
::
.
OnValidate 方法
SiteMapNodeCollection 类

当验证值时执行其他自定义进程。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overridable Sub OnValidate ( _
    value As Object _
)
protected virtual void OnValidate(
    Object value
)
protected:
virtual void OnValidate(
    Object^ value
)
abstract OnValidate :
        value:Object -> unit
override OnValidate :
        value:Object -> unit

参数

value
类型： System Object
要验证的 SiteMapNode。
异常 | 条件
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | value 不是 SiteMapNode。

对实现者的说明

OnValidate 方法允许实施者定义当执行基础 ArrayList 对象的标准行为时必须执行的进程。通过定义 OnValidate 方法，实施者可以向继承方法添加功能，而无须重写所有其他方法。具体来说，只要通过引用 IList 接口使用 SiteMapNodeCollection 集合，就会调用 OnValidate 方法。 OnValidate 方法允许实施者定义当执行基础 ArrayList 对象的标准行为时必须执行的进程。通过定义 OnValidate 方法，实施者可以向继承方法添加功能，而无须重写所有其他方法。具体来说，只要通过引用 IList 接口使用 SiteMapNodeCollection 集合，就会调用 OnValidate 方法。 OnValidate 方法允许实施者定义当执行基础 ArrayList 对象的标准行为时必须执行的进程。通过定义 OnValidate 方法，实施者可以向继承方法添加功能，而无须重写所有其他方法。具体来说，只要通过引用 IList 接口使用 SiteMapNodeCollection 集合，就会调用 OnValidate 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.ReadOnly 方法

SiteMapNodeCollection
.
.
::
.
ReadOnly 方法
SiteMapNodeCollection 类

返回一个只读集合，其中包含指定的 SiteMapNodeCollection 集合中的节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ReadOnly ( _
    collection As SiteMapNodeCollection _
) As SiteMapNodeCollection
public static SiteMapNodeCollection ReadOnly(
    SiteMapNodeCollection collection
)
public:
static SiteMapNodeCollection^ ReadOnly(
    SiteMapNodeCollection^ collection
)
static member ReadOnly :
        collection:SiteMapNodeCollection -> SiteMapNodeCollection

参数

collection
类型： System.Web SiteMapNodeCollection
SiteMapNodeCollection 包含的 SiteMapNode 对象要添加到只读 SiteMapNodeCollection 中。

返回值

类型： System.Web SiteMapNodeCollection
与原始 SiteMapNodeCollection 具有相同 SiteMapNode 元素和结构的只读 SiteMapNodeCollection。
异常 | 条件
ArgumentNullException | collection 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 集合是否是只读的。当 SiteMapNodeCollection 为只读时，IsFixedSize 属性也返回 true。 通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 集合是否是只读的。当 SiteMapNodeCollection 为只读时，IsFixedSize 属性也返回 true。

对实现者的说明

只读的 SiteMapNodeCollection 集合支持读操作和搜索操作，但不支持 Add、AddRange、Clear、Insert、Remove 和 RemoveAt 方法，也不支持默认索引器属性 Item 的 setter。

下面的代码示例演示如何使用 IsReadOnly 属性测试某个 SiteMapNodeCollection 集合是只读的还是可修改的。如果 siteNodes 可修改，则对其调用 MoveNode；否则使用 siteNodes 作为基础创建一个 SiteMapNodeCollection 复本。 下面的代码示例演示如何使用 IsReadOnly 属性测试某个 SiteMapNodeCollection 集合是只读的还是可修改的。如果 siteNodes 可修改，则对其调用 MoveNode；否则使用 siteNodes 作为基础创建一个 SiteMapNodeCollection 复本。

    Dim siteNodes As SiteMapNodeCollection
    siteNodes = SiteMap.RootNode.GetAllNodes()

    If siteNodes.IsReadOnly Or siteNodes.IsFixedSize Then

        Response.Write("Collection is read-only or has fixed size.<BR>")

        ' Create a new, modifiable collection from the existing one.
        Dim modifiableCollection As SiteMapNodeCollection
        modifiableCollection = New SiteMapNodeCollection(siteNodes)

        ' The MoveNode example method moves a node from position one to
        ' the last position in the collection.
        MoveNode(modifiableCollection)
    Else
        MoveNode(siteNodes)
    End If

    SiteMapNodeCollection siteNodes = SiteMap.RootNode.GetAllNodes();

    if ( siteNodes.IsReadOnly ||
         siteNodes.IsFixedSize )
    {
        Response.Write("Collection is read-only or has fixed size.<BR>");

        // Create a new, modifiable collection from the existing one.
        SiteMapNodeCollection modifiableCollection =
             new SiteMapNodeCollection(siteNodes);

        // The MoveNode example method moves a node from position one to
        // the last position in the collection.
        MoveNode(modifiableCollection);
    }
    else {
        MoveNode(siteNodes);
    }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.Remove 方法

SiteMapNodeCollection
.
.
::
.
Remove 方法
SiteMapNodeCollection 类

从集合中移除指定的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub Remove ( _
    value As SiteMapNode _
)
public virtual void Remove(
    SiteMapNode value
)
public:
virtual void Remove(
    SiteMapNode^ value
)
abstract Remove :
        value:SiteMapNode -> unit
override Remove :
        value:SiteMapNode -> unit

参数

value
类型： System.Web SiteMapNode
要从 SiteMapNodeCollection 移除的 SiteMapNode。
异常 | 条件
ArgumentException | 集合中不存在 value。
ArgumentNullException | value 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | SiteMapNodeCollection 为只读。 - 或 - SiteMapNodeCollection 具有固定大小。

通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 集合是否是只读的。

Remove 方法通过调用 Object..::.Equals 方法来确定等同性。

下面的代码示例演示如何使用 Remove 方法从 SiteMapNodeCollection 集合移除一个 SiteMapNode 对象，然后使用 Add 方法将该 SiteMapNode 对象追加到 SiteMapNodeCollection 的末尾。如果 SiteMapNodeCollection 是只读的，则捕获一个 NotSupportedException 异常。 下面的代码示例演示如何使用 Remove 方法从 SiteMapNodeCollection 集合移除一个 SiteMapNode 对象，然后使用 Add 方法将该 SiteMapNode 对象追加到 SiteMapNodeCollection 的末尾。如果 SiteMapNodeCollection 是只读的，则捕获一个 NotSupportedException 异常。

' Move a node from one spot in the list to another.
Try
    Response.Write("Original node order: <BR>")
    Dim node As SiteMapNode
    For Each node In nodes
        Response.Write( node.Title & "<BR>")
    Next

    Dim aNode As SiteMapNode = nodes(1)

    Response.Write("Adding " & aNode.Title & " to the end of the collection.<BR>")
    nodes.Add(aNode)

    Response.Write("Removing " & aNode.Title & " at position 1. <BR>")
    nodes.Remove(nodes(1))

    Response.Write("New node order: <BR>")

    For Each node In nodes
        Response.Write( node.Title & "<BR>")
    Next

Catch nse As NotSupportedException
    Response.Write("NotSupportedException caught.<BR>")
End Try

// Move a node from one spot in the list to another.
try {
    Response.Write("Original node order: <BR>");
    foreach (SiteMapNode node in nodes) {
        Response.Write( node.Title + "<BR>");
    }
    SiteMapNode aNode = nodes[1];

    Response.Write("Adding " + aNode.Title + " to the end of the collection.<BR>");
    nodes.Add(aNode);

    Response.Write("Removing " + aNode.Title + " at position 1. <BR>");
    nodes.Remove(nodes[1]);

    Response.Write("New node order: <BR>");
    foreach (SiteMapNode node in nodes) {
        Response.Write( node.Title + "<BR>");
    }
}
catch (NotSupportedException nse) {
    Response.Write("NotSupportedException caught.<BR>");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Add
AddRange


SiteMapNodeCollection ..::.RemoveAt 方法

SiteMapNodeCollection
.
.
::
.
RemoveAt 方法
SiteMapNodeCollection 类

从集合中移除位于指定索引位置的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub RemoveAt ( _
    index As Integer _
)
public virtual void RemoveAt(
    int index
)
public:
virtual void RemoveAt(
    int index
)
abstract RemoveAt :
        index:int -> unit
override RemoveAt :
        index:int -> unit

参数

index
类型： System Int32
要移除的元素的从零开始的索引。
异常 | 条件
ArgumentOutOfRangeException | index 小于零。 - 或 - index 大于 Count。
NotSupportedException | SiteMapNodeCollection 为只读。 - 或 - SiteMapNodeCollection 具有固定大小。

通过检查 IsReadOnly 属性，可以测试 SiteMapNodeCollection 集合是否是只读的。

若要通过指定要移除的 SiteMapNode 对象来移除 SiteMapNodeCollection 中的元素，请使用 Remove 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Remove
IsReadOnly
RemoveAt


SiteMapNodeCollection 属性

SiteMapNodeCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapNodeCollection 类

SiteMapNodeCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SiteMapNodeCollection 类
System.Web 命名空间


SiteMapNodeCollection ..::.Count 属性

SiteMapNodeCollection
.
.
::
.
Count 属性
SiteMapNodeCollection 类

获取集合中包含的元素数。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property Count As Integer
    Get
public virtual int Count { get; }
public:
virtual property int Count {
    int get ();
}
abstract Count : int
override Count : int

属性值

类型： System Int32
SiteMapNodeCollection 中元素的数目。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Item
GetEnumerator
Count


SiteMapNodeCollection ..::.ICollection ..::.Count 属性

SiteMapNodeCollection
.
.
::
.
ICollection
.
.
::
.
Count 属性
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取 ICollection 接口中包含的元素数。无法继承此类。 获取 ICollection 接口中包含的元素数。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property Count As Integer
    Implements ICollection.Count
    Get
int ICollection.Count { get; }
private:
virtual property int Count {
    int get () sealed = ICollection::Count::get;
}
private abstract Count : int
private override Count : int

属性值

类型： System Int32
ICollection 中包含的元素数。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Count
Count


SiteMapNodeCollection ..::.ICollection ..::.IsSynchronized 属性

SiteMapNodeCollection
.
.
::
.
ICollection
.
.
::
.
IsSynchronized 属性
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取一个 Boolean 值，该值指示对 ICollection 接口的访问是否是同步的（线程安全）。无法继承此类。 获取一个 Boolean 值，该值指示对 ICollection 接口的访问是否是同步的（线程安全）。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property IsSynchronized As Boolean
    Implements ICollection.IsSynchronized
    Get
bool ICollection.IsSynchronized { get; }
private:
virtual property bool IsSynchronized {
    bool get () sealed = ICollection::IsSynchronized::get;
}
private abstract IsSynchronized : bool
private override IsSynchronized : bool

属性值

类型： System Boolean
如果对 ICollection 的访问是同步的（线程安全），则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
SyncRoot
IsSynchronized


SiteMapNodeCollection ..::.ICollection ..::.SyncRoot 属性

SiteMapNodeCollection
.
.
::
.
ICollection
.
.
::
.
SyncRoot 属性
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取可用于同步对 ICollection 接口的访问的对象。无法继承此类。 获取可用于同步对 ICollection 接口的访问的对象。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property SyncRoot As Object
    Implements ICollection.SyncRoot
    Get
Object ICollection.SyncRoot { get; }
private:
virtual property Object^ SyncRoot {
    Object^ get () sealed = ICollection::SyncRoot::get;
}
private abstract SyncRoot : Object
private override SyncRoot : Object

属性值

类型： System Object
可用于同步对 ICollection 的访问的对象。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
SyncRoot
SyncRoot


SiteMapNodeCollection ..::.IList ..::.IsFixedSize 属性

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
IsFixedSize 属性
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取一个 Boolean 值，该值指示集合是否具有固定大小。有关此成员的说明，请参见 IList..::.IsFixedSize。 获取一个 Boolean 值，该值指示集合是否具有固定大小。有关此成员的说明，请参见 IList..::.IsFixedSize。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property IsFixedSize As Boolean
    Implements IList.IsFixedSize
    Get
bool IList.IsFixedSize { get; }
private:
virtual property bool IsFixedSize {
    bool get () sealed = IList::IsFixedSize::get;
}
private abstract IsFixedSize : bool
private override IsFixedSize : bool

属性值

类型： System Boolean
如果 SiteMapNodeCollection 是只读的，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.IList ..::.IsReadOnly 属性

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
IsReadOnly 属性
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取一个 Boolean 值，该值指示集合是否为只读。有关此成员的说明，请参见 IList..::.IsReadOnly。 获取一个 Boolean 值，该值指示集合是否为只读。有关此成员的说明，请参见 IList..::.IsReadOnly。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private ReadOnly Property IsReadOnly As Boolean
    Implements IList.IsReadOnly
    Get
bool IList.IsReadOnly { get; }
private:
virtual property bool IsReadOnly {
    bool get () sealed = IList::IsReadOnly::get;
}
private abstract IsReadOnly : bool
private override IsReadOnly : bool

属性值

类型： System Boolean
如果 SiteMapNodeCollection 是只读的，则为 true；否则为 false。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.IList ..::.Item 属性

SiteMapNodeCollection
.
.
::
.
IList
.
.
::
.
Item 属性
SiteMapNodeCollection 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

获取指定索引处的 IList 元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Private Property Item ( _
    index As Integer _
) As Object Implements IList.Item
    Get
    Set
Object IList.this[
    int index
] { get; set; }
private:
virtual property Object^ Item[int index] {
    Object^ get (int index) sealed = IList::Item::get;
    void set (int index, Object^ value) sealed = IList::Item::set;
}
private abstract Item : Object with get, set
private override Item : Object with get, set

参数

index
类型： System Int32
要获取的元素的从零开始的索引。

属性值

类型： System Object
指定索引处的元素。

实现

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
Item
Item


SiteMapNodeCollection ..::.IsFixedSize 属性

SiteMapNodeCollection
.
.
::
.
IsFixedSize 属性
SiteMapNodeCollection 类

获取一个 Boolean 值，该值指示是否可以在集合中增减节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsFixedSize As Boolean
    Get
public virtual bool IsFixedSize { get; }
public:
virtual property bool IsFixedSize {
    bool get ();
}
abstract IsFixedSize : bool
override IsFixedSize : bool

属性值

类型： System Boolean
如果可以向 SiteMapNodeCollection 中添加 SiteMapNode 对象或从中删除 SiteMapNode 对象，则为 true；否则，为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
ReadOnly


SiteMapNodeCollection ..::.IsReadOnly 属性

SiteMapNodeCollection
.
.
::
.
IsReadOnly 属性
SiteMapNodeCollection 类

获取一个 Boolean 值，该值指示集合是否为只读。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsReadOnly As Boolean
    Get
public virtual bool IsReadOnly { get; }
public:
virtual property bool IsReadOnly {
    bool get ();
}
abstract IsReadOnly : bool
override IsReadOnly : bool

属性值

类型： System Boolean
如果可以修改 SiteMapNodeCollection，则为 true；否则为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
ReadOnly


SiteMapNodeCollection ..::.IsSynchronized 属性

SiteMapNodeCollection
.
.
::
.
IsSynchronized 属性
SiteMapNodeCollection 类

获取一个布尔值，该值指示对集合的访问是否为同步的（线程安全）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property IsSynchronized As Boolean
    Get
public virtual bool IsSynchronized { get; }
public:
virtual property bool IsSynchronized {
    bool get ();
}
abstract IsSynchronized : bool
override IsSynchronized : bool

属性值

类型： System Boolean
如果访问已同步，则为 true；否则，为 false。默认值为 false。 如果访问已同步，则为 true；否则，为 false。默认值为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间


SiteMapNodeCollection ..::.Item 属性

SiteMapNodeCollection
.
.
::
.
Item 属性
SiteMapNodeCollection 类

获取或设置集合中指定索引处的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property Item ( _
    index As Integer _
) As SiteMapNode
    Get
    Set
public virtual SiteMapNode this[
    int index
] { get; set; }
public:
virtual property SiteMapNode^ Item[int index] {
    SiteMapNode^ get (int index);
    void set (int index, SiteMapNode^ value);
}
abstract Item : SiteMapNode with get, set
override Item : SiteMapNode with get, set

参数

index
类型： System Int32
要查找的 SiteMapNode 的索引。

属性值

类型： System.Web SiteMapNode
表示 SiteMapNodeCollection 中的元素的 SiteMapNode。
异常 | 条件
NotSupportedException | SiteMapNodeCollection 为只读。
ArgumentOutOfRangeException | index 小于零。 - 或 - index 大于 Count。
ArgumentNullException | 提供给 setter 的值为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

可以使用 Item 索引器循环访问 SiteMapNodeCollection 集合的内容，或替换位于指定索引处的 SiteMapNode 对象。

下面的代码示例演示如何使用 Item 索引器从 SiteMapNodeCollection 集合中检索 SiteMapNode 对象。本示例使用 Remove 方法将一个 SiteMapNode 对象从其在内部数组的第二个元素的位置处移除，然后使用 Add 方法将其追加到该数组。若要在特定索引处插入 SiteMapNode 对象而不是将其追加到数组的末尾，请使用 Insert 方法。 下面的代码示例演示如何使用 Item 索引器从 SiteMapNodeCollection 集合中检索 SiteMapNode 对象。本示例使用 Remove 方法将一个 SiteMapNode 对象从其在内部数组的第二个元素的位置处移除，然后使用 Add 方法将其追加到该数组。若要在特定索引处插入 SiteMapNode 对象而不是将其追加到数组的末尾，请使用 Insert 方法。 下面的代码示例演示如何使用 Item 索引器从 SiteMapNodeCollection 集合中检索 SiteMapNode 对象。本示例使用 Remove 方法将一个 SiteMapNode 对象从其在内部数组的第二个元素的位置处移除，然后使用 Add 方法将其追加到该数组。若要在特定索引处插入 SiteMapNode 对象而不是将其追加到数组的末尾，请使用 Insert 方法。

' Move a node from one spot in the list to another.
Try
    Response.Write("Original node order: <BR>")
    Dim node As SiteMapNode
    For Each node In nodes
        Response.Write( node.Title & "<BR>")
    Next

    Dim aNode As SiteMapNode = nodes(1)

    Response.Write("Adding " & aNode.Title & " to the end of the collection.<BR>")
    nodes.Add(aNode)

    Response.Write("Removing " & aNode.Title & " at position 1. <BR>")
    nodes.Remove(nodes(1))

    Response.Write("New node order: <BR>")

    For Each node In nodes
        Response.Write( node.Title & "<BR>")
    Next

Catch nse As NotSupportedException
    Response.Write("NotSupportedException caught.<BR>")
End Try

// Move a node from one spot in the list to another.
try {
    Response.Write("Original node order: <BR>");
    foreach (SiteMapNode node in nodes) {
        Response.Write( node.Title + "<BR>");
    }
    SiteMapNode aNode = nodes[1];

    Response.Write("Adding " + aNode.Title + " to the end of the collection.<BR>");
    nodes.Add(aNode);

    Response.Write("Removing " + aNode.Title + " at position 1. <BR>");
    nodes.Remove(nodes[1]);

    Response.Write("New node order: <BR>");
    foreach (SiteMapNode node in nodes) {
        Response.Write( node.Title + "<BR>");
    }
}
catch (NotSupportedException nse) {
    Response.Write("NotSupportedException caught.<BR>");
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
IndexOf
Contains


SiteMapNodeCollection ..::.SyncRoot 属性

SiteMapNodeCollection
.
.
::
.
SyncRoot 属性
SiteMapNodeCollection 类

获取可用于同步对集合的访问的对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property SyncRoot As Object
    Get
public virtual Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
    Object^ get ();
}
abstract SyncRoot : Object
override SyncRoot : Object

属性值

类型： System Object
可用于同步对 SiteMapNodeCollection 的访问的对象。

枚举 SiteMapNodeCollection 集合在本质上不是一个线程安全的过程。即使一个 SiteMapNodeCollection 已进行同步，其他线程仍可以修改该 SiteMapNodeCollection，这将导致枚举数引发异常。若要在枚举过程中保证线程安全，可以在整个枚举过程中锁定 SiteMapNodeCollection，或者捕捉由于其他线程进行的更改而引发的异常。 枚举 SiteMapNodeCollection 集合在本质上不是一个线程安全的过程。即使一个 SiteMapNodeCollection 已进行同步，其他线程仍可以修改该 SiteMapNodeCollection，这将导致枚举数引发异常。若要在枚举过程中保证线程安全，可以在整个枚举过程中锁定 SiteMapNodeCollection，或者捕捉由于其他线程进行的更改而引发的异常。 枚举 SiteMapNodeCollection 集合在本质上不是一个线程安全的过程。即使一个 SiteMapNodeCollection 已进行同步，其他线程仍可以修改该 SiteMapNodeCollection，这将导致枚举数引发异常。若要在枚举过程中保证线程安全，可以在整个枚举过程中锁定 SiteMapNodeCollection，或者捕捉由于其他线程进行的更改而引发的异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapNodeCollection 类
SiteMapNodeCollection 成员
System.Web 命名空间
SyncRoot


SiteMapProvider 类

SiteMapProvider 类
成员

为所有站点地图数据提供程序提供公共基类，并为开发人员提供一条实现自定义站点地图数据提供程序的途径，这些提供程序可与 ASP.NET 站点地图基础结构一起用作 SiteMap 对象的持久存储区。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class SiteMapProvider _
    Inherits ProviderBase
public abstract class SiteMapProvider : ProviderBase
public ref class SiteMapProvider abstract : public ProviderBase
[<AbstractClassAttribute>]
type SiteMapProvider =
    class
        inherit ProviderBase
    end

StaticSiteMapProvider 和 XmlSiteMapProvider 类表示抽象 SiteMapProvider 类的默认实现。XmlSiteMapProvider 使用名为 Web.sitemap 的 XML 文件来存储站点地图数据。有关 Web.sitemap 文件的更多信息，请参见 ASP.NET 站点地图。 StaticSiteMapProvider 和 XmlSiteMapProvider 类表示抽象 SiteMapProvider 类的默认实现。XmlSiteMapProvider 使用名为 Web.sitemap 的 XML 文件来存储站点地图数据。有关 Web.sitemap 文件的更多信息，请参见 ASP.NET 站点地图。 StaticSiteMapProvider 和 XmlSiteMapProvider 类表示抽象 SiteMapProvider 类的默认实现。XmlSiteMapProvider 使用名为 Web.sitemap 的 XML 文件来存储站点地图数据。有关 Web.sitemap 文件的更多信息，请参见 ASP.NET 站点地图。

SiteMapProvider 类通过声明 RootProvider 和 ParentProvider 属性，从而支持站点地图提供程序层次结构的概念。SiteMapProvider 可以是另一个提供程序的子提供程序或父提供程序。这样便可启用站点的不同内容区域由不同的开发组（各自维护着自己的站点地图和站点地图提供程序）拥有或实现的方案。 SiteMapProvider 类通过声明 RootProvider 和 ParentProvider 属性，从而支持站点地图提供程序层次结构的概念。SiteMapProvider 可以是另一个提供程序的子提供程序或父提供程序。这样便可启用站点的不同内容区域由不同的开发组（各自维护着自己的站点地图和站点地图提供程序）拥有或实现的方案。 SiteMapProvider 类通过声明 RootProvider 和 ParentProvider 属性，从而支持站点地图提供程序层次结构的概念。SiteMapProvider 可以是另一个提供程序的子提供程序或父提供程序。这样便可启用站点的不同内容区域由不同的开发组（各自维护着自己的站点地图和站点地图提供程序）拥有或实现的方案。

所有 SiteMapProvider 对象都是在 Web.config 文件中配置的。在这些配置文件中声明的任何站点地图提供程序都是在运行时加载的，并用于加载和处理站点导航数据。SiteMap 对象通过其 Providers 属性集合来跟踪所有可用的提供程序，从而提供以编程方式访问提供程序所管理的导航数据的权限。下面的代码示例演示在 Web.config 文件中用于声明站点地图提供程序的格式。 所有 SiteMapProvider 对象都是在 Web.config 文件中配置的。在这些配置文件中声明的任何站点地图提供程序都是在运行时加载的，并用于加载和处理站点导航数据。SiteMap 对象通过其 Providers 属性集合来跟踪所有可用的提供程序，从而提供以编程方式访问提供程序所管理的导航数据的权限。下面的代码示例演示在 Web.config 文件中用于声明站点地图提供程序的格式。 所有 SiteMapProvider 对象都是在 Web.config 文件中配置的。在这些配置文件中声明的任何站点地图提供程序都是在运行时加载的，并用于加载和处理站点导航数据。SiteMap 对象通过其 Providers 属性集合来跟踪所有可用的提供程序，从而提供以编程方式访问提供程序所管理的导航数据的权限。下面的代码示例演示在 Web.config 文件中用于声明站点地图提供程序的格式。 所有 SiteMapProvider 对象都是在 Web.config 文件中配置的。在这些配置文件中声明的任何站点地图提供程序都是在运行时加载的，并用于加载和处理站点导航数据。SiteMap 对象通过其 Providers 属性集合来跟踪所有可用的提供程序，从而提供以编程方式访问提供程序所管理的导航数据的权限。下面的代码示例演示在 Web.config 文件中用于声明站点地图提供程序的格式。

<siteMap defaultProvider="<name>">
  <providers>
    <add
      name="<friendly name>"
      type="<class name>, <fully-qualified type name>"
      siteMapFile = "<file name>" />
  </providers>
</siteMap>

站点地图基础结构的其他组件（如 SiteMapPath 和 TreeView 控件）使用这些提供程序加载的站点导航数据为用户显示站点地图信息。

如果实现您自己的站点地图提供程序，则可以将源文件放入 ASP.NET 应用程序的 App_Code 目录中，然后将自动编译程序集。还可以将您自己的站点地图提供程序放入全局程序集缓存 (GAC) 中，并在 Web.config 文件中提供对它的完全限定引用。有关编译器服务的更多信息，请参见 使用程序集和全局程序集缓存。 如果实现您自己的站点地图提供程序，则可以将源文件放入 ASP.NET 应用程序的 App_Code 目录中，然后将自动编译程序集。还可以将您自己的站点地图提供程序放入全局程序集缓存 (GAC) 中，并在 Web.config 文件中提供对它的完全限定引用。有关编译器服务的更多信息，请参见 使用程序集和全局程序集缓存。 如果实现您自己的站点地图提供程序，则可以将源文件放入 ASP.NET 应用程序的 App_Code 目录中，然后将自动编译程序集。还可以将您自己的站点地图提供程序放入全局程序集缓存 (GAC) 中，并在 Web.config 文件中提供对它的完全限定引用。有关编译器服务的更多信息，请参见 使用程序集和全局程序集缓存。

对继承者的说明

从 SiteMapProvider 类继承时，必须重写下面的成员：GetRootNodeCore、FindSiteMapNode、GetChildNodes 和 GetParentNode。

下面的代码示例演示如何编写一个实现抽象 SiteMapProvider 类的类。该示例使用以逗号分隔的文件，该文件遵循预期的结构来加载站点地图信息。该文件的第一行表示站点地图的根节点，后续行是子节点。每个子节点都按 URL 标识其父节点。下面显示了满足这些标准的文件的示例。 下面的代码示例演示如何编写一个实现抽象 SiteMapProvider 类的类。该示例使用以逗号分隔的文件，该文件遵循预期的结构来加载站点地图信息。该文件的第一行表示站点地图的根节点，后续行是子节点。每个子节点都按 URL 标识其父节点。下面显示了满足这些标准的文件的示例。 下面的代码示例演示如何编写一个实现抽象 SiteMapProvider 类的类。该示例使用以逗号分隔的文件，该文件遵循预期的结构来加载站点地图信息。该文件的第一行表示站点地图的根节点，后续行是子节点。每个子节点都按 URL 标识其父节点。下面显示了满足这些标准的文件的示例。 下面的代码示例演示如何编写一个实现抽象 SiteMapProvider 类的类。该示例使用以逗号分隔的文件，该文件遵循预期的结构来加载站点地图信息。该文件的第一行表示站点地图的根节点，后续行是子节点。每个子节点都按 URL 标识其父节点。下面显示了满足这些标准的文件的示例。 下面的代码示例演示如何编写一个实现抽象 SiteMapProvider 类的类。该示例使用以逗号分隔的文件，该文件遵循预期的结构来加载站点地图信息。该文件的第一行表示站点地图的根节点，后续行是子节点。每个子节点都按 URL 标识其父节点。下面显示了满足这些标准的文件的示例。

default.aspx,Home,MyCompany Home Page,
sale.aspx,Now On Sale,Check Out These Great Deals!,default.aspx
catalog.aspx,Online Catalog,Browse Our Many Great Items!,default.aspx

SimpleTextSiteMapProvider 提供所有 SiteMapProvider 属性和方法的示例实现。

Imports System
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Configuration.Provider
Imports System.IO
Imports System.Security.Permissions
Imports System.Web

Namespace Samples.AspNet.VB

  <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class SimpleTextSiteMapProvider
    Inherits SiteMapProvider

    Private parentSiteMapProvider As SiteMapProvider = Nothing
    Private simpleTextProviderName As String = Nothing
    Private sourceFilename As String = Nothing
    Private aRootNode As SiteMapNode = Nothing
    Private siteMapNodes As ArrayList = Nothing
    Private childParentRelationship As ArrayList = Nothing

    ' A default constructor. The Name property is initialized in the
    ' Initialize method.
    Public Sub New()
    End Sub 'New

    ' Implement the CurrentNode property.
    Public Overrides ReadOnly Property CurrentNode() As SiteMapNode
      Get
        Dim currentUrl As String = FindCurrentUrl()
        ' Find the SiteMapNode that represents the current page.
        Dim aCurrentNode As SiteMapNode = FindSiteMapNode(currentUrl)
        Return aCurrentNode
      End Get
    End Property

    ' Implement the RootNode property.
    Public Overrides ReadOnly Property RootNode() As SiteMapNode
      Get
        Return aRootNode
      End Get
    End Property

    ' Implement the ParentProvider property.
    Public Overrides Property ParentProvider() As SiteMapProvider
      Get
        Return parentSiteMapProvider
      End Get
      Set(ByVal value As SiteMapProvider)
        parentSiteMapProvider = Value
      End Set
    End Property

    ' Implement the RootProvider property.
    Public Overrides ReadOnly Property RootProvider() As SiteMapProvider
      Get
        ' If the current instance belongs to a provider hierarchy, it
        ' cannot be the RootProvider. Rely on the ParentProvider.
        If Not (Me.ParentProvider Is Nothing) Then
          Return ParentProvider.RootProvider
          ' If the current instance does not have a ParentProvider, it is
          ' not a child in a hierarchy, and can be the RootProvider.
        Else
          Return Me
        End If
      End Get
    End Property

    ' Implement the FindSiteMapNode method.
    Public Overrides Function FindSiteMapNode(ByVal rawUrl As String) As SiteMapNode
      ' Does the root node match the URL?
      If RootNode.Url = rawUrl Then
        Return RootNode
      Else
        Dim candidate As SiteMapNode = Nothing
        ' Retrieve the SiteMapNode that matches the URL.
        SyncLock Me
          candidate = GetNode(siteMapNodes, rawUrl)
        End SyncLock
        Return candidate
      End If
    End Function 'FindSiteMapNode

    ' Implement the GetChildNodes method.
    Public Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection
      Dim children As New SiteMapNodeCollection()
      ' Iterate through the ArrayList and find all nodes that have the specified node as a parent.
      SyncLock Me
        Dim i As Integer
        For i = 0 To childParentRelationship.Count - 1

          Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry)
          Dim nodeUrl As String = CType(de.Key, String)

          Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl)

          If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then
            ' The SiteMapNode with the Url that corresponds to nodeUrl
            ' is a child of the specified node. Get the SiteMapNode for
            ' the nodeUrl.
            Dim child As SiteMapNode = FindSiteMapNode(nodeUrl)
            If Not (child Is Nothing) Then
              children.Add(CType(child, SiteMapNode))
            Else
              Throw New Exception("ArrayLists not in sync.")
            End If
          End If
        Next i
      End SyncLock
      Return children
    End Function 'GetChildNodes

    Protected Overrides Function GetRootNodeCore() As SiteMapNode
      Return RootNode
    End Function ' GetRootNodeCore()

    ' Implement the GetParentNode method.
    Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode
      ' Check the childParentRelationship table and find the parent of the current node.
      ' If there is no parent, the current node is the RootNode.
      Dim parent As SiteMapNode = Nothing
      SyncLock Me
        ' Get the Value of the node in childParentRelationship
        parent = GetNode(childParentRelationship, node.Url)
      End SyncLock
      Return parent
    End Function 'GetParentNode

    ' Implement the ProviderBase.Initialize method.
    ' Initialize is used to initialize the state that the Provider holds, but
    ' not actually build the site map.
    Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As NameValueCollection)
      SyncLock Me
        MyBase.Initialize(name, attributes)
        simpleTextProviderName = name
        sourceFilename = attributes("siteMapFile")
        siteMapNodes = New ArrayList()
        childParentRelationship = New ArrayList()
        ' Build the site map in memory.
        LoadSiteMapFromStore()
      End SyncLock
    End Sub 'Initialize

    ' Private helper methods
    Private Function GetNode(ByVal list As ArrayList, ByVal url As String) As SiteMapNode
      Dim i As Integer
      For i = 0 To list.Count - 1
        Dim item As DictionaryEntry = CType(list(i), DictionaryEntry)
        If CStr(item.Key) = url Then
          Return CType(item.Value, SiteMapNode)
        End If
      Next i
      Return Nothing
    End Function 'GetNode

    ' Get the URL of the currently displayed page.
    Private Function FindCurrentUrl() As String
      Try
        ' The current HttpContext.
        Dim currentContext As HttpContext = HttpContext.Current
        If Not (currentContext Is Nothing) Then
          Return currentContext.Request.RawUrl
        Else
          Throw New Exception("HttpContext.Current is Invalid")
        End If
      Catch e As Exception
        Throw New NotSupportedException("This provider requires a valid context.", e)
      End Try
    End Function 'FindCurrentUrl

    Protected Overridable Sub LoadSiteMapFromStore()
      Dim pathToOpen As String
      SyncLock Me
        ' If a root node exists, LoadSiteMapFromStore has already
        ' been called, and the method can return.
        If Not (aRootNode Is Nothing) Then
          Return
        Else
          pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
          If File.Exists(pathToOpen) Then
            ' Open the file to read from.
            Dim sr As StreamReader = File.OpenText(pathToOpen)
            Try

              ' Clear the state of the collections and aRootNode
              aRootNode = Nothing
              siteMapNodes.Clear()
              childParentRelationship.Clear()

              ' Parse the file and build the site map
              Dim s As String = ""
              Dim nodeValues As String() = Nothing
              Dim temp As SiteMapNode = Nothing

              Do
                s = sr.ReadLine()

                If Not s Is Nothing Then
                  ' Build the various SiteMapNode objects and add
                  ' them to the ArrayList collections. The format used
                  ' is: URL,TITLE,DESCRIPTION,PARENTURL
                  nodeValues = s.Split(","c)

                  temp = New SiteMapNode(Me, _
                      HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                      HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                      nodeValues(1), _
                      nodeValues(2))

                  ' Is this a root node yet?
                  If aRootNode Is Nothing AndAlso _
                    (nodeValues(3) Is Nothing OrElse _
                     nodeValues(3) = String.Empty) Then
                    aRootNode = temp

                    ' If not the root node, add the node to the various collections.
                  Else

                    siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))

                    ' The parent node has already been added to the collection.
                    Dim parentNode As SiteMapNode = _
                        FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))

                    If Not (parentNode Is Nothing) Then
                      childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
                    Else
                      Throw New Exception("Parent node not found for current node.")
                    End If
                  End If
                End If
              Loop Until s Is Nothing
            Finally
              sr.Close()
            End Try
          Else
            Throw New Exception("File not found")
          End If
        End If
      End SyncLock
      Return
    End Sub 'LoadSiteMapFromStore
  End Class 'SimpleTextSiteMapProvider
End Namespace

using System;
using System.Configuration.Provider;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Security.Permissions;
using System.Web;

namespace Samples.AspNet.CS
{

  [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
  public class SimpleTextSiteMapProvider : SiteMapProvider
  {
    private SiteMapProvider parentSiteMapProvider = null;
    private string simpleTextProviderName = null;
    private string sourceFilename = null;
    private SiteMapNode rootNode = null;
    private ArrayList siteMapNodes = null;
    private ArrayList childParentRelationship = null;

    // A default constructor. The Name property is initialized in the
    // Initialize method.
    public SimpleTextSiteMapProvider()
    {
    }
    // Implement the CurrentNode property.
    public override SiteMapNode CurrentNode
    {
      get
      {
        string currentUrl = FindCurrentUrl();
        // Find the SiteMapNode that represents the current page.
        SiteMapNode currentNode = FindSiteMapNode(currentUrl);
        return currentNode;
      }
    }

    // Implement the RootNode property.
    public override SiteMapNode RootNode
    {
      get
      {
        return rootNode;
      }
    }
    // Implement the ParentProvider property.
    public override SiteMapProvider ParentProvider
    {
      get
      {
        return parentSiteMapProvider;
      }
      set
      {
        parentSiteMapProvider = value;
      }
    }

    // Implement the RootProvider property.
    public override SiteMapProvider RootProvider
    {
      get
      {
        // If the current instance belongs to a provider hierarchy, it
        // cannot be the RootProvider. Rely on the ParentProvider.
        if (this.ParentProvider != null)
        {
          return ParentProvider.RootProvider;
        }
        // If the current instance does not have a ParentProvider, it is
        // not a child in a hierarchy, and can be the RootProvider.
        else
        {
          return this;
        }
      }
    }
    // Implement the FindSiteMapNode method.
    public override SiteMapNode FindSiteMapNode(string rawUrl)
    {

      // Does the root node match the URL?
      if (RootNode.Url == rawUrl)
      {
        return RootNode;
      }
      else
      {
        SiteMapNode candidate = null;
        // Retrieve the SiteMapNode that matches the URL.
        lock (this)
        {
          candidate = GetNode(siteMapNodes, rawUrl);
        }
        return candidate;
      }
    }
    // Implement the GetChildNodes method.
    public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
    {
      SiteMapNodeCollection children = new SiteMapNodeCollection();
      // Iterate through the ArrayList and find all nodes that have the specified node as a parent.
      lock (this)
      {
        for (int i = 0; i < childParentRelationship.Count; i++)
        {

          string nodeUrl = ((DictionaryEntry)childParentRelationship[i]).Key as string;

          SiteMapNode parent = GetNode(childParentRelationship, nodeUrl);

          if (parent != null && node.Url == parent.Url)
          {
            // The SiteMapNode with the Url that corresponds to nodeUrl
            // is a child of the specified node. Get the SiteMapNode for
            // the nodeUrl.
            SiteMapNode child = FindSiteMapNode(nodeUrl);
            if (child != null)
            {
              children.Add(child as SiteMapNode);
            }
            else
            {
              throw new Exception("ArrayLists not in sync.");
            }
          }
        }
      }
      return children;
    }
    protected override SiteMapNode GetRootNodeCore()
    {
      return RootNode;
    }
    // Implement the GetParentNode method.
    public override SiteMapNode GetParentNode(SiteMapNode node)
    {
      // Check the childParentRelationship table and find the parent of the current node.
      // If there is no parent, the current node is the RootNode.
      SiteMapNode parent = null;
      lock (this)
      {
        // Get the Value of the node in childParentRelationship
        parent = GetNode(childParentRelationship, node.Url);
      }
      return parent;
    }

    // Implement the ProviderBase.Initialize property.
    // Initialize is used to initialize the state that the Provider holds, but
    // not actually build the site map.
    public override void Initialize(string name, NameValueCollection attributes)
    {

      lock (this)
      {

        base.Initialize(name, attributes);

        simpleTextProviderName = name;
        sourceFilename = attributes["siteMapFile"];
        siteMapNodes = new ArrayList();
        childParentRelationship = new ArrayList();

        // Build the site map in memory.
        LoadSiteMapFromStore();
      }
    }
    // Private helper methods

    private SiteMapNode GetNode(ArrayList list, string url)
    {
      for (int i = 0; i < list.Count; i++)
      {
        DictionaryEntry item = (DictionaryEntry)list[i];
        if ((string)item.Key == url)
          return item.Value as SiteMapNode;
      }
      return null;
    }

    // Get the URL of the currently displayed page.
    private string FindCurrentUrl()
    {
      try
      {
        // The current HttpContext.
        HttpContext currentContext = HttpContext.Current;
        if (currentContext != null)
        {
          return currentContext.Request.RawUrl;
        }
        else
        {
          throw new Exception("HttpContext.Current is Invalid");
        }
      }
      catch (Exception e)
      {
        throw new NotSupportedException("This provider requires a valid context.",e);
      }
    }
    protected virtual void LoadSiteMapFromStore()
    {
      string pathToOpen;

      lock (this)
      {
        // If a root node exists, LoadSiteMapFromStore has already
        // been called, and the method can return.
        if (rootNode != null)
        {
          return;
        }
        else
        {
          pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);

          if (File.Exists(pathToOpen))
          {
            // Open the file to read from.
            using (StreamReader sr = File.OpenText(pathToOpen))
            {

              // Clear the state of the collections and rootNode
              rootNode = null;
              siteMapNodes.Clear();
              childParentRelationship.Clear();

              // Parse the file and build the site map
              string s = "";
              string[] nodeValues = null;
              SiteMapNode temp = null;

              while ((s = sr.ReadLine()) != null)
              {

                // Build the various SiteMapNode objects and add
                // them to the ArrayList collections. The format used
                // is: URL,TITLE,DESCRIPTION,PARENTURL

                nodeValues = s.Split(',');

                temp = new SiteMapNode(this,
                    HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                    HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                    nodeValues[1],
                    nodeValues[2]);

                // Is this a root node yet?
                if (null == rootNode &&
                    (null == nodeValues[3] || nodeValues[3] == String.Empty))
                {
                  rootNode = temp;
                }

              // If not the root node, add the node to the various collections.
                else
                {
                  siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
                  // The parent node has already been added to the collection.
                  SiteMapNode parentNode =
                           FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
                  if (parentNode != null)
                  {
                    childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
                  }
                  else
                  {
                    throw new Exception("Parent node not found for current node.");
                  }
                }
              }
            }
          }
          else
          {
            throw new Exception("File not found");
          }
        }
      }
      return;
    }
  }

}

System.Web System.Web..::.SiteMapProviderSiteMapProvider

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 成员
System.Web 命名空间
SiteMapProvider
XmlSiteMapProvider

其他资源

ASP.NET 站点导航
ASP.NET 站点地图
ASP.NET 站点导航提供程序
保证 ASP.NET 站点导航的安全
使用程序集和全局程序集缓存


SiteMapProvider 成员

SiteMapProvider 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProvider 类

为所有站点地图数据提供程序提供公共基类，并为开发人员提供一条实现自定义站点地图数据提供程序的途径，这些提供程序可与 ASP.NET 站点地图基础结构一起用作 SiteMap 对象的持久存储区。

SiteMapProvider 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SiteMapProvider 类
System.Web 命名空间


SiteMapProvider 构造函数

SiteMapProvider 构造函数
SiteMapProvider 类

初始化 SiteMapProvider 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected SiteMapProvider()
protected:
SiteMapProvider()
new : unit -> SiteMapProvider
说明 说明

SiteMapProvider 类不直接进行实例化。SiteMapProvider 构造函数从派生自 StaticSiteMapProvider 类的类的构造函数中被调用。 SiteMapProvider 类不直接进行实例化。SiteMapProvider 构造函数从派生自 StaticSiteMapProvider 类的类的构造函数中被调用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间


SiteMapProvider 方法

SiteMapProvider 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProvider 类

SiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

SiteMapProvider 类
System.Web 命名空间


SiteMapProvider ..::.AddNode 方法

SiteMapProvider
.
.
::
.
AddNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProvider 类

将一个 SiteMapNode 对象添加到由站点地图提供程序维护的节点集合。

名称 说明
页首

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间


SiteMapProvider ..::.AddNode 方法 (SiteMapNode)

SiteMapProvider
.
.
::
.
AddNode 方法 (SiteMapNode)
SiteMapProvider 类

将一个 SiteMapNode 对象添加到由站点地图提供程序维护的节点集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overridable Sub AddNode ( _
    node As SiteMapNode _
)
protected virtual void AddNode(
    SiteMapNode node
)
protected:
virtual void AddNode(
    SiteMapNode^ node
)
abstract AddNode :
        node:SiteMapNode -> unit
override AddNode :
        node:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要添加到提供程序维护的节点集合的 SiteMapNode。

从 SiteMapProvider 类派生的类可以重写 AddNode 方法，并提供用于向站点地图提供程序维护的节点集合添加 SiteMapNode 对象的逻辑。AddNode 方法的默认实现将引发一个 NotImplementedException 异常。 从 SiteMapProvider 类派生的类可以重写 AddNode 方法，并提供用于向站点地图提供程序维护的节点集合添加 SiteMapNode 对象的逻辑。AddNode 方法的默认实现将引发一个 NotImplementedException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
AddNode 重载
System.Web 命名空间
AddNode
SiteMapNodeCollection
XmlSiteMapProvider


SiteMapProvider ..::.AddNode 方法 (SiteMapNode, SiteMapNode)

SiteMapProvider
.
.
::
.
AddNode 方法 (SiteMapNode, SiteMapNode)
SiteMapProvider 类

将一个 SiteMapNode 对象添加到由站点地图提供程序维护的节点集合并指定父 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overridable Sub AddNode ( _
    node As SiteMapNode, _
    parentNode As SiteMapNode _
)
protected internal virtual void AddNode(
    SiteMapNode node,
    SiteMapNode parentNode
)
protected public:
virtual void AddNode(
    SiteMapNode^ node,
    SiteMapNode^ parentNode
)
abstract AddNode :
        node:SiteMapNode *
        parentNode:SiteMapNode -> unit
override AddNode :
        node:SiteMapNode *
        parentNode:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要添加到提供程序维护的节点集合的 SiteMapNode。
parentNode
类型： System.Web SiteMapNode
作为 node 的父节点的 SiteMapNode。
异常 | 条件
NotImplementedException | 在所有情况下。

从 SiteMapProvider 类派生的类可以重写 AddNode 方法，并提供用于向站点地图提供程序维护的节点集合添加具有指定父节点的 SiteMapNode 对象的逻辑。例如，XmlSiteMapProvider..::.AddNode 方法将 node 指定的 SiteMapNode 对象添加到 XmlSiteMapProvider 对象维护的 SiteMapNodeCollection 集合，并创建 node 和 parentNode 指定的 SiteMapNode 对象之间的父/子关系。AddNode 方法的默认实现将引发一个 NotImplementedException 异常。 从 SiteMapProvider 类派生的类可以重写 AddNode 方法，并提供用于向站点地图提供程序维护的节点集合添加具有指定父节点的 SiteMapNode 对象的逻辑。例如，XmlSiteMapProvider..::.AddNode 方法将 node 指定的 SiteMapNode 对象添加到 XmlSiteMapProvider 对象维护的 SiteMapNodeCollection 集合，并创建 node 和 parentNode 指定的 SiteMapNode 对象之间的父/子关系。AddNode 方法的默认实现将引发一个 NotImplementedException 异常。 从 SiteMapProvider 类派生的类可以重写 AddNode 方法，并提供用于向站点地图提供程序维护的节点集合添加具有指定父节点的 SiteMapNode 对象的逻辑。例如，XmlSiteMapProvider..::.AddNode 方法将 node 指定的 SiteMapNode 对象添加到 XmlSiteMapProvider 对象维护的 SiteMapNodeCollection 集合，并创建 node 和 parentNode 指定的 SiteMapNode 对象之间的父/子关系。AddNode 方法的默认实现将引发一个 NotImplementedException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
AddNode 重载
System.Web 命名空间
AddNode
SiteMapNodeCollection
XmlSiteMapProvider


SiteMapProvider ..::.FindSiteMapNode 方法

SiteMapProvider
.
.
::
.
FindSiteMapNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProvider 类

当在派生类中被重写时，将检索表示某个页的 SiteMapNode 对象。

名称 说明
页首

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间


SiteMapProvider ..::.FindSiteMapNode 方法 (HttpContext)

SiteMapProvider
.
.
::
.
FindSiteMapNode 方法 (HttpContext)
SiteMapProvider 类

使用指定的 HttpContext 对象检索表示当前请求页的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function FindSiteMapNode ( _
    context As HttpContext _
) As SiteMapNode
public virtual SiteMapNode FindSiteMapNode(
    HttpContext context
)
public:
virtual SiteMapNode^ FindSiteMapNode(
    HttpContext^ context
)
abstract FindSiteMapNode :
        context:HttpContext -> SiteMapNode
override FindSiteMapNode :
        context:HttpContext -> SiteMapNode

参数

context
类型： System.Web HttpContext
用于使节点信息与被请求页的 URL 匹配的 HttpContext。

返回值

类型： System.Web SiteMapNode
表示当前请求页的 SiteMapNode；如果在 SiteMapNode 中未找到对应的 SiteMapNode，或者页上下文为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

FindSiteMapNode 方法调用抽象 FindSiteMapNode 方法，以便根据请求的原始 URL 或虚拟路径检索当前请求页的 SiteMapNode 对象。如果在 SiteMap 中未找到对应的 SiteMapNode，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 FindSiteMapNode 方法调用抽象 FindSiteMapNode 方法，以便根据请求的原始 URL 或虚拟路径检索当前请求页的 SiteMapNode 对象。如果在 SiteMap 中未找到对应的 SiteMapNode，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

默认情况下，FindSiteMapNode 方法不检查用户是否可以访问 SiteMapNode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
FindSiteMapNode 重载
System.Web 命名空间
FindSiteMapNode


SiteMapProvider ..::.FindSiteMapNode 方法 (String)

SiteMapProvider
.
.
::
.
FindSiteMapNode 方法 (String)
SiteMapProvider 类

当在派生类中被重写时，将检索表示位于指定 URL 的页的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function FindSiteMapNode ( _
    rawUrl As String _
) As SiteMapNode
public abstract SiteMapNode FindSiteMapNode(
    string rawUrl
)
public:
virtual SiteMapNode^ FindSiteMapNode(
    String^ rawUrl
) abstract
abstract FindSiteMapNode :
        rawUrl:string -> SiteMapNode

参数

rawUrl
类型： System String
标识要为其检索 SiteMapNode 的页的 URL。

返回值

类型： System.Web SiteMapNode
表示由 rawURL 标识的页的 SiteMapNode；如果未找到对应的 SiteMapNode，或者如果启用了安全修整并且不能为当前用户返回 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

从 SiteMapProvider 类派生的类必须实现抽象 FindSiteMapNode 方法。

所提供的 URL 可以是虚拟 URL 或绝对 URL。还可以是使用与应用程序相关的语法的 URL，如 ~/apprelativedirectory。请确保 FindSiteMapNode 方法的任何实现都正确地分析和处理与应用程序相关的语法。 所提供的 URL 可以是虚拟 URL 或绝对 URL。还可以是使用与应用程序相关的语法的 URL，如 ~/apprelativedirectory。请确保 FindSiteMapNode 方法的任何实现都正确地分析和处理与应用程序相关的语法。 所提供的 URL 可以是虚拟 URL 或绝对 URL。还可以是使用与应用程序相关的语法的 URL，如 ~/apprelativedirectory。请确保 FindSiteMapNode 方法的任何实现都正确地分析和处理与应用程序相关的语法。

XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，使用 SiteMapNode 对象的 URL 作为类所维护的各种集合中的键。因此，如果 SiteMapNode 提供 URL，则该 URL 在站点地图提供程序的范围内必须是唯一的。如果未提供 URL，则生成一个唯一标识符来标识 SiteMapNode。 XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，使用 SiteMapNode 对象的 URL 作为类所维护的各种集合中的键。因此，如果 SiteMapNode 提供 URL，则该 URL 在站点地图提供程序的范围内必须是唯一的。如果未提供 URL，则生成一个唯一标识符来标识 SiteMapNode。 XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，使用 SiteMapNode 对象的 URL 作为类所维护的各种集合中的键。因此，如果 SiteMapNode 提供 URL，则该 URL 在站点地图提供程序的范围内必须是唯一的。如果未提供 URL，则生成一个唯一标识符来标识 SiteMapNode。

对继承者的说明

当在派生类中重写 FindSiteMapNode 方法时，如果提供程序在当前站点地图中未找到与 URL 匹配的 SiteMapNode 对象，并且该提供程序支持子提供程序，则确保将搜索扩展到所有子提供程序。

下面的代码示例演示如何在一个类中实现 FindSiteMapNode 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 使用一个名为 FindUrl 的帮助器方法从 HttpContext 对象获取当前显示页的 URL。 下面的代码示例演示如何在一个类中实现 FindSiteMapNode 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 使用一个名为 FindUrl 的帮助器方法从 HttpContext 对象获取当前显示页的 URL。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Implement the FindSiteMapNode method.
Public Overrides Function FindSiteMapNode(ByVal rawUrl As String) As SiteMapNode
  ' Does the root node match the URL?
  If RootNode.Url = rawUrl Then
    Return RootNode
  Else
    Dim candidate As SiteMapNode = Nothing
    ' Retrieve the SiteMapNode that matches the URL.
    SyncLock Me
      candidate = GetNode(siteMapNodes, rawUrl)
    End SyncLock
    Return candidate
  End If
End Function 'FindSiteMapNode

// Implement the FindSiteMapNode method.
public override SiteMapNode FindSiteMapNode(string rawUrl)
{

  // Does the root node match the URL?
  if (RootNode.Url == rawUrl)
  {
    return RootNode;
  }
  else
  {
    SiteMapNode candidate = null;
    // Retrieve the SiteMapNode that matches the URL.
    lock (this)
    {
      candidate = GetNode(siteMapNodes, rawUrl);
    }
    return candidate;
  }
}

    Private Function GetNode(ByVal list As ArrayList, ByVal url As String) As SiteMapNode
      Dim i As Integer
      For i = 0 To list.Count - 1
        Dim item As DictionaryEntry = CType(list(i), DictionaryEntry)
        If CStr(item.Key) = url Then
          Return CType(item.Value, SiteMapNode)
        End If
      Next i
      Return Nothing
    End Function 'GetNode

    ' Get the URL of the currently displayed page.
    Private Function FindCurrentUrl() As String
      Try
        ' The current HttpContext.
        Dim currentContext As HttpContext = HttpContext.Current
        If Not (currentContext Is Nothing) Then
          Return currentContext.Request.RawUrl
        Else
          Throw New Exception("HttpContext.Current is Invalid")
        End If
      Catch e As Exception
        Throw New NotSupportedException("This provider requires a valid context.", e)
      End Try
    End Function 'FindCurrentUrl

private SiteMapNode GetNode(ArrayList list, string url)
{
  for (int i = 0; i < list.Count; i++)
  {
    DictionaryEntry item = (DictionaryEntry)list[i];
    if ((string)item.Key == url)
      return item.Value as SiteMapNode;
  }
  return null;
}

// Get the URL of the currently displayed page.
private string FindCurrentUrl()
{
  try
  {
    // The current HttpContext.
    HttpContext currentContext = HttpContext.Current;
    if (currentContext != null)
    {
      return currentContext.Request.RawUrl;
    }
    else
    {
      throw new Exception("HttpContext.Current is Invalid");
    }
  }
  catch (Exception e)
  {
    throw new NotSupportedException("This provider requires a valid context.",e);
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
FindSiteMapNode 重载
System.Web 命名空间
CurrentNode
FindSiteMapNode


SiteMapProvider ..::.FindSiteMapNodeFromKey 方法

SiteMapProvider
.
.
::
.
FindSiteMapNodeFromKey 方法
SiteMapProvider 类

根据指定的键检索 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function FindSiteMapNodeFromKey ( _
    key As String _
) As SiteMapNode
public virtual SiteMapNode FindSiteMapNodeFromKey(
    string key
)
public:
virtual SiteMapNode^ FindSiteMapNodeFromKey(
    String^ key
)
abstract FindSiteMapNodeFromKey :
        key:string -> SiteMapNode
override FindSiteMapNodeFromKey :
        key:string -> SiteMapNode

参数

key
类型： System String
用于创建 SiteMapNode 的查找键。

返回值

类型： System.Web SiteMapNode
SiteMapNode，它表示由 key 标识的页；否则，如果未找到相应的 SiteMapNode，或如果启用了安全修整，且无法为当前用户返回 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。默认为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 SiteMapNode，它表示由 key 标识的页；否则，如果未找到相应的 SiteMapNode，或如果启用了安全修整，且无法为当前用户返回 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。默认为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SiteMapProvider 实现在所有情况下均返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。从 SiteMapProvider 类派生的类可以重写 FindSiteMapNodeFromKey 方法，以提供基于唯一键（而不是 FindSiteMapNode 方法所使用的 URL）的查找功能。如果您的站点地图提供程序实现使用 SiteMapNode 对象的 SiteMapNode..::.Key 属性作为站点地图结构中的主要标识符，请实现 FindSiteMapNodeFromKey 方法。 SiteMapProvider 实现在所有情况下均返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。从 SiteMapProvider 类派生的类可以重写 FindSiteMapNodeFromKey 方法，以提供基于唯一键（而不是 FindSiteMapNode 方法所使用的 URL）的查找功能。如果您的站点地图提供程序实现使用 SiteMapNode 对象的 SiteMapNode..::.Key 属性作为站点地图结构中的主要标识符，请实现 FindSiteMapNodeFromKey 方法。 SiteMapProvider 实现在所有情况下均返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。从 SiteMapProvider 类派生的类可以重写 FindSiteMapNodeFromKey 方法，以提供基于唯一键（而不是 FindSiteMapNode 方法所使用的 URL）的查找功能。如果您的站点地图提供程序实现使用 SiteMapNode 对象的 SiteMapNode..::.Key 属性作为站点地图结构中的主要标识符，请实现 FindSiteMapNodeFromKey 方法。

StaticSiteMapProvider 类提供一个实现，该实现处理未定义 URL 的站点地图节点的搜索。

XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，使用 SiteMapNode 的 URL 作为类所维护的各种集合中的键。因此，如果节点提供 URL，则该 URL 在站点地图提供程序的范围内必须是唯一的。如果未提供 URL，则生成一个唯一标识符来标识 SiteMapNode。 XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，使用 SiteMapNode 的 URL 作为类所维护的各种集合中的键。因此，如果节点提供 URL，则该 URL 在站点地图提供程序的范围内必须是唯一的。如果未提供 URL，则生成一个唯一标识符来标识 SiteMapNode。 XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，使用 SiteMapNode 的 URL 作为类所维护的各种集合中的键。因此，如果节点提供 URL，则该 URL 在站点地图提供程序的范围内必须是唯一的。如果未提供 URL，则生成一个唯一标识符来标识 SiteMapNode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
FindSiteMapNode


SiteMapProvider ..::.GetChildNodes 方法

SiteMapProvider
.
.
::
.
GetChildNodes 方法
SiteMapProvider 类

当在派生类中被重写时，将检索特定 SiteMapNode 的子节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetChildNodes ( _
    node As SiteMapNode _
) As SiteMapNodeCollection
public abstract SiteMapNodeCollection GetChildNodes(
    SiteMapNode node
)
public:
virtual SiteMapNodeCollection^ GetChildNodes(
    SiteMapNode^ node
) abstract
abstract GetChildNodes :
        node:SiteMapNode -> SiteMapNodeCollection

参数

node
类型： System.Web SiteMapNode
要检索其所有子节点的 SiteMapNode。

返回值

类型： System.Web SiteMapNodeCollection
包含指定 SiteMapNode 的直接子节点的只读 SiteMapNodeCollection；如果不存在子节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空集合。

从 SiteMapProvider 类派生的类必须实现抽象 GetChildNodes 方法。

对继承者的说明

当在派生类中重写 GetChildNodes 方法时，请确保在子节点上执行安全修整，并确保返回的集合是只读的。该集合仅包含指定 node 的直接子节点。 当在派生类中重写 GetChildNodes 方法时，请确保在子节点上执行安全修整，并确保返回的集合是只读的。该集合仅包含指定 node 的直接子节点。

下面的代码示例演示如何在一个类中实现 GetChildNodes 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 在一个 Hashtable 对象中存储层次父/子关系，在另一个对象中存储所有 SiteMapNode 对象。GetChildNodes 同时使用这两个 ArrayList 对象执行逆向查找。 下面的代码示例演示如何在一个类中实现 GetChildNodes 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 在一个 Hashtable 对象中存储层次父/子关系，在另一个对象中存储所有 SiteMapNode 对象。GetChildNodes 同时使用这两个 ArrayList 对象执行逆向查找。 下面的代码示例演示如何在一个类中实现 GetChildNodes 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 在一个 Hashtable 对象中存储层次父/子关系，在另一个对象中存储所有 SiteMapNode 对象。GetChildNodes 同时使用这两个 ArrayList 对象执行逆向查找。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Implement the GetChildNodes method.
Public Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection
  Dim children As New SiteMapNodeCollection()
  ' Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  SyncLock Me
    Dim i As Integer
    For i = 0 To childParentRelationship.Count - 1

      Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry)
      Dim nodeUrl As String = CType(de.Key, String)

      Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl)

      If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then
        ' The SiteMapNode with the Url that corresponds to nodeUrl
        ' is a child of the specified node. Get the SiteMapNode for
        ' the nodeUrl.
        Dim child As SiteMapNode = FindSiteMapNode(nodeUrl)
        If Not (child Is Nothing) Then
          children.Add(CType(child, SiteMapNode))
        Else
          Throw New Exception("ArrayLists not in sync.")
        End If
      End If
    Next i
  End SyncLock
  Return children
End Function 'GetChildNodes

Protected Overrides Function GetRootNodeCore() As SiteMapNode
  Return RootNode
End Function ' GetRootNodeCore()

' Implement the GetParentNode method.
Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode
  ' Check the childParentRelationship table and find the parent of the current node.
  ' If there is no parent, the current node is the RootNode.
  Dim parent As SiteMapNode = Nothing
  SyncLock Me
    ' Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url)
  End SyncLock
  Return parent
End Function 'GetParentNode

// Implement the GetChildNodes method.
public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
  SiteMapNodeCollection children = new SiteMapNodeCollection();
  // Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  lock (this)
  {
    for (int i = 0; i < childParentRelationship.Count; i++)
    {

      string nodeUrl = ((DictionaryEntry)childParentRelationship[i]).Key as string;

      SiteMapNode parent = GetNode(childParentRelationship, nodeUrl);

      if (parent != null && node.Url == parent.Url)
      {
        // The SiteMapNode with the Url that corresponds to nodeUrl
        // is a child of the specified node. Get the SiteMapNode for
        // the nodeUrl.
        SiteMapNode child = FindSiteMapNode(nodeUrl);
        if (child != null)
        {
          children.Add(child as SiteMapNode);
        }
        else
        {
          throw new Exception("ArrayLists not in sync.");
        }
      }
    }
  }
  return children;
}
protected override SiteMapNode GetRootNodeCore()
{
  return RootNode;
}
// Implement the GetParentNode method.
public override SiteMapNode GetParentNode(SiteMapNode node)
{
  // Check the childParentRelationship table and find the parent of the current node.
  // If there is no parent, the current node is the RootNode.
  SiteMapNode parent = null;
  lock (this)
  {
    // Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url);
  }
  return parent;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetParentNode


SiteMapProvider ..::.GetCurrentNodeAndHintAncestorNodes 方法

SiteMapProvider
.
.
::
.
GetCurrentNodeAndHintAncestorNodes 方法
SiteMapProvider 类

在站点地图提供程序检索当前请求页的节点并获取当前页的父和祖先站点地图节点时，为其提供经优化的查找方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetCurrentNodeAndHintAncestorNodes ( _
    upLevel As Integer _
) As SiteMapNode
public virtual SiteMapNode GetCurrentNodeAndHintAncestorNodes(
    int upLevel
)
public:
virtual SiteMapNode^ GetCurrentNodeAndHintAncestorNodes(
    int upLevel
)
abstract GetCurrentNodeAndHintAncestorNodes :
        upLevel:int -> SiteMapNode
override GetCurrentNodeAndHintAncestorNodes :
        upLevel:int -> SiteMapNode

参数

upLevel
类型： System Int32
要获取的祖先站点地图节点的代数。值为 -1 指示提供程序可检索和缓存所有祖先节点。 要获取的祖先站点地图节点的代数。值为 -1 指示提供程序可检索和缓存所有祖先节点。

返回值

类型： System.Web SiteMapNode
表示当前请求页的 SiteMapNode；否则，如果没有找到或不能为当前用户返回 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentOutOfRangeException | upLevel 小于 -1。

GetCurrentNodeAndHintAncestorNodes 方法的默认实现返回 CurrentNode 属性；然而，站点地图提供程序可以重写 GetCurrentNodeAndHintAncestorNodes 方法并提供一种经优化的实现，该实现使用自定义的缓存机制来返回当前 SiteMapNode 以及父节点的父和祖先节点。

upLevel 参数用于指定要检索多少个层次的父节点和祖先节点。如果愿意，可以使用 ParentNode 属性将父节点和祖先节点链接到 GetCurrentNodeAndHintAncestorNodes 方法返回的 SiteMapNode 对象。 upLevel 参数用于指定要检索多少个层次的父节点和祖先节点。如果愿意，可以使用 ParentNode 属性将父节点和祖先节点链接到 GetCurrentNodeAndHintAncestorNodes 方法返回的 SiteMapNode 对象。

XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，它将整个站点地图缓存在内存中，这样在查询特定 SiteMapNode 对象的 XmlSiteMapProvider 时，很少甚至几乎不产生开销。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetCurrentNodeAndHintNeighborhoodNodes


SiteMapProvider ..::.GetCurrentNodeAndHintNeighborhoodNodes 方法

SiteMapProvider
.
.
::
.
GetCurrentNodeAndHintNeighborhoodNodes 方法
SiteMapProvider 类

在站点地图提供程序检索当前请求页的节点并获取当前节点附近的站点地图节点时，为其提供经优化的查找方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetCurrentNodeAndHintNeighborhoodNodes ( _
    upLevel As Integer, _
    downLevel As Integer _
) As SiteMapNode
public virtual SiteMapNode GetCurrentNodeAndHintNeighborhoodNodes(
    int upLevel,
    int downLevel
)
public:
virtual SiteMapNode^ GetCurrentNodeAndHintNeighborhoodNodes(
    int upLevel,
    int downLevel
)
abstract GetCurrentNodeAndHintNeighborhoodNodes :
        upLevel:int *
        downLevel:int -> SiteMapNode
override GetCurrentNodeAndHintNeighborhoodNodes :
        upLevel:int *
        downLevel:int -> SiteMapNode

参数

upLevel
类型： System Int32
要获取的祖先 SiteMapNode 的代数。0 指示不检索祖先节点，-1 指示提供程序可检索和缓存所有祖先节点。 要获取的祖先 SiteMapNode 的代数。0 指示不检索祖先节点，-1 指示提供程序可检索和缓存所有祖先节点。
downLevel
类型： System Int32
要获取的子 SiteMapNode 的代数。0 指示不检索子代节点，-1 指示提供程序可检索和缓存所有子代节点。 要获取的子 SiteMapNode 的代数。0 指示不检索子代节点，-1 指示提供程序可检索和缓存所有子代节点。

返回值

类型： System.Web SiteMapNode
表示当前请求页的 SiteMapNode；否则，如果没有找到或不能为当前用户返回 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentOutOfRangeException | upLevel 或 downLevel 小于 -1。

GetCurrentNodeAndHintNeighborhoodNodes 方法的默认实现返回 CurrentNode 属性；但是，站点地图提供程序可以重写 GetCurrentNodeAndHintNeighborhoodNodes 方法并提供优化的实现，该实现使用自定义缓存机制来返回当前 SiteMapNode 对象，以及位于当前 SiteMapNode 附近的 SiteMapNode 对象。

upLevel 参数用于指定要与其直接子节点一起检索和缓存的父节点和祖先节点的层次数。downLevel 参数用于指定要从当前 SiteMapNode 检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性，将祖先和子代节点链接到 upLevel 参数用于指定要与其直接子节点一起检索和缓存的父节点和祖先节点的层次数。downLevel 参数用于指定要从当前 SiteMapNode 检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性，将祖先和子代节点链接到 upLevel 参数用于指定要与其直接子节点一起检索和缓存的父节点和祖先节点的层次数。downLevel 参数用于指定要从当前 SiteMapNode 检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性，将祖先和子代节点链接到

GetCurrentNodeAndHintNeighborhoodNodes 方法返回的 SiteMapNode。如果祖先或子节点层次数少于 upLevel 或 downLevel 所指定的层次数，则仅检索可用的层次。 GetCurrentNodeAndHintNeighborhoodNodes 方法返回的 SiteMapNode。如果祖先或子节点层次数少于 upLevel 或 downLevel 所指定的层次数，则仅检索可用的层次。

XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序，它将整个站点地图缓存在内存中，这样在查询特定 SiteMapNode 对象的 XmlSiteMapProvider 时，很少甚至几乎不产生开销。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetCurrentNodeAndHintAncestorNodes


SiteMapProvider ..::.GetParentNode 方法

SiteMapProvider
.
.
::
.
GetParentNode 方法
SiteMapProvider 类

当在派生类中被重写时，将检索特定 SiteMapNode 对象的父节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function GetParentNode ( _ node As SiteMapNode _ ) As SiteMapNode
public abstract SiteMapNode GetParentNode( SiteMapNode node )
public: virtual SiteMapNode^ GetParentNode( SiteMapNode^ node ) abstract
abstract GetParentNode : node:SiteMapNode -> SiteMapNode
参数
node
类型： System.Web SiteMapNode
要为其检索父节点的
SiteMapNode
。
返回值
类型： System.Web SiteMapNode
表示
node
的父节点的
SiteMapNode
；如果
SiteMapNode
没有父节点或启用了安全修整且当前用户不能访问父节点，则为
null
Nothing
nullptr
null 引用（在 Visual Basic 中为
Nothing
）
。
说明
如果父节点属于另一个提供者，
GetParentNode
也可能返回
null
Nothing
nullptr
null 引用（在 Visual Basic 中为
Nothing
）
。
在这种情况下，应改用
node
的
ParentNode
属性。
如果父节点属于另一个提供者，
GetParentNode
也可能返回
null
Nothing
nullptr
null 引用（在 Visual Basic 中为
Nothing
）
。
在这种情况下，应改用
node
的
ParentNode
属性。

下面的代码示例演示如何在一个类中实现 GetParentNode 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 将 SiteMapNode 对象之间的层次父/子关系存储在 IList 接口（如 ArrayList 对象）中。 下面的代码示例演示如何在一个类中实现 GetParentNode 方法，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 将 SiteMapNode 对象之间的层次父/子关系存储在 IList 接口（如 ArrayList 对象）中。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Implement the GetChildNodes method.
Public Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection
  Dim children As New SiteMapNodeCollection()
  ' Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  SyncLock Me
    Dim i As Integer
    For i = 0 To childParentRelationship.Count - 1

      Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry)
      Dim nodeUrl As String = CType(de.Key, String)

      Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl)

      If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then
        ' The SiteMapNode with the Url that corresponds to nodeUrl
        ' is a child of the specified node. Get the SiteMapNode for
        ' the nodeUrl.
        Dim child As SiteMapNode = FindSiteMapNode(nodeUrl)
        If Not (child Is Nothing) Then
          children.Add(CType(child, SiteMapNode))
        Else
          Throw New Exception("ArrayLists not in sync.")
        End If
      End If
    Next i
  End SyncLock
  Return children
End Function 'GetChildNodes

Protected Overrides Function GetRootNodeCore() As SiteMapNode
  Return RootNode
End Function ' GetRootNodeCore()

' Implement the GetParentNode method.
Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode
  ' Check the childParentRelationship table and find the parent of the current node.
  ' If there is no parent, the current node is the RootNode.
  Dim parent As SiteMapNode = Nothing
  SyncLock Me
    ' Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url)
  End SyncLock
  Return parent
End Function 'GetParentNode

// Implement the GetChildNodes method.
public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
  SiteMapNodeCollection children = new SiteMapNodeCollection();
  // Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  lock (this)
  {
    for (int i = 0; i < childParentRelationship.Count; i++)
    {

      string nodeUrl = ((DictionaryEntry)childParentRelationship[i]).Key as string;

      SiteMapNode parent = GetNode(childParentRelationship, nodeUrl);

      if (parent != null && node.Url == parent.Url)
      {
        // The SiteMapNode with the Url that corresponds to nodeUrl
        // is a child of the specified node. Get the SiteMapNode for
        // the nodeUrl.
        SiteMapNode child = FindSiteMapNode(nodeUrl);
        if (child != null)
        {
          children.Add(child as SiteMapNode);
        }
        else
        {
          throw new Exception("ArrayLists not in sync.");
        }
      }
    }
  }
  return children;
}
protected override SiteMapNode GetRootNodeCore()
{
  return RootNode;
}
// Implement the GetParentNode method.
public override SiteMapNode GetParentNode(SiteMapNode node)
{
  // Check the childParentRelationship table and find the parent of the current node.
  // If there is no parent, the current node is the RootNode.
  SiteMapNode parent = null;
  lock (this)
  {
    // Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url);
  }
  return parent;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetChildNodes


SiteMapProvider ..::.GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法

SiteMapProvider
.
.
::
.
GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法
SiteMapProvider 类

在站点地图提供程序检索当前请求页的祖先节点并获取其子代节点时，为其提供经优化的查找方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetParentNodeRelativeToCurrentNodeAndHintDownFromParent ( _
    walkupLevels As Integer, _
    relativeDepthFromWalkup As Integer _
) As SiteMapNode
public virtual SiteMapNode GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(
    int walkupLevels,
    int relativeDepthFromWalkup
)
public:
virtual SiteMapNode^ GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(
    int walkupLevels,
    int relativeDepthFromWalkup
)
abstract GetParentNodeRelativeToCurrentNodeAndHintDownFromParent :
        walkupLevels:int *
        relativeDepthFromWalkup:int -> SiteMapNode
override GetParentNodeRelativeToCurrentNodeAndHintDownFromParent :
        walkupLevels:int *
        relativeDepthFromWalkup:int -> SiteMapNode

参数

walkupLevels
类型： System Int32
在检索请求的祖先节点时要遍历的祖先节点的层次数。
relativeDepthFromWalkup
类型： System Int32
要从目标祖先节点检索的子代节点的层次数。

返回值

类型： System.Web SiteMapNode
表示当前请求页的祖先 SiteMapNode 的 SiteMapNode；如果未找到或无法为当前用户返回当前或祖先 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentOutOfRangeException | walkupLevels 或 relativeDepthFromWalkup 小于 0。

SiteMapProvider 类的默认实现提供 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法的未经优化的实现，该实现调用 GetCurrentNodeAndHintAncestorNodes 和 HintNeighborhoodNodes 方法；然而，站点地图提供程序可以重写 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法并提供经优化的实现，该实现使用自定义的缓存机制来返回祖先节点并执行其他 SiteMapNode 对象的经优化的查找。

walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法返回的 SiteMapNode。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法返回的 SiteMapNode。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法返回的 SiteMapNode。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法返回的 SiteMapNode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetParentNodeRelativeToNodeAndHintDownFromParent


SiteMapProvider ..::.GetParentNodeRelativeToNodeAndHintDownFromParent 方法

SiteMapProvider
.
.
::
.
GetParentNodeRelativeToNodeAndHintDownFromParent 方法
SiteMapProvider 类

在站点地图提供程序检索指定 SiteMapNode 对象的祖先节点并获取其子节点时，为其提供经优化的查找方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function GetParentNodeRelativeToNodeAndHintDownFromParent ( _
    node As SiteMapNode, _
    walkupLevels As Integer, _
    relativeDepthFromWalkup As Integer _
) As SiteMapNode
public virtual SiteMapNode GetParentNodeRelativeToNodeAndHintDownFromParent(
    SiteMapNode node,
    int walkupLevels,
    int relativeDepthFromWalkup
)
public:
virtual SiteMapNode^ GetParentNodeRelativeToNodeAndHintDownFromParent(
    SiteMapNode^ node,
    int walkupLevels,
    int relativeDepthFromWalkup
)
abstract GetParentNodeRelativeToNodeAndHintDownFromParent :
        node:SiteMapNode *
        walkupLevels:int *
        relativeDepthFromWalkup:int -> SiteMapNode
override GetParentNodeRelativeToNodeAndHintDownFromParent :
        node:SiteMapNode *
        walkupLevels:int *
        relativeDepthFromWalkup:int -> SiteMapNode

参数

node
类型： System.Web SiteMapNode
SiteMapNode，用作 walkupLevels 和 relativeDepthFromWalkup 的参考点。
walkupLevels
类型： System Int32
在检索请求的祖先节点时要遍历的祖先节点的层次数。
relativeDepthFromWalkup
类型： System Int32
要从目标祖先节点检索的子代节点的层次数。

返回值

类型： System.Web SiteMapNode
表示 node 的祖先的 SiteMapNode；如果未找到或者无法为当前用户返回当前或祖先 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentOutOfRangeException | 为 walkupLevels 或 relativeDepthFromWalkup 指定的值小于 0。
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SiteMapProvider 类的默认实现提供 GetParentNodeRelativeToNodeAndHintDownFromParent 方法的未经优化的实现，该实现调用 HintAncestorNodes 和 HintNeighborhoodNodes 方法；然而，站点地图提供程序可以重写 GetParentNodeRelativeToNodeAndHintDownFromParent 方法并提供经优化的实现，该实现使用自定义的缓存机制来返回祖先节点并执行其他 SiteMapNode 对象的经优化的查找。GetParentNodeRelativeToNodeAndHintDownFromParent 方法与 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法非常相似。 SiteMapProvider 类的默认实现提供 GetParentNodeRelativeToNodeAndHintDownFromParent 方法的未经优化的实现，该实现调用 HintAncestorNodes 和 HintNeighborhoodNodes 方法；然而，站点地图提供程序可以重写 GetParentNodeRelativeToNodeAndHintDownFromParent 方法并提供经优化的实现，该实现使用自定义的缓存机制来返回祖先节点并执行其他 SiteMapNode 对象的经优化的查找。GetParentNodeRelativeToNodeAndHintDownFromParent 方法与 GetParentNodeRelativeToCurrentNodeAndHintDownFromParent 方法非常相似。

walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToNodeAndHintDownFromParent 方法返回的 SiteMapNode。如果存在的祖先节点层次少于 upLevel 参数指定的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如何处理可用子代节点层次数少于 downLevel 参数指定的值的情况由提供程序实施者决定。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToNodeAndHintDownFromParent 方法返回的 SiteMapNode。如果存在的祖先节点层次少于 upLevel 参数指定的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如何处理可用子代节点层次数少于 downLevel 参数指定的值的情况由提供程序实施者决定。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToNodeAndHintDownFromParent 方法返回的 SiteMapNode。如果存在的祖先节点层次少于 upLevel 参数指定的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如何处理可用子代节点层次数少于 downLevel 参数指定的值的情况由提供程序实施者决定。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToNodeAndHintDownFromParent 方法返回的 SiteMapNode。如果存在的祖先节点层次少于 upLevel 参数指定的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如何处理可用子代节点层次数少于 downLevel 参数指定的值的情况由提供程序实施者决定。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToNodeAndHintDownFromParent 方法返回的 SiteMapNode。如果存在的祖先节点层次少于 upLevel 参数指定的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如何处理可用子代节点层次数少于 downLevel 参数指定的值的情况由提供程序实施者决定。 walkupLevels 参数用于指定在检索目标节点时要遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。downLevel 参数用于指定要从目标祖先节点检索多少个层次的子代节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 GetParentNodeRelativeToNodeAndHintDownFromParent 方法返回的 SiteMapNode。如果存在的祖先节点层次少于 upLevel 参数指定的层次，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如何处理可用子代节点层次数少于 downLevel 参数指定的值的情况由提供程序实施者决定。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetParentNodeRelativeToCurrentNodeAndHintDownFromParent


SiteMapProvider ..::.GetRootNodeCore 方法

SiteMapProvider
.
.
::
.
GetRootNodeCore 方法
SiteMapProvider 类

当在派生类中被重写时，将检索目前由当前提供者管理的所有节点的根节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend MustOverride Function GetRootNodeCore As SiteMapNode
protected internal abstract SiteMapNode GetRootNodeCore()
protected public:
virtual SiteMapNode^ GetRootNodeCore() abstract
abstract GetRootNodeCore : unit -> SiteMapNode

返回值

类型： System.Web SiteMapNode
SiteMapNode，表示当前提供程序所管理的节点集的根节点。

GetRootNodeCore 方法使提供程序层次结构中的父提供程序能够获得一个 SiteMapNode 对象，该对象作为构建提供程序层次结构和较大站点地图节点层次结构（它是每个提供程序管理的站点地图数据的总和）的参考框架。

Protected Overrides Function GetRootNodeCore() As SiteMapNode
  Return RootNode
End Function ' GetRootNodeCore()

protected override SiteMapNode GetRootNodeCore()
{
  return RootNode;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetRootNodeCoreFromProvider


SiteMapProvider ..::.GetRootNodeCoreFromProvider 方法

SiteMapProvider
.
.
::
.
GetRootNodeCoreFromProvider 方法
SiteMapProvider 类

检索当前由指定的站点地图提供程序管理的所有节点的根节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Shared Function GetRootNodeCoreFromProvider ( _
    provider As SiteMapProvider _
) As SiteMapNode
protected static SiteMapNode GetRootNodeCoreFromProvider(
    SiteMapProvider provider
)
protected:
static SiteMapNode^ GetRootNodeCoreFromProvider(
    SiteMapProvider^ provider
)
static member GetRootNodeCoreFromProvider :
        provider:SiteMapProvider -> SiteMapNode

参数

provider
类型： System.Web SiteMapProvider
调用 GetRootNodeCore 的提供程序。

返回值

类型： System.Web SiteMapNode
SiteMapNode，表示 provider 所管理的节点集的根节点。

默认实现对指定的 provider 调用抽象 GetRootNodeCore 方法。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetRootNodeCore


SiteMapProvider ..::.HintAncestorNodes 方法

SiteMapProvider
.
.
::
.
HintAncestorNodes 方法
SiteMapProvider 类

提供一个方法，站点地图提供程序重写该方法来执行相对于指定 SiteMapNode 对象的一个或多个层次的父和祖先节点的经优化的检索。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub HintAncestorNodes ( _
    node As SiteMapNode, _
    upLevel As Integer _
)
public virtual void HintAncestorNodes(
    SiteMapNode node,
    int upLevel
)
public:
virtual void HintAncestorNodes(
    SiteMapNode^ node,
    int upLevel
)
abstract HintAncestorNodes :
        node:SiteMapNode *
        upLevel:int -> unit
override HintAncestorNodes :
        node:SiteMapNode *
        upLevel:int -> unit

参数

node
类型： System.Web SiteMapNode
SiteMapNode，用作 upLevel 的参考点。
upLevel
类型： System Int32
要获取的祖先 SiteMapNode 的代数。0 指示不检索祖先节点，-1 指示可检索和缓存所有祖先节点。 要获取的祖先 SiteMapNode 的代数。0 指示不检索祖先节点，-1 指示可检索和缓存所有祖先节点。
异常 | 条件
ArgumentOutOfRangeException | upLevel 小于 -1。
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

默认的 HintAncestorNodes 方法仅检查小于 -1 的 upLevel 参数和为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的 node 参数。由于 XmlSiteMapProvider 类将站点地图信息缓存在内存中，因此不使用 HintAncestorNodes 方法。 默认的 HintAncestorNodes 方法仅检查小于 -1 的 upLevel 参数和为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的 node 参数。由于 XmlSiteMapProvider 类将站点地图信息缓存在内存中，因此不使用 HintAncestorNodes 方法。

站点地图提供程序可以重写 HintAncestorNodes 方法，以执行指定 SiteMapNode 对象的父和祖先节点的经优化的检索。

upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回指定范围内的所有可用祖先节点。如果愿意，可以使用 ParentNode 属性将父节点链接到指定的 SiteMapNode。 upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回指定范围内的所有可用祖先节点。如果愿意，可以使用 ParentNode 属性将父节点链接到指定的 SiteMapNode。 upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。如果存在的层次少于请求的层次，则返回指定范围内的所有可用祖先节点。如果愿意，可以使用 ParentNode 属性将父节点链接到指定的 SiteMapNode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
HintNeighborhoodNodes


SiteMapProvider ..::.HintNeighborhoodNodes 方法

SiteMapProvider
.
.
::
.
HintNeighborhoodNodes 方法
SiteMapProvider 类

提供一个方法，站点地图提供程序可以重写该方法以执行在指定节点附近找到的节点的经优化的检索。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Sub HintNeighborhoodNodes ( _
    node As SiteMapNode, _
    upLevel As Integer, _
    downLevel As Integer _
)
public virtual void HintNeighborhoodNodes(
    SiteMapNode node,
    int upLevel,
    int downLevel
)
public:
virtual void HintNeighborhoodNodes(
    SiteMapNode^ node,
    int upLevel,
    int downLevel
)
abstract HintNeighborhoodNodes :
        node:SiteMapNode *
        upLevel:int *
        downLevel:int -> unit
override HintNeighborhoodNodes :
        node:SiteMapNode *
        upLevel:int *
        downLevel:int -> unit

参数

node
类型： System.Web SiteMapNode
SiteMapNode，用作 upLevel 的参考点。
upLevel
类型： System Int32
要获取的祖先 SiteMapNode 的代数。0 指示不检索祖先节点，-1 指示可检索和缓存所有祖先节点（及其到 node 层次的子代节点）。 要获取的祖先 SiteMapNode 的代数。0 指示不检索祖先节点，-1 指示可检索和缓存所有祖先节点（及其到 node 层次的子代节点）。
downLevel
类型： System Int32
要获取的子代 SiteMapNode 的代数。0 指示不检索子代节点，-1 指示可检索和缓存所有子代节点。 要获取的子代 SiteMapNode 的代数。0 指示不检索子代节点，-1 指示可检索和缓存所有子代节点。
异常 | 条件
ArgumentOutOfRangeException | upLevel 或 downLevel 小于 -1。
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

默认的 HintNeighborhoodNodes 方法仅检查小于 -1 的 upLevel 和 downLevel 参数，以及为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的 node 参数。由于 XmlSiteMapProvider 对象将站点地图信息缓存在内存中，因此不使用 HintNeighborhoodNodes 方法。 默认的 HintNeighborhoodNodes 方法仅检查小于 -1 的 upLevel 和 downLevel 参数，以及为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的 node 参数。由于 XmlSiteMapProvider 对象将站点地图信息缓存在内存中，因此不使用 HintNeighborhoodNodes 方法。

站点地图提供程序可以重写 HintNeighborhoodNodes 方法，以执行指定 SiteMapNode 附近的 SiteMapNode 对象的经优化的查找。upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。downLevel 参数用于指定要从当前节点检索多少个层次的子节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 HintNeighborhoodNodes 方法返回的 SiteMapNode。 站点地图提供程序可以重写 HintNeighborhoodNodes 方法，以执行指定 SiteMapNode 附近的 SiteMapNode 对象的经优化的查找。upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。downLevel 参数用于指定要从当前节点检索多少个层次的子节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 HintNeighborhoodNodes 方法返回的 SiteMapNode。 站点地图提供程序可以重写 HintNeighborhoodNodes 方法，以执行指定 SiteMapNode 附近的 SiteMapNode 对象的经优化的查找。upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。downLevel 参数用于指定要从当前节点检索多少个层次的子节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 HintNeighborhoodNodes 方法返回的 SiteMapNode。 站点地图提供程序可以重写 HintNeighborhoodNodes 方法，以执行指定 SiteMapNode 附近的 SiteMapNode 对象的经优化的查找。upLevel 参数用于指定要从指定的 SiteMapNode 遍历多少个层次的父和祖先节点。downLevel 参数用于指定要从当前节点检索多少个层次的子节点。如果愿意，可以使用 ParentNode 和 ChildNodes 属性将祖先和子代节点链接到 HintNeighborhoodNodes 方法返回的 SiteMapNode。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
HintAncestorNodes


SiteMapProvider ..::.Initialize 方法

SiteMapProvider
.
.
::
.
Initialize 方法
SiteMapProvider 类

初始化 SiteMapProvider 实现（包括从持久性存储区加载站点地图数据所需的任何资源）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Initialize ( _
    name As String, _
    attributes As NameValueCollection _
)
public override void Initialize(
    string name,
    NameValueCollection attributes
)
public:
virtual void Initialize(
    String^ name,
    NameValueCollection^ attributes
) override
abstract Initialize :
        name:string *
        attributes:NameValueCollection -> unit
override Initialize :
        name:string *
        attributes:NameValueCollection -> unit

参数

name
类型： System String
要初始化的提供程序的 Name。
attributes
类型： System.Collections.Specialized NameValueCollection
NameValueCollection，其中可以包含附加特性以帮助初始化提供程序。从 Web.config 文件中的站点地图提供程序配置读取这些特性。 NameValueCollection，其中可以包含附加特性以帮助初始化提供程序。从 Web.config 文件中的站点地图提供程序配置读取这些特性。

Initialize 并不真正构建站点地图，它只是为构建地图而准备 SiteMapProvider 对象的状态。默认实现从站点导航配置初始化站点地图提供程序的 SecurityTrimmingEnabled 属性。 Initialize 并不真正构建站点地图，它只是为构建地图而准备 SiteMapProvider 对象的状态。默认实现从站点导航配置初始化站点地图提供程序的 SecurityTrimmingEnabled 属性。

从 SiteMapProvider 派生的类可以重写 Initialize 方法，以初始化从持久性存储区加载站点地图数据所需的任何状态和资源。例如，如果派生类正在使用文件来存储站点地图数据，则可以在 Initialize 方法中执行任何文件初始化。如果派生类使用其他类型的数据存储区，如关系数据库，则可以执行数据库连接的初始化。 从 SiteMapProvider 派生的类可以重写 Initialize 方法，以初始化从持久性存储区加载站点地图数据所需的任何状态和资源。例如，如果派生类正在使用文件来存储站点地图数据，则可以在 Initialize 方法中执行任何文件初始化。如果派生类使用其他类型的数据存储区，如关系数据库，则可以执行数据库连接的初始化。 从 SiteMapProvider 派生的类可以重写 Initialize 方法，以初始化从持久性存储区加载站点地图数据所需的任何状态和资源。例如，如果派生类正在使用文件来存储站点地图数据，则可以在 Initialize 方法中执行任何文件初始化。如果派生类使用其他类型的数据存储区，如关系数据库，则可以执行数据库连接的初始化。

诸如文件名和连接字符串等附加特性均由 ASP.NET 配置系统读取，并与其 NameValueCollection 参数一起被传递给 Initialize 方法。

对继承者的说明

当在派生类中重写 Initialize 方法时，请确保在执行您自己的初始化之前，先调用基类的 Initialize 方法。

下面的代码示例演示如何重写 Initialize 方法来准备 Microsoft Access 数据库连接。

OleDbConnection 对象的连接字符串在 Initialize 方法的 NameValueCollection 参数中传递。在这种情况下，连接字符串由 Web.config 文件中特定于提供程序的节提供。在此处，accessSiteMapConnectionString 包含一个到承载站点地图数据的 Microsoft Access 数据库的连接字符串。 OleDbConnection 对象的连接字符串在 Initialize 方法的 NameValueCollection 参数中传递。在这种情况下，连接字符串由 Web.config 文件中特定于提供程序的节提供。在此处，accessSiteMapConnectionString 包含一个到承载站点地图数据的 Microsoft Access 数据库的连接字符串。 OleDbConnection 对象的连接字符串在 Initialize 方法的 NameValueCollection 参数中传递。在这种情况下，连接字符串由 Web.config 文件中特定于提供程序的节提供。在此处，accessSiteMapConnectionString 包含一个到承载站点地图数据的 Microsoft Access 数据库的连接字符串。

<siteMap defaultProvider="AccessSiteMapProvider">
  <providers>
     <add
       name="AccessSiteMapProvider"
       type="Samples.AspNet.AccessSiteMapProvider,Samples.AspNet"
       accessSiteMapConnectionString="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\SomeUNCShare\\sitemap.mdb"/>
  </providers>
 </siteMap>

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Initialize is used to initialize the properties and any state that the
' AccessProvider holds, but is not used to build the site map.
' The site map is built when the BuildSiteMap method is called.
Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As NameValueCollection)
    If IsInitialized Then
        Return
    End If
    MyBase.Initialize(name, attributes)

    ' Create and test the connection to the Microsoft Access database.
    ' Retrieve the Value of the Access connection string from the
    ' attributes NameValueCollection.
    Dim connectionString As String = attributes(AccessConnectionStringName)

    If Nothing = connectionString OrElse connectionString.Length = 0 Then
        Throw New Exception("The connection string was not found.")
    Else
        accessConnection = New OleDbConnection(connectionString)
    End If
    initialized = True
End Sub 'Initialize

// Initialize is used to initialize the properties and any state that the
// AccessProvider holds, but is not used to build the site map.
// The site map is built when the BuildSiteMap method is called.
public override void Initialize(string name, NameValueCollection attributes) {
    if (IsInitialized)
        return;

    base.Initialize(name, attributes);

    // Create and test the connection to the Microsoft Access database.

    // Retrieve the Value of the Access connection string from the
    // attributes NameValueCollection.
    string connectionString = attributes[AccessConnectionStringName];

    if (null == connectionString || connectionString.Length == 0)
        throw new Exception ("The connection string was not found.");
    else
        accessConnection = new OleDbConnection(connectionString);

    initialized = true;
}

   // Initialize is used to initialize the properties and any state that the
   // AccessProvider holds, but is not used to build the site map.
   // The site map is built when the BuildSiteMap method is called.
   virtual void Initialize( String^ name, NameValueCollection^ attributes ) override
   {
      if ( IsInitialized )
            return;

      StaticSiteMapProvider::Initialize( name, attributes );

      // Create and test the connection to the Microsoft Access database.
      // Retrieve the Value of the Access connection string from the
      // attributes NameValueCollection.
      String^ connectionString = attributes[ AccessConnectionStringName ];
      if ( nullptr == connectionString || connectionString->Length == 0 )
            throw gcnew Exception( "The connection string was not found." );
      else
            accessConnection = gcnew OleDbConnection( connectionString );

      initialized = true;
   }

protected:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
ProviderBase
BuildSiteMap
Clear


SiteMapProvider ..::.IsAccessibleToUser 方法

SiteMapProvider
.
.
::
.
IsAccessibleToUser 方法
SiteMapProvider 类

检索一个布尔值，该值指示指定的 SiteMapNode 对象是否可由用户在指定的上下文中查看。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Function IsAccessibleToUser ( _
    context As HttpContext, _
    node As SiteMapNode _
) As Boolean
public virtual bool IsAccessibleToUser(
    HttpContext context,
    SiteMapNode node
)
public:
virtual bool IsAccessibleToUser(
    HttpContext^ context,
    SiteMapNode^ node
)
abstract IsAccessibleToUser :
        context:HttpContext *
        node:SiteMapNode -> bool
override IsAccessibleToUser :
        context:HttpContext *
        node:SiteMapNode -> bool

参数

context
类型： System.Web HttpContext
包含用户信息的 HttpContext。
node
类型： System.Web SiteMapNode
用户请求的 SiteMapNode。

返回值

类型： System Boolean
如果启用了安全修整并且 node 可由用户查看，或者未启用安全修整，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | context 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

启用安全修整时的默认行为如下表所述。

条件 | 返回值
node 上存在 Roles，并且当前用户至少属于一种指定角色。 - 或 - 当前线程具有对请求的 URL 拥有文件访问权限的关联 WindowsIdentity，并且该 URL 位于应用程序的目录结构中。 - 或 - 当前用户在当前应用程序的 authorization 元素中明确获得对请求的 URL 的授权，并且该 URL 位于应用程序的目录结构中。 | true
不满足上述任何条件。 | false

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
SecurityTrimmingEnabled


SiteMapProvider ..::.RemoveNode 方法

SiteMapProvider
.
.
::
.
RemoveNode 方法
SiteMapProvider 类

从由站点地图提供程序维护的节点集合移除指定的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overridable Sub RemoveNode ( _
    node As SiteMapNode _
)
protected internal virtual void RemoveNode(
    SiteMapNode node
)
protected public:
virtual void RemoveNode(
    SiteMapNode^ node
)
abstract RemoveNode :
        node:SiteMapNode -> unit
override RemoveNode :
        node:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要从提供程序维护的节点集合中移除的 SiteMapNode。
异常 | 条件
NotImplementedException | 在所有情况下。

从 SiteMapProvider 类派生的类可以重写 RemoveNode 方法，并提供用于从站点地图提供程序维护的节点集合移除 SiteMapNode 对象的逻辑。RemoveNode 方法的默认实现将引发一个 NotImplementedException 异常。 从 SiteMapProvider 类派生的类可以重写 RemoveNode 方法，并提供用于从站点地图提供程序维护的节点集合移除 SiteMapNode 对象的逻辑。RemoveNode 方法的默认实现将引发一个 NotImplementedException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
AddNode


SiteMapProvider ..::.ResolveSiteMapNode 方法

SiteMapProvider
.
.
::
.
ResolveSiteMapNode 方法
SiteMapProvider 类

引发 SiteMapResolve 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Function ResolveSiteMapNode ( _
    context As HttpContext _
) As SiteMapNode
protected SiteMapNode ResolveSiteMapNode(
    HttpContext context
)
protected:
SiteMapNode^ ResolveSiteMapNode(
    HttpContext^ context
)
member ResolveSiteMapNode :
        context:HttpContext -> SiteMapNode

参数

context
类型： System.Web HttpContext
站点地图当前存在于其中的 HttpContext。

返回值

类型： System.Web SiteMapNode
由注册用于处理事件的事件处理程序委托提供的 SiteMapNode；如果注册了多个委托来处理该事件，则为委托链中的最后一个委托的返回值；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

context 参数和对调用 ResolveSiteMapNode 方法的提供程序的引用被传递给任何关联的 SiteMapResolveEventArgs 对象的构造函数。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
SiteMapResolve
SiteMapResolveEventArgs
SiteMapResolveEventHandler


SiteMapProvider 属性

SiteMapProvider 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProvider 类

SiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

SiteMapProvider 类
System.Web 命名空间


SiteMapProvider ..::.CurrentNode 属性

SiteMapProvider
.
.
::
.
CurrentNode 属性
SiteMapProvider 类

获取表示当前请求页的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property CurrentNode As SiteMapNode
    Get
public virtual SiteMapNode CurrentNode { get; }
public:
virtual property SiteMapNode^ CurrentNode {
    SiteMapNode^ get ();
}
abstract CurrentNode : SiteMapNode
override CurrentNode : SiteMapNode

属性值

类型： System.Web SiteMapNode
表示当前请求页的 SiteMapNode；否则，如果没有找到或不能为当前用户返回 SiteMapNode，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

在尝试检索 SiteMapNode 对象之前引发 SiteMapResolve 事件，以使事件订户能够返回 SiteMapNode 类的实例。如果不存在事件订户，则 SiteMapProvider 类使用当前 HTTP 上下文来调用 FindSiteMapNode 方法，以检索表示当前请求页的 SiteMapNode。 在尝试检索 SiteMapNode 对象之前引发 SiteMapResolve 事件，以使事件订户能够返回 SiteMapNode 类的实例。如果不存在事件订户，则 SiteMapProvider 类使用当前 HTTP 上下文来调用 FindSiteMapNode 方法，以检索表示当前请求页的 SiteMapNode。

如果当前请求页与 SiteMapNode 不对应，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果启用了安全微调，并且不允许用户访问 SiteMapNode，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 如果当前请求页与 SiteMapNode 不对应，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。如果启用了安全微调，并且不允许用户访问 SiteMapNode，则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何在一个类中实现 CurrentNode 属性，该类实现抽象 SiteMapProvider 类。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Implement the CurrentNode property.
Public Overrides ReadOnly Property CurrentNode() As SiteMapNode
  Get
    Dim currentUrl As String = FindCurrentUrl()
    ' Find the SiteMapNode that represents the current page.
    Dim aCurrentNode As SiteMapNode = FindSiteMapNode(currentUrl)
    Return aCurrentNode
  End Get
End Property

' Implement the RootNode property.
Public Overrides ReadOnly Property RootNode() As SiteMapNode
  Get
    Return aRootNode
  End Get
End Property

// Implement the CurrentNode property.
public override SiteMapNode CurrentNode
{
  get
  {
    string currentUrl = FindCurrentUrl();
    // Find the SiteMapNode that represents the current page.
    SiteMapNode currentNode = FindSiteMapNode(currentUrl);
    return currentNode;
  }
}

// Implement the RootNode property.
public override SiteMapNode RootNode
{
  get
  {
    return rootNode;
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
RootNode
SecurityTrimmingEnabled


SiteMapProvider ..::.EnableLocalization 属性

SiteMapProvider
.
.
::
.
EnableLocalization 属性
SiteMapProvider 类

获取或设置一个布尔值，该值指示是否返回 SiteMapNode 特性的本地化的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property EnableLocalization As Boolean
    Get
    Set
public bool EnableLocalization { get; set; }
public:
property bool EnableLocalization {
    bool get ();
    void set (bool value);
}
member EnableLocalization : bool with get, set

属性值

类型： System Boolean
如果返回 SiteMapNode 特性的本地化的值，则为 true；否则为 false。默认为 false。 如果返回 SiteMapNode 特性的本地化的值，则为 true；否则为 false。默认为 false。

EnableLocalization 属性用于获取 Title 和 Description 属性以及 SiteMapNode 对象的附加 Attributes 属性的访问器。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
SiteMapNode Title
SiteMapNode Description
SiteMapNode Attributes


SiteMapProvider ..::.ParentProvider 属性

SiteMapProvider
.
.
::
.
ParentProvider 属性
SiteMapProvider 类

获取或设置当前提供程序的父 SiteMapProvider 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable Property ParentProvider As SiteMapProvider
    Get
    Set
public virtual SiteMapProvider ParentProvider { get; set; }
public:
virtual property SiteMapProvider^ ParentProvider {
    SiteMapProvider^ get ();
    void set (SiteMapProvider^ value);
}
abstract ParentProvider : SiteMapProvider with get, set
override ParentProvider : SiteMapProvider with get, set

属性值

类型： System.Web SiteMapProvider
当前 SiteMapProvider 的父提供程序。

实现抽象 SiteMapProvider 类的所有类都能够支持站点地图提供程序层次结构的概念。提供程序之间的任何层次关系由提供程序自身在 SiteMapProviderCollection 集合的范围之外维护。有关功能提供程序层次结构的示例，请参见 XmlSiteMapProvider。 实现抽象 SiteMapProvider 类的所有类都能够支持站点地图提供程序层次结构的概念。提供程序之间的任何层次关系由提供程序自身在 SiteMapProviderCollection 集合的范围之外维护。有关功能提供程序层次结构的示例，请参见 XmlSiteMapProvider。 实现抽象 SiteMapProvider 类的所有类都能够支持站点地图提供程序层次结构的概念。提供程序之间的任何层次关系由提供程序自身在 SiteMapProviderCollection 集合的范围之外维护。有关功能提供程序层次结构的示例，请参见 XmlSiteMapProvider。

下面的代码示例演示如何在一个类中实现 ParentProvider 属性，该类实现抽象 SiteMapProvider 类。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

    ' Implement the ParentProvider property.
    Public Overrides Property ParentProvider() As SiteMapProvider
      Get
        Return parentSiteMapProvider
      End Get
      Set(ByVal value As SiteMapProvider)
        parentSiteMapProvider = Value
      End Set
    End Property

    ' Implement the RootProvider property.
    Public Overrides ReadOnly Property RootProvider() As SiteMapProvider
      Get
        ' If the current instance belongs to a provider hierarchy, it
        ' cannot be the RootProvider. Rely on the ParentProvider.
        If Not (Me.ParentProvider Is Nothing) Then
          Return ParentProvider.RootProvider
          ' If the current instance does not have a ParentProvider, it is
          ' not a child in a hierarchy, and can be the RootProvider.
        Else
          Return Me
        End If
      End Get
    End Property

// Implement the ParentProvider property.
public override SiteMapProvider ParentProvider
{
  get
  {
    return parentSiteMapProvider;
  }
  set
  {
    parentSiteMapProvider = value;
  }
}

// Implement the RootProvider property.
public override SiteMapProvider RootProvider
{
  get
  {
    // If the current instance belongs to a provider hierarchy, it
    // cannot be the RootProvider. Rely on the ParentProvider.
    if (this.ParentProvider != null)
    {
      return ParentProvider.RootProvider;
    }
    // If the current instance does not have a ParentProvider, it is
    // not a child in a hierarchy, and can be the RootProvider.
    else
    {
      return this;
    }
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
RootProvider


SiteMapProvider ..::.ResourceKey 属性

SiteMapProvider
.
.
::
.
ResourceKey 属性
SiteMapProvider 类

获取或设置用于本地化 SiteMapNode 特性的资源键。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property ResourceKey As String
    Get
    Set
public string ResourceKey { get; set; }
public:
property String^ ResourceKey {
    String^ get ();
    void set (String^ value);
}
member ResourceKey : string with get, set

属性值

类型： System String
一个包含资源键名称的字符串。

用于 SiteMapNode 类的 GetImplicitResourceString 方法的 ResourceKey 属性。对于 Title 和 Description 属性，以及 SiteMapNode 对象的 Attributes 集合中定义的任何附加特性，当通过将 EnableLocalization 属性设置为 true 来启用本地化时，GetImplicitResourceString 方法优先于 GetExplicitResourceString。 用于 SiteMapNode 类的 GetImplicitResourceString 方法的 ResourceKey 属性。对于 Title 和 Description 属性，以及 SiteMapNode 对象的 Attributes 集合中定义的任何附加特性，当通过将 EnableLocalization 属性设置为 true 来启用本地化时，GetImplicitResourceString 方法优先于 GetExplicitResourceString。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
Title
Description
Attributes
GetImplicitResourceString
GetExplicitResourceString


SiteMapProvider ..::.RootNode 属性

SiteMapProvider
.
.
::
.
RootNode 属性
SiteMapProvider 类

获取当前提供程序表示的站点地图数据的根 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RootNode As SiteMapNode
    Get
public virtual SiteMapNode RootNode { get; }
public:
virtual property SiteMapNode^ RootNode {
    SiteMapNode^ get ();
}
abstract RootNode : SiteMapNode
override RootNode : SiteMapNode

属性值

类型： System.Web SiteMapNode
当前站点地图数据提供程序的根 SiteMapNode。默认的实现在被返回的节点上执行安全修整。 当前站点地图数据提供程序的根 SiteMapNode。默认的实现在被返回的节点上执行安全修整。

默认实现调用抽象 GetRootNodeCore 方法。

对继承者的说明

当在派生类中重写 RootNode 属性时，请确保该实现不通过导航提供程序层次结构（如存在）来查找站点的绝对根节点。

下面的代码示例演示如何在一个类中实现 RootNode 属性，该类实现抽象 SiteMapProvider 类。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

' Implement the CurrentNode property.
Public Overrides ReadOnly Property CurrentNode() As SiteMapNode
  Get
    Dim currentUrl As String = FindCurrentUrl()
    ' Find the SiteMapNode that represents the current page.
    Dim aCurrentNode As SiteMapNode = FindSiteMapNode(currentUrl)
    Return aCurrentNode
  End Get
End Property

' Implement the RootNode property.
Public Overrides ReadOnly Property RootNode() As SiteMapNode
  Get
    Return aRootNode
  End Get
End Property

// Implement the CurrentNode property.
public override SiteMapNode CurrentNode
{
  get
  {
    string currentUrl = FindCurrentUrl();
    // Find the SiteMapNode that represents the current page.
    SiteMapNode currentNode = FindSiteMapNode(currentUrl);
    return currentNode;
  }
}

// Implement the RootNode property.
public override SiteMapNode RootNode
{
  get
  {
    return rootNode;
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
GetRootNodeCore
CurrentNode


SiteMapProvider ..::.RootProvider 属性

SiteMapProvider
.
.
::
.
RootProvider 属性
SiteMapProvider 类

获取当前提供程序层次结构中的根 SiteMapProvider 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overridable ReadOnly Property RootProvider As SiteMapProvider
    Get
public virtual SiteMapProvider RootProvider { get; }
public:
virtual property SiteMapProvider^ RootProvider {
    SiteMapProvider^ get ();
}
abstract RootProvider : SiteMapProvider
override RootProvider : SiteMapProvider

属性值

类型： System.Web SiteMapProvider
一个 SiteMapProvider，表示当前提供程序所属的提供程序层次结构中的顶级站点地图提供程序。
异常 | 条件
ProviderException | 存在一个对当前站点地图提供程序的循环引用。

实现 SiteMapProvider 类的所有类都能够支持站点地图提供程序层次结构的概念。提供程序之间的任何层次关系由提供程序自身在 SiteMapProviderCollection 集合的范围之外维护。有关功能提供程序层次结构的示例，请参见 XmlSiteMapProvider。 实现 SiteMapProvider 类的所有类都能够支持站点地图提供程序层次结构的概念。提供程序之间的任何层次关系由提供程序自身在 SiteMapProviderCollection 集合的范围之外维护。有关功能提供程序层次结构的示例，请参见 XmlSiteMapProvider。 实现 SiteMapProvider 类的所有类都能够支持站点地图提供程序层次结构的概念。提供程序之间的任何层次关系由提供程序自身在 SiteMapProviderCollection 集合的范围之外维护。有关功能提供程序层次结构的示例，请参见 XmlSiteMapProvider。

下面的代码示例演示如何在一个类中实现 RootProvider 属性，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 使用简单的逻辑来确定当前提供程序是否为某个提供程序层次结构的一部分。如果该提供程序是某个层次结构的一部分，则它将使用父提供程序的 RootProvider 属性作为它自己的根提供程序。如果该提供程序不是某个层次结构的一部分，则它将提供自己的根提供程序。 下面的代码示例演示如何在一个类中实现 RootProvider 属性，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 使用简单的逻辑来确定当前提供程序是否为某个提供程序层次结构的一部分。如果该提供程序是某个层次结构的一部分，则它将使用父提供程序的 RootProvider 属性作为它自己的根提供程序。如果该提供程序不是某个层次结构的一部分，则它将提供自己的根提供程序。 下面的代码示例演示如何在一个类中实现 RootProvider 属性，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 使用简单的逻辑来确定当前提供程序是否为某个提供程序层次结构的一部分。如果该提供程序是某个层次结构的一部分，则它将使用父提供程序的 RootProvider 属性作为它自己的根提供程序。如果该提供程序不是某个层次结构的一部分，则它将提供自己的根提供程序。 下面的代码示例演示如何在一个类中实现 RootProvider 属性，该类实现抽象 SiteMapProvider 类。SimpleTextSiteMapProvider 使用简单的逻辑来确定当前提供程序是否为某个提供程序层次结构的一部分。如果该提供程序是某个层次结构的一部分，则它将使用父提供程序的 RootProvider 属性作为它自己的根提供程序。如果该提供程序不是某个层次结构的一部分，则它将提供自己的根提供程序。

此代码示例摘自一个为 SiteMapProvider 类提供的更大的示例。

    ' Implement the ParentProvider property.
    Public Overrides Property ParentProvider() As SiteMapProvider
      Get
        Return parentSiteMapProvider
      End Get
      Set(ByVal value As SiteMapProvider)
        parentSiteMapProvider = Value
      End Set
    End Property

    ' Implement the RootProvider property.
    Public Overrides ReadOnly Property RootProvider() As SiteMapProvider
      Get
        ' If the current instance belongs to a provider hierarchy, it
        ' cannot be the RootProvider. Rely on the ParentProvider.
        If Not (Me.ParentProvider Is Nothing) Then
          Return ParentProvider.RootProvider
          ' If the current instance does not have a ParentProvider, it is
          ' not a child in a hierarchy, and can be the RootProvider.
        Else
          Return Me
        End If
      End Get
    End Property

// Implement the ParentProvider property.
public override SiteMapProvider ParentProvider
{
  get
  {
    return parentSiteMapProvider;
  }
  set
  {
    parentSiteMapProvider = value;
  }
}

// Implement the RootProvider property.
public override SiteMapProvider RootProvider
{
  get
  {
    // If the current instance belongs to a provider hierarchy, it
    // cannot be the RootProvider. Rely on the ParentProvider.
    if (this.ParentProvider != null)
    {
      return ParentProvider.RootProvider;
    }
    // If the current instance does not have a ParentProvider, it is
    // not a child in a hierarchy, and can be the RootProvider.
    else
    {
      return this;
    }
  }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
ParentProvider


SiteMapProvider ..::.SecurityTrimmingEnabled 属性

SiteMapProvider
.
.
::
.
SecurityTrimmingEnabled 属性
SiteMapProvider 类

获取一个布尔值，该值指示站点地图提供程序是否根据用户的角色筛选站点地图节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property SecurityTrimmingEnabled As Boolean
    Get
public bool SecurityTrimmingEnabled { get; }
public:
property bool SecurityTrimmingEnabled {
    bool get ();
}
member SecurityTrimmingEnabled : bool

属性值

类型： System Boolean
如果提供程序被配置为根据角色筛选节点，则为 true；否则为 false。

不能以编程方式设置安全修整 -- 它是在提供程序的配置中设置的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
IsAccessibleToUser


SiteMapProvider 事件

SiteMapProvider 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProvider 类

SiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

SiteMapProvider 类
System.Web 命名空间


SiteMapProvider ..::.SiteMapResolve 事件

SiteMapProvider
.
.
::
.
SiteMapResolve 事件
SiteMapProvider 类

当调用 CurrentNode 属性时发生。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event SiteMapResolve As SiteMapResolveEventHandler
public event SiteMapResolveEventHandler SiteMapResolve
public:
 event SiteMapResolveEventHandler^ SiteMapResolve {
    void add (SiteMapResolveEventHandler^ value);
    void remove (SiteMapResolveEventHandler^ value);
}
member SiteMapResolve : IEvent<SiteMapResolveEventHandler,
    SiteMapResolveEventArgs>

通过订阅 SiteMapResolve 事件，您可以创建当前请求页的 SiteMapNode 表示，而无需实现自定义的站点地图提供程序。订户附加一个 SiteMapResolveEventHandler 对象以便在 CurrentNode 属性被调用时接收通知，并且能够返回自定义的 SiteMapNode 对象而不是 CurrentNode 属性返回的默认对象。 通过订阅 SiteMapResolve 事件，您可以创建当前请求页的 SiteMapNode 表示，而无需实现自定义的站点地图提供程序。订户附加一个 SiteMapResolveEventHandler 对象以便在 CurrentNode 属性被调用时接收通知，并且能够返回自定义的 SiteMapNode 对象而不是 CurrentNode 属性返回的默认对象。

有关处理事件的更多信息，请参见 使用事件。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProvider 类
SiteMapProvider 成员
System.Web 命名空间
SiteMap SiteMapResolve
SiteMapResolveEventHandler
SiteMapResolveEventArgs

其他资源

使用事件


SiteMapProviderCollection 类

SiteMapProviderCollection 类
成员

由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。无法继承此类。 由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class SiteMapProviderCollection _
    Inherits ProviderCollection
public sealed class SiteMapProviderCollection : ProviderCollection
public ref class SiteMapProviderCollection sealed : public ProviderCollection
[<SealedAttribute>]
type SiteMapProviderCollection =
    class
        inherit ProviderCollection
    end

SiteMapProviderCollection 类是 SiteMapProvider 对象的强类型 Hashtable 集合。除了 Add(ProviderBase) 和 Add(SiteMapProvider) 这两个添加方法外，SiteMapProviderCollection 类还支持使用 AddArray 方法添加 SiteMapProvider 类型的数组。 SiteMapProviderCollection 类是 SiteMapProvider 对象的强类型 Hashtable 集合。除了 Add(ProviderBase) 和 Add(SiteMapProvider) 这两个添加方法外，SiteMapProviderCollection 类还支持使用 AddArray 方法添加 SiteMapProvider 类型的数组。

SiteMapProviderCollection 由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。不过，SiteMapProvider 在提供程序集合中的存在不一定意味着它在由 SiteMap 对象使用，而只是意味着它可供使用。 SiteMapProviderCollection 由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。不过，SiteMapProvider 在提供程序集合中的存在不一定意味着它在由 SiteMap 对象使用，而只是意味着它可供使用。

当 SiteMapProvider 存储在 SiteMapProviderCollection 中时，Name 属性被用作键。

下面的代码示例演示如何从 SiteMap 对象检索 SiteMapProviderCollection 对象，并循环访问该集合。

如果您有的不只是为站点配置的默认提供程序，您将看到显示的每个提供程序。例如，如果使用在 SiteMapProvider 类概述中找到的示例 AccessSiteMapProvider，您将看到以下输出。 如果您有的不只是为站点配置的默认提供程序，您将看到显示的每个提供程序。例如，如果使用在 SiteMapProvider 类概述中找到的示例 AccessSiteMapProvider，您将看到以下输出。

XmlSiteMapProvider   System.Web.XmlSiteMapProvider
AccessSiteMapProvider   Samples.AspNet.Controls.AccessSiteMapProvider
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
Private Sub Page_Load(Sender As Object, E As EventArgs)

    ' Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() & "<BR>")

    Response.Write(SiteMap.RootNode.Url & "<BR>")
    Response.Write(SiteMap.RootNode.Title & "<BR>")

    Dim sitemapnode As SiteMapNode
    For Each sitemapnode In SiteMap.RootNode.ChildNodes
        ' Iterate through the ChildNodes SiteMapNodesCollection
        ' maintained by the RootNode.
        Response.Write(sitemapnode.Url & "<BR>" )
    Next

    Dim providers As IDictionaryEnumerator = SiteMap.Providers.GetEnumerator()
    While (providers.MoveNext())
        Response.Write(providers.Current)
        Response.Write("&nbsp;&nbsp;&nbsp;")
        Response.Write("<BR>")
    End While
End Sub ' Page_Load

</SCRIPT>

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<SCRIPT runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Navigate the SiteMap built by the default SiteMapProvider.
    Response.Write(SiteMap.RootNode.ToString() + "<BR>");

    Response.Write(SiteMap.RootNode.Url + "<BR>");
    Response.Write(SiteMap.RootNode.Title + "<BR>");

    foreach (SiteMapNode sitemapnode in SiteMap.RootNode.ChildNodes)
    {
        // Iterate through the ChildNodes SiteMapNodesCollection
        // maintained by the RootNode.
        Response.Write(sitemapnode.Url + "<BR>" );
    }

    IEnumerator providers = SiteMap.Providers.GetEnumerator();
    while (providers.MoveNext())
    {
        Response.Write(providers.Current);
        Response.Write("&nbsp;&nbsp;&nbsp;");
        Response.Write("<BR>");
    }
}
</SCRIPT>

System.Web System.Web..::.SiteMapProviderCollectionSiteMapProviderCollection
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProviderCollection 成员
System.Web 命名空间
Hashtable
SiteMap Providers

其他资源

ASP.NET 站点导航提供程序


SiteMapProviderCollection 成员

SiteMapProviderCollection 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProviderCollection 类

由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。无法继承此类。 由 SiteMap 类用于跟踪在站点地图初始化期间对 SiteMap 可用的 SiteMapProvider 对象集。无法继承此类。

SiteMapProviderCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SiteMapProviderCollection 类
System.Web 命名空间


SiteMapProviderCollection 构造函数

SiteMapProviderCollection 构造函数
SiteMapProviderCollection 类

初始化 SiteMapProviderCollection 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public SiteMapProviderCollection()
public:
SiteMapProviderCollection()
new : unit -> SiteMapProviderCollection

默认构造函数 SiteMapProviderCollection 将所有字段初始化为其默认值

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProviderCollection 类
SiteMapProviderCollection 成员
System.Web 命名空间
Add


SiteMapProviderCollection 方法

SiteMapProviderCollection 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProviderCollection 类

SiteMapProviderCollection 类型公开以下成员。

名称 说明
页首
名称 说明
页首

参考

SiteMapProviderCollection 类
System.Web 命名空间


SiteMapProviderCollection ..::.Add 方法

SiteMapProviderCollection
.
.
::
.
Add 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProviderCollection 类

向 SiteMapProviderCollection 集合添加一个站点地图提供程序。

名称 说明
页首

参考

SiteMapProviderCollection 类
SiteMapProviderCollection 成员
System.Web 命名空间


SiteMapProviderCollection ..::.Add 方法 (ProviderBase)

SiteMapProviderCollection
.
.
::
.
Add 方法 (ProviderBase)
SiteMapProviderCollection 类

使用 Name 属性作为键向提供程序集合添加一个 SiteMapProvider。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Add ( _
    provider As ProviderBase _
)
public override void Add(
    ProviderBase provider
)
public:
virtual void Add(
    ProviderBase^ provider
) override
abstract Add :
        provider:ProviderBase -> unit
override Add :
        provider:ProviderBase -> unit

参数

provider
类型： System.Configuration.Provider ProviderBase
要添加的 SiteMapProvider。
异常 | 条件
ArgumentNullException | SiteMapProvider 的 Name 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | provider 不是 SiteMapProvider 类的实例。 - 或 - SiteMapProviderCollection 中已经存在同名称的 SiteMapProvider。
NotSupportedException | SiteMapProviderCollection 为只读。

Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。Add(ProviderBase) 方法检查指定的提供程序的类型，然后调用 Add(SiteMapProvider) 方法将它添加到集合。 Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。Add(ProviderBase) 方法检查指定的提供程序的类型，然后调用 Add(SiteMapProvider) 方法将它添加到集合。 Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。Add(ProviderBase) 方法检查指定的提供程序的类型，然后调用 Add(SiteMapProvider) 方法将它添加到集合。 Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。Add(ProviderBase) 方法检查指定的提供程序的类型，然后调用 Add(SiteMapProvider) 方法将它添加到集合。

因为 SiteMap 类是静态的，所以其 Providers 集合内包含的任何 SiteMapProvider 将在 Web 应用程序生命周期内保留。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProviderCollection 类
SiteMapProviderCollection 成员
Add 重载
System.Web 命名空间
AddArray


SiteMapProviderCollection ..::.Add 方法 (SiteMapProvider)

SiteMapProviderCollection
.
.
::
.
Add 方法 (SiteMapProvider)
SiteMapProviderCollection 类

使用 Name 属性作为键向提供程序集合添加一个 SiteMapProvider 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Add ( _
    provider As SiteMapProvider _
)
public void Add(
    SiteMapProvider provider
)
public:
void Add(
    SiteMapProvider^ provider
)
member Add :
        provider:SiteMapProvider -> unit

参数

provider
类型： System.Web SiteMapProvider
要添加的 SiteMapProvider。
异常 | 条件
ArgumentNullException | provider 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | SiteMapProviderCollection 为只读。
ArgumentException | SiteMapProviderCollection 中已经存在同名称的 SiteMapProvider。

Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法以编程方式在运行时向 SiteMap 添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。当您想要向 SiteMapProviderCollection 添加单个 SiteMapProvider 时，请使用 Add 方法。 Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法以编程方式在运行时向 SiteMap 添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。当您想要向 SiteMapProviderCollection 添加单个 SiteMapProvider 时，请使用 Add 方法。 Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法以编程方式在运行时向 SiteMap 添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。当您想要向 SiteMapProviderCollection 添加单个 SiteMapProvider 时，请使用 Add 方法。 Providers 属性返回的 SiteMapProviderCollection 对象是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法以编程方式在运行时向 SiteMap 添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。当您想要向 SiteMapProviderCollection 添加单个 SiteMapProvider 时，请使用 Add 方法。

因为 SiteMap 类是静态的，所以其 Providers 集合内包含的任何 SiteMapProvider 将在 Web 应用程序生命周期内保留。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProviderCollection 类
SiteMapProviderCollection 成员
Add 重载
System.Web 命名空间
Add


SiteMapProviderCollection ..::.AddArray 方法

SiteMapProviderCollection
.
.
::
.
AddArray 方法
SiteMapProviderCollection 类

使用 Name 属性作为键将 SiteMapProvider 对象的数组添加到提供程序集合中。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub AddArray ( _
    providerArray As SiteMapProvider() _
)
public void AddArray(
    SiteMapProvider[] providerArray
)
public:
void AddArray(
    array<SiteMapProvider^>^ providerArray
)
member AddArray :
        providerArray:SiteMapProvider[] -> unit

参数

providerArray
类型：
array<
System.Web SiteMapProvider
>
[]
()
[]

要添加的 SiteMapProvider 对象的数组。
异常 | 条件
ArgumentException | SiteMapProviderCollection 中已经存在同名称的 SiteMapProvider。
ArgumentNullException | providerArray 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
NotSupportedException | SiteMapProviderCollection 为只读。

Providers 属性返回的 SiteMapProviderCollection 是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。 Providers 属性返回的 SiteMapProviderCollection 是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。 Providers 属性返回的 SiteMapProviderCollection 是只读的。由于这个原因，您不能使用 Add 和 AddArray 方法在运行时以编程方式添加附加的提供程序。因此，仅在您手动创建站点地图提供程序并使用 SiteMapProviderCollection 类的实例来管理它们的情况下，才使用 Add 和 AddArray 方法。

因为 SiteMap 类是静态的，所以其 Providers 集合内包含的任何 SiteMapProvider 将在 Web 应用程序生命周期内保留。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProviderCollection 类
SiteMapProviderCollection 成员
System.Web 命名空间
Add
Add


SiteMapProviderCollection 属性

SiteMapProviderCollection 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapProviderCollection 类

SiteMapProviderCollection 类型公开以下成员。

名称 说明
页首

参考

SiteMapProviderCollection 类
System.Web 命名空间


SiteMapProviderCollection ..::.Item 属性

SiteMapProviderCollection
.
.
::
.
Item 属性
SiteMapProviderCollection 类

从提供程序集合获取具有特定名称的 SiteMapProvider 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Item ( _
    name As String _
) As SiteMapProvider
    Get
public SiteMapProvider this[
    string name
] { get; }
public:
property SiteMapProvider^ Item[String^ name] {
    SiteMapProvider^ get (String^ name);
}
member Item : SiteMapProvider

参数

name
类型： System String
要查找的 SiteMapProvider 的名称。

属性值

类型： System.Web SiteMapProvider
表示 SiteMapProviderCollection 元素的 SiteMapProvider。

可以使用索引器循环访问 SiteMapProviderCollection 对象的内容。

下面的代码示例演示如何使用 Item 属性从 Providers 集合被访问时返回的 SiteMapProviderCollection 对象检索默认的 ASP.NET SiteMapProvider 对象。

' Retrive the SiteMapProviderCollection that contains
' the providers currently in use.
Dim providers As SiteMapProviderCollection
providers = SiteMap.Providers

' Use the Indexer to retrieve the default provider for ASP.NET.
Dim defaultProvider As SiteMapProvider
defaultProvider = providers("AspNetXmlSiteMapProvider")

     // Retrive the SiteMapProviderCollection that contains
     // the providers currently in use.
     SiteMapProviderCollection providers = SiteMap.Providers;

     // Use the Indexer to retrieve the default provider for ASP.NET.
     SiteMapProvider defaultProvider = providers["AspNetXmlSiteMapProvider"];

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapProviderCollection 类
SiteMapProviderCollection 成员
System.Web 命名空间
Add


SiteMapResolveEventArgs 类

SiteMapResolveEventArgs 类
成员

为通过调用 SiteMapProvider 类的 CurrentNode 属性引发的事件提供数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class SiteMapResolveEventArgs _
    Inherits EventArgs
public class SiteMapResolveEventArgs : EventArgs
public ref class SiteMapResolveEventArgs : public EventArgs
type SiteMapResolveEventArgs =
    class
        inherit EventArgs
    end

SiteMapResolveEventArgs 类在 ResolveSiteMapNode 方法中用于使 SiteMapResolve 事件的订户能够返回 SiteMapNode 类的实例。通过添加一个事件处理程序委托来处理 SiteMapResolve 事件，您可以创建页的 SiteMapNode 表示，而无需实现自定义的站点地图提供程序。 SiteMapResolveEventArgs 类在 ResolveSiteMapNode 方法中用于使 SiteMapResolve 事件的订户能够返回 SiteMapNode 类的实例。通过添加一个事件处理程序委托来处理 SiteMapResolve 事件，您可以创建页的 SiteMapNode 表示，而无需实现自定义的站点地图提供程序。

下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了与上下文相关的查询字符串。 下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了与上下文相关的查询字符串。 下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了与上下文相关的查询字符串。

注意 从 SiteMapResolveEventHandler 类中访问 CurrentNode 属性是安全的。在这种情况下，ASP.NET 站点导航基础结构可以防止无限递归。 注意 从 SiteMapResolveEventHandler 类中访问 CurrentNode 属性是安全的。在这种情况下，ASP.NET 站点导航基础结构可以防止无限递归。

    Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        ' The ExpandForumPaths method is called to handle
        ' the SiteMapResolve event.
        AddHandler SiteMap.SiteMapResolve, AddressOf Me.ExpandForumPaths

    End Sub

    Private Function ExpandForumPaths(ByVal sender As Object, ByVal e As SiteMapResolveEventArgs) As SiteMapNode
        ' The current node represents a Post page in a bulletin board forum.
        ' Clone the current node and all of its relevant parents. This
        ' returns a site map node that a developer can then
        ' walk, modifying each node.Url property in turn.
        ' Since the cloned nodes are separate from the underlying
        ' site navigation structure, the fixups that are made do not
        ' effect the overall site navigation structure.
        Dim currentNode As SiteMapNode = SiteMap.CurrentNode.Clone(True)
        Dim tempNode As SiteMapNode = currentNode

        ' Obtain the recent IDs.
        Dim forumGroupID As Integer = GetMostRecentForumGroupID()
        Dim forumID As Integer = GetMostRecentForumID(forumGroupID)
        Dim postID As Integer = GetMostRecentPostID(forumID)

        ' The current node, and its parents, can be modified to include
        ' dynamic querystring information relevant to the currently
        ' executing request.
        If Not (0 = postID) Then
            tempNode.Url = tempNode.Url & "?PostID=" & postID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = forumID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumID=" & forumID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = ForumGroupID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumGroupID=" & forumGroupID.ToString()
        End If

        Return currentNode

    End Function

private void Page_Load(object sender, EventArgs e)
{
    // The ExpandForumPaths method is called to handle
    // the SiteMapResolve event.
    SiteMap.SiteMapResolve +=
      new SiteMapResolveEventHandler(this.ExpandForumPaths);
}

private SiteMapNode ExpandForumPaths(Object sender, SiteMapResolveEventArgs e)
{
    // The current node represents a Post page in a bulletin board forum.
    // Clone the current node and all of its relevant parents. This
    // returns a site map node that a developer can then
    // walk, modifying each node.Url property in turn.
    // Since the cloned nodes are separate from the underlying
    // site navigation structure, the fixups that are made do not
    // effect the overall site navigation structure.
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    SiteMapNode tempNode = currentNode;

    // Obtain the recent IDs.
    int forumGroupID = GetMostRecentForumGroupID();
    int forumID = GetMostRecentForumID(forumGroupID);
    int postID = GetMostRecentPostID(forumID);

    // The current node, and its parents, can be modified to include
    // dynamic querystring information relevant to the currently
    // executing request.
    if (0 != postID)
    {
        tempNode.Url = tempNode.Url + "?PostID=" + postID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumID))
    {
        tempNode.Url = tempNode.Url + "?ForumID=" + forumID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumGroupID))
    {
        tempNode.Url = tempNode.Url + "?ForumGroupID=" + forumGroupID.ToString();
    }

    return currentNode;
}

System.Web System.Web..::.SiteMapResolveEventArgsSiteMapResolveEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapResolveEventArgs 成员
System.Web 命名空间
SiteMapResolveEventHandler
SiteMapResolve


SiteMapResolveEventArgs 成员

SiteMapResolveEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapResolveEventArgs 类

为通过调用 SiteMapProvider 类的 CurrentNode 属性引发的事件提供数据。

SiteMapResolveEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

SiteMapResolveEventArgs 类
System.Web 命名空间


SiteMapResolveEventArgs 构造函数

SiteMapResolveEventArgs 构造函数
SiteMapResolveEventArgs 类

使用指定的 HttpContext 和 SiteMapProvider 对象初始化 SiteMapResolveEventArgs 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    context As HttpContext, _
    provider As SiteMapProvider _
)
public SiteMapResolveEventArgs(
    HttpContext context,
    SiteMapProvider provider
)
public:
SiteMapResolveEventArgs(
    HttpContext^ context,
    SiteMapProvider^ provider
)
new :
        context:HttpContext *
        provider:SiteMapProvider -> SiteMapResolveEventArgs

参数

context
类型： System.Web HttpContext
表示当前页请求的上下文的 HttpContext。
provider
类型： System.Web SiteMapProvider
引发 SiteMapResolve 事件的 SiteMapProvider。

context 和 provider 参数都可以为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

XmlSiteMapProvider 对象使用不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 的值初始化 SiteMapResolveEventArgs 类的新实例。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapResolveEventArgs 类
SiteMapResolveEventArgs 成员
System.Web 命名空间
ResolveSiteMapNode


SiteMapResolveEventArgs 方法

SiteMapResolveEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapResolveEventArgs 类

SiteMapResolveEventArgs 类型公开以下成员。

名称 说明
页首

参考

SiteMapResolveEventArgs 类
System.Web 命名空间


SiteMapResolveEventArgs 属性

SiteMapResolveEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
SiteMapResolveEventArgs 类

SiteMapResolveEventArgs 类型公开以下成员。

名称 说明
页首

参考

SiteMapResolveEventArgs 类
System.Web 命名空间


SiteMapResolveEventArgs ..::.Context 属性

SiteMapResolveEventArgs
.
.
::
.
Context 属性
SiteMapResolveEventArgs 类

获取被请求的节点所表示的页请求的上下文。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Context As HttpContext
    Get
public HttpContext Context { get; }
public:
property HttpContext^ Context {
    HttpContext^ get ();
}
member Context : HttpContext

属性值

类型： System.Web HttpContext
如果已指定，则为指定的 HttpContext；否则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

事件订户可以使用 HttpContext 和 SiteMapProvider 对象来动态创建 SiteMapNode 对象，并检索关于被请求的页的信息（如被请求的 URL）以及用户信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapResolveEventArgs 类
SiteMapResolveEventArgs 成员
System.Web 命名空间
HttpContext


SiteMapResolveEventArgs ..::.Provider 属性

SiteMapResolveEventArgs
.
.
::
.
Provider 属性
SiteMapResolveEventArgs 类

获取引发 SiteMapResolve 事件的 SiteMapProvider 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Provider As SiteMapProvider
    Get
public SiteMapProvider Provider { get; }
public:
property SiteMapProvider^ Provider {
    SiteMapProvider^ get ();
}
member Provider : SiteMapProvider

属性值

类型： System.Web SiteMapProvider
引发该事件的 SiteMapProvider；如果未在 EventArgs 对象构造期间指定提供程序，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

事件订户可以使用 HttpContext 和 SiteMapProvider 对象来动态创建 SiteMapNode 对象，并检索关于被请求的页的信息（如被请求的 URL）以及用户信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

SiteMapResolveEventArgs 类
SiteMapResolveEventArgs 成员
System.Web 命名空间
SiteMapProvider
SiteMapResolve
SiteMapResolve


SiteMapResolveEventHandler 委托

SiteMapResolveEventHandler 委托

表示的方法将用于处理 SiteMapProvider 或静态 SiteMap 类的特定实例的 SiteMapResolve 事件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Function SiteMapResolveEventHandler ( _
    sender As Object, _
    e As SiteMapResolveEventArgs _
) As SiteMapNode
public delegate SiteMapNode SiteMapResolveEventHandler(
    Object sender,
    SiteMapResolveEventArgs e
)
public delegate SiteMapNode^ SiteMapResolveEventHandler(
    Object^ sender,
    SiteMapResolveEventArgs^ e
)
type SiteMapResolveEventHandler =
    delegate of
        sender:Object *
        e:SiteMapResolveEventArgs -> SiteMapNode

参数

sender
类型： System Object
事件的源，是 SiteMapProvider 类的实例。
e
类型： System.Web SiteMapResolveEventArgs
包含事件数据的 SiteMapResolveEventArgs。

返回值

类型： System.Web SiteMapNode
SiteMapNode，它表示 SiteMapResolveEventHandler 操作的结果。

静态 SiteMap 类公开默认站点地图提供程序的 SiteMapResolve 事件。

当创建 SqlDataSourceCommandEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlDataSourceCommandEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlDataSourceCommandEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。 当创建 SqlDataSourceCommandEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为了呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了与上下文有关的查询字符串。 下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为了呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了与上下文有关的查询字符串。 下面的代码示例演示如何在 ASP.NET 网页上处理 SiteMapResolve 事件，以便修改由站点导航控件（如 SiteMapPath 控件）显示的目标 URL。在此示例中，当前页为联机电子布告栏或论坛中的一个发布页。为了呈现更有意义的站点导航，由导航控件显示的节点的 URL 附加了与上下文有关的查询字符串。

说明 说明

从 SiteMapResolveEventHandler 类中访问 CurrentNode 属性是安全的。在这种情况下，ASP.NET 站点导航基础结构可以防止无限递归。 从 SiteMapResolveEventHandler 类中访问 CurrentNode 属性是安全的。在这种情况下，ASP.NET 站点导航基础结构可以防止无限递归。

    Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        ' The ExpandForumPaths method is called to handle
        ' the SiteMapResolve event.
        AddHandler SiteMap.SiteMapResolve, AddressOf Me.ExpandForumPaths

    End Sub

    Private Function ExpandForumPaths(ByVal sender As Object, ByVal e As SiteMapResolveEventArgs) As SiteMapNode
        ' The current node represents a Post page in a bulletin board forum.
        ' Clone the current node and all of its relevant parents. This
        ' returns a site map node that a developer can then
        ' walk, modifying each node.Url property in turn.
        ' Since the cloned nodes are separate from the underlying
        ' site navigation structure, the fixups that are made do not
        ' effect the overall site navigation structure.
        Dim currentNode As SiteMapNode = SiteMap.CurrentNode.Clone(True)
        Dim tempNode As SiteMapNode = currentNode

        ' Obtain the recent IDs.
        Dim forumGroupID As Integer = GetMostRecentForumGroupID()
        Dim forumID As Integer = GetMostRecentForumID(forumGroupID)
        Dim postID As Integer = GetMostRecentPostID(forumID)

        ' The current node, and its parents, can be modified to include
        ' dynamic querystring information relevant to the currently
        ' executing request.
        If Not (0 = postID) Then
            tempNode.Url = tempNode.Url & "?PostID=" & postID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = forumID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumID=" & forumID.ToString()
        End If

        tempNode = tempNode.ParentNode
        If Not (0 = ForumGroupID) And Not (tempNode Is Nothing) Then
            tempNode.Url = tempNode.Url & "?ForumGroupID=" & forumGroupID.ToString()
        End If

        Return currentNode

    End Function

private void Page_Load(object sender, EventArgs e)
{
    // The ExpandForumPaths method is called to handle
    // the SiteMapResolve event.
    SiteMap.SiteMapResolve +=
      new SiteMapResolveEventHandler(this.ExpandForumPaths);
}

private SiteMapNode ExpandForumPaths(Object sender, SiteMapResolveEventArgs e)
{
    // The current node represents a Post page in a bulletin board forum.
    // Clone the current node and all of its relevant parents. This
    // returns a site map node that a developer can then
    // walk, modifying each node.Url property in turn.
    // Since the cloned nodes are separate from the underlying
    // site navigation structure, the fixups that are made do not
    // effect the overall site navigation structure.
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    SiteMapNode tempNode = currentNode;

    // Obtain the recent IDs.
    int forumGroupID = GetMostRecentForumGroupID();
    int forumID = GetMostRecentForumID(forumGroupID);
    int postID = GetMostRecentPostID(forumID);

    // The current node, and its parents, can be modified to include
    // dynamic querystring information relevant to the currently
    // executing request.
    if (0 != postID)
    {
        tempNode.Url = tempNode.Url + "?PostID=" + postID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumID))
    {
        tempNode.Url = tempNode.Url + "?ForumID=" + forumID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumGroupID))
    {
        tempNode.Url = tempNode.Url + "?ForumGroupID=" + forumGroupID.ToString();
    }

    return currentNode;
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

System.Web 命名空间
SiteMapResolveEventArgs
SiteMapResolve


StaticSiteMapProvider 类

StaticSiteMapProvider 类
成员

作为 SiteMapProvider 抽象类的部分实现和 XmlSiteMapProvider 类（它是 ASP.NET 中的默认站点地图提供程序）的基类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustInherit Class StaticSiteMapProvider _
    Inherits SiteMapProvider
public abstract class StaticSiteMapProvider : SiteMapProvider
public ref class StaticSiteMapProvider abstract : public SiteMapProvider
[<AbstractClassAttribute>]
type StaticSiteMapProvider =
    class
        inherit SiteMapProvider
    end

StaticSiteMapProvider 类是 SiteMapProvider 抽象类的部分实现，它提供两个附加方法 AddNode 和 RemoveNode，以及抽象的 BuildSiteMap 和受保护的 Clear 方法。

StaticSiteMapProvider 类支持编写站点地图提供程序（例如，XmlSiteMapProvider），站点地图提供程序将存储在持久性存储区中的站点地图转换为存储在内存中的站点地图。StaticSiteMapProvider 类提供用于存储和检索 SiteMapNode 对象的基本实现。 StaticSiteMapProvider 类支持编写站点地图提供程序（例如，XmlSiteMapProvider），站点地图提供程序将存储在持久性存储区中的站点地图转换为存储在内存中的站点地图。StaticSiteMapProvider 类提供用于存储和检索 SiteMapNode 对象的基本实现。

SiteMapProvider 和 StaticSiteMapProvider 类支持站点地图提供程序层次结构的概念，其中一个站点地图提供程序可以与其他站点地图提供程序具有层次关系。这种模式是使用 RootProvider 和 ParentProvider 属性实现的。 SiteMapProvider 和 StaticSiteMapProvider 类支持站点地图提供程序层次结构的概念，其中一个站点地图提供程序可以与其他站点地图提供程序具有层次关系。这种模式是使用 RootProvider 和 ParentProvider 属性实现的。

StaticSiteMapProvider 类将其 SiteMapNode 对象存储在哈希表中，并在内部使用由站点地图节点表示的页的 SiteMapNode..::.Url 属性作为键。（如果一个站点地图节点没有指定 URL，则使用自动生成的唯一键来跟踪该节点。）因此不能有这样的站点地图节点：其中具有相同 URL 的站点地图节点被使用多次。例如，尝试使用 XmlSiteMapProvider 类（它是默认 ASP.NET 站点地图提供程序）或从 StaticSiteMapProvider 类派生的任何站点地图提供程序加载下面的代码示例中所示的站点地图节点将不会工作，因为 AboutUs.aspx 页被使用多次。 StaticSiteMapProvider 类将其 SiteMapNode 对象存储在哈希表中，并在内部使用由站点地图节点表示的页的 SiteMapNode..::.Url 属性作为键。（如果一个站点地图节点没有指定 URL，则使用自动生成的唯一键来跟踪该节点。）因此不能有这样的站点地图节点：其中具有相同 URL 的站点地图节点被使用多次。例如，尝试使用 XmlSiteMapProvider 类（它是默认 ASP.NET 站点地图提供程序）或从 StaticSiteMapProvider 类派生的任何站点地图提供程序加载下面的代码示例中所示的站点地图节点将不会工作，因为 AboutUs.aspx 页被使用多次。 StaticSiteMapProvider 类将其 SiteMapNode 对象存储在哈希表中，并在内部使用由站点地图节点表示的页的 SiteMapNode..::.Url 属性作为键。（如果一个站点地图节点没有指定 URL，则使用自动生成的唯一键来跟踪该节点。）因此不能有这样的站点地图节点：其中具有相同 URL 的站点地图节点被使用多次。例如，尝试使用 XmlSiteMapProvider 类（它是默认 ASP.NET 站点地图提供程序）或从 StaticSiteMapProvider 类派生的任何站点地图提供程序加载下面的代码示例中所示的站点地图节点将不会工作，因为 AboutUs.aspx 页被使用多次。

<sitemap>
  <sitemapnode title="Home" description="Home" url="default.aspx" >
    <sitemapnode title="Catalog" description="Our catalog" url="catalog.aspx"/>
    <sitemapnode title="About Us" description="All about our company" url="aboutus.aspx"/>
    <sitemapnode title="Driving Directions" description="Directions to our store" url="aboutus.aspx"/>
  </sitemapnode>
</sitemap>

如果扩展 StaticSiteMapProvider 类，则三个最重要的方法为 GetRootNodeCore、Initialize 和 BuildSiteMap 方法。Clear 和 FindSiteMapNode 方法具有足够用于大多数自定义站点地图提供程序实现的默认实现。 如果扩展 StaticSiteMapProvider 类，则三个最重要的方法为 GetRootNodeCore、Initialize 和 BuildSiteMap 方法。Clear 和 FindSiteMapNode 方法具有足够用于大多数自定义站点地图提供程序实现的默认实现。

Initialize 方法被调用来初始化派生站点地图提供程序（包括加载站点地图数据所需要的任何资源），但是它不尝试在内存中构建站点地图节点。如果派生类使用文件来存储站点地图数据，则可以在这里执行任何文件初始化。如果站点地图节点使用其他某种数据存储类型，如关系数据库，则可以在此执行连接的初始化。在配置中放在站点地图提供程序元素上的诸如文件名或连接字符串等附加特性由 ASP.NET 配置系统处理，并使用 attributes 参数传递给 Initialize 方法。 Initialize 方法被调用来初始化派生站点地图提供程序（包括加载站点地图数据所需要的任何资源），但是它不尝试在内存中构建站点地图节点。如果派生类使用文件来存储站点地图数据，则可以在这里执行任何文件初始化。如果站点地图节点使用其他某种数据存储类型，如关系数据库，则可以在此执行连接的初始化。在配置中放在站点地图提供程序元素上的诸如文件名或连接字符串等附加特性由 ASP.NET 配置系统处理，并使用 attributes 参数传递给 Initialize 方法。 Initialize 方法被调用来初始化派生站点地图提供程序（包括加载站点地图数据所需要的任何资源），但是它不尝试在内存中构建站点地图节点。如果派生类使用文件来存储站点地图数据，则可以在这里执行任何文件初始化。如果站点地图节点使用其他某种数据存储类型，如关系数据库，则可以在此执行连接的初始化。在配置中放在站点地图提供程序元素上的诸如文件名或连接字符串等附加特性由 ASP.NET 配置系统处理，并使用 attributes 参数传递给 Initialize 方法。 Initialize 方法被调用来初始化派生站点地图提供程序（包括加载站点地图数据所需要的任何资源），但是它不尝试在内存中构建站点地图节点。如果派生类使用文件来存储站点地图数据，则可以在这里执行任何文件初始化。如果站点地图节点使用其他某种数据存储类型，如关系数据库，则可以在此执行连接的初始化。在配置中放在站点地图提供程序元素上的诸如文件名或连接字符串等附加特性由 ASP.NET 配置系统处理，并使用 attributes 参数传递给 Initialize 方法。

BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。 BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。 BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。 BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。 BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。 BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。 BuildSiteMap 方法必须由从 StaticSiteMapProvider 类派生的所有类重写，并被调用来从持久性存储区加载站点地图节点并将节点转换为一种内部表示形式。BuildSiteMap 方法在 StaticSiteMapProvider 和 XmlSiteMapProvider 类的许多默认成员实现中进行内部调用。如果实现自己的站点地图提供程序，请确保仅进行一次站点地图数据处理，并且对 BuildSiteMap 方法的后续调用立即返回（如果站点地图信息已经加载）。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。站点地图基础结构支持根据用户的角色显示站点地图信息。根据单独的 SiteMapNode 对象支持的 Roles 属性，可能存在针对不同用户的不同导航结构。StaticSiteMapProvider 类的站点地图节点检索成员的默认实现通过调用 IsAccessibleToUser 方法自动执行安全修整。

AddNode、Clear 和 RemoveNode 方法操作用于以线程安全的方式跟踪站点地图节点的内部集合。

对继承者的说明

当从 StaticSiteMapProvider 类继承时，必须重写以下成员：BuildSiteMap。

下面的代码示例演示如何扩展 StaticSiteMapProvider 类以使用 Microsoft Access 作为站点地图提供程序。AccessSiteMapProvider 类是仅支持一个级别深度的简单层次结构的站点地图提供程序。存储站点地图数据的表具有以下结构： 下面的代码示例演示如何扩展 StaticSiteMapProvider 类以使用 Microsoft Access 作为站点地图提供程序。AccessSiteMapProvider 类是仅支持一个级别深度的简单层次结构的站点地图提供程序。存储站点地图数据的表具有以下结构： 下面的代码示例演示如何扩展 StaticSiteMapProvider 类以使用 Microsoft Access 作为站点地图提供程序。AccessSiteMapProvider 类是仅支持一个级别深度的简单层次结构的站点地图提供程序。存储站点地图数据的表具有以下结构：

NODEID URL            NAME       PARENTNODEID
 ---------------------------------------------
 1      default.aspx   Default    <NULL>
 2      catalog.aspx   Catalog    1
 3      aboutus.aspx   Contact Us 1
...

AccessSiteMapProvider 类是从 StaticSiteMapProvider 类派生的，它使用基本的 SQL 查询以及 OleDbCommand 和 OleDbDataReader 对象从 Microsoft Access 数据库检索其信息。

Imports System
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Data
Imports System.Data.OleDb
Imports System.Security.Permissions
Imports System.Web

Namespace Samples.AspNet.VB.Controls

    ' An extremely simple AccessSiteMapProvider that only supports a
    ' site map node hierarchy one level deep.
    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class AccessSiteMapProvider
        Inherits StaticSiteMapProvider

        Private aRootNode As SiteMapNode = Nothing
        Private accessConnection As OleDbConnection = Nothing

        ' This string is case sensitive.
        Private AccessConnectionStringName As String = "accessSiteMapConnectionString"

        ' Implement a default constructor.
        Public Sub New()
        End Sub 'New

        ' Some basic state to help track the initialization state of the provider.
        Private initialized As Boolean = False

        Public Overridable ReadOnly Property IsInitialized() As Boolean
            Get
                Return initialized
            End Get
        End Property

        ' Return the root node of the current site map.
        Public Overrides ReadOnly Property RootNode() As SiteMapNode
            Get
                Return BuildSiteMap()
            End Get
        End Property

        Protected Overrides Function GetRootNodeCore() As SiteMapNode
            Return RootNode
        End Function

        ' Initialize is used to initialize the properties and any state that the
        ' AccessProvider holds, but is not used to build the site map.
        ' The site map is built when the BuildSiteMap method is called.
        Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As NameValueCollection)
            If IsInitialized Then
                Return
            End If
            MyBase.Initialize(name, attributes)

            ' Create and test the connection to the Microsoft Access database.
            ' Retrieve the Value of the Access connection string from the
            ' attributes NameValueCollection.
            Dim connectionString As String = attributes(AccessConnectionStringName)

            If Nothing = connectionString OrElse connectionString.Length = 0 Then
                Throw New Exception("The connection string was not found.")
            Else
                accessConnection = New OleDbConnection(connectionString)
            End If
            initialized = True
        End Sub 'Initialize

        ' SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
        '
        ' Clean up any collections or other state that an instance of this may hold.
        Protected Overrides Sub Clear()
            SyncLock Me
                aRootNode = Nothing
                MyBase.Clear()
            End SyncLock
        End Sub 'Clear

        ' Build an in-memory representation from persistent
        ' storage, and return the root node of the site map.
        Public Overrides Function BuildSiteMap() As SiteMapNode

            ' Since the SiteMap class is static, make sure that it is
            ' not modified while the site map is built.
            SyncLock Me

                ' If there is no initialization, this method is being
                ' called out of order.
                If Not IsInitialized Then
                    Throw New Exception("BuildSiteMap called incorrectly.")
                End If

                ' If there is no root node, then there is no site map.
                If aRootNode Is Nothing Then
                    ' Start with a clean slate
                    Clear()

                    ' Select the root node of the site map from Microsoft Access.
                    Dim rootNodeId As Integer = -1

                    If accessConnection.State = ConnectionState.Closed Then
                        accessConnection.Open()
                    End If
                    Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
                    Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

                    If rootNodeReader.HasRows Then
                        rootNodeReader.Read()
                        rootNodeId = rootNodeReader.GetInt32(0)
                        ' Create a SiteMapNode that references the current StaticSiteMapProvider.
                        aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
                    Else
                        Return Nothing
                    End If
                    rootNodeReader.Close()
                    ' Select the child nodes of the root node.
                    Dim childNodesCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection)
                    Dim rootParam As New OleDbParameter("parentid", OleDbType.Integer)
                    rootParam.Value = rootNodeId
                    childNodesCommand.Parameters.Add(rootParam)

                    Dim childNodesReader As OleDbDataReader = childNodesCommand.ExecuteReader()

                    If childNodesReader.HasRows Then

                        Dim childNode As SiteMapNode = Nothing
                        While childNodesReader.Read()
                            childNode = New SiteMapNode(Me, _
                            childNodesReader.GetInt32(0).ToString(), _
                            childNodesReader.GetString(1), _
                            childNodesReader.GetString(2))

                            ' Use the SiteMapNode AddNode method to add
                            ' the SiteMapNode to the ChildNodes collection.
                            AddNode(childNode, aRootNode)
                        End While
                    End If

                    childNodesReader.Close()
                    accessConnection.Close()
                End If
                Return aRootNode
            End SyncLock

        End Function 'BuildSiteMap

    End Class 'AccessSiteMapProvider

End Namespace

namespace Samples.AspNet.CS.Controls {

    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Data;
    using System.Data.OleDb;
    using System.Security.Permissions;
    using System.Web;

    /// An extremely simple AccessSiteMapProvider that only supports a
    /// site map node hierarchy 1 level deep.
    [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class AccessSiteMapProvider : StaticSiteMapProvider
    {
        private SiteMapNode rootNode =  null;
        private OleDbConnection accessConnection = null;

        // This string is case sensitive.
        private string AccessConnectionStringName = "accessSiteMapConnectionString";

        // Implement a default constructor.
        public AccessSiteMapProvider () { }

        // Some basic state to help track the initialization state of the provider.
        private bool initialized = false;
        public virtual bool IsInitialized {
            get {
                return initialized;
            }
        }
        // Return the root node of the current site map.
        public override SiteMapNode RootNode {
            get {
                SiteMapNode temp = null;
                temp = BuildSiteMap();
                return temp;
            }
        }
        protected override SiteMapNode GetRootNodeCore() {
            return RootNode;
        }
        // Initialize is used to initialize the properties and any state that the
        // AccessProvider holds, but is not used to build the site map.
        // The site map is built when the BuildSiteMap method is called.
        public override void Initialize(string name, NameValueCollection attributes) {
            if (IsInitialized)
                return;

            base.Initialize(name, attributes);

            // Create and test the connection to the Microsoft Access database.

            // Retrieve the Value of the Access connection string from the
            // attributes NameValueCollection.
            string connectionString = attributes[AccessConnectionStringName];

            if (null == connectionString || connectionString.Length == 0)
                throw new Exception ("The connection string was not found.");
            else
                accessConnection = new OleDbConnection(connectionString);

            initialized = true;
        }

        ///
        /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
        ///
        // Clean up any collections or other state that an instance of this may hold.
        protected override void Clear() {
            lock (this) {
                rootNode = null;
                base.Clear();
            }
        }

        // Build an in-memory representation from persistent
        // storage, and return the root node of the site map.
        public override SiteMapNode BuildSiteMap() {

            // Since the SiteMap class is static, make sure that it is
            // not modified while the site map is built.
            lock(this) {

                // If there is no initialization, this method is being
                // called out of order.
                if (! IsInitialized) {
                    throw new Exception("BuildSiteMap called incorrectly.");
                }

                // If there is no root node, then there is no site map.
                if (null == rootNode) {
                    // Start with a clean slate
                    Clear();

                    // Select the root node of the site map from Microsoft Access.
                    int rootNodeId = -1;

                    if (accessConnection.State == ConnectionState.Closed)
                        accessConnection.Open();
                    OleDbCommand rootNodeCommand =
                        new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                                         accessConnection);
                    OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

                    if(rootNodeReader.HasRows) {
                        rootNodeReader.Read();
                        rootNodeId = rootNodeReader.GetInt32(0);
                        // Create a SiteMapNode that references the current StaticSiteMapProvider.
                        rootNode   = new SiteMapNode(this,
                                                     rootNodeId.ToString(),
                                                     rootNodeReader.GetString(1),
                                                     rootNodeReader.GetString(2));

                    }
                    else return null;

                    rootNodeReader.Close();
                    // Select the child nodes of the root node.
                    OleDbCommand childNodesCommand =
                        new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?",
                                         accessConnection);
                    OleDbParameter rootParam = new OleDbParameter("parentid", OleDbType.Integer);
                    rootParam.Value = rootNodeId;
                    childNodesCommand.Parameters.Add(rootParam);

                    OleDbDataReader childNodesReader = childNodesCommand.ExecuteReader();

                    if (childNodesReader.HasRows) {

                        SiteMapNode childNode = null;
                        while(childNodesReader.Read()) {
                            childNode =  new SiteMapNode(this,
                                                         childNodesReader.GetInt32(0).ToString(),
                                                         childNodesReader.GetString(1),
                                                         childNodesReader.GetString(2));

                            // Use the SiteMapNode AddNode method to add
                            // the SiteMapNode to the ChildNodes collection.
                            AddNode(childNode, rootNode);
                        }
                    }

                    childNodesReader.Close();
                    accessConnection.Close();
                }
                return rootNode;
            }
        }
    }
}

#using <System.Data.dll>
#using <System.Transactions.dll>
#using <System.EnterpriseServices.dll>
#using <System.dll>
#using <System.Web.dll>
#using <System.Configuration.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;
using namespace System::Configuration;
using namespace System::Data;
using namespace System::Data::OleDb;
using namespace System::Security::Permissions;
using namespace System::Web;

/// An extremely simple AccessSiteMapProvider that only supports a
/// site map node hierarchy 1 level deep.

[AspNetHostingPermission(SecurityAction::Demand,Level=AspNetHostingPermissionLevel::Minimal)]
public ref class AccessSiteMapProvider: public StaticSiteMapProvider
{
private:
   SiteMapNode ^ rootNode;
   OleDbConnection^ accessConnection;

   // This string is case sensitive.
   String^ AccessConnectionStringName;

public:
   // Implement a default constructor.
   AccessSiteMapProvider()
   {
      initialized = false;
      AccessConnectionStringName = "accessSiteMapConnectionString";
   }

private:

   // Some basic state to help track the initialization state of the provider.
   bool initialized;

public:

   property bool IsInitialized
   {
      virtual bool get()
      {
         return initialized;
      }

   }

   property SiteMapNode ^ RootNode
   {

      // Return the root node of the current site map.
      virtual SiteMapNode ^ get() override
      {
         SiteMapNode ^ temp = nullptr;
         temp = BuildSiteMap();
         return temp;
      }

   }

protected:

   virtual SiteMapNode ^ GetRootNodeCore() override
   {
      return RootNode;
   }

public:

   // Initialize is used to initialize the properties and any state that the
   // AccessProvider holds, but is not used to build the site map.
   // The site map is built when the BuildSiteMap method is called.
   virtual void Initialize( String^ name, NameValueCollection^ attributes ) override
   {
      if ( IsInitialized )
            return;

      StaticSiteMapProvider::Initialize( name, attributes );

      // Create and test the connection to the Microsoft Access database.
      // Retrieve the Value of the Access connection string from the
      // attributes NameValueCollection.
      String^ connectionString = attributes[ AccessConnectionStringName ];
      if ( nullptr == connectionString || connectionString->Length == 0 )
            throw gcnew Exception( "The connection string was not found." );
      else
            accessConnection = gcnew OleDbConnection( connectionString );

      initialized = true;
   }

protected:

   ///
   /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
   ///
   // Clean up any collections or other state that an instance of this may hold.
   virtual void Clear() override
   {
      System::Threading::Monitor::Enter( this );
      try
      {
         rootNode = nullptr;
         StaticSiteMapProvider::Clear();
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

public:

   // Build an in-memory representation from persistent
   // storage, and return the root node of the site map.
   virtual SiteMapNode ^ BuildSiteMap() override
   {
      // Since the SiteMap class is static, make sure that it is
      // not modified while the site map is built.
      System::Threading::Monitor::Enter( this );
      try
      {

         // If there is no initialization, this method is being
         // called out of order.
         if (  !IsInitialized )
         {
            throw gcnew Exception( "BuildSiteMap called incorrectly." );
         }

         // If there is no root node, then there is no site map.
         if ( nullptr == rootNode )
         {

            // Start with a clean slate
            Clear();

            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;
            if ( accessConnection->State == ConnectionState::Closed )
               accessConnection->Open();

            OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
            OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
            if ( rootNodeReader->HasRows )
            {
               rootNodeReader->Read();
               rootNodeId = rootNodeReader->GetInt32( 0 );

               // Create a SiteMapNode that references the current StaticSiteMapProvider.
               rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(),
                  rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
            }
            else
               return nullptr;
            rootNodeReader->Close();

            // Select the child nodes of the root node.
            OleDbCommand^ childNodesCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection);
            OleDbParameter^ rootParam = gcnew OleDbParameter( "parentid", OleDbType::Integer);
            rootParam->Value = rootNodeId;
            childNodesCommand->Parameters->Add( rootParam );
            OleDbDataReader^ childNodesReader = childNodesCommand->ExecuteReader();
            if ( childNodesReader->HasRows )
            {
               SiteMapNode ^ childNode = nullptr;
               while ( childNodesReader->Read() )
               {
                  childNode = gcnew SiteMapNode( this,
                      System::Convert::ToString(childNodesReader->GetInt32( 0 )),
                     childNodesReader->GetString( 1 ),
                     childNodesReader->GetString( 2 )
                  );
                  // Use the SiteMapNode AddNode method to add
                  // the SiteMapNode to the ChildNodes collection.
                  AddNode( childNode, rootNode );
               }
            }
            childNodesReader->Close();
            accessConnection->Close();
         }
         return rootNode;
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

};

最后，AccessSiteMapProvider 在下面的 Web.config 文件中被配置为默认提供程序。

<configuration>
  <system.web>
    <siteMap defaultProvider="AccessSiteMapProvider">
     <providers>
       <add
         name="AccessSiteMapProvider"
         type="Samples.AspNet.AccessSiteMapProvider,Samples.AspNet "
         accessSiteMapConnectionString="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=sitemap.mdb "/>
     </providers>
    </siteMap>
  </system.web>
</configuration>

System.Web System.Web..::.StaticSiteMapProviderStaticSiteMapProvider

此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 成员
System.Web 命名空间
SiteMapProvider
XmlSiteMapProvider
SiteMapNode
SiteMap

其他资源

ASP.NET 站点导航
ASP.NET 站点地图
ASP.NET 站点导航提供程序


StaticSiteMapProvider 成员

StaticSiteMapProvider 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StaticSiteMapProvider 类

作为 SiteMapProvider 抽象类的部分实现和 XmlSiteMapProvider 类（它是 ASP.NET 中的默认站点地图提供程序）的基类。

StaticSiteMapProvider 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

StaticSiteMapProvider 类
System.Web 命名空间


StaticSiteMapProvider 构造函数

StaticSiteMapProvider 构造函数
StaticSiteMapProvider 类

初始化 StaticSiteMapProvider 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Sub New
protected StaticSiteMapProvider()
protected:
StaticSiteMapProvider()
new : unit -> StaticSiteMapProvider

注意 该类未直接实例化。此构造函数是从派生自 StaticSiteMapProvider 类的类的构造函数中调用的。 注意 该类未直接实例化。此构造函数是从派生自 StaticSiteMapProvider 类的类的构造函数中调用的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间


StaticSiteMapProvider 方法

StaticSiteMapProvider 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StaticSiteMapProvider 类

StaticSiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

StaticSiteMapProvider 类
System.Web 命名空间


StaticSiteMapProvider ..::.AddNode 方法

StaticSiteMapProvider
.
.
::
.
AddNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StaticSiteMapProvider 类

向当前 StaticSiteMapProvider 对象维护的集合添加一个站点地图节点。

名称 说明
页首

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间


StaticSiteMapProvider ..::.AddNode 方法 (SiteMapNode, SiteMapNode)

StaticSiteMapProvider
.
.
::
.
AddNode 方法 (SiteMapNode, SiteMapNode)
StaticSiteMapProvider 类

向站点地图提供程序维护的集合添加一个 SiteMapNode，并建立 SiteMapNode 对象之间的父/子关系。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overrides Sub AddNode ( _
    node As SiteMapNode, _
    parentNode As SiteMapNode _
)
protected internal override void AddNode(
    SiteMapNode node,
    SiteMapNode parentNode
)
protected public:
virtual void AddNode(
    SiteMapNode^ node,
    SiteMapNode^ parentNode
) override
abstract AddNode :
        node:SiteMapNode *
        parentNode:SiteMapNode -> unit
override AddNode :
        node:SiteMapNode *
        parentNode:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要添加到站点地图提供程序的 SiteMapNode。
parentNode
类型： System.Web SiteMapNode
SiteMapNode，将在它的下面添加 node。
异常 | 条件
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
InvalidOperationException | SiteMapNode..::.Url 或 SiteMapNode..::.Key 已经注册到 StaticSiteMapProvider。站点地图节点必须由具有唯一 URL 或键的页构成。 SiteMapNode..::.Url 或 SiteMapNode..::.Key 已经注册到 StaticSiteMapProvider。站点地图节点必须由具有唯一 URL 或键的页构成。

将 node 参数所标识的站点地图节点添加到一个内部集合，并建立它与 parentNode 参数所标识的站点地图节点之间的父/子关系。

站点地图节点的 URL 可以在将它添加到内部集合时解释。应用程序相对的和相对 URL 被扩展为应用程序绝对的虚拟路径，然后在内部被用来存储和访问 SiteMapNode 类的单独实例。其他 URL（如物理路径、带协议的路径和 UNC 路径）不会被解释。 站点地图节点的 URL 可以在将它添加到内部集合时解释。应用程序相对的和相对 URL 被扩展为应用程序绝对的虚拟路径，然后在内部被用来存储和访问 SiteMapNode 类的单独实例。其他 URL（如物理路径、带协议的路径和 UNC 路径）不会被解释。 站点地图节点的 URL 可以在将它添加到内部集合时解释。应用程序相对的和相对 URL 被扩展为应用程序绝对的虚拟路径，然后在内部被用来存储和访问 SiteMapNode 类的单独实例。其他 URL（如物理路径、带协议的路径和 UNC 路径）不会被解释。

XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于站点地图节点的 Url 属性来检索节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 来跟踪站点地图节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于站点地图节点的 Url 属性来检索节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 来跟踪站点地图节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于站点地图节点的 Url 属性来检索节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 来跟踪站点地图节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于站点地图节点的 Url 属性来检索节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 来跟踪站点地图节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于站点地图节点的 Url 属性来检索节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 来跟踪站点地图节点。

对继承者的说明

在重写 AddNode 方法时，请确保在使用 AddNode 方法添加站点地图节点时将 Key 属性设置为唯一的值。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
AddNode 重载
System.Web 命名空间
RemoveNode


StaticSiteMapProvider ..::.BuildSiteMap 方法

StaticSiteMapProvider
.
.
::
.
BuildSiteMap 方法
StaticSiteMapProvider 类

在派生类中被重写时，从持久性存储区加载站点地图信息，并在内存中构建它。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public MustOverride Function BuildSiteMap As SiteMapNode
public abstract SiteMapNode BuildSiteMap()
public:
virtual SiteMapNode^ BuildSiteMap() abstract
abstract BuildSiteMap : unit -> SiteMapNode

返回值

类型： System.Web SiteMapNode
站点地图导航结构的根 SiteMapNode。

BuildSiteMap 方法是 StaticSiteMapProvider 类的一个抽象成员。BuildSiteMap 方法被调用来从持久性存储区加载和构建站点地图节点。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。 BuildSiteMap 方法是 StaticSiteMapProvider 类的一个抽象成员。BuildSiteMap 方法被调用来从持久性存储区加载和构建站点地图节点。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。 BuildSiteMap 方法是 StaticSiteMapProvider 类的一个抽象成员。BuildSiteMap 方法被调用来从持久性存储区加载和构建站点地图节点。在实现 BuildSiteMap 方法时，请确保它是线程安全的，因为多个并发的页请求可能间接导致多次调用来加载站点地图信息。

对继承者的说明

在派生类中重写 BuildSiteMap 方法时，请确保规范化添加到站点地图提供程序的 SiteMapNode 对象的 URL，以便 FindSiteMapNode 方法能够检索站点地图节点，而不管站点地图节点的 URL 是以绝对虚拟路径还是以应用程序相对路径提供的。使用 AddNode 方法的站点地图提供程序实施者应该在代表站点地图提供程序将 SiteMapNode 对象存储在内部哈希表中之前规范化所有 URL。 在派生类中重写 BuildSiteMap 方法时，请确保规范化添加到站点地图提供程序的 SiteMapNode 对象的 URL，以便 FindSiteMapNode 方法能够检索站点地图节点，而不管站点地图节点的 URL 是以绝对虚拟路径还是以应用程序相对路径提供的。使用 AddNode 方法的站点地图提供程序实施者应该在代表站点地图提供程序将 SiteMapNode 对象存储在内部哈希表中之前规范化所有 URL。

安全修整行为包含在 SiteMapProvider 和 StaticSiteMapProvider 类实现中。然而，若要使安全修整在派生类中工作，在重写 BuildSiteMap 方法时，您必须设置在构建站点地图提供程序时创建的任何 SiteMapNode 对象的 Roles 属性。 安全修整行为包含在 SiteMapProvider 和 StaticSiteMapProvider 类实现中。然而，若要使安全修整在派生类中工作，在重写 BuildSiteMap 方法时，您必须设置在构建站点地图提供程序时创建的任何 SiteMapNode 对象的 Roles 属性。

重要说明 重要事项

BuildSiteMap 方法由 FindSiteMapNode、GetChildNodes 和 GetParentNode 方法的默认实现调用。如果在派生类中重写 BuildSiteMap 方法，请确保它仅加载一次站点地图数据，并在后续调用中返回。 BuildSiteMap 方法由 FindSiteMapNode、GetChildNodes 和 GetParentNode 方法的默认实现调用。如果在派生类中重写 BuildSiteMap 方法，请确保它仅加载一次站点地图数据，并在后续调用中返回。

下面的代码示例演示如何实现 BuildSiteMap 方法来从 Microsoft Access 数据库检索数据，并构建被添加到根站点地图节点的 ChildNodes 集合的 SiteMapNode 对象。最后，将 RootNode 属性返回给调用方。 下面的代码示例演示如何实现 BuildSiteMap 方法来从 Microsoft Access 数据库检索数据，并构建被添加到根站点地图节点的 ChildNodes 集合的 SiteMapNode 对象。最后，将 RootNode 属性返回给调用方。

此代码示例摘自一个为 StaticSiteMapProvider 类提供的更大的示例。

' Build an in-memory representation from persistent
' storage, and return the root node of the site map.
Public Overrides Function BuildSiteMap() As SiteMapNode

    ' Since the SiteMap class is static, make sure that it is
    ' not modified while the site map is built.
    SyncLock Me

        ' If there is no initialization, this method is being
        ' called out of order.
        If Not IsInitialized Then
            Throw New Exception("BuildSiteMap called incorrectly.")
        End If

        ' If there is no root node, then there is no site map.
        If aRootNode Is Nothing Then
            ' Start with a clean slate
            Clear()

            ' Select the root node of the site map from Microsoft Access.
            Dim rootNodeId As Integer = -1

            If accessConnection.State = ConnectionState.Closed Then
                accessConnection.Open()
            End If
            Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
            Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

            If rootNodeReader.HasRows Then
                rootNodeReader.Read()
                rootNodeId = rootNodeReader.GetInt32(0)
                ' Create a SiteMapNode that references the current StaticSiteMapProvider.
                aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
            Else
                Return Nothing
            End If
            rootNodeReader.Close()
            ' Select the child nodes of the root node.
            Dim childNodesCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection)
            Dim rootParam As New OleDbParameter("parentid", OleDbType.Integer)
            rootParam.Value = rootNodeId
            childNodesCommand.Parameters.Add(rootParam)

            Dim childNodesReader As OleDbDataReader = childNodesCommand.ExecuteReader()

            If childNodesReader.HasRows Then

                Dim childNode As SiteMapNode = Nothing
                While childNodesReader.Read()
                    childNode = New SiteMapNode(Me, _
                    childNodesReader.GetInt32(0).ToString(), _
                    childNodesReader.GetString(1), _
                    childNodesReader.GetString(2))

                    ' Use the SiteMapNode AddNode method to add
                    ' the SiteMapNode to the ChildNodes collection.
                    AddNode(childNode, aRootNode)
                End While
            End If

            childNodesReader.Close()
            accessConnection.Close()
        End If
        Return aRootNode
    End SyncLock

End Function 'BuildSiteMap

// Build an in-memory representation from persistent
// storage, and return the root node of the site map.
public override SiteMapNode BuildSiteMap() {

    // Since the SiteMap class is static, make sure that it is
    // not modified while the site map is built.
    lock(this) {

        // If there is no initialization, this method is being
        // called out of order.
        if (! IsInitialized) {
            throw new Exception("BuildSiteMap called incorrectly.");
        }

        // If there is no root node, then there is no site map.
        if (null == rootNode) {
            // Start with a clean slate
            Clear();

            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;

            if (accessConnection.State == ConnectionState.Closed)
                accessConnection.Open();
            OleDbCommand rootNodeCommand =
                new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                                 accessConnection);
            OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

            if(rootNodeReader.HasRows) {
                rootNodeReader.Read();
                rootNodeId = rootNodeReader.GetInt32(0);
                // Create a SiteMapNode that references the current StaticSiteMapProvider.
                rootNode   = new SiteMapNode(this,
                                             rootNodeId.ToString(),
                                             rootNodeReader.GetString(1),
                                             rootNodeReader.GetString(2));

            }
            else return null;

            rootNodeReader.Close();
            // Select the child nodes of the root node.
            OleDbCommand childNodesCommand =
                new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?",
                                 accessConnection);
            OleDbParameter rootParam = new OleDbParameter("parentid", OleDbType.Integer);
            rootParam.Value = rootNodeId;
            childNodesCommand.Parameters.Add(rootParam);

            OleDbDataReader childNodesReader = childNodesCommand.ExecuteReader();

            if (childNodesReader.HasRows) {

                SiteMapNode childNode = null;
                while(childNodesReader.Read()) {
                    childNode =  new SiteMapNode(this,
                                                 childNodesReader.GetInt32(0).ToString(),
                                                 childNodesReader.GetString(1),
                                                 childNodesReader.GetString(2));

                    // Use the SiteMapNode AddNode method to add
                    // the SiteMapNode to the ChildNodes collection.
                    AddNode(childNode, rootNode);
                }
            }

            childNodesReader.Close();
            accessConnection.Close();
        }
        return rootNode;
    }
}

   // Build an in-memory representation from persistent
   // storage, and return the root node of the site map.
   virtual SiteMapNode ^ BuildSiteMap() override
   {
      // Since the SiteMap class is static, make sure that it is
      // not modified while the site map is built.
      System::Threading::Monitor::Enter( this );
      try
      {

         // If there is no initialization, this method is being
         // called out of order.
         if (  !IsInitialized )
         {
            throw gcnew Exception( "BuildSiteMap called incorrectly." );
         }

         // If there is no root node, then there is no site map.
         if ( nullptr == rootNode )
         {

            // Start with a clean slate
            Clear();

            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;
            if ( accessConnection->State == ConnectionState::Closed )
               accessConnection->Open();

            OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
            OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
            if ( rootNodeReader->HasRows )
            {
               rootNodeReader->Read();
               rootNodeId = rootNodeReader->GetInt32( 0 );

               // Create a SiteMapNode that references the current StaticSiteMapProvider.
               rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(),
                  rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
            }
            else
               return nullptr;
            rootNodeReader->Close();

            // Select the child nodes of the root node.
            OleDbCommand^ childNodesCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection);
            OleDbParameter^ rootParam = gcnew OleDbParameter( "parentid", OleDbType::Integer);
            rootParam->Value = rootNodeId;
            childNodesCommand->Parameters->Add( rootParam );
            OleDbDataReader^ childNodesReader = childNodesCommand->ExecuteReader();
            if ( childNodesReader->HasRows )
            {
               SiteMapNode ^ childNode = nullptr;
               while ( childNodesReader->Read() )
               {
                  childNode = gcnew SiteMapNode( this,
                      System::Convert::ToString(childNodesReader->GetInt32( 0 )),
                     childNodesReader->GetString( 1 ),
                     childNodesReader->GetString( 2 )
                  );
                  // Use the SiteMapNode AddNode method to add
                  // the SiteMapNode to the ChildNodes collection.
                  AddNode( childNode, rootNode );
               }
            }
            childNodesReader->Close();
            accessConnection->Close();
         }
         return rootNode;
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间
RootNode
Initialize
Clear


StaticSiteMapProvider ..::.Clear 方法

StaticSiteMapProvider
.
.
::
.
Clear 方法
StaticSiteMapProvider 类

移除 StaticSiteMapProvider 作为其状态的一部分来跟踪的父和子站点地图节点的集合中的所有元素。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overridable Sub Clear
protected virtual void Clear()
protected:
virtual void Clear()
abstract Clear : unit -> unit
override Clear : unit -> unit

从 StaticSiteMapProvider 类派生的类可以重写 Clear 方法以执行附加清理，具体取决于派生类维护的状态。

Clear 方法不重置在 Initialize 方法中初始化的状态 -- 它仅重置在 BuildSiteMap 方法中初始化的状态。

下面的代码示例演示如何重写 Clear 方法以执行类维护的状态的附加清理。

此代码示例摘自为 StaticSiteMapProvider 类提供的一个更大的示例。

' SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
'
' Clean up any collections or other state that an instance of this may hold.
Protected Overrides Sub Clear()
    SyncLock Me
        aRootNode = Nothing
        MyBase.Clear()
    End SyncLock
End Sub 'Clear

// Clean up any collections or other state that an instance of this may hold.
protected override void Clear() {
    lock (this) {
        rootNode = null;
        base.Clear();
    }
}

   // Clean up any collections or other state that an instance of this may hold.
   virtual void Clear() override
   {
      System::Threading::Monitor::Enter( this );
      try
      {
         rootNode = nullptr;
         StaticSiteMapProvider::Clear();
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

public:

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间
Initialize
BuildSiteMap


StaticSiteMapProvider ..::.FindSiteMapNode 方法

StaticSiteMapProvider
.
.
::
.
FindSiteMapNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StaticSiteMapProvider 类

检索表示页的 SiteMapNode 对象。

名称 说明
页首

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间


StaticSiteMapProvider ..::.FindSiteMapNode 方法 (String)

StaticSiteMapProvider
.
.
::
.
FindSiteMapNode 方法 (String)
StaticSiteMapProvider 类

检索表示位于指定 URL 处的页的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function FindSiteMapNode ( _
    rawUrl As String _
) As SiteMapNode
public override SiteMapNode FindSiteMapNode(
    string rawUrl
)
public:
virtual SiteMapNode^ FindSiteMapNode(
    String^ rawUrl
) override
abstract FindSiteMapNode :
        rawUrl:string -> SiteMapNode
override FindSiteMapNode :
        rawUrl:string -> SiteMapNode

参数

rawUrl
类型： System String
标识要为其检索 SiteMapNode 的页的 URL。

返回值

类型： System.Web SiteMapNode
表示 rawURL 所标识的页的 SiteMapNode；如果没有找到对应的站点地图节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentNullException | rawURL 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

提供的 URL 通常是虚拟或绝对 URL。它也可以是使用 ASP.NET 应用程序相对语法的 URL，如 "~/apprelativedirectory"。StaticSiteMapProvider 类自动将应用程序相对的原始 URL 规范化为绝对虚拟路径。 提供的 URL 通常是虚拟或绝对 URL。它也可以是使用 ASP.NET 应用程序相对语法的 URL，如 "~/apprelativedirectory"。StaticSiteMapProvider 类自动将应用程序相对的原始 URL 规范化为绝对虚拟路径。 提供的 URL 通常是虚拟或绝对 URL。它也可以是使用 ASP.NET 应用程序相对语法的 URL，如 "~/apprelativedirectory"。StaticSiteMapProvider 类自动将应用程序相对的原始 URL 规范化为绝对虚拟路径。

XmlSiteMapProvider 对象派生自 StaticSiteMapProvider，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 属性来跟踪站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 属性来跟踪站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 属性来跟踪站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 属性来跟踪站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。如果未指定 Url 或 Key，站点地图提供程序将自动生成 Key 属性来跟踪站点地图节点。

对继承者的说明

在派生类中重写 FindSiteMapNode 方法时，请确保规范化添加到站点地图提供程序的 SiteMapNode 对象的 URL，以便 FindSiteMapNode 方法能够检索站点地图节点，而不管站点地图节点的 URL 是以绝对虚拟路径还是以应用程序相对路径提供的。

安全修整行为包含在 SiteMapProvider 和 StaticSiteMapProvider 类实现中。然而，若要使安全修整在派生类中工作，在重写 BuildSiteMap 方法时，您必须设置在构建站点地图提供程序时创建的任何 SiteMapNode 对象的 Roles 属性。 安全修整行为包含在 SiteMapProvider 和 StaticSiteMapProvider 类实现中。然而，若要使安全修整在派生类中工作，在重写 BuildSiteMap 方法时，您必须设置在构建站点地图提供程序时创建的任何 SiteMapNode 对象的 Roles 属性。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
FindSiteMapNode 重载
System.Web 命名空间
BuildSiteMap
FindSiteMapNodeFromKey


StaticSiteMapProvider ..::.FindSiteMapNodeFromKey 方法

StaticSiteMapProvider
.
.
::
.
FindSiteMapNodeFromKey 方法
StaticSiteMapProvider 类

根据指定的键检索 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function FindSiteMapNodeFromKey ( _
    key As String _
) As SiteMapNode
public override SiteMapNode FindSiteMapNodeFromKey(
    string key
)
public:
virtual SiteMapNode^ FindSiteMapNodeFromKey(
    String^ key
) override
abstract FindSiteMapNodeFromKey :
        key:string -> SiteMapNode
override FindSiteMapNodeFromKey :
        key:string -> SiteMapNode

参数

key
类型： System String
用于创建 SiteMapNode 的查找键。

返回值

类型： System.Web SiteMapNode
表示 key 所标识的页的 SiteMapNode；如果启用了安全修整而不能向当前用户显示该站点地图节点，或者未在站点地图节点集合中按 key 找到该站点地图节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

FindSiteMapNodeFromKey 方法根据 key 从一个内部 Hashtable 对象检索站点地图节点。

XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类，它是 ASP.NET 的默认站点地图提供程序，在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找关键字。如果设置了 SiteMapNode 的 Url 属性，则它在站点地图提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索站点地图节点。另外，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索站点地图节点。

StaticSiteMapProvider 具有一个默认实现，它根据 key 参数查找 SiteMapNode 类的实例。如果站点地图提供程序实施者使用 AddNode 方法，StaticSiteMapProvider 应该已经根据 SiteMapNode..::.Key 属性的值存储了每个 SiteMapNode 的引用。默认情况下，XmlSiteMapProvider 为没有 SiteMapNode..::.Url 属性值的 SiteMapNode 类的实例生成 GUID。自定义站点地图提供程序实施者必须提供他们自己的机制，用于在 SiteMapNode 类的实例没有 SiteMapNode..::.Url 属性值时生成 SiteMapNode..::.Key 属性的唯一值。 StaticSiteMapProvider 具有一个默认实现，它根据 key 参数查找 SiteMapNode 类的实例。如果站点地图提供程序实施者使用 AddNode 方法，StaticSiteMapProvider 应该已经根据 SiteMapNode..::.Key 属性的值存储了每个 SiteMapNode 的引用。默认情况下，XmlSiteMapProvider 为没有 SiteMapNode..::.Url 属性值的 SiteMapNode 类的实例生成 GUID。自定义站点地图提供程序实施者必须提供他们自己的机制，用于在 SiteMapNode 类的实例没有 SiteMapNode..::.Url 属性值时生成 SiteMapNode..::.Key 属性的唯一值。 StaticSiteMapProvider 具有一个默认实现，它根据 key 参数查找 SiteMapNode 类的实例。如果站点地图提供程序实施者使用 AddNode 方法，StaticSiteMapProvider 应该已经根据 SiteMapNode..::.Key 属性的值存储了每个 SiteMapNode 的引用。默认情况下，XmlSiteMapProvider 为没有 SiteMapNode..::.Url 属性值的 SiteMapNode 类的实例生成 GUID。自定义站点地图提供程序实施者必须提供他们自己的机制，用于在 SiteMapNode 类的实例没有 SiteMapNode..::.Url 属性值时生成 SiteMapNode..::.Key 属性的唯一值。 StaticSiteMapProvider 具有一个默认实现，它根据 key 参数查找 SiteMapNode 类的实例。如果站点地图提供程序实施者使用 AddNode 方法，StaticSiteMapProvider 应该已经根据 SiteMapNode..::.Key 属性的值存储了每个 SiteMapNode 的引用。默认情况下，XmlSiteMapProvider 为没有 SiteMapNode..::.Url 属性值的 SiteMapNode 类的实例生成 GUID。自定义站点地图提供程序实施者必须提供他们自己的机制，用于在 SiteMapNode 类的实例没有 SiteMapNode..::.Url 属性值时生成 SiteMapNode..::.Key 属性的唯一值。

SiteMapProvider 和 XmlSiteMapProvider 类是 ASP.NET 的默认站点地图提供程序实现，使用 SiteMapNode 对象的 URL 作为类所维护的不同集合中的键。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间
FindSiteMapNode


StaticSiteMapProvider ..::.GetChildNodes 方法

StaticSiteMapProvider
.
.
::
.
GetChildNodes 方法
StaticSiteMapProvider 类

检索特定 SiteMapNode 对象的子站点地图节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetChildNodes ( _
    node As SiteMapNode _
) As SiteMapNodeCollection
public override SiteMapNodeCollection GetChildNodes(
    SiteMapNode node
)
public:
virtual SiteMapNodeCollection^ GetChildNodes(
    SiteMapNode^ node
) override
abstract GetChildNodes :
        node:SiteMapNode -> SiteMapNodeCollection
override GetChildNodes :
        node:SiteMapNode -> SiteMapNodeCollection

参数

node
类型： System.Web SiteMapNode
要检索其全部子站点地图节点的 SiteMapNode。

返回值

类型： System.Web SiteMapNodeCollection
包含 node 的子站点地图节点的只读 SiteMapNodeCollection。如果启用了安全修整，则该集合仅包含允许用户查看的站点地图节点。 包含 node 的子站点地图节点的只读 SiteMapNodeCollection。如果启用了安全修整，则该集合仅包含允许用户查看的站点地图节点。
异常 | 条件
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SiteMapNode 对象委托站点地图提供程序跟踪它们的子和父站点地图节点。因此，为了导航整个层次结构树，为分层站点地图结构实现站点地图提供程序（如 StaticSiteMapProvider）并使用 SiteMapNode 对象表示站点地图节点的类必须跟踪所有站点地图节点的层次关系。 SiteMapNode 对象委托站点地图提供程序跟踪它们的子和父站点地图节点。因此，为了导航整个层次结构树，为分层站点地图结构实现站点地图提供程序（如 StaticSiteMapProvider）并使用 SiteMapNode 对象表示站点地图节点的类必须跟踪所有站点地图节点的层次关系。

GetChildNodes 方法在内部调用 BuildSiteMap 方法来检索相对于指定的站点地图节点并与当前用户相关的站点地图节点的只读 SiteMapNodeCollection 集合。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间
IsAccessibleToUser


StaticSiteMapProvider ..::.GetParentNode 方法

StaticSiteMapProvider
.
.
::
.
GetParentNode 方法
StaticSiteMapProvider 类

检索特定 SiteMapNode 对象的父站点地图节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function GetParentNode ( _
    node As SiteMapNode _
) As SiteMapNode
public override SiteMapNode GetParentNode(
    SiteMapNode node
)
public:
virtual SiteMapNode^ GetParentNode(
    SiteMapNode^ node
) override
abstract GetParentNode :
        node:SiteMapNode -> SiteMapNode
override GetParentNode :
        node:SiteMapNode -> SiteMapNode

参数

node
类型： System.Web SiteMapNode
要检索其父站点地图节点的 SiteMapNode。

返回值

类型： System.Web SiteMapNode
表示指定 SiteMapNode 的父级的 SiteMapNode；如果不存在父站点地图节点，或者不允许用户查看父站点地图节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

SiteMapNode 对象委托站点地图提供程序跟踪它们的子和父站点地图节点。因此，为了导航整个层次结构树，为分层站点地图结构实现站点地图提供程序（如 StaticSiteMapProvider 类）并使用 SiteMapNode 对象表示站点地图节点的类必须跟踪所有站点地图节点的层次关系。 SiteMapNode 对象委托站点地图提供程序跟踪它们的子和父站点地图节点。因此，为了导航整个层次结构树，为分层站点地图结构实现站点地图提供程序（如 StaticSiteMapProvider 类）并使用 SiteMapNode 对象表示站点地图节点的类必须跟踪所有站点地图节点的层次关系。

如果未找到 ParentNode 属性，StaticSiteMapProvider 类将检测当前站点地图提供程序是否有 ParentProvider 属性。如果有，则该站点地图提供程序调用父站点地图提供程序的 GetParentNode 属性。这样便允许实现由一个不同的站点地图提供程序维护站点地图节点的父站点地图节点的方案。 如果未找到 ParentNode 属性，StaticSiteMapProvider 类将检测当前站点地图提供程序是否有 ParentProvider 属性。如果有，则该站点地图提供程序调用父站点地图提供程序的 GetParentNode 属性。这样便允许实现由一个不同的站点地图提供程序维护站点地图节点的父站点地图节点的方案。 如果未找到 ParentNode 属性，StaticSiteMapProvider 类将检测当前站点地图提供程序是否有 ParentProvider 属性。如果有，则该站点地图提供程序调用父站点地图提供程序的 GetParentNode 属性。这样便允许实现由一个不同的站点地图提供程序维护站点地图节点的父站点地图节点的方案。

GetParentNode 方法在内部调用 BuildSiteMap 方法来检索表示指定站点地图节点的父节点的 SiteMapNode。如果启用了安全修整，则仅当用户被允许查看该站点地图节点时才返回它。 GetParentNode 方法在内部调用 BuildSiteMap 方法来检索表示指定站点地图节点的父节点的 SiteMapNode。如果启用了安全修整，则仅当用户被允许查看该站点地图节点时才返回它。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间
IsAccessibleToUser


StaticSiteMapProvider ..::.RemoveNode 方法

StaticSiteMapProvider
.
.
::
.
RemoveNode 方法
StaticSiteMapProvider 类

从站点地图提供程序跟踪的所有站点地图节点集合中移除指定的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overrides Sub RemoveNode ( _
    node As SiteMapNode _
)
protected internal override void RemoveNode(
    SiteMapNode node
)
protected public:
virtual void RemoveNode(
    SiteMapNode^ node
) override
abstract RemoveNode :
        node:SiteMapNode -> unit
override RemoveNode :
        node:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要从站点地图节点集合中移除的站点地图节点。
异常 | 条件
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

StaticSiteMapProvider 类
StaticSiteMapProvider 成员
System.Web 命名空间
AddNode


StaticSiteMapProvider 属性

StaticSiteMapProvider 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StaticSiteMapProvider 类

StaticSiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

StaticSiteMapProvider 类
System.Web 命名空间


StaticSiteMapProvider 事件

StaticSiteMapProvider 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
StaticSiteMapProvider 类

StaticSiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

StaticSiteMapProvider 类
System.Web 命名空间


TraceContext 类

TraceContext 类
成员

捕获并提供有关 Web 请求的执行详细信息。无法继承此类。 捕获并提供有关 Web 请求的执行详细信息。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class TraceContext
public sealed class TraceContext
public ref class TraceContext sealed
[<SealedAttribute>]
type TraceContext =  class end

可以使用此类将消息追加到特定的跟踪类别。例如，如果正在为应用程序创建 Calendar 类的实例，则可以在呈现过程中包含跟踪消息“开始呈现”，在事件处理程序过程中包含跟踪消息“激发 OnChange 事件”。 可以使用此类将消息追加到特定的跟踪类别。例如，如果正在为应用程序创建 Calendar 类的实例，则可以在呈现过程中包含跟踪消息“开始呈现”，在事件处理程序过程中包含跟踪消息“激发 OnChange 事件”。

也可以使用 TraceContext 类在执行完自定义处理的请求时获得一系列跟踪记录。有关更多信息，请参见 ASP.NET 跟踪概述。 也可以使用 TraceContext 类在执行完自定义处理的请求时获得一系列跟踪记录。有关更多信息，请参见 ASP.NET 跟踪概述。

若要启用跟踪，请将 @ Page 指令或 IsEnabled 属性中的 Trace 特性设置为 true。启用跟踪后，除了显示用户提供的跟踪内容外，Page 类自动包含每个请求的性能数据、控制树结构信息以及状态管理内容。 若要启用跟踪，请将 @ Page 指令或 IsEnabled 属性中的 Trace 特性设置为 true。启用跟踪后，除了显示用户提供的跟踪内容外，Page 类自动包含每个请求的性能数据、控制树结构信息以及状态管理内容。

System.Web System.Web..::.TraceContextTraceContext
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 成员
System.Web 命名空间
TraceContextEventArgs
TraceContextEventHandler
TraceContextRecord

其他资源

ASP.NET 跟踪概述


TraceContext 成员

TraceContext 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContext 类

捕获并提供有关 Web 请求的执行详细信息。无法继承此类。 捕获并提供有关 Web 请求的执行详细信息。无法继承此类。

TraceContext 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

TraceContext 类
System.Web 命名空间


TraceContext 构造函数

TraceContext 构造函数
TraceContext 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

初始化 TraceContext 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    context As HttpContext _
)
public TraceContext(
    HttpContext context
)
public:
TraceContext(
    HttpContext^ context
)
new :
        context:HttpContext -> TraceContext

参数

context
类型： System.Web HttpContext
HttpContext，它包含有关当前 Web 请求的信息。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
System.Web 命名空间
HttpContext

其他资源

ASP.NET 跟踪概述


TraceContext 方法

TraceContext 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContext 类

TraceContext 类型公开以下成员。

名称 说明
页首

参考

TraceContext 类
System.Web 命名空间


TraceContext ..::.Warn 方法

TraceContext
.
.
::
.
Warn 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContext 类

将跟踪信息写入跟踪日志。与 Write 不同，所有警告在日志中均显示为红色文本。 将跟踪信息写入跟踪日志。与 Write 不同，所有警告在日志中均显示为红色文本。

名称 说明
页首

参考

TraceContext 类
TraceContext 成员
System.Web 命名空间


TraceContext ..::.Warn 方法 (String)

TraceContext
.
.
::
.
Warn 方法 (String)
TraceContext 类

将跟踪消息写入跟踪日志。所有警告在日志中均显示为红色文本。 将跟踪消息写入跟踪日志。所有警告在日志中均显示为红色文本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Warn ( _
    message As String _
)
public void Warn(
    string message
)
public:
void Warn(
    String^ message
)
member Warn :
        message:string -> unit

参数

message
类型： System String
要写入日志的跟踪消息。

每次调用 Warn 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 true，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 每次调用 Warn 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 true，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
Warn 重载
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContext ..::.Warn 方法 (String, String)

TraceContext
.
.
::
.
Warn 方法 (String, String)
TraceContext 类

将跟踪信息写入跟踪日志，包括任何用户定义的类别和跟踪消息。所有警告在日志中均显示为红色文本。 将跟踪信息写入跟踪日志，包括任何用户定义的类别和跟踪消息。所有警告在日志中均显示为红色文本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Warn ( _
    category As String, _
    message As String _
)
public void Warn(
    string category,
    string message
)
public:
void Warn(
    String^ category,
    String^ message
)
member Warn :
        category:string *
        message:string -> unit

参数

category
类型： System String
接收消息的跟踪类别。
message
类型： System String
要写入日志的跟踪消息。

每次调用 Warn 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 true，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 每次调用 Warn 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 true，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
Warn 重载
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContext ..::.Warn 方法 (String, String, Exception)

TraceContext
.
.
::
.
Warn 方法 (String, String, Exception)
TraceContext 类

将跟踪信息写入跟踪日志，包括用户定义的所有类别、跟踪消息和错误消息。所有警告在日志中均显示为红色文本。 将跟踪信息写入跟踪日志，包括用户定义的所有类别、跟踪消息和错误消息。所有警告在日志中均显示为红色文本。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Warn ( _
    category As String, _
    message As String, _
    errorInfo As Exception _
)
public void Warn(
    string category,
    string message,
    Exception errorInfo
)
public:
void Warn(
    String^ category,
    String^ message,
    Exception^ errorInfo
)
member Warn :
        category:string *
        message:string *
        errorInfo:Exception -> unit

参数

category
类型： System String
接收消息的跟踪类别。
message
类型： System String
要写入日志的跟踪消息。
errorInfo
类型： System Exception
包含有关错误消息的 Exception。

每次调用 Warn 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。添加的消息的 IsWarning 属性被设置为 true，ErrorInfo 属性被设置为由 errorInfo 参数传递的对象。 每次调用 Warn 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。添加的消息的 IsWarning 属性被设置为 true，ErrorInfo 属性被设置为由 errorInfo 参数传递的对象。

下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    Try
    Dim ae As New ArgumentException("Trace Test")
        Throw ae

    catch ioe As InvalidOperationException
        ' You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)

    Catch ae As ArgumentException
        ' You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)

    End Try

End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
    If r.IsWarning Then
            Response.Write(String.Format("warning message: {0} <BR>", r.Message))
        Else
            Response.Write(String.Format("error message: {0} <BR>", r.Message))
        End If
    Next

End Sub	' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    try {
        throw new ArgumentException("Trace Test");
    }
    catch (InvalidOperationException ioe) {
        // You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
    catch (ArgumentException ae) {
        // You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        if (r.IsWarning) {
            Response.Write(String.Format("warning message: {0} <BR>", r.Message));
        }
        else {
            Response.Write(String.Format("error message: {0} <BR>", r.Message));
        }

    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
Warn 重载
System.Web 命名空间
Exception

其他资源

ASP.NET 跟踪概述


TraceContext ..::.Write 方法

TraceContext
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContext 类

将跟踪信息写入跟踪日志。

名称 说明
页首

参考

TraceContext 类
TraceContext 成员
System.Web 命名空间


TraceContext ..::.Write 方法 (String)

TraceContext
.
.
::
.
Write 方法 (String)
TraceContext 类

将跟踪消息写入跟踪日志。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    message As String _
)
public void Write(
    string message
)
public:
void Write(
    String^ message
)
member Write :
        message:string -> unit

参数

message
类型： System String
要写入日志的跟踪消息。

每次调用 Write 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 false，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 每次调用 Write 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 false，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
Write 重载
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContext ..::.Write 方法 (String, String)

TraceContext
.
.
::
.
Write 方法 (String, String)
TraceContext 类

将跟踪信息写入跟踪日志，包括消息和任何用户定义的类别。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    category As String, _
    message As String _
)
public void Write(
    string category,
    string message
)
public:
void Write(
    String^ category,
    String^ message
)
member Write :
        category:string *
        message:string -> unit

参数

category
类型： System String
接收消息的跟踪类别。
message
类型： System String
要写入日志的跟踪消息。

每次调用 Write 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 false，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 每次调用 Write 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。已添加该消息，其中的 IsWarning 属性设置为 false，ErrorInfo 属性设置为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此例中，该委托遍历跟踪消息并将其作为 HTML 表写入；不过，您也可以将同样的消息写入到数据库或者分析工具使用者。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此例中，该委托遍历跟踪消息并将其作为 HTML 表写入；不过，您也可以将同样的消息写入到数据库或者分析工具使用者。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.
    Response.Write("<table>")
    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("<tr><td>{0}</td><td>{1}</td></tr>", r.Message, r.Category))
    Next
    Response.Write("</table>")

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    Response.Write("<table>");
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("<tr><td>{0}</td><td>{1}</td></tr>", r.Message, r.Category));
    }
    Response.Write("</table>");
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
Write 重载
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContext ..::.Write 方法 (String, String, Exception)

TraceContext
.
.
::
.
Write 方法 (String, String, Exception)
TraceContext 类

将跟踪信息写入跟踪日志，包括用户定义的所有类别、跟踪消息和错误消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Write ( _
    category As String, _
    message As String, _
    errorInfo As Exception _
)
public void Write(
    string category,
    string message,
    Exception errorInfo
)
public:
void Write(
    String^ category,
    String^ message,
    Exception^ errorInfo
)
member Write :
        category:string *
        message:string *
        errorInfo:Exception -> unit

参数

category
类型： System String
接收消息的跟踪类别。
message
类型： System String
要写入日志的跟踪消息。
errorInfo
类型： System Exception
包含有关错误消息的 Exception。

每次调用 Write 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。添加的消息的 IsWarning 属性被设置为 false，ErrorInfo 属性被设置为由 errorInfo 参数传递的对象。 每次调用 Write 方法时，都会向 TraceRecords 消息集合中添加一条 TraceContext 跟踪消息，您在处理 TraceFinished 事件时可访问这些消息。添加的消息的 IsWarning 属性被设置为 false，ErrorInfo 属性被设置为由 errorInfo 参数传递的对象。

下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。 下面的代码示例演示如何调用 Write 方法，将错误跟踪消息写入到跟踪日志。在此示例中，不同的异常会作为错误和警告进行跟踪。当该页引发 ArgumentException 时，此示例使用 Warn 方法写入警告消息。当该页引发 InvalidOperationException 时，此示例使用 Write 方法写入错误消息。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    Try
    Dim ae As New ArgumentException("Trace Test")
        Throw ae

    catch ioe As InvalidOperationException
        ' You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)

    Catch ae As ArgumentException
        ' You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)

    End Try

End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
    If r.IsWarning Then
            Response.Write(String.Format("warning message: {0} <BR>", r.Message))
        Else
            Response.Write(String.Format("error message: {0} <BR>", r.Message))
        End If
    Next

End Sub	' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    try {
        throw new ArgumentException("Trace Test");
    }
    catch (InvalidOperationException ioe) {
        // You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
    catch (ArgumentException ae) {
        // You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        if (r.IsWarning) {
            Response.Write(String.Format("warning message: {0} <BR>", r.Message));
        }
        else {
            Response.Write(String.Format("error message: {0} <BR>", r.Message));
        }

    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
Write 重载
System.Web 命名空间
Exception

其他资源

ASP.NET 跟踪概述


TraceContext 属性

TraceContext 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContext 类

TraceContext 类型公开以下成员。

名称 说明
页首

参考

TraceContext 类
System.Web 命名空间


TraceContext ..::.IsEnabled 属性

TraceContext
.
.
::
.
IsEnabled 属性
TraceContext 类

获取或设置用来指示是否启用对当前 Web 请求的跟踪的值。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property IsEnabled As Boolean
    Get
    Set
public bool IsEnabled { get; set; }
public:
property bool IsEnabled {
    bool get ();
    void set (bool value);
}
member IsEnabled : bool with get, set

属性值

类型： System Boolean
如果已启用跟踪，则为 true；否则，为 false。

使用此标志检查页或应用程序在将任何内容写入跟踪日志前是否应输出跟踪信息。

IsEnabled 属性的值取决于 system.web 配置节中 trace 子节的设置和 @ Page 指令中 trace 特性的值。Page 指令中设置的跟踪选项优先于在配置文件中设置的选项。通过编程方式进行的 IsEnabled 值的设置既优先于 Page 指令特性，也优先于配置设置。 IsEnabled 属性的值取决于 system.web 配置节中 trace 子节的设置和 @ Page 指令中 trace 特性的值。Page 指令中设置的跟踪选项优先于在配置文件中设置的选项。通过编程方式进行的 IsEnabled 值的设置既优先于 Page 指令特性，也优先于配置设置。 IsEnabled 属性的值取决于 system.web 配置节中 trace 子节的设置和 @ Page 指令中 trace 特性的值。Page 指令中设置的跟踪选项优先于在配置文件中设置的选项。通过编程方式进行的 IsEnabled 值的设置既优先于 Page 指令特性，也优先于配置设置。

说明 说明

如果在整个应用程序范围内将 IsEnabled 属性设置为 true，则必须将应用程序中所有不需要显示跟踪信息的页的这个属性显式设置为 false。

下面的代码示例演示如何确定是否启用对某个页的跟踪。代码循环访问数据集中的行，为数据集中的每行编写跟踪语句。 下面的代码示例演示如何确定是否启用对某个页的跟踪。代码循环访问数据集中的行，为数据集中的每行编写跟踪语句。

If (Context.IsEnabled)

   Dim I As Integer
   For I = 0 To DS.Tables("Categories").Rows.Count - 1

     Trace.Write("ProductCategory",DS.Tables("Categories").Rows(I)(0).ToString())
   Next
 End If

if (Context.IsEnabled) {
   for (int i=0; i<DS.Tables["Categories"].Rows.Count; i++) {
     Trace.Write("ProductCategory", DS.Tables["Categories"].Rows[i][0].ToString());
    }
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述
@ Page
<trace> 元素


TraceContext ..::.TraceMode 属性

TraceContext
.
.
::
.
TraceMode 属性
TraceContext 类

获取或设置跟踪消息输出到请求浏览器应遵循的排序顺序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Property TraceMode As TraceMode
    Get
    Set
public TraceMode TraceMode { get; set; }
public:
property TraceMode TraceMode {
    TraceMode get ();
    void set (TraceMode value);
}
member TraceMode : TraceMode with get, set

属性值

类型： System.Web TraceMode
TraceMode 枚举值之一。默认为配置文件的 trace 节中 traceMode 特性指定的设置（该设置的默认值为 SortByTime）。 TraceMode 枚举值之一。默认为配置文件的 trace 节中 traceMode 特性指定的设置（该设置的默认值为 SortByTime）。
异常 | 条件
ArgumentOutOfRangeException | 所选的值不是 TraceMode 枚举值之一。

跟踪消息可以按其处理顺序或用户定义的类别的字母顺序进行排序。

下面的代码示例演示如何对页的跟踪语句按分配给这些语句的类别的字母顺序进行排序。

<%@ Page Language="VB" Trace="True" TraceMode="SortByCategory" %>

<%@ Page Language="C#" Trace="True" TraceMode="SortByCategory" %>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

TraceContext 类
TraceContext 成员
System.Web 命名空间
Page

其他资源

@ Page
ASP.NET 跟踪概述


TraceContext 事件

TraceContext 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContext 类

TraceContext 类型公开以下成员。

名称 说明
页首

参考

TraceContext 类
System.Web 命名空间


TraceContext ..::.TraceFinished 事件

TraceContext
.
.
::
.
TraceFinished 事件
TraceContext 类

由 TraceContext 对象引发，用于在收集完所有请求信息后公开跟踪消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Event TraceFinished As TraceContextEventHandler
public event TraceContextEventHandler TraceFinished
public:
 event TraceContextEventHandler^ TraceFinished {
    void add (TraceContextEventHandler^ value);
    void remove (TraceContextEventHandler^ value);
}
member TraceFinished : IEvent<TraceContextEventHandler,
    TraceContextEventArgs>

TraceFinished 事件在 HTTP 请求处理的 EndRequest 阶段期间引发。它在收集完所有请求信息后由 TraceContext 对象引发，以向注册的 TraceContextEventHandler 委托公开 TraceContextRecord 消息集合。 TraceFinished 事件在 HTTP 请求处理的 EndRequest 阶段期间引发。它在收集完所有请求信息后由 TraceContext 对象引发，以向注册的 TraceContextEventHandler 委托公开 TraceContextRecord 消息集合。

下面的代码示例演示如何注册一个 TraceContextEventHandler 以处理 TraceFinished 事件。在此示例中，该委托遍历跟踪消息并将其写入到响应流中；不过，您也可以将同样的消息写入到数据库或者分析工具使用者。 下面的代码示例演示如何注册一个 TraceContextEventHandler 以处理 TraceFinished 事件。在此示例中，该委托遍历跟踪消息并将其写入到响应流中；不过，您也可以将同样的消息写入到数据库或者分析工具使用者。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("trace message: {0} <BR>", r.Message))
    Next

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("trace message: {0} <BR>", r.Message));
    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContext 类
TraceContext 成员
System.Web 命名空间
TraceContextEventHandler
TraceContextEventArgs
TraceContextRecord

其他资源

ASP.NET 跟踪概述


TraceContextEventArgs 类

TraceContextEventArgs 类
成员

向所有处理 TraceFinished 事件的方法提供跟踪记录的集合。无法继承此类。 向所有处理 TraceFinished 事件的方法提供跟踪记录的集合。无法继承此类。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class TraceContextEventArgs _
    Inherits EventArgs
public sealed class TraceContextEventArgs : EventArgs
public ref class TraceContextEventArgs sealed : public EventArgs
[<SealedAttribute>]
type TraceContextEventArgs =
    class
        inherit EventArgs
    end

收集了 HTTP 请求处理过程中的所有跟踪信息之后，TraceContext 类使用 TraceContextEventArgs 类提供对跟踪记录的访问。通过添加事件处理程序委托来处理 TraceFinished 事件，可以处理记录、将其记录到自己的数据存储区或作为分析工具的输入。 收集了 HTTP 请求处理过程中的所有跟踪信息之后，TraceContext 类使用 TraceContextEventArgs 类提供对跟踪记录的访问。通过添加事件处理程序委托来处理 TraceFinished 事件，可以处理记录、将其记录到自己的数据存储区或作为分析工具的输入。

下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此示例中，OnTraceFinished 方法通过 TraceRecords 属性访问 TraceContextRecord 对象的集合，循环访问这些对象，然后将其写入到响应流中。 下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此示例中，OnTraceFinished 方法通过 TraceRecords 属性访问 TraceContextRecord 对象的集合，循环访问这些对象，然后将其写入到响应流中。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("trace message: {0} <BR>", r.Message))
    Next

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("trace message: {0} <BR>", r.Message));
    }
}
</script>

System.Web System.Web..::.TraceContextEventArgsTraceContextEventArgs
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextEventArgs 成员
System.Web 命名空间
TraceContextEventHandler
TraceFinished
TraceContext

其他资源

ASP.NET 跟踪概述


TraceContextEventArgs 成员

TraceContextEventArgs 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContextEventArgs 类

向所有处理 TraceFinished 事件的方法提供跟踪记录的集合。无法继承此类。 向所有处理 TraceFinished 事件的方法提供跟踪记录的集合。无法继承此类。

TraceContextEventArgs 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

TraceContextEventArgs 类
System.Web 命名空间


TraceContextEventArgs 构造函数

TraceContextEventArgs 构造函数
TraceContextEventArgs 类

使用提供的跟踪记录集合来初始化 TraceContextEventArgs 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    records As ICollection _
)
public TraceContextEventArgs(
    ICollection records
)
public:
TraceContextEventArgs(
    ICollection^ records
)
new :
        records:ICollection -> TraceContextEventArgs

参数

records
类型： System.Collections ICollection
一个 TraceContextRecord 对象的集合，表示当前请求的所有跟踪记录。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextEventArgs 类
TraceContextEventArgs 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContextEventArgs 方法

TraceContextEventArgs 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContextEventArgs 类

TraceContextEventArgs 类型公开以下成员。

名称 说明
页首

参考

TraceContextEventArgs 类
System.Web 命名空间


TraceContextEventArgs 属性

TraceContextEventArgs 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContextEventArgs 类

TraceContextEventArgs 类型公开以下成员。

名称 说明
页首

参考

TraceContextEventArgs 类
System.Web 命名空间


TraceContextEventArgs ..::.TraceRecords 属性

TraceContextEventArgs
.
.
::
.
TraceRecords 属性
TraceContextEventArgs 类

获取与当前请求关联的 TraceContextRecord 消息的集合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property TraceRecords As ICollection
    Get
public ICollection TraceRecords { get; }
public:
property ICollection^ TraceRecords {
    ICollection^ get ();
}
member TraceRecords : ICollection

属性值

类型： System.Collections ICollection
与当前请求关联的跟踪记录的集合。

每次调用 TraceContext..::.Write 和 TraceContext..::.Warn 方法都会生成一个 TraceContextRecord 对象，并将该对象添加到 TraceRecords 消息集合中。Warn 方法调用将 IsWarning 属性设置为 true，其他的方法调用则将其设置为 false。 每次调用 TraceContext..::.Write 和 TraceContext..::.Warn 方法都会生成一个 TraceContextRecord 对象，并将该对象添加到 TraceRecords 消息集合中。Warn 方法调用将 IsWarning 属性设置为 true，其他的方法调用则将其设置为 false。

可以循环访问 TraceRecords 消息，检查特定类别或消息的记录，并检查这些记录是否为警告。

下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此示例中，OnTraceFinished 方法通过 TraceRecords 属性访问 TraceContextRecord 对象的集合，循环访问这些对象，然后将其写入到响应流中。 下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此示例中，OnTraceFinished 方法通过 TraceRecords 属性访问 TraceContextRecord 对象的集合，循环访问这些对象，然后将其写入到响应流中。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("trace message: {0} <BR>", r.Message))
    Next

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("trace message: {0} <BR>", r.Message));
    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextEventArgs 类
TraceContextEventArgs 成员
System.Web 命名空间
TraceContextRecord
TraceContextEventHandler
TraceContext

其他资源

ASP.NET 跟踪概述


TraceContextEventHandler 委托

TraceContextEventHandler 委托

表示处理 TraceContext 的 TraceFinished 事件的方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Delegate Sub TraceContextEventHandler ( _
    sender As Object, _
    e As TraceContextEventArgs _
)
public delegate void TraceContextEventHandler(
    Object sender,
    TraceContextEventArgs e
)
public delegate void TraceContextEventHandler(
    Object^ sender,
    TraceContextEventArgs^ e
)
type TraceContextEventHandler =
    delegate of
        sender:Object *
        e:TraceContextEventArgs -> unit

参数

sender
类型： System Object
事件源 (TraceContext)。
e
类型： System.Web TraceContextEventArgs
包含事件数据的 TraceContextEventArgs。

当创建 TraceContextEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。 当创建 TraceContextEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。 当创建 TraceContextEventHandler 委托时，将标识处理事件的方法。若要使该事件与事件处理程序相关联，请将该委托的一个实例添加到事件中。除非移除了该委托，否则每当发生该事件时就调用事件处理程序。

有关事件处理程序委托的更多信息，请参见 事件和委托。

下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此例中，OnTraceFinished 方法循环访问跟踪记录并将它们写入响应流。 下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此例中，OnTraceFinished 方法循环访问跟踪记录并将它们写入响应流。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("trace message: {0} <BR>", r.Message))
    Next

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("trace message: {0} <BR>", r.Message));
    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

System.Web 命名空间
TraceContextEventArgs
TraceFinished
TraceContext

其他资源

ASP.NET 跟踪概述
事件和委托


TraceContextRecord 类

TraceContextRecord 类
成员

表示 ASP.NET 跟踪消息和任何关联数据。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class TraceContextRecord
public sealed class TraceContextRecord
public ref class TraceContextRecord sealed
[<SealedAttribute>]
type TraceContextRecord =  class end

TraceContextRecord 对象封装跟踪消息、类别、任何关联的 Exception 以及是否由 TraceContext..::.Warn 方法写入跟踪记录。

每次调用 TraceContext..::.Write 和 TraceContext..::.Warn 方法都会生成一个 TraceContextRecord 对象，并将该对象添加到 TraceContextEventArgs..::.TraceRecords 消息集合中。您可以通过处理 TraceFinished 事件访问记录的集合。 每次调用 TraceContext..::.Write 和 TraceContext..::.Warn 方法都会生成一个 TraceContextRecord 对象，并将该对象添加到 TraceContextEventArgs..::.TraceRecords 消息集合中。您可以通过处理 TraceFinished 事件访问记录的集合。

下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此示例中，OnTraceFinished 方法通过 TraceRecords 属性访问 TraceContextRecord 对象的集合，循环访问这些对象，然后将其写入到响应流中。 下面的代码示例演示如何注册一个 TraceContextEventHandler 委托以处理 TraceFinished 事件。在此示例中，OnTraceFinished 方法通过 TraceRecords 属性访问 TraceContextRecord 对象的集合，循环访问这些对象，然后将其写入到响应流中。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("trace message: {0} <BR>", r.Message))
    Next

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("trace message: {0} <BR>", r.Message));
    }
}
</script>

System.Web System.Web..::.TraceContextRecordTraceContextRecord
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextRecord 成员
System.Web 命名空间
TraceContextEventArgs
TraceContextEventHandler

其他资源

ASP.NET 跟踪概述
如何：启用 ASP.NET 页跟踪


TraceContextRecord 成员

TraceContextRecord 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContextRecord 类

表示 ASP.NET 跟踪消息和任何关联数据。

TraceContextRecord 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

TraceContextRecord 类
System.Web 命名空间


TraceContextRecord 构造函数

TraceContextRecord 构造函数
TraceContextRecord 类

初始化 TraceContextRecord 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New ( _
    category As String, _
    msg As String, _
    isWarning As Boolean, _
    errorInfo As Exception _
)
public TraceContextRecord(
    string category,
    string msg,
    bool isWarning,
    Exception errorInfo
)
public:
TraceContextRecord(
    String^ category,
    String^ msg,
    bool isWarning,
    Exception^ errorInfo
)
new :
        category:string *
        msg:string *
        isWarning:bool *
        errorInfo:Exception -> TraceContextRecord

参数

category
类型： System String
接收消息的跟踪类别。
msg
类型： System String
跟踪消息。
isWarning
类型： System Boolean
如果与 TraceContextRecord 关联的方法是 Warn 方法，则为 true；如果跟踪方法是 Write 方法，则为 false。
errorInfo
类型： System Exception
包含其他错误消息的 Exception 对象。

每次调用 TraceContext..::.Write 和 TraceContext..::.Warn 方法都会生成一个 TraceContextRecord 对象，并将该对象添加到 TraceContextEventArgs..::.TraceRecords 消息集合中。Warn 方法调用将 IsWarning 属性设置为 true，而 Write 方法调用将它设置为 false。 每次调用 TraceContext..::.Write 和 TraceContext..::.Warn 方法都会生成一个 TraceContextRecord 对象，并将该对象添加到 TraceContextEventArgs..::.TraceRecords 消息集合中。Warn 方法调用将 IsWarning 属性设置为 true，而 Write 方法调用将它设置为 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextRecord 类
TraceContextRecord 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContextRecord 方法

TraceContextRecord 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContextRecord 类

TraceContextRecord 类型公开以下成员。

名称 说明
页首

参考

TraceContextRecord 类
System.Web 命名空间


TraceContextRecord 属性

TraceContextRecord 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
TraceContextRecord 类

TraceContextRecord 类型公开以下成员。

名称 说明
页首

参考

TraceContextRecord 类
System.Web 命名空间


TraceContextRecord ..::.Category 属性

TraceContextRecord
.
.
::
.
Category 属性
TraceContextRecord 类

获取跟踪记录的用户定义的类别。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Category As String
    Get
public string Category { get; }
public:
property String^ Category {
    String^ get ();
}
member Category : string

属性值

类型： System String
表示跟踪记录的类别的字符串。

类别用于将跟踪消息更好地组织成可识别的组，但可以是任意字符串。TraceContext 类使用 String..::.Empty 作为其仅采用 message 参数的方法的默认类别。ASP.NET（当启用跟踪时，它写入多个跟踪记录）的默认类别是“aspx.page”。
类别用于将跟踪消息更好地组织成可识别的组，但可以是任意字符串。TraceContext 类使用 String..::.Empty 作为其仅采用 message 参数的方法的默认类别。ASP.NET（当启用跟踪时，它写入多个跟踪记录）的默认类别是“aspx.page”。
类别用于将跟踪消息更好地组织成可识别的组，但可以是任意字符串。TraceContext 类使用 String..::.Empty 作为其仅采用 message 参数的方法的默认类别。ASP.NET（当启用跟踪时，它写入多个跟踪记录）的默认类别是“aspx.page”。

下面的代码示例演示如何访问 TraceContextRecord 的 Category 属性并将该属性及其关联的跟踪消息打印到 Response 流。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    ' Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.")
End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.
    Response.Write("<table>")
    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
        Response.Write(String.Format("<tr><td>{0}</td><td>{1}</td></tr>", r.Message, r.Category))
    Next
    Response.Write("</table>")

End Sub ' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    // Write a trace message.
    Trace.Write("Web Forms Infrastructure Methods", "USERMESSAGE: Page_Load complete.");
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    Response.Write("<table>");
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        Response.Write(String.Format("<tr><td>{0}</td><td>{1}</td></tr>", r.Message, r.Category));
    }
    Response.Write("</table>");
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextRecord 类
TraceContextRecord 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContextRecord ..::.ErrorInfo 属性

TraceContextRecord
.
.
::
.
ErrorInfo 属性
TraceContextRecord 类

获取与跟踪记录关联的 Exception（如果有）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property ErrorInfo As Exception
    Get
public Exception ErrorInfo { get; }
public:
property Exception^ ErrorInfo {
    Exception^ get ();
}
member ErrorInfo : Exception

属性值

类型： System Exception
与跟踪记录关联的 Exception（如果存在）或 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果您正使用跟踪来调试应用程序或排除错误和异常处理，则可以在跟踪记录中包含一个异常。当跟踪记录与没有显式 errorInfo 参数或者未提供异常的 TraceContext 方法之一相关联时，ErrorInfo 属性为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 如果您正使用跟踪来调试应用程序或排除错误和异常处理，则可以在跟踪记录中包含一个异常。当跟踪记录与没有显式 errorInfo 参数或者未提供异常的 TraceContext 方法之一相关联时，ErrorInfo 属性为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextRecord 类
TraceContextRecord 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContextRecord ..::.IsWarning 属性

TraceContextRecord
.
.
::
.
IsWarning 属性
TraceContextRecord 类

获取一个值，该值指示跟踪记录是否与 TraceContext..::.Warn 方法调用关联。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property IsWarning As Boolean
    Get
public bool IsWarning { get; }
public:
property bool IsWarning {
    bool get ();
}
member IsWarning : bool

属性值

类型： System Boolean
如果 TraceContextRecord 与 Warn 方法调用关联，则为 true；否则，为 false。

下面的代码示例演示如何检查 TraceContextRecord 的 IsWarning 属性，以确定记录包含的消息是由 Warn 还是 Write 方法调用写入的。如果跟踪记录是警告消息，则要采用与跟踪记录是错误消息时所采用的操作不同的操作。 下面的代码示例演示如何检查 TraceContextRecord 的 IsWarning 属性，以确定记录包含的消息是由 Warn 还是 Write 方法调用写入的。如果跟踪记录是警告消息，则要采用与跟踪记录是错误消息时所采用的操作不同的操作。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    Try
    Dim ae As New ArgumentException("Trace Test")
        Throw ae

    catch ioe As InvalidOperationException
        ' You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)

    Catch ae As ArgumentException
        ' You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)

    End Try

End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
    If r.IsWarning Then
            Response.Write(String.Format("warning message: {0} <BR>", r.Message))
        Else
            Response.Write(String.Format("error message: {0} <BR>", r.Message))
        End If
    Next

End Sub	' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    try {
        throw new ArgumentException("Trace Test");
    }
    catch (InvalidOperationException ioe) {
        // You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
    catch (ArgumentException ae) {
        // You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        if (r.IsWarning) {
            Response.Write(String.Format("warning message: {0} <BR>", r.Message));
        }
        else {
            Response.Write(String.Format("error message: {0} <BR>", r.Message));
        }

    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextRecord 类
TraceContextRecord 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceContextRecord ..::.Message 属性

TraceContextRecord
.
.
::
.
Message 属性
TraceContextRecord 类

获取用户定义的跟踪消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public ReadOnly Property Message As String
    Get
public string Message { get; }
public:
property String^ Message {
    String^ get ();
}
member Message : string

属性值

类型： System String
表示跟踪记录的消息的字符串。

消息可以是任意字符串，并且用于写入详细的跟踪信息。它对应于传递给 TraceContext..::.Write 和 TraceContext..::.Warn 方法的消息参数。信息可以是运行时值、面向您并指导您完成程序执行的消息或其他诊断数据。
消息可以是任意字符串，并且用于写入详细的跟踪信息。它对应于传递给 TraceContext..::.Write 和 TraceContext..::.Warn 方法的消息参数。信息可以是运行时值、面向您并指导您完成程序执行的消息或其他诊断数据。
消息可以是任意字符串，并且用于写入详细的跟踪信息。它对应于传递给 TraceContext..::.Write 和 TraceContext..::.Warn 方法的消息参数。信息可以是运行时值、面向您并指导您完成程序执行的消息或其他诊断数据。

下面的代码示例演示如何访问 TraceContextRecord 的 Message 属性并将其打印到 Response 流。

<%@ Page language="VB" Trace="true" %>
<script runat="server">
' The Page_Load method.
Private Sub Page_Load(sender As Object, e As EventArgs)

    ' Register a handler for the TraceFinished event.
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished

    Try
    Dim ae As New ArgumentException("Trace Test")
        Throw ae

    catch ioe As InvalidOperationException
        ' You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe)

    Catch ae As ArgumentException
        ' You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae)

    End Try

End Sub ' Page_Load

' A TraceContextEventHandler for the TraceFinished event.
Private Sub OnTraceFinished(sender As Object, e As TraceContextEventArgs)

    Dim r As TraceContextRecord
    Dim o As Object

    ' Iterate through the collection of trace records and write
    ' them to the response stream.

    For Each o In e.TraceRecords
        r = CType(o, TraceContextRecord)
    If r.IsWarning Then
            Response.Write(String.Format("warning message: {0} <BR>", r.Message))
        Else
            Response.Write(String.Format("error message: {0} <BR>", r.Message))
        End If
    Next

End Sub	' OnTraceFinished
</script>

<%@ Page language="c#" Trace="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
    // Register a handler for the TraceFinished event.
    Trace.TraceFinished += new
        TraceContextEventHandler(this.OnTraceFinished);

    try {
        throw new ArgumentException("Trace Test");
    }
    catch (InvalidOperationException ioe) {
        // You can write an error trace message using the Write method.
        Trace.Write("Exception Handling", "Exception: Page_Load.", ioe);
    }
    catch (ArgumentException ae) {
        // You can write a warning trace message using the Warn method.
        Trace.Warn("Exception Handling", "Warning: Page_Load.", ae);
    }
}

// A TraceContextEventHandler for the TraceFinished event.
void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    TraceContextRecord r = null;

    // Iterate through the collection of trace records and write
    // them to the response stream.
    foreach(object o in e.TraceRecords)
    {
        r = (TraceContextRecord)o;
        if (r.IsWarning) {
            Response.Write(String.Format("warning message: {0} <BR>", r.Message));
        }
        else {
            Response.Write(String.Format("error message: {0} <BR>", r.Message));
        }

    }
}
</script>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

TraceContextRecord 类
TraceContextRecord 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


TraceMode 枚举

TraceMode 枚举

指定跟踪消息发出到页的 HTML 输出中所采用的顺序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Enumeration TraceMode
public enum TraceMode
public enum class TraceMode
type TraceMode
成员名称 | 说明
SortByTime | 按其处理顺序发出跟踪消息。
SortByCategory | 按类别的字母顺序发出跟踪消息。
Default | 指定 TraceMode 枚举的默认值，即 SortByTime。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0、1.1、1.0

参考

System.Web 命名空间

其他资源

ASP.NET 跟踪概述


VirtualPathUtility 类

VirtualPathUtility 类
成员

为常见的虚拟路径操作提供实用工具方法。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public NotInheritable Class VirtualPathUtility
public static class VirtualPathUtility
public ref class VirtualPathUtility abstract sealed
[<AbstractClassAttribute>]
[<SealedAttribute>]
type VirtualPathUtility =  class end

VirtualPathUtility 类为涉及虚拟路径的常见操作提供实用工具方法。对于 ASP.NET 服务器控件和服务器代码，则通常使用那些采用 Web 应用程序根操作符（即代字号“~”）的虚拟路径而不是相对和绝对路径。有关更多信息，请参见 ASP.NET 网站路径。 VirtualPathUtility 类为涉及虚拟路径的常见操作提供实用工具方法。对于 ASP.NET 服务器控件和服务器代码，则通常使用那些采用 Web 应用程序根操作符（即代字号“~”）的虚拟路径而不是相对和绝对路径。有关更多信息，请参见 ASP.NET 网站路径。 VirtualPathUtility 类为涉及虚拟路径的常见操作提供实用工具方法。对于 ASP.NET 服务器控件和服务器代码，则通常使用那些采用 Web 应用程序根操作符（即代字号“~”）的虚拟路径而不是相对和绝对路径。有关更多信息，请参见 ASP.NET 网站路径。

当您需要将应用程序相对路径转换为绝对虚拟路径时（在开发自定义 Web 服务处理程序时就可能是这种情况），应使用 VirtualPathUtility 类。

绝对虚拟路径以正斜杠 (/) 开头。如果某一虚拟路径仅为一个代字号 (~) 或者以代字号后跟双反斜杠 (~\\) 或一个代字号后跟一个正斜杠 (~/) 开头，则该路径为相对于应用程序根目录的相对虚拟路径。使虚拟路径成为相对路径将使该路径与应用程序无关。 绝对虚拟路径以正斜杠 (/) 开头。如果某一虚拟路径仅为一个代字号 (~) 或者以代字号后跟双反斜杠 (~\\) 或一个代字号后跟一个正斜杠 (~/) 开头，则该路径为相对于应用程序根目录的相对虚拟路径。使虚拟路径成为相对路径将使该路径与应用程序无关。 绝对虚拟路径以正斜杠 (/) 开头。如果某一虚拟路径仅为一个代字号 (~) 或者以代字号后跟双反斜杠 (~\\) 或一个代字号后跟一个正斜杠 (~/) 开头，则该路径为相对于应用程序根目录的相对虚拟路径。使虚拟路径成为相对路径将使该路径与应用程序无关。

应用程序的虚拟目录可从 AppDomainAppVirtualPath 和 ApplicationPath 属性获得。

说明 说明

VirtualPathUtility 类不适用于安全或规范化目的。有关 Web 应用程序安全性的更多信息，请参见 Web 应用程序安全威胁概述。有关通用 URL 处理功能，请参见 Uri。 VirtualPathUtility 类不适用于安全或规范化目的。有关 Web 应用程序安全性的更多信息，请参见 Web 应用程序安全威胁概述。有关通用 URL 处理功能，请参见 Uri。 VirtualPathUtility 类不适用于安全或规范化目的。有关 Web 应用程序安全性的更多信息，请参见 Web 应用程序安全威胁概述。有关通用 URL 处理功能，请参见 Uri。

下面的代码示例演示如何使用 VirtualPathUtility 类及其某些方法。首先，FilePath 属性生成网页的虚拟路径。GetFileName、GetExtension 和 GetDirectory 方法返回关于该虚拟路径的信息。接下来，CurrentExecutionFilePath 属性生成当前请求的虚拟路径，如果调用了 Redirect 方法，该路径可能与 FilePath 属性不同。IsAbsolute、IsAppRelative 和 ToAppRelative 方法返回关于该虚拟路径的信息。 下面的代码示例演示如何使用 VirtualPathUtility 类及其某些方法。首先，FilePath 属性生成网页的虚拟路径。GetFileName、GetExtension 和 GetDirectory 方法返回关于该虚拟路径的信息。接下来，CurrentExecutionFilePath 属性生成当前请求的虚拟路径，如果调用了 Redirect 方法，该路径可能与 FilePath 属性不同。IsAbsolute、IsAppRelative 和 ToAppRelative 方法返回关于该虚拟路径的信息。 下面的代码示例演示如何使用 VirtualPathUtility 类及其某些方法。首先，FilePath 属性生成网页的虚拟路径。GetFileName、GetExtension 和 GetDirectory 方法返回关于该虚拟路径的信息。接下来，CurrentExecutionFilePath 属性生成当前请求的虚拟路径，如果调用了 Redirect 方法，该路径可能与 FilePath 属性不同。IsAbsolute、IsAppRelative 和 ToAppRelative 方法返回关于该虚拟路径的信息。 下面的代码示例演示如何使用 VirtualPathUtility 类及其某些方法。首先，FilePath 属性生成网页的虚拟路径。GetFileName、GetExtension 和 GetDirectory 方法返回关于该虚拟路径的信息。接下来，CurrentExecutionFilePath 属性生成当前请求的虚拟路径，如果调用了 Redirect 方法，该路径可能与 FilePath 属性不同。IsAbsolute、IsAppRelative 和 ToAppRelative 方法返回关于该虚拟路径的信息。 下面的代码示例演示如何使用 VirtualPathUtility 类及其某些方法。首先，FilePath 属性生成网页的虚拟路径。GetFileName、GetExtension 和 GetDirectory 方法返回关于该虚拟路径的信息。接下来，CurrentExecutionFilePath 属性生成当前请求的虚拟路径，如果调用了 Redirect 方法，该路径可能与 FilePath 属性不同。IsAbsolute、IsAppRelative 和 ToAppRelative 方法返回关于该虚拟路径的信息。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim sb As New StringBuilder()
    Dim pathstring As String = Context.Request.FilePath.ToString()
    sb.Append("Current file path = " & pathstring & "<br />")
    sb.Append("File name = " & VirtualPathUtility.GetFileName(pathstring).ToString() & "<br />")
    sb.Append("File extension = " & VirtualPathUtility.GetExtension(pathstring).ToString() & "<br />")
    sb.Append("Directory = " & VirtualPathUtility.GetDirectory(pathstring).ToString() & "<br />")
    Response.Write(sb.ToString())

    Dim sb2 As New StringBuilder()
    Dim pathstring1 As String = Context.Request.CurrentExecutionFilePath.ToString()
    sb2.Append("Current Executing File Path = " & pathstring1.ToString() & "<br />")
    sb2.Append("Is Absolute = " & VirtualPathUtility.IsAbsolute(pathstring1).ToString() & "<br />")
    sb2.Append("Is AppRelative = " & VirtualPathUtility.IsAppRelative(pathstring1).ToString() & "<br />")
    sb2.Append("Make AppRelative = " & VirtualPathUtility.ToAppRelative(pathstring1).ToString() & "<br />")
    Response.Write(sb2.ToString())

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>VirtualPathUtility Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  protected void Page_Load(object sender, EventArgs e)
  {
    StringBuilder sb = new StringBuilder();
    String pathstring = Context.Request.FilePath.ToString();
    sb.Append("Current file path = " + pathstring + "<br />");
    sb.Append("File name = " + VirtualPathUtility.GetFileName(pathstring).ToString() + "<br />");
    sb.Append("File extension = " + VirtualPathUtility.GetExtension(pathstring).ToString() + "<br />");
    sb.Append("Directory = " + VirtualPathUtility.GetDirectory(pathstring).ToString() + "<br />");
    Response.Write(sb.ToString());

    StringBuilder sb2 = new StringBuilder();
    String pathstring1 = Context.Request.CurrentExecutionFilePath.ToString();
    sb2.Append("Current Executing File Path = " + pathstring1.ToString() + "<br />");
    sb2.Append("Is Absolute = " + VirtualPathUtility.IsAbsolute(pathstring1).ToString() + "<br />");
    sb2.Append("Is AppRelative = " + VirtualPathUtility.IsAppRelative(pathstring1).ToString() + "<br />");
    sb2.Append("Make AppRelative = " + VirtualPathUtility.ToAppRelative(pathstring1).ToString() + "<br />");
    Response.Write(sb2.ToString());
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>VirtualPathUtility Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

System.Web System.Web..::.VirtualPathUtilityVirtualPathUtility
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 成员
System.Web 命名空间
HttpRequest

其他资源

ASP.NET 网站路径


VirtualPathUtility 成员

VirtualPathUtility 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
VirtualPathUtility 类

为常见的虚拟路径操作提供实用工具方法。

VirtualPathUtility 类型公开以下成员。

名称 说明
页首

参考

VirtualPathUtility 类
System.Web 命名空间


VirtualPathUtility 方法

VirtualPathUtility 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
VirtualPathUtility 类

VirtualPathUtility 类型公开以下成员。

名称 说明
页首

参考

VirtualPathUtility 类
System.Web 命名空间


VirtualPathUtility ..::.AppendTrailingSlash 方法

VirtualPathUtility
.
.
::
.
AppendTrailingSlash 方法
VirtualPathUtility 类

将正斜杠 (/) 追加到虚拟路径的末尾（如果尚不存在正斜杠）。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function AppendTrailingSlash ( _
    virtualPath As String _
) As String
public static string AppendTrailingSlash(
    string virtualPath
)
public:
static String^ AppendTrailingSlash(
    String^ virtualPath
)
static member AppendTrailingSlash :
        virtualPath:string -> string

参数

virtualPath
类型： System String
要向其追加正斜杠的虚拟路径。

返回值

类型： System String
修改后的虚拟路径。

如果虚拟路径的末尾存在正斜杠，则不修改虚拟路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
RemoveTrailingSlash


VirtualPathUtility ..::.Combine 方法

VirtualPathUtility
.
.
::
.
Combine 方法
VirtualPathUtility 类

将一个基路径和一个相对路径进行组合。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function Combine ( _
    basePath As String, _
    relativePath As String _
) As String
public static string Combine(
    string basePath,
    string relativePath
)
public:
static String^ Combine(
    String^ basePath,
    String^ relativePath
)
static member Combine :
        basePath:string *
        relativePath:string -> string

参数

basePath
类型： System String
基路径。
relativePath
类型： System String
相对路径。

返回值

类型： System String
组合后的 basePath 和 relativePath。
异常 | 条件
HttpException | relativePath 是一个物理路径。 - 或 - relativePath 包含一个或多个冒号。
ArgumentNullException | relativePath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串。 - 或 - basePath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串。

如果相对路径恰为一个代字号 (~)，则 Combine 方法返回 AppDomainAppVirtualPath 属性的值。

如果相对路径以一个代字号后跟一个正斜杠 (~/) 开头，则 Combine 方法使用 AppDomainAppVirtualPath 属性值而非基路径；否则 Combine 方法将使用基路径。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
AppDomainAppVirtualPath
CombineVirtualPaths


VirtualPathUtility ..::.GetDirectory 方法

VirtualPathUtility
.
.
::
.
GetDirectory 方法
VirtualPathUtility 类

返回虚拟路径的目录部分。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetDirectory ( _
    virtualPath As String _
) As String
public static string GetDirectory(
    string virtualPath
)
public:
static String^ GetDirectory(
    String^ virtualPath
)
static member GetDirectory :
        virtualPath:string -> string

参数

virtualPath
类型： System String
虚拟路径。

返回值

类型： System String
虚拟路径中引用的目录。
异常 | 条件
ArgumentException | virtualPath 不含有根路径。 - 或 - virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串。

如果 virtualPath 不含有根路径（即，该路径不等于根操作符（代字号 [~]）；不以代字号 (~) 开头，如一个代字号后跟一个正斜杠 (~/) 或一个代字号后跟双反斜杠 (~\\)；或者不是以正斜杠 (/) 开头），则会引发 ArgumentException 异常。

如果传入 GetDirectory 方法的虚拟路径为 "/images/image1.gif"，则返回的目录为 "/images"。

下面的代码示例演示了如何使用 GetFileName、GetExtension 和 GetDirectory 方法。

Dim sb As New StringBuilder()
Dim pathstring As String = Context.Request.FilePath.ToString()
sb.Append("Current file path = " & pathstring & "<br />")
sb.Append("File name = " & VirtualPathUtility.GetFileName(pathstring).ToString() & "<br />")
sb.Append("File extension = " & VirtualPathUtility.GetExtension(pathstring).ToString() & "<br />")
sb.Append("Directory = " & VirtualPathUtility.GetDirectory(pathstring).ToString() & "<br />")
Response.Write(sb.ToString())

StringBuilder sb = new StringBuilder();
String pathstring = Context.Request.FilePath.ToString();
sb.Append("Current file path = " + pathstring + "<br />");
sb.Append("File name = " + VirtualPathUtility.GetFileName(pathstring).ToString() + "<br />");
sb.Append("File extension = " + VirtualPathUtility.GetExtension(pathstring).ToString() + "<br />");
sb.Append("Directory = " + VirtualPathUtility.GetDirectory(pathstring).ToString() + "<br />");
Response.Write(sb.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
GetExtension
GetFileName


VirtualPathUtility ..::.GetExtension 方法

VirtualPathUtility
.
.
::
.
GetExtension 方法
VirtualPathUtility 类

检索虚拟路径中引用的文件的扩展名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetExtension ( _
    virtualPath As String _
) As String
public static string GetExtension(
    string virtualPath
)
public:
static String^ GetExtension(
    String^ virtualPath
)
static member GetExtension :
        virtualPath:string -> string

参数

virtualPath
类型： System String
虚拟路径。

返回值

类型： System String
文件扩展名字符串，包括句点 (.)、nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")。
异常 | 条件
ArgumentException | virtualPath 包含 InvalidPathChars 中定义的一个或多个无效字符。

如果传入 GetExtension 方法的虚拟路径为 "/images/image1.gif"，则返回的扩展名为 ".gif"。

下面的代码示例演示了如何使用 GetFileName、GetExtension 和 GetDirectory 方法。

Dim sb As New StringBuilder()
Dim pathstring As String = Context.Request.FilePath.ToString()
sb.Append("Current file path = " & pathstring & "<br />")
sb.Append("File name = " & VirtualPathUtility.GetFileName(pathstring).ToString() & "<br />")
sb.Append("File extension = " & VirtualPathUtility.GetExtension(pathstring).ToString() & "<br />")
sb.Append("Directory = " & VirtualPathUtility.GetDirectory(pathstring).ToString() & "<br />")
Response.Write(sb.ToString())

StringBuilder sb = new StringBuilder();
String pathstring = Context.Request.FilePath.ToString();
sb.Append("Current file path = " + pathstring + "<br />");
sb.Append("File name = " + VirtualPathUtility.GetFileName(pathstring).ToString() + "<br />");
sb.Append("File extension = " + VirtualPathUtility.GetExtension(pathstring).ToString() + "<br />");
sb.Append("Directory = " + VirtualPathUtility.GetDirectory(pathstring).ToString() + "<br />");
Response.Write(sb.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
GetDirectory
GetFileName
GetExtension


VirtualPathUtility ..::.GetFileName 方法

VirtualPathUtility
.
.
::
.
GetFileName 方法
VirtualPathUtility 类

检索虚拟路径中引用的文件的文件名。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function GetFileName ( _
    virtualPath As String _
) As String
public static string GetFileName(
    string virtualPath
)
public:
static String^ GetFileName(
    String^ virtualPath
)
static member GetFileName :
        virtualPath:string -> string

参数

virtualPath
类型： System String
虚拟路径。

返回值

类型： System String
virtualPath 中的最后一个目录字符后面的文件名文本；否则，如果 virtualPath 的最后一个字符是目录字符或卷分隔符，则为空字符串 ("")。
异常 | 条件
ArgumentException | virtualPath 包含 InvalidPathChars 中定义的一个或多个无效字符。

如果传入 GetFileName 方法的虚拟路径为 "/images/image1.gif"，则返回的文件名为 "image1.gif"。

下面的代码示例演示了如何使用 GetFileName、GetExtension 和 GetDirectory 方法。

Dim sb As New StringBuilder()
Dim pathstring As String = Context.Request.FilePath.ToString()
sb.Append("Current file path = " & pathstring & "<br />")
sb.Append("File name = " & VirtualPathUtility.GetFileName(pathstring).ToString() & "<br />")
sb.Append("File extension = " & VirtualPathUtility.GetExtension(pathstring).ToString() & "<br />")
sb.Append("Directory = " & VirtualPathUtility.GetDirectory(pathstring).ToString() & "<br />")
Response.Write(sb.ToString())

StringBuilder sb = new StringBuilder();
String pathstring = Context.Request.FilePath.ToString();
sb.Append("Current file path = " + pathstring + "<br />");
sb.Append("File name = " + VirtualPathUtility.GetFileName(pathstring).ToString() + "<br />");
sb.Append("File extension = " + VirtualPathUtility.GetExtension(pathstring).ToString() + "<br />");
sb.Append("Directory = " + VirtualPathUtility.GetDirectory(pathstring).ToString() + "<br />");
Response.Write(sb.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
GetExtension
GetDirectory
GetFileName


VirtualPathUtility ..::.IsAbsolute 方法

VirtualPathUtility
.
.
::
.
IsAbsolute 方法
VirtualPathUtility 类

返回一个布尔值，该值指示指定的虚拟路径是否为绝对路径，也就是以正斜杠 (/) 开头。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function IsAbsolute ( _
    virtualPath As String _
) As Boolean
public static bool IsAbsolute(
    string virtualPath
)
public:
static bool IsAbsolute(
    String^ virtualPath
)
static member IsAbsolute :
        virtualPath:string -> bool

参数

virtualPath
类型： System String
要检查的虚拟路径。

返回值

类型： System Boolean
如果 virtualPath 是绝对路径，并且不为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果虚拟路径以正斜杠 (/) 开头，则它是绝对路径。例如，Path 属性返回一个绝对虚拟路径。 如果虚拟路径以正斜杠 (/) 开头，则它是绝对路径。例如，Path 属性返回一个绝对虚拟路径。

下面的代码示例演示了如何使用 IsAbsolute、IsAppRelative 和 ToAppRelative 方法。

Dim sb2 As New StringBuilder()
Dim pathstring1 As String = Context.Request.CurrentExecutionFilePath.ToString()
sb2.Append("Current Executing File Path = " & pathstring1.ToString() & "<br />")
sb2.Append("Is Absolute = " & VirtualPathUtility.IsAbsolute(pathstring1).ToString() & "<br />")
sb2.Append("Is AppRelative = " & VirtualPathUtility.IsAppRelative(pathstring1).ToString() & "<br />")
sb2.Append("Make AppRelative = " & VirtualPathUtility.ToAppRelative(pathstring1).ToString() & "<br />")
Response.Write(sb2.ToString())

StringBuilder sb2 = new StringBuilder();
String pathstring1 = Context.Request.CurrentExecutionFilePath.ToString();
sb2.Append("Current Executing File Path = " + pathstring1.ToString() + "<br />");
sb2.Append("Is Absolute = " + VirtualPathUtility.IsAbsolute(pathstring1).ToString() + "<br />");
sb2.Append("Is AppRelative = " + VirtualPathUtility.IsAppRelative(pathstring1).ToString() + "<br />");
sb2.Append("Make AppRelative = " + VirtualPathUtility.ToAppRelative(pathstring1).ToString() + "<br />");
Response.Write(sb2.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
Path
IsAppRelative


VirtualPathUtility ..::.IsAppRelative 方法

VirtualPathUtility
.
.
::
.
IsAppRelative 方法
VirtualPathUtility 类

返回一个布尔值，该值指示指定的虚拟路径是否为相对于应用程序的相对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function IsAppRelative ( _
    virtualPath As String _
) As Boolean
public static bool IsAppRelative(
    string virtualPath
)
public:
static bool IsAppRelative(
    String^ virtualPath
)
static member IsAppRelative :
        virtualPath:string -> bool

参数

virtualPath
类型： System String
要检查的虚拟路径。

返回值

类型： System Boolean
如果 virtualPath 相对于应用程序，则为 true；否则为 false。
异常 | 条件
ArgumentNullException | virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

虚拟路径可以等于根操作符（代字号 [~]），或者以根操作符开头。如果 virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将引发 ArgumentNullException 异常。如果 virtualPath 为空字符串 ("")，则 IsAppRelative 方法将返回 false。 虚拟路径可以等于根操作符（代字号 [~]），或者以根操作符开头。如果 virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将引发 ArgumentNullException 异常。如果 virtualPath 为空字符串 ("")，则 IsAppRelative 方法将返回 false。 虚拟路径可以等于根操作符（代字号 [~]），或者以根操作符开头。如果 virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing），将引发 ArgumentNullException 异常。如果 virtualPath 为空字符串 ("")，则 IsAppRelative 方法将返回 false。

说明 说明

"~filename "~filename" 不是有效的虚拟路径，并且 IsAppRelative 方法返回 false。

下面的代码示例演示了如何使用 IsAbsolute、IsAppRelative 和 ToAppRelative 方法。

Dim sb2 As New StringBuilder()
Dim pathstring1 As String = Context.Request.CurrentExecutionFilePath.ToString()
sb2.Append("Current Executing File Path = " & pathstring1.ToString() & "<br />")
sb2.Append("Is Absolute = " & VirtualPathUtility.IsAbsolute(pathstring1).ToString() & "<br />")
sb2.Append("Is AppRelative = " & VirtualPathUtility.IsAppRelative(pathstring1).ToString() & "<br />")
sb2.Append("Make AppRelative = " & VirtualPathUtility.ToAppRelative(pathstring1).ToString() & "<br />")
Response.Write(sb2.ToString())

StringBuilder sb2 = new StringBuilder();
String pathstring1 = Context.Request.CurrentExecutionFilePath.ToString();
sb2.Append("Current Executing File Path = " + pathstring1.ToString() + "<br />");
sb2.Append("Is Absolute = " + VirtualPathUtility.IsAbsolute(pathstring1).ToString() + "<br />");
sb2.Append("Is AppRelative = " + VirtualPathUtility.IsAppRelative(pathstring1).ToString() + "<br />");
sb2.Append("Make AppRelative = " + VirtualPathUtility.ToAppRelative(pathstring1).ToString() + "<br />");
Response.Write(sb2.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
IsAbsolute


VirtualPathUtility ..::.MakeRelative 方法

VirtualPathUtility
.
.
::
.
MakeRelative 方法
VirtualPathUtility 类

返回从一个包含根操作符（代字号 [~]）的虚拟路径到另一个此类虚拟路径的相对虚拟路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function MakeRelative ( _
    fromPath As String, _
    toPath As String _
) As String
public static string MakeRelative(
    string fromPath,
    string toPath
)
public:
static String^ MakeRelative(
    String^ fromPath,
    String^ toPath
)
static member MakeRelative :
        fromPath:string *
        toPath:string -> string

参数

fromPath
类型： System String
要返回的相对虚拟路径的起始虚拟路径。
toPath
类型： System String
要返回的相对虚拟路径的结束虚拟路径。

返回值

类型： System String
从 fromPath 到 toPath 的相对虚拟路径。
异常 | 条件
ArgumentException | fromPath 不含有根路径。 - 或 - toPath 不含有根路径。

如果 fromPath 和 toPath 不含有根路径（即，该路径不等于根操作符（代字号 [~]）；不以代字号 (~) 开头，如一个代字号后跟一个正斜杠 (~/) 或一个代字号后跟双反斜杠 (~\\)；或者不是以正斜杠 (/) 开头），则会引发 ArgumentException 异常。

URI 中使用的查询字符串参数和 HTML 定位点不用于确定相对路径。

如果 fromPath 为 "/directory1/file1.aspx" 并且 toPath 为 "/directory2/file2.aspx"，则 MakeRelative 方法将返回 "../directory2/file2.aspx"。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
MakeRelative


VirtualPathUtility ..::.RemoveTrailingSlash 方法

VirtualPathUtility
.
.
::
.
RemoveTrailingSlash 方法
VirtualPathUtility 类

从虚拟路径去除末尾的正斜杠 (/)。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function RemoveTrailingSlash ( _
    virtualPath As String _
) As String
public static string RemoveTrailingSlash(
    string virtualPath
)
public:
static String^ RemoveTrailingSlash(
    String^ virtualPath
)
static member RemoveTrailingSlash :
        virtualPath:string -> string

参数

virtualPath
类型： System String
要去除末尾的任何正斜杠的虚拟路径。

返回值

类型： System String
如果虚拟路径尚不是根目录 ("/")，则返回末尾没有正斜杠的虚拟路径；否则返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

RemoveTrailingSlash 方法从虚拟路径的末尾去除正斜杠 (/)。如果虚拟路径已经是根目录 ("/")，则不执行任何操作。如果虚拟路径是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则 RemoveTrailingSlash 方法将返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 RemoveTrailingSlash 方法从虚拟路径的末尾去除正斜杠 (/)。如果虚拟路径已经是根目录 ("/")，则不执行任何操作。如果虚拟路径是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则 RemoveTrailingSlash 方法将返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 RemoveTrailingSlash 方法从虚拟路径的末尾去除正斜杠 (/)。如果虚拟路径已经是根目录 ("/")，则不执行任何操作。如果虚拟路径是 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing） 或空字符串 ("")，则 RemoveTrailingSlash 方法将返回 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间
AppendTrailingSlash


VirtualPathUtility ..::.ToAbsolute 方法

VirtualPathUtility
.
.
::
.
ToAbsolute 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
VirtualPathUtility 类

将虚拟路径转换为应用程序绝对路径。

名称 说明
页首

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间


VirtualPathUtility ..::.ToAbsolute 方法 (String)

VirtualPathUtility
.
.
::
.
ToAbsolute 方法 (String)
VirtualPathUtility 类

将虚拟路径转换为应用程序绝对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ToAbsolute ( _
    virtualPath As String _
) As String
public static string ToAbsolute(
    string virtualPath
)
public:
static String^ ToAbsolute(
    String^ virtualPath
)
static member ToAbsolute :
        virtualPath:string -> string

参数

virtualPath
类型： System String
要转换为应用程序相对路径的虚拟路径。

返回值

类型： System String
指定的虚拟路径的绝对路径表示形式。
异常 | 条件
ArgumentOutOfRangeException | virtualPath 不含有根路径。
HttpException | 前导双句点 (..)用于退出顶级目录。

应用程序绝对路径是使用应用程序路径而不是根操作符（代字号 [~]）的路径。

如果 virtualPath 为：

  • 绝对路径，ToAbsolute 返回该虚拟路径且不进行任何更改。

  • 应用程序相对路径，ToAbsolute 方法将当前应用程序虚拟目录路径追加到 virtualPath 的开头。例如，当前应用程序虚拟目录路径可以从 AppDomainAppVirtualPath 属性访问。 应用程序相对路径，ToAbsolute 方法将当前应用程序虚拟目录路径追加到 virtualPath 的开头。例如，当前应用程序虚拟目录路径可以从 AppDomainAppVirtualPath 属性访问。

  • 不含有根路径的路径，ToAbsolute 方法引发 ArgumentOutOfRangeException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
ToAbsolute 重载
System.Web 命名空间
AppDomainAppVirtualPath


VirtualPathUtility ..::.ToAbsolute 方法 (String, String)

VirtualPathUtility
.
.
::
.
ToAbsolute 方法 (String, String)
VirtualPathUtility 类

使用指定的应用程序路径将虚拟路径转换为应用程序绝对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ToAbsolute ( _
    virtualPath As String, _
    applicationPath As String _
) As String
public static string ToAbsolute(
    string virtualPath,
    string applicationPath
)
public:
static String^ ToAbsolute(
    String^ virtualPath,
    String^ applicationPath
)
static member ToAbsolute :
        virtualPath:string *
        applicationPath:string -> string

参数

virtualPath
类型： System String
要转换为应用程序相对路径的虚拟路径。
applicationPath
类型： System String
要用于将 virtualPath 转换为相对路径的应用程序路径。

返回值

类型： System String
virtualPath 的绝对虚拟路径表示形式。
异常 | 条件
ArgumentOutOfRangeException | applicationPath 不含有根路径。
HttpException | 前导双句点 (..)在应用程序路径中使用可退出顶级目录。

ToAbsolute 方法的 ToAbsolute 重载使用所提供的应用程序路径而不是当前应用程序路径。

如果 virtualPath 为：

  • 绝对路径，ToAbsolute 返回该虚拟路径且不进行任何更改。

  • 应用程序相对路径，ToAbsolute 方法将 applicationPath 添加到虚拟路径的开头。

  • 不含有根路径的路径，ToAbsolute 方法引发 ArgumentOutOfRangeException 异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
ToAbsolute 重载
System.Web 命名空间
AppDomainAppVirtualPath


VirtualPathUtility ..::.ToAppRelative 方法

VirtualPathUtility
.
.
::
.
ToAppRelative 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
VirtualPathUtility 类

将虚拟路径转换为应用程序相对路径。

名称 说明
页首

参考

VirtualPathUtility 类
VirtualPathUtility 成员
System.Web 命名空间


VirtualPathUtility ..::.ToAppRelative 方法 (String)

VirtualPathUtility
.
.
::
.
ToAppRelative 方法 (String)
VirtualPathUtility 类

使用 AppDomainAppVirtualPath 属性中的应用程序虚拟路径将虚拟路径转换为应用程序相对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ToAppRelative ( _
    virtualPath As String _
) As String
public static string ToAppRelative(
    string virtualPath
)
public:
static String^ ToAppRelative(
    String^ virtualPath
)
static member ToAppRelative :
        virtualPath:string -> string

参数

virtualPath
类型： System String
要转换为应用程序相对路径的虚拟路径。

返回值

类型： System String
virtualPath 的应用程序相对路径表示形式。
异常 | 条件
ArgumentException | virtualPath 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

如果应用程序的虚拟路径为 "myapp" 并向 ToAppRelative 方法传入了虚拟路径 "/myApp/sub/default.asp"，则得到的应用程序相对路径为 "~/sub/default.aspx"。

如果 virtualPath 不以当前应用程序路径开头，ToAppRelative 方法将返回该虚拟路径且不进行任何更改。

如果 virtualPath 与应用程序路径相同，则返回根操作符（代字号 [~]）。例如，当前应用程序虚拟目录路径可以从 AppDomainAppVirtualPath 属性访问。 如果 virtualPath 与应用程序路径相同，则返回根操作符（代字号 [~]）。例如，当前应用程序虚拟目录路径可以从 AppDomainAppVirtualPath 属性访问。

下面的代码示例演示了如何使用 IsAbsolute、IsAppRelative 和 ToAppRelative 方法。

Dim sb2 As New StringBuilder()
Dim pathstring1 As String = Context.Request.CurrentExecutionFilePath.ToString()
sb2.Append("Current Executing File Path = " & pathstring1.ToString() & "<br />")
sb2.Append("Is Absolute = " & VirtualPathUtility.IsAbsolute(pathstring1).ToString() & "<br />")
sb2.Append("Is AppRelative = " & VirtualPathUtility.IsAppRelative(pathstring1).ToString() & "<br />")
sb2.Append("Make AppRelative = " & VirtualPathUtility.ToAppRelative(pathstring1).ToString() & "<br />")
Response.Write(sb2.ToString())

StringBuilder sb2 = new StringBuilder();
String pathstring1 = Context.Request.CurrentExecutionFilePath.ToString();
sb2.Append("Current Executing File Path = " + pathstring1.ToString() + "<br />");
sb2.Append("Is Absolute = " + VirtualPathUtility.IsAbsolute(pathstring1).ToString() + "<br />");
sb2.Append("Is AppRelative = " + VirtualPathUtility.IsAppRelative(pathstring1).ToString() + "<br />");
sb2.Append("Make AppRelative = " + VirtualPathUtility.ToAppRelative(pathstring1).ToString() + "<br />");
Response.Write(sb2.ToString());

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
ToAppRelative 重载
System.Web 命名空间
ToAppRelative
AppDomainAppVirtualPath


VirtualPathUtility ..::.ToAppRelative 方法 (String, String)

VirtualPathUtility
.
.
::
.
ToAppRelative 方法 (String, String)
VirtualPathUtility 类

使用指定的应用程序路径将虚拟路径转换为应用程序相对路径。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Shared Function ToAppRelative ( _
    virtualPath As String, _
    applicationPath As String _
) As String
public static string ToAppRelative(
    string virtualPath,
    string applicationPath
)
public:
static String^ ToAppRelative(
    String^ virtualPath,
    String^ applicationPath
)
static member ToAppRelative :
        virtualPath:string *
        applicationPath:string -> string

参数

virtualPath
类型： System String
要转换为应用程序相对路径的虚拟路径。
applicationPath
类型： System String
要用于将 virtualPath 转换为相对路径的应用程序路径。

返回值

类型： System String
virtualPath 的应用程序相对路径表示形式。

ToAppRelative 方法的 ToAppRelative 重载使用 applicationPath 而不是当前应用程序路径。如果 virtualPath 不以 applicationPath 开头，则 ToAppRelative 将返回该虚拟路径且不进行任何更改。 ToAppRelative 方法的 ToAppRelative 重载使用 applicationPath 而不是当前应用程序路径。如果 virtualPath 不以 applicationPath 开头，则 ToAppRelative 将返回该虚拟路径且不进行任何更改。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

VirtualPathUtility 类
VirtualPathUtility 成员
ToAppRelative 重载
System.Web 命名空间
ToAppRelative


WebPageTraceListener 类

WebPageTraceListener 类
成员

提供一个将 Trace 消息定向到 ASP.NET 网页输出的侦听器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)> _
Public Class WebPageTraceListener _
    Inherits TraceListener
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public class WebPageTraceListener : TraceListener
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true)]
public ref class WebPageTraceListener : public TraceListener
[<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)>]
type WebPageTraceListener =
    class
        inherit TraceListener
    end
说明 说明

应用于此类的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。HostProtectionAttribute 不影响桌面应用程序（这些应用程序通常通过双击图标、键入命令或在浏览器中输入 URL 来启动）。有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。 应用于此类的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。HostProtectionAttribute 不影响桌面应用程序（这些应用程序通常通过双击图标、键入命令或在浏览器中输入 URL 来启动）。有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。 应用于此类的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。HostProtectionAttribute 不影响桌面应用程序（这些应用程序通常通过双击图标、键入命令或在浏览器中输入 URL 来启动）。有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

WebPageTraceListener 类将写入 Trace 日志的跟踪消息转发到 ASP.NET 网页输出信道。可以通过将一个 WebPageTraceListener 对象作为侦听器添加到 Web.config 文件中（具体位置为 <system.diagnostics> 元素节的 trace 元素（ASP.NET 设置架构）子节），来启用跟踪转发。还可以通过编程方式向侦听器集合添加一个 WebPageTraceListener。通常，这是通过使用 Global.asax 文件中的 Application_Start 方法在应用程序启动期间向该集合添加一个 WebPageTraceListener 来完成的。 WebPageTraceListener 类将写入 Trace 日志的跟踪消息转发到 ASP.NET 网页输出信道。可以通过将一个 WebPageTraceListener 对象作为侦听器添加到 Web.config 文件中（具体位置为 <system.diagnostics> 元素节的 trace 元素（ASP.NET 设置架构）子节），来启用跟踪转发。还可以通过编程方式向侦听器集合添加一个 WebPageTraceListener。通常，这是通过使用 Global.asax 文件中的 Application_Start 方法在应用程序启动期间向该集合添加一个 WebPageTraceListener 来完成的。 WebPageTraceListener 类将写入 Trace 日志的跟踪消息转发到 ASP.NET 网页输出信道。可以通过将一个 WebPageTraceListener 对象作为侦听器添加到 Web.config 文件中（具体位置为 <system.diagnostics> 元素节的 trace 元素（ASP.NET 设置架构）子节），来启用跟踪转发。还可以通过编程方式向侦听器集合添加一个 WebPageTraceListener。通常，这是通过使用 Global.asax 文件中的 Application_Start 方法在应用程序启动期间向该集合添加一个 WebPageTraceListener 来完成的。 WebPageTraceListener 类将写入 Trace 日志的跟踪消息转发到 ASP.NET 网页输出信道。可以通过将一个 WebPageTraceListener 对象作为侦听器添加到 Web.config 文件中（具体位置为 <system.diagnostics> 元素节的 trace 元素（ASP.NET 设置架构）子节），来启用跟踪转发。还可以通过编程方式向侦听器集合添加一个 WebPageTraceListener。通常，这是通过使用 Global.asax 文件中的 Application_Start 方法在应用程序启动期间向该集合添加一个 WebPageTraceListener 来完成的。

说明 说明

应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值：Synchronization。The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser).有关更多信息，请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。

下面的代码示例演示如何将 Trace 消息路由到 Web 窗体输出。该代码示例还显示了一个包含 BulletedList 和 AccessDataSource 控件的典型 Web 窗体。该 Web 窗体启用跟踪，跟踪输出将在呈现 Web 窗体时被追加到该窗体。可以在跟踪输出的“跟踪信息”表中检查跟踪消息。如果已在配置文件中正确地启用了 WebPageTraceListener，您将同时看到类别为 "Trace Test" 的跟踪消息。然而，如果未启用 WebPageTraceListener，您将仅看到被写入 TraceContext 对象的跟踪消息。 下面的代码示例演示如何将 Trace 消息路由到 Web 窗体输出。该代码示例还显示了一个包含 BulletedList 和 AccessDataSource 控件的典型 Web 窗体。该 Web 窗体启用跟踪，跟踪输出将在呈现 Web 窗体时被追加到该窗体。可以在跟踪输出的“跟踪信息”表中检查跟踪消息。如果已在配置文件中正确地启用了 WebPageTraceListener，您将同时看到类别为 "Trace Test" 的跟踪消息。然而，如果未启用 WebPageTraceListener，您将仅看到被写入 TraceContext 对象的跟踪消息。 下面的代码示例演示如何将 Trace 消息路由到 Web 窗体输出。该代码示例还显示了一个包含 BulletedList 和 AccessDataSource 控件的典型 Web 窗体。该 Web 窗体启用跟踪，跟踪输出将在呈现 Web 窗体时被追加到该窗体。可以在跟踪输出的“跟踪信息”表中检查跟踪消息。如果已在配置文件中正确地启用了 WebPageTraceListener，您将同时看到类别为 "Trace Test" 的跟踪消息。然而，如果未启用 WebPageTraceListener，您将仅看到被写入 TraceContext 对象的跟踪消息。 下面的代码示例演示如何将 Trace 消息路由到 Web 窗体输出。该代码示例还显示了一个包含 BulletedList 和 AccessDataSource 控件的典型 Web 窗体。该 Web 窗体启用跟踪，跟踪输出将在呈现 Web 窗体时被追加到该窗体。可以在跟踪输出的“跟踪信息”表中检查跟踪消息。如果已在配置文件中正确地启用了 WebPageTraceListener，您将同时看到类别为 "Trace Test" 的跟踪消息。然而，如果未启用 WebPageTraceListener，您将仅看到被写入 TraceContext 对象的跟踪消息。 下面的代码示例演示如何将 Trace 消息路由到 Web 窗体输出。该代码示例还显示了一个包含 BulletedList 和 AccessDataSource 控件的典型 Web 窗体。该 Web 窗体启用跟踪，跟踪输出将在呈现 Web 窗体时被追加到该窗体。可以在跟踪输出的“跟踪信息”表中检查跟踪消息。如果已在配置文件中正确地启用了 WebPageTraceListener，您将同时看到类别为 "Trace Test" 的跟踪消息。然而，如果未启用 WebPageTraceListener，您将仅看到被写入 TraceContext 对象的跟踪消息。 下面的代码示例演示如何将 Trace 消息路由到 Web 窗体输出。该代码示例还显示了一个包含 BulletedList 和 AccessDataSource 控件的典型 Web 窗体。该 Web 窗体启用跟踪，跟踪输出将在呈现 Web 窗体时被追加到该窗体。可以在跟踪输出的“跟踪信息”表中检查跟踪消息。如果已在配置文件中正确地启用了 WebPageTraceListener，您将同时看到类别为 "Trace Test" 的跟踪消息。然而，如果未启用 WebPageTraceListener，您将仅看到被写入 TraceContext 对象的跟踪消息。

<%@ Page language="VB" trace="true" %>

<script runat="server">
Private Sub Page_Load(sender As Object, e As EventArgs)

    Trace.Write("Trace Test","This message is written with the System.Web.TraceContext object.")

    System.Diagnostics.Trace.Write("Trace Test", "This message is forwarded to the TraceContext from System.Diagnostics using the WebPageTraceListener.")

End Sub ' Page_Load
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">

<asp:GridView
  id="GridView1"
  runat="server"
  datasourceid="AccessDataSource1"/>

<asp:AccessDataSource
  id="AccessDataSource1"
  runat="server"
  datafile="Northwind.mdb"
  selectcommand="SELECT * FROM employees"/>
</form>
</body>
</html>

<%@ Page language="C#" trace="true" %>

<script runat="server">
private void page_load(object sender, EventArgs e) {

    Trace.Write("Trace Test","This message is written with the TraceContext object.");

    System.Diagnostics.Trace.WriteLine("This message is forwarded to the TraceContext from System.Diagnostics using the WebPageTraceListener.");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">

<asp:GridView
  id="GridView1"
  runat="server"
  datasourceid="AccessDataSource1"/>

<asp:AccessDataSource
  id="AccessDataSource1"
  runat="server"
  datafile="Northwind.mdb"
  selectcommand="SELECT * FROM employees"/>

</form>
</body>
</html>

System.Web System.Web..::.WebPageTraceListenerWebPageTraceListener
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 成员
System.Web 命名空间

其他资源

ASP.NET 跟踪概述


WebPageTraceListener 成员

WebPageTraceListener 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

提供一个将 Trace 消息定向到 ASP.NET 网页输出的侦听器。

WebPageTraceListener 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

WebPageTraceListener 类
System.Web 命名空间


WebPageTraceListener 构造函数

WebPageTraceListener 构造函数
WebPageTraceListener 类

初始化 WebPageTraceListener 类的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public WebPageTraceListener()
public:
WebPageTraceListener()
new : unit -> WebPageTraceListener

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener 方法

WebPageTraceListener 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

WebPageTraceListener 类型公开以下成员。

名称 说明
页首

参考

WebPageTraceListener 类
System.Web 命名空间


WebPageTraceListener ..::.Dispose 方法

WebPageTraceListener
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

释放由 TraceListener 占用的资源。

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.Fail 方法

WebPageTraceListener
.
.
::
.
Fail 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

实现 TraceListener 类时，向所创建的侦听器发出错误信息。

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.MemberwiseClone 方法

WebPageTraceListener
.
.
::
.
MemberwiseClone 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.TraceData 方法

WebPageTraceListener
.
.
::
.
TraceData 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

向特定于侦听器的输出中写入跟踪数据。

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.TraceEvent 方法

WebPageTraceListener
.
.
::
.
TraceEvent 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入一条事件消息。

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String)

WebPageTraceListener
.
.
::
.
TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String)
WebPageTraceListener 类

使用指定的系统数据和事件数据将事件消息写入网页或写入 ASP.NET 跟踪查看器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TraceEvent ( _
    eventCache As TraceEventCache, _
    source As String, _
    severity As TraceEventType, _
    id As Integer, _
    message As String _
)
public override void TraceEvent(
    TraceEventCache eventCache,
    string source,
    TraceEventType severity,
    int id,
    string message
)
public:
virtual void TraceEvent(
    TraceEventCache^ eventCache,
    String^ source,
    TraceEventType severity,
    int id,
    String^ message
) override
abstract TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        message:string -> unit
override TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        message:string -> unit

参数

eventCache
类型： System.Diagnostics TraceEventCache
一个包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 TraceEventCache。
source
类型： System String
用于组织输出的类别名称。
severity
类型： System.Diagnostics TraceEventType
TraceEventType 值之一。
id
类型： System Int32
事件的数值标识符。
message
类型： System String
要写入的消息。

TraceEvent 方法使用 source 作为类别并使用 message 作为消息将事件消息写入 TraceContext 对象。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
TraceEvent 重载
System.Web 命名空间
Write
WriteLine


WebPageTraceListener ..::.TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String, array<Object >[]()[])

WebPageTraceListener
.
.
::
.
TraceEvent 方法 (TraceEventCache, String, TraceEventType, Int32, String,
array<
Object
>
[]
()
[]
)
WebPageTraceListener 类

使用指定的系统数据和事件数据将本地化的事件消息写入网页或写入 ASP.NET 跟踪查看器。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub TraceEvent ( _
    eventCache As TraceEventCache, _
    source As String, _
    severity As TraceEventType, _
    id As Integer, _
    format As String, _
    ParamArray args As Object() _
)
public override void TraceEvent(
    TraceEventCache eventCache,
    string source,
    TraceEventType severity,
    int id,
    string format,
    params Object[] args
)
public:
virtual void TraceEvent(
    TraceEventCache^ eventCache,
    String^ source,
    TraceEventType severity,
    int id,
    String^ format,
    ... array<Object^>^ args
) override
abstract TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        format:string *
        args:Object[] -> unit
override TraceEvent :
        eventCache:TraceEventCache *
        source:string *
        severity:TraceEventType *
        id:int *
        format:string *
        args:Object[] -> unit

参数

eventCache
类型： System.Diagnostics TraceEventCache
一个包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 TraceEventCache。
source
类型： System String
用于组织输出的类别名称。
severity
类型： System.Diagnostics TraceEventType
TraceEventType 值之一。
id
类型： System Int32
事件的数值标识符。
format
类型： System String
包含零个或更多个格式项的格式字符串，这些项与 args 数组中的对象相对应。
args
类型：
array<
System Object
>
[]
()
[]

一个包含零个或更多个要格式化的对象的数组。

TraceEvent 方法调用 Format(IFormatProvider, String, array<Object>[]()[]) 方法，同时传递 format 和 args 并使用 InvariantCulture 属性将字符串格式化为消息以写入跟踪查看器或网页。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
TraceEvent 重载
System.Web 命名空间
Write
WriteLine


WebPageTraceListener ..::.Write 方法

WebPageTraceListener
.
.
::
.
Write 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入消息。

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.Write 方法 (String)

WebPageTraceListener
.
.
::
.
Write 方法 (String)
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    message As String _
)
public override void Write(
    string message
)
public:
virtual void Write(
    String^ message
) override
abstract Write :
        message:string -> unit
override Write :
        message:string -> unit

参数

message
类型： System String
要写入的消息。

Write 方法不写入 Trace 对象输出，即使它已经在配置文件中启用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
Write 重载
System.Web 命名空间
TraceContext
TraceListener
DefaultTraceListener
EventLogTraceListener
TextWriterTraceListener
Trace


WebPageTraceListener ..::.Write 方法 (String, String)

WebPageTraceListener
.
.
::
.
Write 方法 (String, String)
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入类别名称和消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Write ( _
    message As String, _
    category As String _
)
public override void Write(
    string message,
    string category
)
public:
virtual void Write(
    String^ message,
    String^ category
) override
abstract Write :
        message:string *
        category:string -> unit
override Write :
        message:string *
        category:string -> unit

参数

message
类型： System String
要写入的消息。
category
类型： System String
用于组织输出的类别名称。

Write 方法不写入 Trace 对象输出，即使它已经在配置文件中启用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
Write 重载
System.Web 命名空间
TraceContext
TraceListener
DefaultTraceListener
EventLogTraceListener
TextWriterTraceListener
Trace


WebPageTraceListener ..::.WriteLine 方法

WebPageTraceListener
.
.
::
.
WriteLine 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入消息。

名称 说明
页首

参考

WebPageTraceListener 类
WebPageTraceListener 成员
System.Web 命名空间


WebPageTraceListener ..::.WriteLine 方法 (String)

WebPageTraceListener
.
.
::
.
WriteLine 方法 (String)
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteLine ( _
    message As String _
)
public override void WriteLine(
    string message
)
public:
virtual void WriteLine(
    String^ message
) override
abstract WriteLine :
        message:string -> unit
override WriteLine :
        message:string -> unit

参数

message
类型： System String
要写入的消息。

WriteLine 方法不写入 Trace 对象输出，即使它已经在配置文件中启用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
WriteLine 重载
System.Web 命名空间


WebPageTraceListener ..::.WriteLine 方法 (String, String)

WebPageTraceListener
.
.
::
.
WriteLine 方法 (String, String)
WebPageTraceListener 类

向网页或 ASP.NET 跟踪查看器中写入类别名称和消息。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub WriteLine ( _
    message As String, _
    category As String _
)
public override void WriteLine(
    string message,
    string category
)
public:
virtual void WriteLine(
    String^ message,
    String^ category
) override
abstract WriteLine :
        message:string *
        category:string -> unit
override WriteLine :
        message:string *
        category:string -> unit

参数

message
类型： System String
要写入的消息。
category
类型： System String
用于组织输出的类别名称。

WriteLine 方法不写入 Trace 对象输出，即使它已经在配置文件中启用。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

WebPageTraceListener 类
WebPageTraceListener 成员
WriteLine 重载
System.Web 命名空间


WebPageTraceListener 属性

WebPageTraceListener 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
WebPageTraceListener 类

WebPageTraceListener 类型公开以下成员。

名称 说明
页首

参考

WebPageTraceListener 类
System.Web 命名空间


XmlSiteMapProvider 类

XmlSiteMapProvider 类
成员

XmlSiteMapProvider 类是从 SiteMapProvider 类派生的，并且是 ASP.NET 的默认站点地图提供者。XmlSiteMapProvider 类根据文件扩展名为 .sitemap 的 XML 文件生成站点地图树。 XmlSiteMapProvider 类是从 SiteMapProvider 类派生的，并且是 ASP.NET 的默认站点地图提供者。XmlSiteMapProvider 类根据文件扩展名为 .sitemap 的 XML 文件生成站点地图树。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Class XmlSiteMapProvider _
    Inherits StaticSiteMapProvider _
    Implements IDisposable
public class XmlSiteMapProvider : StaticSiteMapProvider,
    IDisposable
public ref class XmlSiteMapProvider : public StaticSiteMapProvider,
    IDisposable
type XmlSiteMapProvider =
    class
        inherit StaticSiteMapProvider
        interface IDisposable
    end

XmlSiteMapProvider 类从遵循已知架构的 XML 文件加载站点地图数据。站点地图数据用 <siteMap> 标记括起来，并包含嵌套的 <siteMapNode> 标记。SiteMapProvider 和 XmlSiteMapProvider 类对站点地图数据的结构施加了两个约束： XmlSiteMapProvider 类从遵循已知架构的 XML 文件加载站点地图数据。站点地图数据用 <siteMap> 标记括起来，并包含嵌套的 <siteMapNode> 标记。SiteMapProvider 和 XmlSiteMapProvider 类对站点地图数据的结构施加了两个约束： XmlSiteMapProvider 类从遵循已知架构的 XML 文件加载站点地图数据。站点地图数据用 <siteMap> 标记括起来，并包含嵌套的 <siteMapNode> 标记。SiteMapProvider 和 XmlSiteMapProvider 类对站点地图数据的结构施加了两个约束：

  • 只能存在一个根节点。

  • 对于指定 URL 的 SiteMapNode 对象，URL 在提供程序的范围内必须是唯一的。（对于不指定 URL 的节点，所有键都必须是唯一的。） 对于指定 URL 的 SiteMapNode 对象，URL 在提供程序的范围内必须是唯一的。（对于不指定 URL 的节点，所有键都必须是唯一的。）

下面的代码示例演示了一个可用于 XmlSiteMapProvider 的 XML 文件的示例。

<siteMap>
  <siteMapNode title="RootNode" description="This is the root node of the site map.There can be only one root node." url="Page1.aspx" >
    <siteMapNode title="ChildofRootNode" description="Descriptions do not have to be unique." url="Page2.aspx">
      <siteMapNode title="ChildOfChildNode" description="SiteMapNode objects can be nested to any level." url="Page3.aspx"/>
    </siteMapNode>
    <siteMapNode title="ChildofRootNode" description="Descriptions do not have to be unique." url="Page4.aspx"/>
  </siteMapNode>
</siteMap>

XmlSiteMapProvider 是 ASP.NET 的默认提供程序，它从位于 ASP.NET 应用程序的目录结构中名为 Web.sitemap 的文件读取 XML 数据。默认情况下，Web.sitemap 文件位于应用程序根目录下，但是如果想要更改 XmlSiteMapProvider 从中加载数据的文件的名称或位置，您可以重写 Web.config 文件中的默认配置。通过重写 Web.config 文件中的默认配置设置，您可以根据需要为每个 ASP.NET 应用程序定制 XmlSiteMapProvider 的行为。 XmlSiteMapProvider 是 ASP.NET 的默认提供程序，它从位于 ASP.NET 应用程序的目录结构中名为 Web.sitemap 的文件读取 XML 数据。默认情况下，Web.sitemap 文件位于应用程序根目录下，但是如果想要更改 XmlSiteMapProvider 从中加载数据的文件的名称或位置，您可以重写 Web.config 文件中的默认配置。通过重写 Web.config 文件中的默认配置设置，您可以根据需要为每个 ASP.NET 应用程序定制 XmlSiteMapProvider 的行为。 XmlSiteMapProvider 是 ASP.NET 的默认提供程序，它从位于 ASP.NET 应用程序的目录结构中名为 Web.sitemap 的文件读取 XML 数据。默认情况下，Web.sitemap 文件位于应用程序根目录下，但是如果想要更改 XmlSiteMapProvider 从中加载数据的文件的名称或位置，您可以重写 Web.config 文件中的默认配置。通过重写 Web.config 文件中的默认配置设置，您可以根据需要为每个 ASP.NET 应用程序定制 XmlSiteMapProvider 的行为。

下面的代码示例演示 Web.config 文件的一个示例，其中仍然使用了 XmlSiteMapProvider，但是使用了不同的站点地图文件。由于 SiteMapProviderCollection 对象中的所有提供程序都必须唯一地命名，Web.config 文件中指定的提供程序使用了与默认提供程序不同的名称，但是也被设置为默认提供程序，以便将使用它而不是使用默认 ASP.NET 配置中指定的 XmlSiteMapProvider。 下面的代码示例演示 Web.config 文件的一个示例，其中仍然使用了 XmlSiteMapProvider，但是使用了不同的站点地图文件。由于 SiteMapProviderCollection 对象中的所有提供程序都必须唯一地命名，Web.config 文件中指定的提供程序使用了与默认提供程序不同的名称，但是也被设置为默认提供程序，以便将使用它而不是使用默认 ASP.NET 配置中指定的 XmlSiteMapProvider。

说明 说明

您可以更改站点导航数据文件的名称，但是不能更改其扩展名。XmlSiteMapProvider 只从扩展名为 .sitemap 的文件读取数据。 您可以更改站点导航数据文件的名称，但是不能更改其扩展名。XmlSiteMapProvider 只从扩展名为 .sitemap 的文件读取数据。

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">
  <providers>
    <add name="MyXmlSiteMapProvider"
      description="SiteMap provider that reads in .sitemap files."
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      siteMapFile="CustomWeb.sitemap" />
  </providers>
</siteMap>

System.Web System.Web..::.XmlSiteMapProviderXmlSiteMapProvider
此类型的任何公共 static（在 Visual Basic 中为 Shared） 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 成员
System.Web 命名空间
SiteMapProvider
StaticSiteMapProvider

其他资源

ASP.NET 站点导航
ASP.NET 站点地图
ASP.NET 站点导航提供程序
如何：添加简单的站点导航
保证 ASP.NET 站点导航的安全


XmlSiteMapProvider 成员

XmlSiteMapProvider 成员
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

XmlSiteMapProvider 类是从 SiteMapProvider 类派生的，并且是 ASP.NET 的默认站点地图提供者。XmlSiteMapProvider 类根据文件扩展名为 .sitemap 的 XML 文件生成站点地图树。 XmlSiteMapProvider 类是从 SiteMapProvider 类派生的，并且是 ASP.NET 的默认站点地图提供者。XmlSiteMapProvider 类根据文件扩展名为 .sitemap 的 XML 文件生成站点地图树。

XmlSiteMapProvider 类型公开以下成员。

名称 说明
页首
名称 说明
页首
名称 说明
页首
名称 说明
页首

参考

XmlSiteMapProvider 类
System.Web 命名空间


XmlSiteMapProvider 构造函数

XmlSiteMapProvider 构造函数
XmlSiteMapProvider 类

创建 XmlSiteMapProvider 类的未命名的新实例。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub New
public XmlSiteMapProvider()
public:
XmlSiteMapProvider()
new : unit -> XmlSiteMapProvider

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间


XmlSiteMapProvider 方法

XmlSiteMapProvider 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

XmlSiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

XmlSiteMapProvider 类
System.Web 命名空间


XmlSiteMapProvider ..::.AddNode 方法

XmlSiteMapProvider
.
.
::
.
AddNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

在当前提供程序维护的集合中添加一个 SiteMapNode 对象。

名称 说明
页首

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间


XmlSiteMapProvider ..::.AddNode 方法 (SiteMapNode, SiteMapNode)

XmlSiteMapProvider
.
.
::
.
AddNode 方法 (SiteMapNode, SiteMapNode)
XmlSiteMapProvider 类

在当前提供程序维护的集合中添加一个 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overrides Sub AddNode ( _
    node As SiteMapNode, _
    parentNode As SiteMapNode _
)
protected internal override void AddNode(
    SiteMapNode node,
    SiteMapNode parentNode
)
protected public:
virtual void AddNode(
    SiteMapNode^ node,
    SiteMapNode^ parentNode
) override
abstract AddNode :
        node:SiteMapNode *
        parentNode:SiteMapNode -> unit
override AddNode :
        node:SiteMapNode *
        parentNode:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要添加到提供程序的 SiteMapNode。
parentNode
类型： System.Web SiteMapNode
将在其下面添加 node 的 SiteMapNode。
异常 | 条件
ArgumentNullException | node 或 parentNode 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ArgumentException | 当前 XmlSiteMapProvider 不是与 node 关联的提供程序。
InvalidOperationException | XmlSiteMapProvider 中已经注册了具有相同 URL 或键的节点。- 或 - XmlSiteMapProvider 中已经注册了具有相同 URL 或键的节点。- 或 - 以编程方式发现重复的站点地图节点，例如在链接两个站点地图提供程序时。 - 或 - node 是 XmlSiteMapProvider 的根节点。

将 node 参数添加到一个内部集合，并在它和 parentNode 之间创建父子关系。

XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索节点。否则，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索节点。否则，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索节点。否则，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索节点。 XmlSiteMapProvider 类派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。FindSiteMapNode 方法尝试基于节点的 Url 来检索节点。否则，可以使用 Key 属性以及相应的 FindSiteMapNodeFromKey 方法检索节点。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
AddNode 重载
System.Web 命名空间
RemoveNode


XmlSiteMapProvider ..::.AddProvider 方法

XmlSiteMapProvider
.
.
::
.
AddProvider 方法
XmlSiteMapProvider 类

将一个子站点地图提供程序链接到当前提供程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overridable Sub AddProvider ( _
    providerName As String, _
    parentNode As SiteMapNode _
)
protected virtual void AddProvider(
    string providerName,
    SiteMapNode parentNode
)
protected:
virtual void AddProvider(
    String^ providerName,
    SiteMapNode^ parentNode
)
abstract AddProvider :
        providerName:string *
        parentNode:SiteMapNode -> unit
override AddProvider :
        providerName:string *
        parentNode:SiteMapNode -> unit

参数

providerName
类型： System String
当前已在 Providers 中注册的某个 SiteMapProvider 对象的名称。
parentNode
类型： System.Web SiteMapNode
当前站点地图提供程序的站点地图节点，根节点和子提供程序的所有节点都将添加到该站点地图节点下面。
异常 | 条件
ArgumentException | parentNode 的 Provider 属性引用的不是当前提供者。
ArgumentNullException | parentNode 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
ProviderException | 无法解析 providerName。
InvalidOperationException | providerName 所使用的站点地图文件已经在提供程序层次结构中使用。 - 或 - providerName 返回的根节点为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。 - 或 - providerName 返回的根节点所具有的 URL 或键已在父 XmlSiteMapProvider 中注册。

AddProvider 方法将 providerName 作为当前提供程序的子提供程序链接到当前提供程序。providerName 的根节点作为 parentNode 的子节点被添加到当前提供程序的层次结构中。由于父提供程序调用 providerName 上的 BuildSiteMap 方法，因此可能引发 BuildSiteMap 方法中描述的异常。 AddProvider 方法将 providerName 作为当前提供程序的子提供程序链接到当前提供程序。providerName 的根节点作为 parentNode 的子节点被添加到当前提供程序的层次结构中。由于父提供程序调用 providerName 上的 BuildSiteMap 方法，因此可能引发 BuildSiteMap 方法中描述的异常。 AddProvider 方法将 providerName 作为当前提供程序的子提供程序链接到当前提供程序。providerName 的根节点作为 parentNode 的子节点被添加到当前提供程序的层次结构中。由于父提供程序调用 providerName 上的 BuildSiteMap 方法，因此可能引发 BuildSiteMap 方法中描述的异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
RemoveProvider


XmlSiteMapProvider ..::.BuildSiteMap 方法

XmlSiteMapProvider
.
.
::
.
BuildSiteMap 方法
XmlSiteMapProvider 类

从 XML 文件加载站点地图信息，并在内存中生成它。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function BuildSiteMap As SiteMapNode
public override SiteMapNode BuildSiteMap()
public:
virtual SiteMapNode^ BuildSiteMap() override
abstract BuildSiteMap : unit -> SiteMapNode
override BuildSiteMap : unit -> SiteMapNode

返回值

类型： System.Web SiteMapNode
返回站点地图导航结构的根 SiteMapNode。
异常 | 条件
InvalidOperationException | XmlSiteMapProvider 未正确地初始化。 - 或 - 分析 siteMapFile 时发现不唯一的 <siteMapNode>。 - 或 - siteMapFile 所指定的文件的扩展名不是 .sitemap。 - 或 - siteMapFile 所指定的文件不存在。 - 或 - <siteMapNode> 的 provider 中配置的提供程序返回空根节点。
ArgumentException | 指定了 siteMapFile，但是该路径位于应用程序的当前目录结构之外。
ConfigurationErrorsException | 加载配置文件时出错。 - 或 - 配置文件的顶层元素不是 named <siteMap>。 - 或 - 配置文件中存在多个顶层节点。 - 或 - <siteMap> 的子级具有不同于 <siteMapNode> 的名称。 - 或 - 分析 <siteMapNode> 时发现意外特性。 - 或 - 子元素嵌套在设置了 provider 的 <siteMapNode> 下面。 - 或 - <siteMapNode> 的 roles 包含无效字符。 - 或 - 分析 url 时发现不唯一的 <siteMapNode>。 - 或 - 发现具有重复 Key 值的 SiteMapNode。 - 或 - 在为包含显式资源表达式的节点定义的 SiteMapNode 或 custom 特性上指定了 ResourceKey 或 Title。 - 或 - 向 Title 或 Description 或向 SiteMapNode 的 custom 特性应用了显式的资源表达式，但显式信息无效。 - 或 - 分析 SiteMapNode 的 Url 时出错。
ProviderException | 无法在当前站点地图提供程序集合中找到命名的提供程序。
ArgumentNullException | 引用站点地图文件的 <siteMapNode> 包含用于 siteMapFile 的空字符串。
HttpException | <siteMapNode> 的 siteMapFile 使用了物理路径。 - 或 - 在尝试分析 siteMapFile 中指定的文件的虚拟路径时发生错误。

BuildSiteMap 方法被调用，以从持久性存储区加载和生成站点地图。

有关启用安全修整时的默认行为，请参见 IsAccessibleToUser 中的“备注”。

在 XmlSiteMapProvider 对象分析并加载站点地图数据之后，所有已加载的 SiteMapNode 对象和 SiteMapNodeCollection 集合都变为只读的。当 XmlSiteMapProvider 分析来自站点地图文件的 Url 属性时，它将相对于应用程序的 URL 以及相对 URL 转换为绝对于应用程序的虚拟路径。 在 XmlSiteMapProvider 对象分析并加载站点地图数据之后，所有已加载的 SiteMapNode 对象和 SiteMapNodeCollection 集合都变为只读的。当 XmlSiteMapProvider 分析来自站点地图文件的 Url 属性时，它将相对于应用程序的 URL 以及相对 URL 转换为绝对于应用程序的虚拟路径。

XmlSiteMapProvider 订阅 .sitemap 文件的文件更改通知。如果对 .sitemap 文件进行任何更改，则会重新加载 XmlSiteMapProvider，并重新生成站点地图结构。 XmlSiteMapProvider 订阅 .sitemap 文件的文件更改通知。如果对 .sitemap 文件进行任何更改，则会重新加载 XmlSiteMapProvider，并重新生成站点地图结构。

下面的代码示例演示如何创建 XmlSiteMapProvider 类的新实例，并对它进行初始化以便从 XML 数据生成站点地图。

<%@ Page Language="c#" %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <SCRIPT runat="server">
 private void Page_Load(object sender, System.EventArgs e)
 {
     // Create an instance of the XmlSiteMapProvider class.XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();
     NameValueCollection providerAttributes = new NameValueCollection(1);
     providerAttributes.Add("siteMapFile","test.sitemap");
     // Initialize the provider with a provider name and file name.testXmlProvider.Initialize("testProvider", providerAttributes);

     // The BuildSiteMap method is implicitly called when the
     // RootNode propety is accessed.// Prints "/myvirtualdirectory/WebForm1.aspx"
     Response.Write(testXmlProvider.RootNode.Url + "<BR>");
     // Prints "/myvirtualdirectory/WebForm2.aspx"
     Response.Write(testXmlProvider.CurrentNode.Url + "<BR>");
 }

前面的代码示例使用了一个位于 ASP.NET 应用程序的虚拟根目录中的 XML 文件。该文件具有以下格式： 前面的代码示例使用了一个位于 ASP.NET 应用程序的虚拟根目录中的 XML 文件。该文件具有以下格式：

<siteMap>
     <siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">
         <siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>
     </siteMapNode>
 </siteMap>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
Initialize
Clear


XmlSiteMapProvider ..::.Clear 方法

XmlSiteMapProvider
.
.
::
.
Clear 方法
XmlSiteMapProvider 类

移除子和父站点地图节点的集合中的所有元素和 XmlSiteMapProvider 对象在内部作为其状态的一部分进行跟踪的站点地图提供程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overrides Sub Clear
protected override void Clear()
protected:
virtual void Clear() override
abstract Clear : unit -> unit
override Clear : unit -> unit

XmlSiteMapProvider 重写继承的 Clear 方法，以提供除基本的 StaticSiteMapProvider..::.Clear 实现以外的附加状态清理，包括清除其子提供程序跟踪和 RootNode 属性跟踪机制。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
Initialize
BuildSiteMap


XmlSiteMapProvider ..::.Dispose 方法

XmlSiteMapProvider
.
.
::
.
Dispose 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

通知 Web.sitemap 文件的文件监视器：XmlSiteMapProvider 对象不再要求监视该文件。

名称 说明
页首

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间


XmlSiteMapProvider ..::.Dispose 方法

XmlSiteMapProvider
.
.
::
.
Dispose 方法
XmlSiteMapProvider 类

此 API 支持 .NET Framework 基础结构，不适合在代码中直接使用。

通知 Web.sitemap 文件的文件监视器：XmlSiteMapProvider 对象不再要求监视该文件。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Sub Dispose
public void Dispose()
public:
virtual void Dispose() sealed
abstract Dispose : unit -> unit
override Dispose : unit -> unit

实现

XmlSiteMapProvider 类实现 IDisposable 接口的 Dispose 方法，以便在从内存卸载站点地图文件时释放关联的文件监视器。此 Dispose 方法重载调用接受 Boolean 参数的重载并将该参数值设置为 true。 XmlSiteMapProvider 类实现 IDisposable 接口的 Dispose 方法，以便在从内存卸载站点地图文件时释放关联的文件监视器。此 Dispose 方法重载调用接受 Boolean 参数的重载并将该参数值设置为 true。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
Dispose 重载
System.Web 命名空间


XmlSiteMapProvider ..::.Dispose 方法 (Boolean)

XmlSiteMapProvider
.
.
::
.
Dispose 方法 (Boolean)
XmlSiteMapProvider 类

通知 Web.sitemap 文件的文件监视器：XmlSiteMapProvider 对象不再要求监视该文件。Dispose 方法接受一个布尔参数，该参数指示此方法是否由用户代码调用。 通知 Web.sitemap 文件的文件监视器：XmlSiteMapProvider 对象不再要求监视该文件。Dispose 方法接受一个布尔参数，该参数指示此方法是否由用户代码调用。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overridable Sub Dispose ( _
    disposing As Boolean _
)
protected virtual void Dispose(
    bool disposing
)
protected:
virtual void Dispose(
    bool disposing
)
abstract Dispose :
        disposing:bool -> unit
override Dispose :
        disposing:bool -> unit

参数

disposing
类型： System Boolean
为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。

如果 Dispose 方法由用户代码调用，则 Dispose 方法返回 true。否则，如果 Dispose 方法由终结器线程在运行时调用，则返回 false。 如果 Dispose 方法由用户代码调用，则 Dispose 方法返回 true。否则，如果 Dispose 方法由终结器线程在运行时调用，则返回 false。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
Dispose 重载
System.Web 命名空间
IDisposable


XmlSiteMapProvider ..::.FindSiteMapNode 方法

XmlSiteMapProvider
.
.
::
.
FindSiteMapNode 方法
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

根据搜索条件检索站点地图节点。

名称 说明
页首

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间


XmlSiteMapProvider ..::.FindSiteMapNode 方法 (String)

XmlSiteMapProvider
.
.
::
.
FindSiteMapNode 方法 (String)
XmlSiteMapProvider 类

检索表示位于指定 URL 处的页的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function FindSiteMapNode ( _
    rawUrl As String _
) As SiteMapNode
public override SiteMapNode FindSiteMapNode(
    string rawUrl
)
public:
virtual SiteMapNode^ FindSiteMapNode(
    String^ rawUrl
) override
abstract FindSiteMapNode :
        rawUrl:string -> SiteMapNode
override FindSiteMapNode :
        rawUrl:string -> SiteMapNode

参数

rawUrl
类型： System String
标识要为其检索 SiteMapNode 的页的 URL。

返回值

类型： System.Web SiteMapNode
一个 SiteMapNode，表示由 rawURL 所标识的页。
异常 | 条件
ProviderException | 链接到当前站点地图提供程序的子提供程序返回一个无效节点。

XmlSiteMapProvider 对象重写 FindSiteMapNode 方法，以确保在基类的实现未返回指定 URL 的节点时，将在任何链接的子提供程序中搜索该节点。

rawUrl 参数应该是绝对虚拟路径或相对于应用程序的路径，具体取决于在 XML 站点地图数据文件中指定它的方式。

XmlSiteMapProvider 类和从它派生的类使用 SiteMapNode 对象的 URL 作为该类维护的各种集合中的键。因此，这些 URL 在站点地图的范围内必须是唯一的。如果未在 XmlSiteMapProvider 所管理的直接站点地图数据中找到该 URL，它将通过其站点地图节点的 provider 特性调用链接到它的每个子提供程序上的 FindSiteMapNode。 XmlSiteMapProvider 类和从它派生的类使用 SiteMapNode 对象的 URL 作为该类维护的各种集合中的键。因此，这些 URL 在站点地图的范围内必须是唯一的。如果未在 XmlSiteMapProvider 所管理的直接站点地图数据中找到该 URL，它将通过其站点地图节点的 provider 特性调用链接到它的每个子提供程序上的 FindSiteMapNode。 XmlSiteMapProvider 类和从它派生的类使用 SiteMapNode 对象的 URL 作为该类维护的各种集合中的键。因此，这些 URL 在站点地图的范围内必须是唯一的。如果未在 XmlSiteMapProvider 所管理的直接站点地图数据中找到该 URL，它将通过其站点地图节点的 provider 特性调用链接到它的每个子提供程序上的 FindSiteMapNode。

FindSiteMapNode 方法间接调用 BuildSiteMap 方法以检索站点地图中的顶层节点。因此，BuildSiteMap 方法引发的任何异常都可能会在调用 FindSiteMapNode 方法时发生。 FindSiteMapNode 方法间接调用 BuildSiteMap 方法以检索站点地图中的顶层节点。因此，BuildSiteMap 方法引发的任何异常都可能会在调用 FindSiteMapNode 方法时发生。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
FindSiteMapNode 重载
System.Web 命名空间
GetRootNodeCore
BuildSiteMap


XmlSiteMapProvider ..::.FindSiteMapNodeFromKey 方法

XmlSiteMapProvider
.
.
::
.
FindSiteMapNodeFromKey 方法
XmlSiteMapProvider 类

根据指定的键检索 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Function FindSiteMapNodeFromKey ( _
    key As String _
) As SiteMapNode
public override SiteMapNode FindSiteMapNodeFromKey(
    string key
)
public:
virtual SiteMapNode^ FindSiteMapNodeFromKey(
    String^ key
) override
abstract FindSiteMapNodeFromKey :
        key:string -> SiteMapNode
override FindSiteMapNodeFromKey :
        key:string -> SiteMapNode

参数

key
类型： System String
用于搜索 SiteMapNode 的查找键。

返回值

类型： System.Web SiteMapNode
表示 key 所标识的页的 SiteMapNode；如果启用了安全修整并且不能向当前用户显示该节点，或者未能通过 key 在节点集合中找到该节点，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。
异常 | 条件
ProviderException | 链接到当前站点地图提供程序的子提供程序返回一个无效节点。

XmlSiteMapProvider 类重写 FindSiteMapNodeFromKey 方法，以确保在基类的实现未返回 key 的节点时，将在任何链接的子提供程序中搜索该节点。

XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。如果未指定 Url，XmlSiteMapProvider 将自动生成一个 Key 以跟踪节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。如果未指定 Url，XmlSiteMapProvider 将自动生成一个 Key 以跟踪节点。 XmlSiteMapProvider 对象派生自 StaticSiteMapProvider 类并且是 ASP.NET 的默认站点地图提供程序，它在默认情况下使用 SiteMapNode 对象的 Url 属性作为其内部集合中的查找键。如果设置了 SiteMapNode 的 Url 属性，则它在提供程序的范围内必须唯一。如果未指定 Url，XmlSiteMapProvider 将自动生成一个 Key 以跟踪节点。

FindSiteMapNodeFromKey 方法可能调用与当前提供程序关联的任何子提供程序上的 BuildSiteMap 方法。因此可能引发 BuildSiteMap 方法中描述的异常。 FindSiteMapNodeFromKey 方法可能调用与当前提供程序关联的任何子提供程序上的 BuildSiteMap 方法。因此可能引发 BuildSiteMap 方法中描述的异常。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
FindSiteMapNode


XmlSiteMapProvider ..::.GetRootNodeCore 方法

XmlSiteMapProvider
.
.
::
.
GetRootNodeCore 方法
XmlSiteMapProvider 类

检索当前站点地图数据结构的顶层节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overrides Function GetRootNodeCore As SiteMapNode
protected internal override SiteMapNode GetRootNodeCore()
protected public:
virtual SiteMapNode^ GetRootNodeCore() override
abstract GetRootNodeCore : unit -> SiteMapNode
override GetRootNodeCore : unit -> SiteMapNode

返回值

类型： System.Web SiteMapNode
一个 SiteMapNode，表示当前站点地图数据结构中的顶层节点。

GetRootNodeCore 方法调用 BuildSiteMap 方法以检索站点地图中的顶层节点。因此，BuildSiteMap 方法引发的任何异常都可能会在调用 GetRootNodeCore 方法时发生。 GetRootNodeCore 方法调用 BuildSiteMap 方法以检索站点地图中的顶层节点。因此，BuildSiteMap 方法引发的任何异常都可能会在调用 GetRootNodeCore 方法时发生。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
RootNode
BuildSiteMap


XmlSiteMapProvider ..::.Initialize 方法

XmlSiteMapProvider
.
.
::
.
Initialize 方法
XmlSiteMapProvider 类

初始化 XmlSiteMapProvider 对象。Initialize 方法并不实际生成站点地图，它只是为此而准备 XmlSiteMapProvider 对象的状态。 初始化 XmlSiteMapProvider 对象。Initialize 方法并不实际生成站点地图，它只是为此而准备 XmlSiteMapProvider 对象的状态。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides Sub Initialize ( _
    name As String, _
    attributes As NameValueCollection _
)
public override void Initialize(
    string name,
    NameValueCollection attributes
)
public:
virtual void Initialize(
    String^ name,
    NameValueCollection^ attributes
) override
abstract Initialize :
        name:string *
        attributes:NameValueCollection -> unit
override Initialize :
        name:string *
        attributes:NameValueCollection -> unit

参数

name
类型： System String
要初始化的 XmlSiteMapProvider。
attributes
类型： System.Collections.Specialized NameValueCollection
一个 NameValueCollection，它能够包含附加特性以帮助初始化 name。这些特性是从 Web.config 文件中的 XmlSiteMapProvider 配置读取的。 一个 NameValueCollection，它能够包含附加特性以帮助初始化 name。这些特性是从 Web.config 文件中的 XmlSiteMapProvider 配置读取的。
异常 | 条件
InvalidOperationException | 多次初始化 XmlSiteMapProvider。
HttpException | SiteMapNode 使用物理路径引用站点地图文件。 - 或 - 在尝试分析为 siteMapFile 特性提供的虚拟路径时发生错误。

XmlSiteMapProvider 类重写继承的 Initialize 方法，以便向 attributes 集合应用一些特性，例如 siteMapFile 和 description 特性。

下面的代码示例演示如何创建 XmlSiteMapProvider 类的新实例，并对它进行初始化以便从 XML 数据生成站点地图。

<%@ Page Language="c#" %>
<SCRIPT runat="server">
 private void Page_Load(object sender, System.EventArgs e) {
     // Create an instance of the XmlSiteMapProvider class.XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();
     NameValueCollection providerAttributes = new NameValueCollection(1);
     providerAttributes.Add("siteMapFile","test.sitemap");

     // Initialize the provider with a provider name and file name.testXmlProvider.Initialize("testProvider", providerAttributes);

     // Call the BuildSiteMap to load the site map information into memory.testXmlProvider.BuildSiteMap();

     // Prints "/myvirtualdirectory/WebForm1.aspx"
     Response.Write(testXmlProvider.RootNode.Url + "<BR>");

     // Prints "/myvirtualdirectory/WebForm2.aspx"
     Response.Write(testXmlProvider.CurrentNode.Url + "<BR>");
 }
 </SCRIPT>

前面的代码示例使用了一个位于 ASP.NET 应用程序的虚拟根目录中的 XML 文件。该文件具有以下格式： 前面的代码示例使用了一个位于 ASP.NET 应用程序的虚拟根目录中的 XML 文件。该文件具有以下格式：

<siteMap>
  <siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">
    <siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>
  </siteMapNode>
</siteMap>

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
BuildSiteMap
Clear


XmlSiteMapProvider ..::.RemoveNode 方法

XmlSiteMapProvider
.
.
::
.
RemoveNode 方法
XmlSiteMapProvider 类

从提供程序跟踪的所有节点集合中移除指定的 SiteMapNode 对象。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Friend Overrides Sub RemoveNode ( _
    node As SiteMapNode _
)
protected internal override void RemoveNode(
    SiteMapNode node
)
protected public:
virtual void RemoveNode(
    SiteMapNode^ node
) override
abstract RemoveNode :
        node:SiteMapNode -> unit
override RemoveNode :
        node:SiteMapNode -> unit

参数

node
类型： System.Web SiteMapNode
要从节点集合中移除的节点。
异常 | 条件
InvalidOperationException | node 是拥有它的站点地图提供程序的根节点。 - 或 - node 既不由此提供者管理，也不由此提供者的父提供者链中的某个提供者管理。
ArgumentNullException | node 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
AddNode


XmlSiteMapProvider ..::.RemoveProvider 方法

XmlSiteMapProvider
.
.
::
.
RemoveProvider 方法
XmlSiteMapProvider 类

从当前提供程序的层次结构中移除链接的子站点地图提供程序。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Protected Overridable Sub RemoveProvider ( _
    providerName As String _
)
protected virtual void RemoveProvider(
    string providerName
)
protected:
virtual void RemoveProvider(
    String^ providerName
)
abstract RemoveProvider :
        providerName:string -> unit
override RemoveProvider :
        providerName:string -> unit

参数

providerName
类型： System String
当前已在 Providers 中注册的某个 SiteMapProvider 对象的名称。
异常 | 条件
ProviderException | 无法解析 providerName。
InvalidOperationException | providerName 不是当前站点地图提供程序的已注册的子提供程序。
ArgumentNullException | providerName 为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

RemoveProvider 方法从当前提供程序的层次结构中移除 providerName，包括由 AddProvider 方法在当前提供程序和被移除的提供程序的站点地图节点之间建立的任何父/子关系。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
AddNode


XmlSiteMapProvider 属性

XmlSiteMapProvider 属性
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

XmlSiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

XmlSiteMapProvider 类
System.Web 命名空间


XmlSiteMapProvider ..::.RootNode 属性

XmlSiteMapProvider
.
.
::
.
RootNode 属性
XmlSiteMapProvider 类

获取站点地图的根节点。

命名空间： System.Web
程序集： System.Web（在 System.Web.dll 中）
Public Overrides ReadOnly Property RootNode As SiteMapNode
    Get
public override SiteMapNode RootNode { get; }
public:
virtual property SiteMapNode^ RootNode {
    SiteMapNode^ get () override;
}
abstract RootNode : SiteMapNode
override RootNode : SiteMapNode

属性值

类型： System.Web SiteMapNode
表示站点地图根节点的 SiteMapNode；如果启用了安全修整并且根节点对于当前用户不可访问，则为 nullNothingnullptrnull 引用（在 Visual Basic 中为 Nothing）。

RootNode 属性调用 BuildSiteMap 方法以检索站点地图中的顶层节点。因此，BuildSiteMap 方法引发的任何异常都可能会在访问 RootNode 属性时发生。 RootNode 属性调用 BuildSiteMap 方法以检索站点地图中的顶层节点。因此，BuildSiteMap 方法引发的任何异常都可能会在访问 RootNode 属性时发生。

SiteMapProvider 和 XmlSiteMapProvider 类只允许站点地图中有一个根 SiteMapNode 对象。XmlSiteMapProvider 类重写抽象的 SiteMapProvider..::.RootNode 属性，并提供用于跟踪根节点的简单实现。 SiteMapProvider 和 XmlSiteMapProvider 类只允许站点地图中有一个根 SiteMapNode 对象。XmlSiteMapProvider 类重写抽象的 SiteMapProvider..::.RootNode 属性，并提供用于跟踪根节点的简单实现。

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表，请参见 .NET Framework 系统要求。

.NET Framework

受以下版本支持：4、3.5、3.0、2.0

参考

XmlSiteMapProvider 类
XmlSiteMapProvider 成员
System.Web 命名空间
GetRootNodeCore
BuildSiteMap
RootNode


XmlSiteMapProvider 事件

XmlSiteMapProvider 事件
包括受保护的成员
包括继承的成员
包括 .NET Framework 成员
包括 XNA Framework 成员
XmlSiteMapProvider 类

XmlSiteMapProvider 类型公开以下成员。

名称 说明
页首

参考

XmlSiteMapProvider 类
System.Web 命名空间